<?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>179907</bug_id>
          
          <creation_ts>2017-11-20 19:40:00 -0800</creation_ts>
          <short_desc>Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII</short_desc>
          <delta_ts>2017-11-23 16:35:40 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1373911</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 19:40:00 -0800</bug_when>
    <thetext>Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373922</commentid>
    <comment_count>1</comment_count>
      <attachid>327386</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 22:04:00 -0800</bug_when>
    <thetext>Created attachment 327386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373923</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-20 22:07:35 -0800</bug_when>
    <thetext>Attachment 327386 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.cpp:1261:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/text/StringImpl.cpp:1337:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 5 in 123 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>1373929</commentid>
    <comment_count>3</comment_count>
      <attachid>327388</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 22:38:49 -0800</bug_when>
    <thetext>Created attachment 327388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373930</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-20 22:40:54 -0800</bug_when>
    <thetext>Attachment 327388 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 123 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>1373931</commentid>
    <comment_count>5</comment_count>
      <attachid>327389</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-20 22:53:39 -0800</bug_when>
    <thetext>Created attachment 327389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373932</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-20 22:57:00 -0800</bug_when>
    <thetext>Attachment 327389 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 125 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>1373976</commentid>
    <comment_count>7</comment_count>
      <attachid>327400</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-21 04:47:57 -0800</bug_when>
    <thetext>Created attachment 327400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373977</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 04:50:37 -0800</bug_when>
    <thetext>Attachment 327400 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 127 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>1373997</commentid>
    <comment_count>9</comment_count>
      <attachid>327400</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 06:07:13 -0800</bug_when>
    <thetext>Comment on attachment 327400
Patch

Attachment 327400 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/5319592

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373998</commentid>
    <comment_count>10</comment_count>
      <attachid>327404</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 06:07:14 -0800</bug_when>
    <thetext>Created attachment 327404
Archive of layout-test-results from ews126 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews126  Port: ios-simulator-wk2  Platform: Mac OS X 10.12.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374001</commentid>
    <comment_count>11</comment_count>
      <attachid>327407</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-21 06:40:11 -0800</bug_when>
    <thetext>Created attachment 327407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374002</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 06:43:42 -0800</bug_when>
    <thetext>Attachment 327407 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKitLegacy/win/Plugins/PluginDatabaseWin.cpp:97:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebKitLegacy/win/Plugins/PluginDatabaseWin.cpp:97:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 5 in 133 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>1374023</commentid>
    <comment_count>13</comment_count>
      <attachid>327412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-21 08:36:21 -0800</bug_when>
    <thetext>Created attachment 327412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374026</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-21 08:39:50 -0800</bug_when>
    <thetext>Attachment 327412 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:1060:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/text/WTFString.h:427:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:432:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 3 in 136 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>1374077</commentid>
    <comment_count>15</comment_count>
      <attachid>327412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-21 12:45:10 -0800</bug_when>
    <thetext>Comment on attachment 327412
Patch

OK, working well, compiling and passing tests everywhere, and ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374224</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-22 10:10:06 -0800</bug_when>
    <thetext>No pressure, Sam, but I did notice you reviewing another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374321</commentid>
    <comment_count>17</comment_count>
      <attachid>327412</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-11-22 17:40:04 -0800</bug_when>
    <thetext>Comment on attachment 327412
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGDesiredIdentifiers.cpp:84
&gt; +    ASSERT(result-&gt;refCount());

Does this still do the right thing for immortal strings?

&gt; Source/WebCore/page/SecurityOrigin.cpp:333
&gt;  static bool isFeedWithNestedProtocolInHTTPFamily(const URL&amp; url)
&gt;  {

I wonder if we still need this function, given we don&apos;t really display feed: urls anymore.

&gt; Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp:95
&gt; +        auto key = header.left(splitPosition).stripWhiteSpace();

Can this be done as a single additional allocation by doing something like (the admittedly much longer):

auto key = StringView { header }.left(splitPosition).stripLeadingAndTrailingMatchedCharacters(SpaceOrNewlinePredicate { }).toString();

&gt; Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp:112
&gt; -    auto httpVersionEndPosition = statusLine.find(&quot; &quot;);
&gt; +    auto httpVersionEndPosition = statusLine.find(&apos; &apos;);

I wonder if we can make this a compile error, by statically asserting that a literal string is longer than one character long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374434</commentid>
    <comment_count>18</comment_count>
      <attachid>327412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-23 09:09:32 -0800</bug_when>
    <thetext>Comment on attachment 327412
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGDesiredIdentifiers.cpp:84
&gt;&gt; +    ASSERT(result-&gt;refCount());
&gt; 
&gt; Does this still do the right thing for immortal strings?

Well, kind of; it will return false for an immortal string if absolutely no one is holding a reference to it. I guess I can roll this back because it was more correct the old way. But it annoys me to have a function that is literally used only in these two places in this one file and only for an assertion.

&gt;&gt; Source/WebCore/page/SecurityOrigin.cpp:333
&gt;&gt;  {
&gt; 
&gt; I wonder if we still need this function, given we don&apos;t really display feed: urls anymore.

Good point; would be great to figure that out and remove this. You brought this into the world, maybe you should take it out?

&gt;&gt; Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp:95
&gt;&gt; +        auto key = header.left(splitPosition).stripWhiteSpace();
&gt; 
&gt; Can this be done as a single additional allocation by doing something like (the admittedly much longer):
&gt; 
&gt; auto key = StringView { header }.left(splitPosition).stripLeadingAndTrailingMatchedCharacters(SpaceOrNewlinePredicate { }).toString();

Yes, and also it should be dealing with HTTP’s definition of whitespace, not the general purpose whitespace definition from Unicode. I decided to leave this alone for now since it’s in the curl-specific code.

&gt;&gt; Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp:112
&gt;&gt; +    auto httpVersionEndPosition = statusLine.find(&apos; &apos;);
&gt; 
&gt; I wonder if we can make this a compile error, by statically asserting that a literal string is longer than one character long.

I bet we can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374439</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-23 09:32:49 -0800</bug_when>
    <thetext>Committed r225117: &lt;https://trac.webkit.org/changeset/225117&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374440</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-23 09:34:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/35677306&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374488</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-11-23 16:35:40 -0800</bug_when>
    <thetext>Committed r225124: &lt;https://trac.webkit.org/changeset/225124&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327386</attachid>
            <date>2017-11-20 22:04:00 -0800</date>
            <delta_ts>2017-11-20 22:38:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171120220358.patch</filename>
            <type>text/plain</type>
            <size>408771</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZDYwYmU0MGQyYmNlZTBmYWYwZDI3Nzk1ZGQxNDQxZDMzMzJmZjI0Li4xOGY0MzI0NjMyYmQ3ZWE4
MDZiNjU2YTJiZWFkYTA0N2ViMThhYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIERldGVjdCBfX2Rl
Y2xzcGVjIHdpdGhpbiBKU0Jhc2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmMTYxMzU0NTFiYTEyMTY1NjlhYWY1ZGYzN2Ez
MWE0NDAyNjQ0ZmIzLi5mM2UxOTM1MDQ2YmQ3Yjc3NWI4MzQwMjA4MDFlOWFmNDdhZmYxYTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVu
bmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGguaDogTW92ZWQgdGhlIHVzaW5nIGZvciBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkgaGVyZSBz
aW5jZQorICAgICAgICB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBoZXJlLgorCisgICAgICAgICog
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg6IFJlbW92ZWQgb3ZlcmxvYWRzIG9mIGNvbnRhaW5zLCBm
aW5kLCBzdGFydHNXaXRoLCBhbmQKKyAgICAgICAgZW5kc1dpdGggdGhhdCB0YWtlIGEgYm9vbGVh
biBpbmRpY2F0aW5nIHdoZXRoZXIgdGhleSBzaG91bGQgYmUgImNhc2Ugc2Vuc2l0aXZlIi4KKyAg
ICAgICAgV2hlbiBmYWxzZSwgdGhpcyB3YXMgZG9pbmcgVW5pY29kZSBjYXNlIGZvbGRpbmcsIGFu
ZCBubyBjYWxsZXJzIG5lZWRlZCB0aGF0LgorICAgICAgICBBbHNvIHR3ZWFrZWQgZm9ybWF0dGlu
ZyBhbmQgYXJndW1lbnQgbmFtZXMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmg6IEFkZGVkIGFuIGluY2x1ZGUgb2YgTENoYXIuaCBzaW5jZSB0aGlzIGZp
bGUKKyAgICAgICAgdXNlcyB0aGF0LiBBbHNvIHR3ZWFrZWQgZm9ybWF0dGluZyBhIGJpdC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjb250YWluc09ubHlXaGl0ZXNwYWNlKTogRGVsZXRlZC4gRGVzcGl0ZSBpdHMgbmFtZSBz
b3VuZGluZyBsaWtlCisgICAgICAgIGl0IHVzZWQgdGhlIGZ1bGwgVW5pY29kZSB3aGl0ZXNwYWNl
IGRlZmluaXRpb24sIHRoaXMgYWN0dWFsbHkgY2hlY2tlZCBpc0FTQ0lJU3BhY2UuCisgICAgICAg
IENhbGxlcnMgbm93IGFsbCB1c2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBpbnN0ZWFkIHdpdGgg
dGhlIHdoaXRlc3BhY2UgZGVmaW5pdGlvbgorICAgICAgICB0aGF0IGlzIGFwcHJvcHJpYXRlIHRv
IGVhY2ggY2FsbCBzaXRlLgorICAgICAgICAoV1RGOjpsYXRpbjFDYXNlRm9sZFRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6ZmluZElnbm9yaW5nQ2FzZUlubmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6ZXF1YWxJbm5lcik6IFJlbW92ZWQgYm9vbGVhbiBjYXNlU2Vuc2l0aXZlIGFyZ3Vt
ZW50LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRoKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmg6IE1vdmVkIFRleHRDYXNlU2Vuc2l0aXZpdHkgb3V0IGludG8gYSBk
aWZmZXJlbnQgaGVhZGVyLgorICAgICAgICBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggaW5jbHVkZSBo
ZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMKKyAgICAg
ICAgZnJlZSBmdW5jdGlvbiBoZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGxvdHMgb2YgZnVu
Y3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcworICAgICAgICBkZWZpbml0aW9ucyB0byBtYWtlIHRo
ZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIgdG8gcmVhZC4gU29ydGVkIHRoaW5ncyBhIGJpdC4K
KyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nLiBNYXJrZWQgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBvbmUgYXJndW1lbnQgZXhwbGljaXQuIEFkZGVkCisgICAgICAgIGFuIGlzRW1wdHkgZnVuY3Rp
b24gbGlrZSB0aGUgb25lIGluIFN0cmluZy4gUmVtb3ZlZCB0aGUgaGFzQXRMZWFzdE9uZVJlZgor
ICAgICAgICBmdW5jdGlvbiBzaW5jZSBpdCBkb2Vzbid0IG9mZmVyIGEgYmVuZWZpdCBvdmVyIHRo
ZSByZWZDb3VudCBmdW5jdGlvbi4gUmVuYW1lZAorICAgICAgICBjb3B5Q2hhcnMgdG8gY29weUNo
YXJhY3RlcnMuIEFkZGVkIGlzQWxsQVNDSUksIGlzQWxsTGF0aW4xIGFuZAorICAgICAgICBpc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzIGZ1bmN0aW9ucy4gUmVtb3ZlZCBib29sZWFuIGNhc2VTZW5zaXRp
dmUgYXJndW1lbnRzCisgICAgICAgIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmlu
ZElnbm9yaW5nQ2FzZSBhbmQgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuCisgICAgICAgIEFkZGVk
IGEgRklYTUUgdG8gY29kZVBvaW50Q29tcGFyZSBhYm91dCB0aGUgd2F5IGl0IHRyZWF0cyBudWxs
IGFuZCBlbXB0eSBzdHJpbmdzCisgICAgICAgIGFzIGVxdWFsLiBDaGFuZ2VkIGxlbmd0aCBhcmd1
bWVudCBpbiByZW1vdmUgdG8gdW5zaWduZWQgdG8gbWF0Y2ggb3RoZXIgbGVuZ3Rocy4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6cmVt
b3ZlSW50ZXJuYWwpOiBDaGFuZ2VkIGxlbmd0aCBhcmd1bWVudCB0byBiZSB1bnNpZ25lZC4KKyAg
ICAgICAgKFdURjo6Y3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyk6IFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgKFdURjo6U3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQgY29u
c3QpOiBSZXdyb3RlIHRvIGJlIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6IE1vdmVkIEFTQ0lJRmFzdFBhdGguaCB0byBTdHJpbmdJbXBsLmguIE1vdmVk
IGxvdHMgb2YKKyAgICAgICAgZnVuY3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcyBkZWZpbml0aW9u
cyB0byBtYWtlIHRoZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIKKyAgICAgICAgdG8gcmVhZCwg
bWFkZSBvdGhlcnMgb25lLWxpbmVycy4gUmVtb3ZlZCB0aGUgU3RyaW5nOjphdCBmdW5jdGlvbiBi
dXQga2VwdCB0aGUKKyAgICAgICAgU3RyaW5nOjpjaGFyYWN0ZXJBdCBmdW5jdGlvbjsgdGhlIHR3
byB3ZXJlIGlkZW50aWNhbC4gUmVtb3ZlZCBib29sZWFuCisgICAgICAgIGNhc2VTZW5zaXRpdmUg
YXJndW1lbnRzIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmluZElnbm9yaW5nQ2Fz
ZSBhbmQKKyAgICAgICAgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuIFJlbmFtZWQgY29udGFpbnNP
bmx5QVNDSUkgdG8gaXNBbGxBU0NJSSBhbmQKKyAgICAgICAgY29udGFpbnNPbmx5TGF0aW4xIHRv
IGlzQWxsTGF0aW4xIHRvIG1hdGNoIHRoZSBuYW1pbmcgb2YgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cy4KKyAgICAgICAgTW92ZWQgdGhlIGlubGluZSBpbXBsZW1lbnRhdGlvbnMgb2YgZnVuY3Rpb25z
IHRoYXQgYXJlIGRlZmluZWQgYWJvdmUgZnVydGhlcgorICAgICAgICBkb3duLCBhZnRlciB0aGlu
Z3MgbGlrZSB0aGUgQVNDSUlMaXRlcmFsIGNsYXNzIGFuZCB2YXJpb3VzIGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogVXBkYXRlZCBu
YW1lIG9mIGNvcHlDaGFycy4KKwogMjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElO
RyBmZWF0dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTQyODZiNWZkNTJjNWRmODNiNDQxNTEwOGQy
OWNkNmY0NDJjMjYxLi4xNjhlM2NiZjQyZDYzZjYyYjNhMTE1MDFkM2Y2NzI4ZmNjMTU3N2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDE2IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0
aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBI
ZWFkZXJzKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VU
b09mZnNldEluUmFuZ2UpOiBVc2UgaXNIVE1MU3BhY2UgaW5zdGVhZCBvZgorICAgICAgICBpc1Nw
YWNlT3JOZXdsaW5lIHNpbmNlIHRoZSBjb2RlIGlzIHRyeWluZyB0byBza2lwIGNvbGxhcHNpYmxl
IEhUTUwgc3BhY2VzLCBub3QKKyAgICAgICAgYXJiaXRyYXJ5IFVuaWNvZGUgd2hpdGVzcGFjZS4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0OjpjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRl
bU1hcmtlcnMpOiBVc2UKKyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFj
ZT4gZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzU2VhcmNoRmllbGQgY29uc3QpOiBVc2UgY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3Np
YmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0IGNvbnN0KTogVXNlCisgICAgICAgIG5ldyBmaW5kUGxh
aW5UZXh0IGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gVGV4dEl0ZXJhdG9yIHNvIHRoaXMgY2FuIHNo
YXJlIHRoZQorICAgICAgICBzYW1lIHNlYXJjaCBtYXRjaGluZyBsb2dpYyB1c2VkIHRvIGZpbmQg
dGV4dCBpbiB3ZWJwYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNlbGVjdFRleHQpOiBVc2UgY2FwaXRhbGl6ZSBhbmQgaXRzIHJldHVybiB2YWx1ZQorICAgICAg
ICByYXRoZXIgdGhhbiBtYWtlQ2FwaXRhbGl6ZSBtb2RpZnlpbmcgYSBzdHJpbmcgaW4gcGxhY2Uu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOiBVc2UgaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4KKyAgICAgICAgZm9yIHRoZSBzYW1lIHJl
YXNvbiBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnN0cmluZ1RvQnl0ZVN0cmluZyk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnRhaW5zT25seUFTQ0lJV2l0aE5vVXBwZXJjYXNl
KTogVXNlCisgICAgICAgIFN0cmluZ1ZpZXc6OmNvZGVVbml0cyBpbnN0ZWFkIG9mIFN0cmluZzo6
YXQuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZCBjb25zdCk6CisgICAgICAgIFVz
ZSBpc0FsbEFTQ0lJLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFy
c2VyOjphZGRQYXR0ZXJuKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBv
cnRlZEZvcm1hdCBjb25zdCk6IFVzZSBwcm90b2NvbElzIGFuZAorICAgICAgICBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogY3NzL0RPTUNTU05hbWVzcGFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZVdpdGhvdXRJbXBvcnRhbnQpOiBVc2UgZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyk6IFVzZSBp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQ1NTU3BhY2U+LAorICAgICAgICBmb3IgdGhlIHByZWZs
aWdodCwgd2hpY2ggbWF0Y2hlcyB3aGF0IHRoZSBhY3R1YWwgcGFyc2luZyBjb2RlIHVzZXMuCisK
KyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFy
YWN0ZXJEYXRhOjpjb250YWluc09ubHlXaGl0ZXNwYWNlIGNvbnN0KTogRGVsZXRlZC4gQ2FsbGVy
cyBjYW4KKyAgICAgICAgZWZmaWNpZW50bHkgZ2V0IGF0IHRoZSBkYXRhIGFuZCBkbyB0aGlzIGtp
bmQgb2YgY2hlY2sgb24gdGhlIGRhdGEgZGlyZWN0bHkuCisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVUeXBlKTogVXNlIHN0YXJ0c1dp
dGggc2luY2UgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGNvbnZlcnRlZAorICAgICAgICB0byBBU0NJ
SSBsb3dlcmNhc2UuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24gY29uc3QpOiBVc2UgaXNI
VE1MU3BhY2Ugc2luY2UKKyAgICAgICAgc2luY2UgdGhlIGNvZGUgaXMgdHJ5aW5nIHRvIGNoZWNr
IGZvciBjb2xsYXBzaWJsZSBIVE1MIHNwYWNlcywgbm90IGdlbmVyYWwKKyAgICAgICAgVW5pY29k
ZSBzcGFjZXMuIE90aGVyIGNhbGwgc2l0ZXMgb2YgaXNTcGFjZU9yTmV3bGluZSBuZWVkIHRvIGJl
IGNoZWNrZWQgZm9yCisgICAgICAgIHRoaXMsIGJ1dCBJIGRpZCBub3QgZml4IHRoZW0gYWxsIGF0
IHRoaXMgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpOiBV
c2Ugbm9CcmVha1NwYWNlLgorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlciBjb25zdCk6
IFVzZSB0ZXh0KCkubGVuZ3RoKCkgaW5zdGVhZAorICAgICAgICBvZiB0ZXh0TGVuZ3RoLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0IGNvbnN0
KTogVXNlIG5vQnJlYWtTcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3
b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0IGNv
bnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0ZXh0Tm9kZU9mZnNldEluRmxvdyk6IFVzZSB0ZXh0KCkubGVuZ3RoKCku
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpjb2xsYXBzZWRTcGFjZUxlbmd0aCk6IFVwZGF0ZWQgc2luY2Ug
UmVuZGVyVGV4dDo6dGV4dCBub3cgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIg
dGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxhaW5UZXh0KTogQWRkZWQu
IFVzZXMgU2VhcmNoQnVmZmVyIHRvIHNlYXJjaCBmb3Igb25lIHN0cmluZworICAgICAgICB3aXRo
aW4gYW5vdGhlci4gRXhwb3J0ZWQgc28gYWNjZXNzaWJpbGl0eSBjb2RlIGNhbiBkbyB0aGlzIG9w
ZXJhdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKTog
VXNlIG5vQnJlYWtTcGFjZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRTdGFydE9mUGFyYWdyYXBoKTogVXBkYXRlZCBzaW5jZSBS
ZW5kZXJUZXh0Ojp0ZXh0IG5vdyByZXR1cm5zCisgICAgICAgIGEgcmVmZXJlbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc1RleHQpOiBVc2UgU3RyaW5nOjpjaGFyYWN0ZXJBdCBpbnN0ZWFkIG9mIFN0cmluZzo6YXQu
CisgICAgICAgIFVzZSBjYXBpdGFsaXplIGluc3RlYWQgb2YgbWFrZUNhcGl0YWxpemVkLgorCisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpzdHJpcE1pY3Jvc29mdFByZWZpeCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBVc2UKKyAgICAg
ICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwv
QmFzZVRleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5
cGU6OnBhdHRlcm5NaXNtYXRjaCBjb25zdCk6IFJlbW92ZWQgZXhwbGljaXQKKyAgICAgICAgVGV4
dENhc2VTZW5zaXRpdmUgc2luY2UgaXQgbm93IGlzIHRoZSBkZWZhdWx0LCBhbmQgbmVlZGVkIHRv
IHRvdWNoIHRoaXMgYW55d2F5CisgICAgICAgIGJlY2F1c2UgdGhlIGVudW1lcmF0aW9uIGlzIG5v
dyBpbiBhIGRpZmZlcmVudCBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRFbWFpbEFkZHJlc3MpOiBVcGRhdGVk
IHRvIHVzZSBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBodG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVt
ZW50OjpoYXNGYWxsYmFja0NvbnRlbnQgY29uc3QpOiBVc2UKKyAgICAgICAgaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0hUTUxTcGFjZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6c2hvdWxkQWxsb3dRdWlja1RpbWVDbGFzc0lkUXVpcmspOiBVc2UKKyAgICAgICAgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
YmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQpOiBVc2UgcHJvdG9jb2xJcy4KKyAgICAgICAg
KFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKTogVXNlIGlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OnNldENvbXBhdGliaWxpdHlNb2RlRnJvbURvY3R5cGUpOgorICAgICAgICBVc2Ugc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Q2hh
cnNldCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmlzQ29udGFp
bmVkSW5SZXF1ZXN0KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAg
KiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQ
YXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIpOiBEb24ndCBwYXNzIHRoZSBsZW5ndGgg
dG8KKyAgICAgICAgdGhlIFN0cmluZzo6c3RhcnRzV2l0aCBmdW5jdGlvbi4gVGhlcmUgaGFzIG5l
dmVyIGJlZW4gYSB2ZXJzaW9uIG9mIHRoYXQgZnVuY3Rpb24KKyAgICAgICAgdGhhdCB0YWtlcyB0
aGUgbGVuZ3RoLCB0aGVyZSBpcyBubyBuZWVkIHRvIHBhc3MgdGhlIGxlbmd0aCBzaW5jZSB0aGUg
ZnVuY3Rpb24KKyAgICAgICAgaGFuZGxlcyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncyBsaWtlIHRo
ZSBvbmUgaGVyZSwgYW5kIGluIHRoZSBwYXN0IHRoZSBsZW5ndGgKKyAgICAgICAgaGFzIGJlZW4g
Z2V0dGluZyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuIG1ha2luZyB0aGUgY29tcGFyaXNvbiBiZSBj
YXNlIHNlbnNpdGl2ZS4KKyAgICAgICAgUmVtb3ZpbmcgdGhlIGFyZ3VtZW50IGVudGlyZWx5IGxl
YXZlcyBpdCBjYXNlIHNlbnNpdGl2ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6Om1h
dGNoZXNFbGVtZW50KTogVXNlIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZQorICAgICAgICBh
bmQgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3Vy
Y2UpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UpOiBNYWRlIHRoaXMgYSBub24tbWVtYmVyIGZ1bmN0aW9u
CisgICAgICAgIGFuZCByZWltcGxlbWVudGVkIHVzaW5nIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNIVE1MU3BhY2U+KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5u
ZXJGaXJzdENoaWxkKTogVXNlIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lclByZXZpb3VzU2libGluZyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGRO
b2RlQ291bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpk
aWRJbnNlcnRET01Ob2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNl
QXNGbGF0RmlsZSk6CisgICAgICAgIFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorCisgICAgICAgICogcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZTY0VXRpbGl0aWVzOjpidG9hKTogVXNlIGlzQWxsTGF0aW4xLgorCisgICAgICAg
ICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJl
bHMpOiBSZW1vdmVkIFRleHRDYXNlU2Vuc2l0aXZlIGFyZ3VtZW50IHNpbmNlCisgICAgICAgIHRo
YXQgaXMgbm93IHRoZSBkZWZhdWx0IGFuZCBhbHNvIHVzZWQgSlNDOjpZYXJyOjpUZXh0Q2FzZUlu
c2Vuc2l0aXZlLgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKTog
TW9yZSBvZiB0aGUgc2FtZS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhy
ZXNob2xkKTogVXNlCisgICAgICAgIHRleHQoKS5sZW5ndGgoKS4KKworICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNGZWVkV2l0aE5lc3RlZFBy
b3RvY29sSW5IVFRQRmFtaWx5KTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0IGNv
bnN0KToKKyAgICAgICAgVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6aG9zdE1hdGNoZXMgY29uc3QpOiBEaXR0
by4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VOb25jZVNvdXJjZSk6CisgICAgICAgIFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjp3b3Jkc0luQ3VycmVudFBhcmFncmFwaCBjb25zdCk6IFVzZSBub0JyZWFrU3BhY2Uu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6cGFyYW1ldGVyIGNvbnN0KTogVXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRGb250TUlNRVR5cGUpOiBVc2UK
KyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKTogVXNlCisg
ICAgICAgIG1pbWVUeXBlLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IFVzZQorICAgICAgICBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSk6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
LgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5
cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQWxs
QVNDSUkpOiBSZW5hbWVkIGZyb20gY29udGFpbnNPbmx5QVNDSUkuCisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRFbmNvZGVkSG9zdG5hbWUpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBs
YXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09ubHlBU0NJ
SSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkp
OiBVc2UgU3RyaW5nSW1wbDo6aXNBbGxBU0NJSS4gQ2hhbmdlZAorICAgICAgICB0byB0YWtlIFN0
cmluZ0ltcGwmIHRvIGd1YXJhbnRlZSB3ZSB3b24ndCBrZWVwIGRvaW5nIG51bGwgY2hlY2tzIHNp
bmNlCisgICAgICAgIHRoZSBjYWxsZXIgYWxyZWFkeSBjaGVja3MgZm9yIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQpOiBQYXNzIFN0cmluZ0ltcGwm
LgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZQorICAgICAgICBhbmQgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRLZXlTeXN0ZW1SRSk6
IFVzZSBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FjaGU6OnNpbWlsYXJGb250KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Ug
Zm9yCisgICAgICAgIHRoZSBHZWV6YSBmb250IHNwZWNpYWwgY2FzZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9M
b2cpOiBSZW1vdmVkCisgICAgICAgIFRleHRDYXNlU2Vuc2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0
aGUgZGVmYXVsdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTogVXNlIGlz
QWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKTog
VXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKTogVXNl
IEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YWRkU3RyaW5nVG9TSEExKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNh
Y2hlQ29udHJvbERpcmVjdGl2ZXMpOiBVc2UgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VIVFRQUmVmcmVzaCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ2hhcnNldEluTWVkaWFUeXBlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZVJhbmdlKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpUnVuOjpCaWRpUnVuKTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZVBERlVSTCBjb25zdCk6IFVzZQorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4
dE5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmNyZW1l
bnQpOiBEdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmlzTGluZUJyZWFrIGNvbnN0KTogVXBkYXRlZCBz
aW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCBjb25z
dCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojp0ZXh0IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5v
dyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKTog
VXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZVJlbmRlclRleHQpOiBVc2UgaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgor
ICAgICAgICBVc2UgdGhlIG5ldyB0cmltbWVkUHJlZmVycmVkV2lkdGhzIHRoYXQgcmV0dXJucyBh
IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHRoZQorICAgICAgICBvbGQgb25lIHdpdGggbG90cyBvZiBh
cmd1bWVudHMuIEFsc28gdXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZHNXaXRoSFRN
TFNwYWNlcyk6IFJlbmFtZWQgYW5kIGNoYW5nZWQgdG8gdXNlIGlzSFRNTFNwYWNlCisgICAgICAg
IGluc3RlYWQgb2YgaXNBU0NJSVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6cmVhY2hlZEVuZE9m
VGV4dFJlbmRlcmVyKTogVXNlIGVuZHNXaXRoSFRNTFNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21l
bnQpOgorICAgICAgICBVcGRhdGVkIGZvciBoY2FuZ2VzIHRvIFJlbmRlclRleHQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRp
b24pOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRl
ZCk6IFVzZQorICAgICAgICBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ym9sZGVyKTog
QWRkZWQuIEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6
OnVwZGF0ZUZyb21FbGVtZW50KTogUmV3cm90ZSB0bworICAgICAgICBvbmx5IGNvbXB1dGUgdGhl
IGJvbGRlciBmb250IG9uY2UgcmF0aGVyIHRoYW4gZm9yIGV2ZXJ5IGl0ZW0uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKTogVXBkYXRlZCBmb3IK
KyAgICAgICAgY2hhbmdlIHRvIGFwcGx5VGV4dFRyYW5zZm9ybS4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlz
dDo6YWRqdXN0SW5uZXJTdHlsZSk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBSZW5k
ZXJUZXh0Ojp0ZXh0LgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0
aCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0bworICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0uCisg
ICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQgY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxp
emUpOiBSZW5hbWVkIGZyb20gbWFrZUNhcGl0YWxpemVkLiBDaGFuZ2VkIHRvCisgICAgICAgIHRh
a2UgYW5kIHJldHVybiBhIFN0cmluZyBpbnN0ZWFkIG9mIHRha2luZyBhIFN0cmluZyouCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KTogVXNlIGlzQWxsQVNDSUkuIEFs
c28gbW92ZWQKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgbW9zdCBub24tYml0ZmllbGQgbWVt
YmVycyB0byB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBVc2UgdGV4dCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdpZHRoIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lk
dGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzSGFuZ2Fi
bGVTdG9wT3JDb21tYSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmly
c3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVy
cmVkV2lkdGhzKTogQ2hhbmdlZCB0byByZXR1cm4gdmFsdWVzCisgICAgICAgIGluIGEgc3RydWN0
dXJlIGluc3RlYWQgb2YgdGFraW5nIGxvdHMgb2YgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOiBVcGRhdGVkIHRv
IHVzZQorICAgICAgICB0aGUgdGV4dCgpIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6aXNB
bGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlIGNvbnN0KTogVXBkYXRlZCB0bworICAg
ICAgICB1c2UgYSB0aWdodGVyIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjppc0FsbFBvc3NpYmx5
Q29sbGFwc2libGVXaGl0ZXNwYWNlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojpjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSBjb25zdCk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgdXNlIGEgdGlnaHRlciBsb29wLiBSZW5hbWVkIGZyb20gY29udGFpbnNPbmx5V2hpdGVzcGFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KTogVXBk
YXRlZCB0byAgdXNlIHRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OmlzSW5saW5lRmxvd09yRW1w
dHlUZXh0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OnByZXZpb3VzQ2hhcmFjdGVyIGNvbnN0KTogR290IHJpZCBvZiB1bm5lZWRl
ZAorICAgICAgICBudWxsIGNoZWNrIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlUZXh0VHJhbnNmb3JtKTogQ2hhbmdlZCB0byByZXR1cm4gYSBTdHJpbmcgcmF0aGVyCisg
ICAgICAgIHRoYW4gbW9kaWZ5aW5nIG9uZSB0aGF0IGlzIHBhc3NlZCBpbi4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dCk6IFVwZGF0ZWQgdXNlIG9mIGFwcGx5
VGV4dFRyYW5zZm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlY3VyZVRleHQp
OiBNb3JlIG9mIHRoZSBzYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0
ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5
bWJvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGgg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxl
Y3Rpb25SZWN0c0ZvckxpbmVCb3hlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6cHJldmlvdXNPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbiBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNldCBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRD
b2RlUGF0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3Ry
aW5nVmlldyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
aDogTWFkZSBzb21lIG1vcmUgbWVtYmVycyBwcml2YXRlIGFuZCBmaW5hbC4KKyAgICAgICAgVXBk
YXRlZCBmb3IgYWJvdmUsIGluY2x1ZGluZyBhZGRpbmcgdGhlIFdpZHRocyBzdHJ1Y3R1cmUuIEdv
dCByaWQgb2YgdGhlCisgICAgICAgIHRleHRMZW5ndGggZnVuY3Rpb24sIHdoaWNoIGV4aXN0ZWQg
YXMgYSB3b3JrYXJvdW5kIGJlZm9yZSB3ZSBjb3VsZCBtYXJrCisgICAgICAgIGEgZnVuY3Rpb24g
bGlrZSBsZW5ndGggZmluYWwuIE1hZGUgdGhlIHRleHQgZnVuY3Rpb24gcmV0dXJuIGEgU3RyaW5n
SW1wbCYsCisgICAgICAgIHdoaWNoIGlzIGdvb2Qgc2luY2UgdGhlIG1fdGV4dCBzdHJpbmcgaXMg
bmV2ZXIgbnVsbCwgYW5kIHNvIGNhbGxlcnMgZW5kCisgICAgICAgIHVwIHVzaW5nIFN0cmluZ0lt
cGwgZGlyZWN0bHkgYW5kIHNhdmluZyBudWxsIGNoZWNrcy4gUmVtb3ZlZCBmdW5jdGlvbnMKKyAg
ICAgICAgdGhhdCBhcmUgbm90IG5lZWRlZCwgaW5jbHVkaW5nIGlzOEJpdCwgY2hhcmFjdGVyczgs
IGNoYXJhY3RlcnMxNiwKKyAgICAgICAgdW5jaGVja2VkQ2hhcmFjdGVyQXQsIG9wZXJhdG9yW10s
IGFuZCBpc0FsbEFTQ0lJLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQpOiBV
c2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJv
eGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4
T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJv
eGVzOjpwb3NpdGlvbkZvclBvaW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25TdGF0ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyBjb25zdCk6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29sbGVjdE5vbkVtcHR5TGVh
ZlJlbmRlckJsb2NrRmxvd3MpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZsb3dDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0Ojppbml0aWFsaXplU2VnbWVudHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6ZmluZENhcmV0TWF4aW11bU9mZnNldCk6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRk
Qm9yZGVyUGFkZGluZ01hcmdpbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU2tp
cFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpp
dGVyYXRvcklzQmV5b25kRW5kT2ZSZW5kZXJDb21iaW5lVGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6dGV4dFdpZHRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29u
dGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0
aW9uc0ZvclRyYWlsaW5nQm94ZXMpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQpOiBSZW1vdmVkIHN0cmF5IHVzZSBvZiAidW5zaWdu
ZWQgaW50Ii4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFy
dHNOZXdUZXh0Q2h1bmsgY29uc3QpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmU6OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0
cmlidXRlcyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlv
bnNSZXNwZWN0aW5nTGlnYXR1cmVzIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6dXBkYXRlUmVuZGVyVHJlZSk6IFVzZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJ
c05lZWRlZCk6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Rlc3RzOjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MpOiBVc2Ugc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBbGxv
d0V4dGVybmFsTG9hZCk6IERpdHRvLgorCiAyMDE3LTExLTIwICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW9AZW5kbGVzc20uY29tPgogCiAgICAgICAgIFtHVEtdIE5ldyBBUEkgdG8gYWRkLCBy
ZXRyaWV2ZSBhbmQgZGVsZXRlIGNvb2tpZXMgdmlhIFdlYktpdENvb2tpZU1hbmFnZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYjJiMjg2MDk5NDA4MDgyNjQwYTQxNDZhY2NjMjc0OGY1ZDExMGVlYi4uMWQ4NjJmNTA0
M2U5YTRlZWUwYWQxMzRlMWUwYzc2MWU2ODg5YWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2Rl
IG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmlzTWVkaWFNSU1FVHlwZSk6IFVz
ZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6aGFzaFN0cmluZyk6IFVzZSBpc0FsbEFTQ0lJLi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNp
ZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21IZWFkZXJGaWVs
ZHM6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cik6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNh
dmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFy
eUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbik6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRl
UGx1Z2luKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogVXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorCiAyMDE3LTEx
LTIwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRk
IGRlY2xzcGVjIHdpdGhpbiBXZWJLaXQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggOWRlNGMxNzc1ZDM3MDQ4OGQ4MTg1OTkzYTJjNGMyNjk4NzEwNDBhMy4uYzE4NWM2Nzc3MDM1
ZTc1OTA1NjhiNDlkNzc2MTExMmI5YmNlNzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVu
bmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvQmluYXJ5UHJv
cGVydHlMaXN0LmNwcDoKKyAgICAgICAgKEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3Ry
aW5nT2JqZWN0KTogVXNlIGlzQWxsQVNDSUkuCisgICAgICAgIChCaW5hcnlQcm9wZXJ0eUxpc3RT
ZXJpYWxpemVyOjphcHBlbmRTdHJpbmdPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKHJlZ0V4cEZvckxhYmVscyk6IFJl
bW92ZWQgVGV4dENhc2VTZW5zaXRpdmUgc2luY2UgaXQgaXMgbm93IHRoZSBkZWZhdWx0LgorICAg
ICAgICAobWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKTogVXNlIEpTQzo6WWFycjo6VGV4dENhc2VJ
bnNlbnNpdGl2ZS4KKwogMjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElORyBmZWF0
dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZElkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElk
ZW50aWZpZXJzLmNwcAppbmRleCBiNGNlYzZiNGU5OTgwODg5OTJmYWYxNWI3NzhmODc4MWFjZTRi
NjI3Li43OTRlN2ZhNzNjYTJmOTNiN2NkOWU4NWE1ZWY5MjVhMzZmOTAwMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBA
IC04MSwxNCArODEsMTQgQEAgVW5pcXVlZFN0cmluZ0ltcGwqIERlc2lyZWRJZGVudGlmaWVyczo6
YXQodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCA9IG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGluZGV4KS5pbXBsKCk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBtX2Fk
ZGVkSWRlbnRpZmllcnNbaW5kZXggLSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygp
XTsKLSAgICBBU1NFUlQocmVzdWx0LT5oYXNBdExlYXN0T25lUmVmKCkpOworICAgIEFTU0VSVChy
ZXN1bHQtPnJlZkNvdW50KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVzaXJl
ZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21tb25EYXRhKQog
ewogICAgIGZvciAoYXV0byByZXAgOiBtX2FkZGVkSWRlbnRpZmllcnMpIHsKLSAgICAgICAgQVNT
RVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsKKyAgICAgICAgQVNTRVJUKHJlcC0+cmVmQ291
bnQoKSk7CiAgICAgICAgIGNvbW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgcmVwKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCA4NDM3MGIxYWNkZWJlY2Y4M2NlZjRkOTY4MDNkYzEwOGJmYjZkMGQ4
Li4zYjM2N2ZmN2FlMjJkMDAwOGJlZTlkZWMzMzE2ODliNDVmMmZiZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBSZWY8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5n
JiB1cmwsIGluCiBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIHsKICAgICBpZiAoaXNSZWdleCkgewotICAg
ICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4sIFRleHRDYXNl
U2Vuc2l0aXZlKTsKKyAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChw
YXR0ZXJuKTsKICAgICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHVybCkgIT0gLTE7CiAgICAgfQog
ICAgIHJldHVybiB1cmwgPT0gcGF0dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAppbmRleCBmZGVkYTFkMTM4NTk4ZGIwZTAyOGQ2YjI1NWNhYjE3NTA2OTE2
YzQ4Li5jZmU1NmY2NTg5NGYwYTJhMmM5Y2U0MDMxZjc2YTJlMGM4YmYxNDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlID0gMjA0ODsK
IHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZUludGVybmFsOChMQ2hhciogYnVmZmVyKSBj
b25zdAogewogICAgIGlmIChpc1N1YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFycygKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAg
ICBidWZmZXIsIHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3Ry
aW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDhOb1N1YnN0
cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc19t
YXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgZmliZXIoaSk7ICsraSkgewogICAgICAgICBjb25zdCBT
dHJpbmdJbXBsJiBmaWJlclN0cmluZyA9ICpmaWJlcihpKS0+bV92YWx1ZS5pbXBsKCk7CiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpYmVyU3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBmaWJl
clN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBwb3NpdGlvbiArPSBsZW5n
dGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVuZ3RoKCkpID09IHBvc2l0aW9uKTsK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5h
bDhOb1N1YnN0cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogdm9pZCBKU1JvcGVTdHJpbmc6OnJl
c29sdmVSb3BlSW50ZXJuYWwxNihVQ2hhciogYnVmZmVyKSBjb25zdAogewogICAgIGlmIChpc1N1
YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycygKKyAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAgICBidWZmZXIsIHN1YnN0cmluZ0Jh
c2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5ndGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksOSArMTY5LDkgQEAgdm9pZCBKU1Jv
cGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNk5vU3Vic3RyaW5nKFVDaGFyKiBidWZmZXIp
IGNvbnN0CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwmIGZpYmVyU3RyaW5nID0gKmZpYmVyKGkp
LT5tX3ZhbHVlLmltcGwoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmliZXJTdHJpbmcu
bGVuZ3RoKCk7CiAgICAgICAgIGlmIChmaWJlclN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0
aW9uLCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBsZW5ndGgpOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogICAg
ICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVu
Z3RoKCkpID09IHBvc2l0aW9uKTsKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpTUm9wZVN0cmlu
Zzo6cmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqIGJ1ZmZlcikgY29uc3QKICAgICAgICAgCiAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlci0+bGVuZ3RoKCk7CiAgICAgICAg
IHBvc2l0aW9uIC09IGxlbmd0aDsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0
aW9uLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhwb3NpdGlvbiwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQo
YnVmZmVyID09IHBvc2l0aW9uKTsKQEAgLTM2Myw5ICszNjMsOSBAQCB2b2lkIEpTUm9wZVN0cmlu
Zzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciogYnVmZmVyKSBjb25zdAogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlckFzUm9wZS0+bGVuZ3RoKCk7CiAgICAg
ICAgICAgICAgICAgcG9zaXRpb24gLT0gbGVuZ3RoOwogICAgICAgICAgICAgICAgIGlmIChzdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMo
cG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0cmlu
Zy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgc3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVy
czE2KCkgKyBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNfbWF4SW50ZXJu
YWxSb3BlTGVuZ3RoICYmIGN1cnJlbnRGaWJlckFzUm9wZS0+ZmliZXIoaSk7ICsraSkKQEAgLTM3
Nyw5ICszNzcsOSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hh
ciogYnVmZmVyKSBjb25zdAogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0
aCgpOwogICAgICAgICBwb3NpdGlvbiAtPSBsZW5ndGg7CiAgICAgICAgIGlmIChzdHJpbmctPmlz
OEJpdCgpKQotICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9uLCBzdHJp
bmctPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0
cmluZy0+Y2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsK
ICAgICB9CiAKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGFkYmZhZDIx
MTllMGM2OTQ3MTg1ZjIxYzljMmMzNDIxZDc0MzcxMTUuLjhlMmE2ZWJhNDVkMDE0ZmYxNzI2ZWFk
YWE5ODE2NTI5MmZiNGE3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJp
bmcqIHNvdXJjCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICAgICAgaWYgKGludCBzcmNMZW4g
PSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jh
bmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdS
YW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9
IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKICAgICAgICAgaWYgKGludCBzcmNMZW4g
PSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2Vz
W2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ld
LnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQxMywxMyArNDEzLDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVj
LCBKCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4Q291bnQ7IGkrKykgewogICAgICAg
ICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGludCBzcmNM
ZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJz
dHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSAr
IHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGludCBzZXBMZW4gPSBzZXBhcmF0b3JzW2ldLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRv
cnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0b3JzW2ldLmNo
YXJhY3RlcnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBz
ZXBMZW47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDQwLDE4ICs0NDAs
MTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaWYgKGkgPCByYW5nZUNvdW50
KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5n
dGgpIHsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzOEJpdCgpKQotICAgICAgICAgICAg
ICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2Uu
Y2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlv
biwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBz
b3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xl
bik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAg
ICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoc2VwYXJhdG9yc1tpXS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFy
YWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgo
KSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hh
cmFjdGVyczE2KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJz
MTYoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc2VwTGVuOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0
cmluZ1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3RyaW5nLCB0cnVlLCBzdGFydCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmZpbmQo
c2VhcmNoU3RyaW5nLCBzdGFydCkgIT0gbm90Rm91bmQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAppbmRleCAy
ODQyNzc0M2NkZjZhMzhhOWE3YTBkMmViNzEyMzYxZmMxMTdiODgzLi4yMDczOTBiNWU5ZTcxYWE2
NmE4MmVhNDUxNjMxYjFlYzQ0ODVjYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgKQEAgLTI5LDE1ICsyOSwxMyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCi1lbnVtIE11bHRpbGluZU1vZGUgewotICAgIE11bHRp
bGluZURpc2FibGVkLAotICAgIE11bHRpbGluZUVuYWJsZWQKLX07CitlbnVtIE11bHRpbGluZU1v
ZGUgeyBNdWx0aWxpbmVEaXNhYmxlZCwgTXVsdGlsaW5lRW5hYmxlZCB9OworZW51bSBUZXh0Q2Fz
ZVNlbnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsK
IAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVndWxhckV4cHJlc3Npb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0
IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIE11bHRpbGluZU1vZGUgPSBNdWx0aWxpbmVE
aXNhYmxlZCk7CisgICAgZXhwbGljaXQgUmVndWxhckV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiwg
VGV4dENhc2VTZW5zaXRpdml0eSA9IFRleHRDYXNlU2Vuc2l0aXZlLCBNdWx0aWxpbmVNb2RlID0g
TXVsdGlsaW5lRGlzYWJsZWQpOwogICAgIH5SZWd1bGFyRXhwcmVzc2lvbigpOwogCiAgICAgUmVn
dWxhckV4cHJlc3Npb24oY29uc3QgUmVndWxhckV4cHJlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9B
U0NJSUZhc3RQYXRoLmgKaW5kZXggZWI1NDgyOGEyOGVhZGE0MDk3NDVjODFkZWQzNzFkYjI2NjJm
YjU3Ni4uMjY0MmE1YmJlYjJkMGI2MzQ1NzU4ZjJmNDFiOGFjZGZmYjY4ZjUzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKQEAgLTE5NCw0ICsxOTQsNiBAQCBpbmxpbmUgdm9pZCBj
b3B5TENoYXJzRnJvbVVDaGFyU291cmNlKExDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgcwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjaGFyYWN0ZXJz
QXJlQWxsQVNDSUk7CisKICNlbmRpZiAvLyBBU0NJSUZhc3RQYXRoX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oCmluZGV4IDc2NThlMDUxMjU1OTQwZjE5OTk5YTIyOWM2MjNkOThlYmVmMzJh
ODIuLmI4NjNhYjAzMzE2OGFkODUyMjU0OGVhNTFkNGJkZWQwNzk1NWJlODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAwNiwgMjAwOCwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzIsOCArNzIsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFM
V0FZU19JTkxJTkUgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKQorICAgIHRlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIEF0b21pY1N0cmluZyhjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykKICAg
ICAgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJhY3RlcnMs
IGNoYXJhY3RlckNvdW50IC0gMSkpCiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFy
YWN0ZXJDb3VudCA+IDEsIEF0b21pY1N0cmluZ0Zyb21MaXRlcmFsTm90RW1wdHkpOwpAQCAtMTEy
LDUxICsxMTEsMjcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
QXRvbWljU3RyaW5nIG51bWJlcihkb3VibGUpOwogICAgIC8vIElmIHdlIG5lZWQgbW9yZSBvdmVy
bG9hZHMgb2YgdGhlIG51bWJlciBmdW5jdGlvbiwgd2UgY2FuIGFkZCBhbGwgdGhlIG90aGVycyB0
aGF0IFN0cmluZyBoYXMsIGJ1dCB0aGVzZSBzZWVtIHRvIGRvIGZvciBub3cuCiAKLSAgICBib29s
IGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGMpOyB9
Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hhciogcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocywgY2FzZVNl
bnNpdGl2ZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocyk7IH0KLSAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX3N0cmluZy5jb250YWlucyhzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLQotICAgIHNp
emVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZChjLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogcywg
dW5zaWduZWQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQot
ICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnQgPSAwLCBib29s
IGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5m
aW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmlu
Zy5maW5kSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzLCBzdGFydE9mZnNl
dCk7IH0KLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCk7IH0KLQotICAgIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dp
dGgocyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShzKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJv
b2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFy
YWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFj
dGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8
bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KLQotICAgIGJvb2wgZW5kc1dp
dGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRz
V2l0aChzKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2Uocyk7IH0KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBj
YXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChz
LCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0g
ICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25z
dCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihw
cmVmaXgsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGNoYXJhY3Rlcik7IH0KKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmNvbnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9CisgICAgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKwor
ICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5maW5kKGNoYXJhY3Rlciwgc3RhcnQpOyB9CisgICAgc2l6ZV90
IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmQoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsgfQorICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0
KTsgfQorICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5j
dGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1h
dGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQorCisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0K
KyAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0
cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21h
dGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aDxtYXRjaExlbmd0
aD4ocHJlZml4KTsgfQorCisgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgYm9v
bCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNX
aXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9v
bCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpOyB9CiAKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgQXRvbWljU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIEF0b21pY1N0cmluZyBjb252ZXJ0VG9B
U0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpAQCAtMTcyLDEzICsxNDcsMTMgQEAgcHVibGljOgogI2lm
IFVTRShDRikKICAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCisKICNpZmRl
ZiBfX09CSkNfXwogICAgIEF0b21pY1N0cmluZyhOU1N0cmluZyopOwogICAgIG9wZXJhdG9yIE5T
U3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAotICAgIC8vIEF0
b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgotICAgIC8v
IHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgorICAgIC8v
IEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUg
aW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCkBAIC0yMjksNTMgKzIwNCw1MyBA
QCBpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoKQogewogfQogCi1pbmxpbmUgQXRv
bWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMpCi0gICAgOiBtX3N0cmluZyhB
dG9taWNTdHJpbmdJbXBsOjphZGQocykpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoY29uc3QgTENoYXIqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6
OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmco
Y29uc3QgY2hhciogcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkK
K2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5s
aW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBs
ZW5ndGgpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocywgbGVuZ3RoKSkK
K2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3Ry
aW5nLCBsZW5ndGgpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmco
Y29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0
cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCiB7CiB9CiAKLWlubGluZSBB
dG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykKLSAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1w
bDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmlu
ZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApCi0gICAgOiBtX3N0cmluZyhpbXApCitpbmxpbmUgQXRv
bWljU3RyaW5nOjpBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDog
bV9zdHJpbmcoc3RyaW5nKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgaW1wKQotICAgIDogbV9zdHJpbmcoV1RGTW92
ZShpbXApKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKIHsK
IH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkK
LSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChpbXApKQoraW5saW5lIEF0b21p
Y1N0cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogaW1wKQotICAgIDogbV9z
dHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJp
bmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNT
dHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpCi0gICAgOiBtX3N0cmluZyhBdG9t
aWNTdHJpbmdJbXBsOjphZGQocy5pbXBsKCkpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWlj
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5n
SW1wbDo6YWRkKHN0cmluZy5pbXBsKCkpKQogewogfQogCkBAIC0yOTAsMTcgKzI2NSwyMSBAQCBp
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
IH0KIAogI2lmIFVTRShDRikKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhDRlN0
cmluZ1JlZiBzKQotICAgIDogIG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKKwor
aW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKKyAg
ICA6ICBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KKwogI2Vu
ZGlmCiAKICNpZmRlZiBfX09CSkNfXwotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KE5TU3RyaW5nKiBzKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilzKSkKKworaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KE5TU3RyaW5nKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQo
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZykpCiB7CiB9CisKICNlbmRpZgogCiAvLyBEZWZp
bmUgZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWlj
IHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oCmluZGV4IDYxOTQyZTdmYzRiMjVjYTFiOTA1NjI0MDE3OWQ4MTdmYWFmNWI5YmYuLjlk
YjgzMDNjODMwMWI5N2M0MzA4MjA4MjZmYTQ2YTkyY2U5Y2U5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCkBAIC0yMiwxNCArMjIsMTMg
QEAKICNpZm5kZWYgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAjZGVmaW5lIEludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb25faAogCisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKwogbmFt
ZXNwYWNlIFdURiB7CiAKLWVudW0gUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsKLSAgICBQb3Np
dGl2ZU51bWJlciwKLSAgICBOZWdhdGl2ZU51bWJlcgotfTsKK2VudW0gUG9zaXRpdmVPck5lZ2F0
aXZlTnVtYmVyIHsgUG9zaXRpdmVOdW1iZXIsIE5lZ2F0aXZlTnVtYmVyIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ7Cit0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRp
dmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGUsIHR5cGVuYW1lIEFkZGl0aW9uYWxBcmd1bWVu
dFR5cGU+CiBzdGF0aWMgdHlwZW5hbWUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFQ+
OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJl
ciwgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSBhZGRpdGlvbmFsQXJndW1lbnQpCkBAIC02Myw3ICs2
Miw2IEBAIGlubGluZSB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46
OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpCiAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5n
SW1wbDxULCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBhZGRp
dGlvbmFsQXJndW1lbnQpOwogfQogCi0KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUs
IHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJlciBO
dW1iZXJUeXBlPgogc3RhdGljIHZvaWQgd3JpdGVOdW1iZXJUb0J1ZmZlckltcGwoVW5zaWduZWRJ
bnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQogewpAQCAtOTcs
NyArOTUsNiBAQCBpbmxpbmUgdm9pZCB3cml0ZU51bWJlclRvQnVmZmVyVW5zaWduZWQoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cAogICAgIHJldHVybiB3cml0ZU51bWJl
clRvQnVmZmVySW1wbDxDaGFyYWN0ZXJUeXBlLCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2
ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7CiB9CiAKLQogdGVtcGxhdGU8dHlwZW5hbWUg
VW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGU+
CiBzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGwoVW5zaWduZWRJbnRl
Z2VyVHlwZSBudW1iZXIpCiB7CkBAIC0xMjgsNyArMTI1LDYgQEAgaW5saW5lIHVuc2lnbmVkIGxl
bmd0aE9mTnVtYmVyQXNTdHJpbmdVbnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
ICAgICByZXR1cm4gbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGw8VW5zaWduZWRJbnRlZ2VyVHlw
ZSwgUG9zaXRpdmVOdW1iZXI+KG51bWJlcik7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
ICNlbmRpZiAvLyBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCmluZGV4IGQxN2YzOWI0YjY4OTRmZWViNWIyYzczMjMxOWQyY2U3ZDAyNWI1NDAu
LjllNDY5NzMxNDVjYjJiZjQ4NTliNjE3NGVjNWZlN2UxNDgyYjU4YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcApAQCAtMTYyLDcgKzE2Miw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKLQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBDb25z
dHJ1Y3RXaXRob3V0Q29weWluZykpOwogfQogCkBAIC0xNzAsMTIgKzE2OSwxMCBAQCBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbgogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVt
cHR5KCk7Ci0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKGNoYXJhY3RlcnMs
IGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5ndGgsIENo
YXJhY3RlclR5cGUqJiBkYXRhKQogewogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIGRhdGEg
PSAwOwpAQCAtMTg0LDIwICsxODEsMTkgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLAogICAgIHJl
dHVybiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVk
IGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQog
ewogICAgIEFTU0VSVChsZW5ndGgpOwogCiAgICAgLy8gQWxsb2NhdGUgYSBzaW5nbGUgYnVmZmVy
IGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBTdHJpbmdJbXBsCiAgICAgLy8gc3RydWN0IGFz
IHdlbGwgYXMgdGhlIGRhdGEgd2hpY2ggaXQgY29udGFpbnMuIFRoaXMgcmVtb3ZlcyBvbmUKICAg
ICAvLyBoZWFwIGFsbG9jYXRpb24gZnJvbSB0aGlzIGNhbGwuCi0gICAgaWYgKGxlbmd0aCA+ICgo
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwp
KSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hh
cmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwotICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9
IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hh
clR5cGU+KGxlbmd0aCkpKTsKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPENoYXJhY3RlclR5cGU+KGxl
bmd0aCkpKTsKIAotICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJUeXBlPigpOwot
ICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwor
ICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJhY3RlclR5cGU+KCk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKIH0K
IAogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCkBAIC0yMTAsOCArMjA2LDcgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hh
ciomIGRhdGEpCiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbChsZW5ndGgs
IGRhdGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4m
JiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
b3JpZ2luYWxTdHJpbmctPmhhc09uZVJlZigpKTsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmct
PmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsKTsKQEAgLTIyMiwxNCArMjE3LDE0
IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFs
KFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsCiAgICAgfQogCiAgICAgLy8gU2FtZSBhcyBjcmVh
dGVVbmluaXRpYWxpemVkKCkgZXhjZXB0IGhlcmUgd2UgdXNlIHN0cmluZ1JlYWxsb2MuCi0gICAg
aWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6
ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAo
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBs
KSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgb3Jp
Z2luYWxTdHJpbmctPn5TdHJpbmdJbXBsKCk7Ci0gICAgYXV0byogc3RyaW5nID0gc3RhdGljX2Nh
c3Q8U3RyaW5nSW1wbCo+KHN0cmluZ1JlYWxsb2MoJm9yaWdpbmFsU3RyaW5nLmxlYWtSZWYoKSwg
YWxsb2NhdGlvblNpemU8Q2hhclR5cGU+KGxlbmd0aCkpKTsKKyAgICBhdXRvKiBzdHJpbmcgPSBz
dGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nUmVhbGxvYygmb3JpZ2luYWxTdHJpbmcubGVh
a1JlZigpLCBhbGxvY2F0aW9uU2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKSk7CiAKLSAgICBk
YXRhID0gc3RyaW5nLT50YWlsUG9pbnRlcjxDaGFyVHlwZT4oKTsKLSAgICByZXR1cm4gY29uc3Ry
dWN0SW50ZXJuYWw8Q2hhclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKKyAgICBkYXRhID0gc3RyaW5n
LT50YWlsUG9pbnRlcjxDaGFyYWN0ZXJUeXBlPigpOworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRl
cm5hbDxDaGFyYWN0ZXJUeXBlPihzdHJpbmcsIGxlbmd0aCk7CiB9CiAKIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTI0NCwxNSArMjM5LDEzIEBAIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9y
aWdpbmFsU3RyaW5nLCB1bnNpZ25lCiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChXVEZN
b3ZlKG9yaWdpbmFsU3RyaW5nKSwgbGVuZ3RoLCBkYXRhKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJ
bnRlcm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXJzIHx8ICFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiAqZW1wdHkoKTsKLQotICAgIENoYXJUeXBlKiBkYXRhOworICAgIENoYXJhY3Rl
clR5cGUqIGRhdGE7CiAgICAgYXV0byBzdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwotICAgIG1lbWNweShkYXRhLCBjaGFyYWN0ZXJzLCBs
ZW5ndGggKiBzaXplb2YoQ2hhclR5cGUpKTsKKyAgICBtZW1jcHkoZGF0YSwgY2hhcmFjdGVycywg
bGVuZ3RoICogc2l6ZW9mKENoYXJhY3RlclR5cGUpKTsKICAgICByZXR1cm4gc3RyaW5nOwogfQog
CkBAIC0yOTgsMjkgKzI5MSw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUo
Y29uc3QgTENoYXIqIHN0cmluZykKICAgICByZXR1cm4gY3JlYXRlKHN0cmluZywgbGVuZ3RoKTsK
IH0KIAotYm9vbCBTdHJpbmdJbXBsOjpjb250YWluc09ubHlXaGl0ZXNwYWNlKCkKLXsKLSAgICAv
LyBGSVhNRTogU2hvdWxkIHJlbmFtZSB0aGlzIHRvIGNvbnRhaW5zT25seUFTQ0lJV2hpdGVzcGFj
ZS4KLSAgICAvLyBNb3N0IFdlYktpdCBjYWxsZXJzIGluc3RlYWQgd2FudCBjb250YWluc09ubHlI
VE1MV2hpdGVzcGFjZSB3aGljaCwgdW5saWtlIHRoaXMsCi0gICAgLy8gd291bGQgKm5vdCogdHJl
YXQgVSswMDBCIExJTkUgVEFCVUxBVElPTiBhcyBhIHNwYWNlLgotCi0gICAgaWYgKGlzOEJpdCgp
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBVQ2hhciBjID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJ
SVNwYWNlKGMpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjID0gbV9kYXRhMTZbaV07Ci0gICAgICAg
IGlmICghaXNBU0NJSVNwYWNlKGMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0
cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChzdGFydCA+
PSBtX2xlbmd0aCkKQEAgLTM4MSwxMSArMzUxLDggQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgIGlmICghKG9yZWQgJiB+
MHg3RikpIHsKICAgICAgICAgVUNoYXIqIGRhdGExNjsKICAgICAgICAgYXV0byBuZXdJbXBsID0g
Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGExNik7Ci0g
ICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgVUNoYXIgYyA9IG1fZGF0YTE2W2ldOwotICAgICAgICAgICAgZGF0YTE2
W2ldID0gdG9BU0NJSUxvd2VyKGMpOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQorICAgICAgICAgICAgZGF0YTE2W2ldID0gdG9BU0NJ
SUxvd2VyKG1fZGF0YTE2W2ldKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQogCkBA
IC00NTIsOSArNDE5LDkgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1Vw
cGVyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICAvLyBEbyBhIGZhc3RlciBsb29wIGZvciB0
aGUgY2FzZSB3aGVyZSBhbGwgdGhlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgogICAgICAgICB1bnNp
Z25lZCBvcmVkID0gMDsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICBvcmVkIHw9
IGM7Ci0gICAgICAgICAgICBkYXRhOFtpXSA9IHRvQVNDSUlVcHBlcihjKTsKKyAgICAgICAgICAg
IExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBvcmVkIHw9IGNoYXJh
Y3RlcjsKKyAgICAgICAgICAgIGRhdGE4W2ldID0gdG9BU0NJSVVwcGVyKGNoYXJhY3Rlcik7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCEob3JlZCAmIH4weDdGKSkKICAgICAgICAgICAgIHJldHVy
biBuZXdJbXBsOwpAQCAtNDY2LDExICs0MzMsMTEgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICAvLyAgMS4gU29t
ZSBMYXRpbi0xIGNoYXJhY3RlcnMgd2hlbiBjb252ZXJ0ZWQgdG8gdXBwZXIgY2FzZSBhcmUgMTYg
Yml0IGNoYXJhY3RlcnMuCiAgICAgICAgIC8vICAyLiBMb3dlciBjYXNlIHNoYXJwLVMgY29udmVy
dHMgdG8gIlNTIiAodHdvIGNoYXJhY3RlcnMpCiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBMQ2hhciBjID0gbV9kYXRhOFtpXTsKLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShjID09IHNtYWxsTGV0dGVyU2hhcnBTKSkKKyAgICAgICAg
ICAgIExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoY2hhcmFjdGVyID09IHNtYWxsTGV0dGVyU2hhcnBTKSkKICAgICAgICAgICAgICAgICArK251
bWJlclNoYXJwU0NoYXJhY3RlcnM7Ci0gICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGMpIDw9
IDB4RkZGRik7Ci0gICAgICAgICAgICBVQ2hhciB1cHBlciA9IHVfdG91cHBlcihjKTsKKyAgICAg
ICAgICAgIEFTU0VSVCh1X3RvdXBwZXIoY2hhcmFjdGVyKSA8PSAweEZGRkYpOworICAgICAgICAg
ICAgVUNoYXIgdXBwZXIgPSB1X3RvdXBwZXIoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWSh1cHBlciA+IDB4RkYpKSB7CiAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyB1
cHBlci1jYXNlZCBjaGFyYWN0ZXIgZG9lcyBub3QgZml0IGluIGFuIDgtYml0IHN0cmluZywgd2Ug
bmVlZCB0byB0YWtlIHRoZSAxNi1iaXQgcGF0aC4KICAgICAgICAgICAgICAgICBnb3RvIHVwY29u
dmVydDsKQEAgLTQ4NywxMyArNDU0LDEzIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICAgICAgTENoYXIqIGRlc3QgPSBk
YXRhODsKIAogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSBz
bWFsbExldHRlclNoYXJwUykgeworICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRh
OFtpXTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gc21hbGxMZXR0ZXJTaGFycFMpIHsK
ICAgICAgICAgICAgICAgICAqZGVzdCsrID0gJ1MnOwogICAgICAgICAgICAgICAgICpkZXN0Kysg
PSAnUyc7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVCh1X3Rv
dXBwZXIoYykgPD0gMHhGRik7Ci0gICAgICAgICAgICAgICAgKmRlc3QrKyA9IHN0YXRpY19jYXN0
PExDaGFyPih1X3RvdXBwZXIoYykpOworICAgICAgICAgICAgICAgIEFTU0VSVCh1X3RvdXBwZXIo
Y2hhcmFjdGVyKSA8PSAweEZGKTsKKyAgICAgICAgICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nh
c3Q8TENoYXI+KHVfdG91cHBlcihjaGFyYWN0ZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC01MTAsOSArNDc3LDkgQEAgdXBjb252ZXJ0OgogICAgIC8vIERvIGEgZmFzdGVyIGxv
b3AgZm9yIHRoZSBjYXNlIHdoZXJlIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUgQVNDSUkuCiAgICAg
dW5zaWduZWQgb3JlZCA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBVQ2hhciBjID0gc291cmNlMTZbaV07Ci0gICAgICAgIG9yZWQgfD0gYzsKLSAg
ICAgICAgZGF0YTE2W2ldID0gdG9BU0NJSVVwcGVyKGMpOworICAgICAgICBVQ2hhciBjaGFyYWN0
ZXIgPSBzb3VyY2UxNltpXTsKKyAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXI7CisgICAgICAgIGRh
dGExNltpXSA9IHRvQVNDSUlVcHBlcihjaGFyYWN0ZXIpOwogICAgIH0KICAgICBpZiAoIShvcmVk
ICYgfjB4N0YpKQogICAgICAgICByZXR1cm4gbmV3SW1wbDsKQEAgLTc2MCw5ICs3MjcsOSBAQCBj
bGFzcyBVQ2hhclByZWRpY2F0ZSB7CiBwdWJsaWM6CiAgICAgaW5saW5lIFVDaGFyUHJlZGljYXRl
KENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZnVuY3Rpb24pOiBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KSB7IH0KIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoVUNoYXIgY2gpIGNvbnN0CisgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9mdW5jdGlvbihjaCk7CisgICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKGNo
YXJhY3Rlcik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNzcxLDkgKzczOCw5IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlIHsKIHB1YmxpYzoKLSAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvcigpKFVDaGFyIGNoKSBjb25zdAorICAgIGlubGluZSBib29sIG9wZXJhdG9y
KCkoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3BhY2VP
ck5ld2xpbmUoY2gpOworICAgICAgICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShjaGFyYWN0ZXIp
OwogICAgIH0KIH07CiAKQEAgLTc4NywxMSArNzU0LDEwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNw
YWNlCiAgICAgcmV0dXJuIHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUoaXNX
aGl0ZVNwYWNlKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19J
TkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoY29uc3Qg
Q2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNo
KQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKLSAg
ICBjb25zdCBDaGFyVHlwZSogZnJvbSA9IGNoYXJhY3RlcnM7Ci0gICAgY29uc3QgQ2hhclR5cGUq
IGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CisgICAgYXV0byogZnJvbSA9IGNoYXJhY3RlcnM7
CisgICAgYXV0byogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0aDsKICAgICAKICAgICAvLyBBc3N1
bWUgdGhlIGNvbW1vbiBjYXNlIHdpbGwgbm90IHJlbW92ZSBhbnkgY2hhcmFjdGVycwogICAgIHdo
aWxlIChmcm9tICE9IGZyb21lbmQgJiYgIWZpbmRNYXRjaCgqZnJvbSkpCkBAIC03OTksMTIgKzc2
NSwxMiBAQCBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVD
aGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYQogICAgIGlmIChmcm9tID09IGZyb21lbmQp
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKLSAgICBTdHJpbmdCdWZmZXI8Q2hhclR5cGU+
IGRhdGEobV9sZW5ndGgpOwotICAgIENoYXJUeXBlKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwor
ICAgIFN0cmluZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKKyAgICBhdXRv
KiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIG91dGMgPSBmcm9tIC0gY2hh
cmFjdGVyczsKICAgICAKICAgICBpZiAob3V0YykKLSAgICAgICAgbWVtY3B5KHRvLCBjaGFyYWN0
ZXJzLCBvdXRjICogc2l6ZW9mKENoYXJUeXBlKSk7CisgICAgICAgIG1lbWNweSh0bywgY2hhcmFj
dGVycywgb3V0YyAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgICB3aGlsZSAoZnJvbSAhPSBmcm9tZW5kICYmIGZpbmRNYXRjaCgqZnJvbSkpCkBA
IC04MjcsMTcgKzc5MywxNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hh
cmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaAogICAgIHJldHVybiBy
ZW1vdmVDaGFyYWN0ZXJzKGNoYXJhY3RlcnMxNigpLCBmaW5kTWF0Y2gpOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPgotaW5saW5lIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShV
Q2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSBwcmVkaWNh
dGUpCiB7Ci0gICAgU3RyaW5nQnVmZmVyPENoYXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKKyAgICBT
dHJpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gZGF0YShtX2xlbmd0aCk7CiAKLSAgICBjb25zdCBD
aGFyVHlwZSogZnJvbSA9IGNoYXJhY3RlcnM8Q2hhclR5cGU+KCk7Ci0gICAgY29uc3QgQ2hhclR5
cGUqIGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CisgICAgYXV0byogZnJvbSA9IGNoYXJhY3Rl
cnM8Q2hhcmFjdGVyVHlwZT4oKTsKKyAgICBhdXRvKiBmcm9tZW5kID0gZnJvbSArIG1fbGVuZ3Ro
OwogICAgIGludCBvdXRjID0gMDsKICAgICBib29sIGNoYW5nZWRUb1NwYWNlID0gZmFsc2U7CiAg
ICAgCi0gICAgQ2hhclR5cGUqIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CisgICAgYXV0byogdG8g
PSBkYXRhLmNoYXJhY3RlcnMoKTsKICAgICAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB3
aGlsZSAoZnJvbSAhPSBmcm9tZW5kICYmIHByZWRpY2F0ZSgqZnJvbSkpIHsKQEAgLTk2Miw1NCAr
OTI3LDYgQEAgZmxvYXQgU3RyaW5nSW1wbDo6dG9GbG9hdChib29sKiBvaykKICAgICByZXR1cm4g
Y2hhcmFjdGVyc1RvRmxvYXQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBvayk7CiB9CiAKLS8v
IFRhYmxlIGlzIGJhc2VkIG9uIGZ0cDovL2Z0cC51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9D
YXNlRm9sZGluZy50eHQKLXN0YXRpYyBjb25zdCBVQ2hhciBsYXRpbjFDYXNlRm9sZFRhYmxlWzI1
Nl0gPSB7Ci0gICAgMHgwMDAwLCAweDAwMDEsIDB4MDAwMiwgMHgwMDAzLCAweDAwMDQsIDB4MDAw
NSwgMHgwMDA2LCAweDAwMDcsIDB4MDAwOCwgMHgwMDA5LCAweDAwMGEsIDB4MDAwYiwgMHgwMDBj
LCAweDAwMGQsIDB4MDAwZSwgMHgwMDBmLAotICAgIDB4MDAxMCwgMHgwMDExLCAweDAwMTIsIDB4
MDAxMywgMHgwMDE0LCAweDAwMTUsIDB4MDAxNiwgMHgwMDE3LCAweDAwMTgsIDB4MDAxOSwgMHgw
MDFhLCAweDAwMWIsIDB4MDAxYywgMHgwMDFkLCAweDAwMWUsIDB4MDAxZiwKLSAgICAweDAwMjAs
IDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywg
MHgwMDI4LCAweDAwMjksIDB4MDAyYSwgMHgwMDJiLCAweDAwMmMsIDB4MDAyZCwgMHgwMDJlLCAw
eDAwMmYsCi0gICAgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAz
NSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM2EsIDB4MDAzYiwgMHgwMDNj
LCAweDAwM2QsIDB4MDAzZSwgMHgwMDNmLAotICAgIDB4MDA0MCwgMHgwMDYxLCAweDAwNjIsIDB4
MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgw
MDZhLCAweDAwNmIsIDB4MDA2YywgMHgwMDZkLCAweDAwNmUsIDB4MDA2ZiwKLSAgICAweDAwNzAs
IDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3Nywg
MHgwMDc4LCAweDAwNzksIDB4MDA3YSwgMHgwMDViLCAweDAwNWMsIDB4MDA1ZCwgMHgwMDVlLCAw
eDAwNWYsCi0gICAgMHgwMDYwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2
NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNmEsIDB4MDA2YiwgMHgwMDZj
LCAweDAwNmQsIDB4MDA2ZSwgMHgwMDZmLAotICAgIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4
MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwgMHgwMDc3LCAweDAwNzgsIDB4MDA3OSwgMHgw
MDdhLCAweDAwN2IsIDB4MDA3YywgMHgwMDdkLCAweDAwN2UsIDB4MDA3ZiwKLSAgICAweDAwODAs
IDB4MDA4MSwgMHgwMDgyLCAweDAwODMsIDB4MDA4NCwgMHgwMDg1LCAweDAwODYsIDB4MDA4Nywg
MHgwMDg4LCAweDAwODksIDB4MDA4YSwgMHgwMDhiLCAweDAwOGMsIDB4MDA4ZCwgMHgwMDhlLCAw
eDAwOGYsCi0gICAgMHgwMDkwLCAweDAwOTEsIDB4MDA5MiwgMHgwMDkzLCAweDAwOTQsIDB4MDA5
NSwgMHgwMDk2LCAweDAwOTcsIDB4MDA5OCwgMHgwMDk5LCAweDAwOWEsIDB4MDA5YiwgMHgwMDlj
LCAweDAwOWQsIDB4MDA5ZSwgMHgwMDlmLAotICAgIDB4MDBhMCwgMHgwMGExLCAweDAwYTIsIDB4
MDBhMywgMHgwMGE0LCAweDAwYTUsIDB4MDBhNiwgMHgwMGE3LCAweDAwYTgsIDB4MDBhOSwgMHgw
MGFhLCAweDAwYWIsIDB4MDBhYywgMHgwMGFkLCAweDAwYWUsIDB4MDBhZiwKLSAgICAweDAwYjAs
IDB4MDBiMSwgMHgwMGIyLCAweDAwYjMsIDB4MDBiNCwgMHgwM2JjLCAweDAwYjYsIDB4MDBiNywg
MHgwMGI4LCAweDAwYjksIDB4MDBiYSwgMHgwMGJiLCAweDAwYmMsIDB4MDBiZCwgMHgwMGJlLCAw
eDAwYmYsCi0gICAgMHgwMGUwLCAweDAwZTEsIDB4MDBlMiwgMHgwMGUzLCAweDAwZTQsIDB4MDBl
NSwgMHgwMGU2LCAweDAwZTcsIDB4MDBlOCwgMHgwMGU5LCAweDAwZWEsIDB4MDBlYiwgMHgwMGVj
LCAweDAwZWQsIDB4MDBlZSwgMHgwMGVmLAotICAgIDB4MDBmMCwgMHgwMGYxLCAweDAwZjIsIDB4
MDBmMywgMHgwMGY0LCAweDAwZjUsIDB4MDBmNiwgMHgwMGQ3LCAweDAwZjgsIDB4MDBmOSwgMHgw
MGZhLCAweDAwZmIsIDB4MDBmYywgMHgwMGZkLCAweDAwZmUsIDB4MDBkZiwKLSAgICAweDAwZTAs
IDB4MDBlMSwgMHgwMGUyLCAweDAwZTMsIDB4MDBlNCwgMHgwMGU1LCAweDAwZTYsIDB4MDBlNywg
MHgwMGU4LCAweDAwZTksIDB4MDBlYSwgMHgwMGViLCAweDAwZWMsIDB4MDBlZCwgMHgwMGVlLCAw
eDAwZWYsCi0gICAgMHgwMGYwLCAweDAwZjEsIDB4MDBmMiwgMHgwMGYzLCAweDAwZjQsIDB4MDBm
NSwgMHgwMGY2LCAweDAwZjcsIDB4MDBmOCwgMHgwMGY5LCAweDAwZmEsIDB4MDBmYiwgMHgwMGZj
LCAweDAwZmQsIDB4MDBmZSwgMHgwMGZmLAotfTsKLQotc3RhdGljIGlubGluZSBib29sIGVxdWFs
Q29tcGF0aWJpbGl0eUNhc2VsZXNzKGNvbnN0IExDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICBpZiAobGF0
aW4xQ2FzZUZvbGRUYWJsZVsqYSsrXSAhPSBsYXRpbjFDYXNlRm9sZFRhYmxlWypiKytdKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKGNvbnN0IFVDaGFyKiBh
LCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHdoaWxlIChsZW5ndGgt
LSkgewotICAgICAgICBpZiAodV9mb2xkQ2FzZSgqYSsrLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKSAh
PSBsYXRpbjFDYXNlRm9sZFRhYmxlWypiKytdKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGVxdWFsQ29t
cGF0aWJpbGl0eUNhc2VsZXNzKGNvbnN0IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhiLCBh
LCBsZW5ndGgpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2Fz
ZWxlc3MoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuICF1X21lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoLCBVX0ZPTERfQ0FTRV9ERUZB
VUxUKTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlv
blB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkKIHsKICAgICBpZiAoaXM4Qml0KCkp
CkBAIC0xMDg5LDUwICsxMDA2LDYgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgTENo
YXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gaW5kZXggKyBpOwog
fQogCi1zaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogbWF0
Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQotewotICAgIC8vIENoZWNrIGZvciBudWxsIG9yIGVt
cHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0Ci0gICAgaWYgKCFtYXRjaFN0cmluZykKLSAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHNpemVfdCBtYXRjaFN0cmluZ0xlbmd0aCA9IHN0cmxl
bihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXRjaFN0cmluZykpOwotICAgIGlmICht
YXRjaFN0cmluZ0xlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
LSAgICAgICAgQ1JBU0goKTsKLSAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNoU3RyaW5n
TGVuZ3RoOwotICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihp
bmRleCwgbGVuZ3RoKCkpOwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUg
aW4gcmFuZ2UuCi0gICAgaWYgKGluZGV4ID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RG
b3VuZDsKLSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBsZW5ndGgoKSAtIGluZGV4OwotICAg
IGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwotICAgIC8vIGRlbHRhIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0
OyBkZWx0YSA9PSAwIG1lYW5zIHRlc3Qgb25seSBvbmNlLgotICAgIHVuc2lnbmVkIGRlbHRhID0g
c2VhcmNoTGVuZ3RoIC0gbWF0Y2hMZW5ndGg7Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAg
ICAgY29uc3QgTENoYXIqIHNlYXJjaENoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzOCgpICsgaW5kZXg7
Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIHdoaWxlICghZXF1YWxDb21wYXRp
YmlsaXR5Q2FzZWxlc3Moc2VhcmNoQ2hhcmFjdGVycyArIGksIG1hdGNoU3RyaW5nLCBtYXRjaExl
bmd0aCkpIHsKLSAgICAgICAgICAgIGlmIChpID09IGRlbHRhKQotICAgICAgICAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gaW5kZXggKyBpOwotICAgIH0KLQotICAgIGNvbnN0IFVDaGFyKiBzZWFyY2hDaGFyYWN0ZXJz
ID0gY2hhcmFjdGVyczE2KCkgKyBpbmRleDsKLQotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHdo
aWxlICghZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Moc2VhcmNoQ2hhcmFjdGVycyArIGksIG1h
dGNoU3RyaW5nLCBtYXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYgKGkgPT0gZGVsdGEpCi0gICAg
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgICsraTsKLSAgICB9Ci0gICAgcmV0dXJu
IGluZGV4ICsgaTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCogbWF0
Y2hTdHJpbmcpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIG51bGwgc3RyaW5nIHRvIG1hdGNoIGFnYWlu
c3QKQEAgLTExODEsNTAgKzEwNTQsNiBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJ
bXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiAgICAgcmV0dXJuIGZpbmRDb21tb24o
KnRoaXMsICptYXRjaFN0cmluZywgaW5kZXgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2Vh
cmNoQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lO
TElORSBzdGF0aWMgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjb25zdCBTZWFyY2hDaGFy
YWN0ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1h
dGNoQ2hhcmFjdGVycywgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHNlYXJjaExlbmd0aCwgdW5z
aWduZWQgbWF0Y2hMZW5ndGgpCi17Ci0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRp
dGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0g
ICAgdW5zaWduZWQgZGVsdGEgPSBzZWFyY2hMZW5ndGggLSBtYXRjaExlbmd0aDsKLQotICAgIHVu
c2lnbmVkIGkgPSAwOwotICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAotICAgIHdo
aWxlICghZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Moc2VhcmNoQ2hhcmFjdGVycyArIGksIG1h
dGNoQ2hhcmFjdGVycywgbWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgIGlmIChpID09IGRlbHRhKQot
ICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICArK2k7Ci0gICAgfQotICAgIHJl
dHVybiBpbmRleCArIGk7Ci19Ci0KLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdDYXNl
KFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBDaGVj
ayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAotICAgIGlmICghbWF0
Y2hTdHJpbmcpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRjaExl
bmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgoKTsKLSAgICBpZiAoIW1hdGNoTGVuZ3RoKQotICAg
ICAgICByZXR1cm4gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCgpKTsKLQotICAgIC8vIENoZWNrIGlu
ZGV4ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgotICAgIGlmIChpbmRleCA+IGxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0g
bGVuZ3RoKCkgLSBpbmRleDsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBp
ZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmlu
Z0Nhc2VJbm5lcihjaGFyYWN0ZXJzOCgpICsgaW5kZXgsIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJz
OCgpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBm
aW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSArIGluZGV4LCBtYXRjaFN0cmluZy0+
Y2hhcmFjdGVyczE2KCksIGluZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICB9
Ci0KLSAgICBpZiAobWF0Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZmluZEln
bm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnMxNigpICsgaW5kZXgsIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzOCgpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0KLSAgICByZXR1
cm4gZmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnMxNigpICsgaW5kZXgsIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
fQotCiBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwmIG1hdGNoU3RyaW5nKSBjb25zdAogewogICAgIHJldHVybiA6OldURjo6ZmluZElnbm9y
aW5nQVNDSUlDYXNlKCp0aGlzLCBtYXRjaFN0cmluZywgMCk7CkBAIC0xMjQ5LDExICsxMDc4LDEx
IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
SW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkCiAgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3Jp
bmdBU0NJSUNhc2UoKnRoaXMsICptYXRjaFN0cmluZywgc3RhcnRPZmZzZXQpOwogfQogCi1zaXpl
X3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoVUNoYXIgYywgdW5zaWduZWQgaW5kZXgpCitzaXpl
X3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5k
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBjLCBpbmRleCk7Ci0gICAgcmV0dXJuIFdURjo6cmV2
ZXJzZUZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjLCBpbmRleCk7CisgICAgICAgIHJl
dHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIs
IGluZGV4KTsKKyAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsIGNoYXJhY3RlciwgaW5kZXgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNo
Q2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgpAQCAtMTMxNiwxMDAg
KzExNDUsNDggQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFN0cmluZ0ltcGwqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gcmV2ZXJzZUZpbmRJbm5lcihj
aGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0
ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjb25zdCBTZWFyY2hDaGFyYWN0
ZXJUeXBlKiBzZWFyY2hDaGFyYWN0ZXJzLCBjb25zdCBNYXRjaENoYXJhY3RlclR5cGUqIG1hdGNo
Q2hhcmFjdGVycywgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgbWF0
Y2hMZW5ndGgpCi17Ci0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRp
bWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWdu
ZWQgZGVsdGEgPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoIC0gbWF0Y2hMZW5ndGgpOwotCi0gICAg
Ly8ga2VlcCBsb29waW5nIHVudGlsIHdlIG1hdGNoCi0gICAgd2hpbGUgKCFlcXVhbENvbXBhdGli
aWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsgZGVsdGEsIG1hdGNoQ2hhcmFjdGVycywg
bWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgIGlmICghZGVsdGEpCi0gICAgICAgICAgICByZXR1cm4g
bm90Rm91bmQ7Ci0gICAgICAgIC0tZGVsdGE7Ci0gICAgfQotICAgIHJldHVybiBkZWx0YTsKLX0K
LQotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK0FMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
ZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCiB7Ci0gICAg
Ly8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKLSAgICBp
ZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQg
bWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy0+bGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgb3VyTGVu
Z3RoID0gbGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWluKGluZGV4LCBvdXJMZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExl
bmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVuZ3RoKQotICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CisgICAgQVNTRVJUKG1hdGNoTGVuZ3RoIDw9IHN0cmluZy5s
ZW5ndGgoKSk7CisgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5n
Lmxlbmd0aCgpKTsKIAotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBpZiAobWF0Y2hTdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNl
SW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBv
dXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBp
bmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1hdGNoU3Ry
aW5nLT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0KLSAgICByZXR1cm4gcmV2ZXJzZUZpbmRJZ25vcmluZ0Nh
c2VJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRl
eCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBi
b29sIGNhc2VTZW5zaXRpdmUpCi17Ci0gICAgQVNTRVJUKHN0cmluZ0ltcGwpOwotICAgIEFTU0VS
VChtYXRjaExlbmd0aCA8PSBzdHJpbmdJbXBsLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKHN0YXJ0
T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwotCi0gICAgaWYg
KGNhc2VTZW5zaXRpdmUpIHsKLSAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnM4KCkgKyBzdGFydE9m
ZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hM
ZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkg
KyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5n
KSwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLSAgICBpZiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzdHJpbmdJbXBsLT5jaGFy
YWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPiht
YXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxDb21wYXRpYmlsaXR5
Q2FzZWxlc3Moc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFj
dGVyczgoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0
Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0
Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
ZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmdJbXBsLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpCiB7Ci0gICAgaWYgKHN0YXJ0
T2Zmc2V0ID4gc3RyaW5nSW1wbC5sZW5ndGgoKSkKKyAgICBpZiAoc3RhcnRPZmZzZXQgPiBzdHJp
bmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobWF0Y2hTdHJpbmcu
bGVuZ3RoKCkgPiBzdHJpbmdJbXBsLmxlbmd0aCgpKQorICAgIGlmIChtYXRjaFN0cmluZy5sZW5n
dGgoKSA+IHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICht
YXRjaFN0cmluZy5sZW5ndGgoKSArIHN0YXJ0T2Zmc2V0ID4gc3RyaW5nSW1wbC5sZW5ndGgoKSkK
KyAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydE9mZnNldCA+IHN0cmluZy5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN0cmluZ0ltcGwuaXM4Qml0
KCkpIHsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgIGlmIChtYXRjaFN0cmlu
Zy5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3Rl
cnM4KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJp
bmcubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC5jaGFyYWN0ZXJz
OCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4
KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcu
bGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBz
dGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0
aCgpKTsKICAgICB9CiAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gZXF1YWwoc3RyaW5nSW1wbC5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGVx
dWFsKHN0cmluZ0ltcGwuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcu
Y2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGVx
dWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGVxdWFsKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nSW1wbCogc3RyKSBjb25zdAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNX
aXRoKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykgY29uc3QKIHsKLSAgICBpZiAoIXN0cikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywg
KnN0cik7CisgICAgcmV0dXJuIHN0cmluZyAmJiA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywgKnN0
cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBs
JiBzdHIpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nKSBjb25zdAogewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywg
c3RyKTsKKyAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsIHN0cmluZyk7CiB9CiAK
IGJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHByZWZpeCkgY29uc3QKIHsKLSAgICBpZiAoIXByZWZpeCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
KnRoaXMsICpwcmVmaXgpOworICAgIHJldHVybiBwcmVmaXggJiYgOjpXVEY6OnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnByZWZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIHByZWZpeCkgY29u
c3QKQEAgLTE0MjIsMTIgKzExOTksOSBAQCBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpWzBdID09
IGNoYXJhY3RlcjsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBj
b25zdAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobWF0Y2hMZW5ndGgp
OwotICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGVxdWFsSW5uZXIodGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3Ro
LCBjYXNlU2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gbWF0Y2hMZW5ndGggPD0gbGVuZ3RoKCkgJiYg
ZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKTsKIH0KIAogYm9v
bCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hT
dHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdApAQCAtMTQzNywxMCArMTIxMSw3IEBA
IGJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFyCiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3Ry
aW5nSW1wbCogc3VmZml4KQogewotICAgIGlmICghc3VmZml4KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCAqc3VmZml4KTsKKyAgICBy
ZXR1cm4gc3VmZml4ICYmIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgKnN1ZmZpeCk7CiB9CiAKIGJv
b2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1wbCYgc3VmZml4KQpAQCAtMTQ0OCwyMiAr
MTIxOSw5IEBAIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1wbCYgc3VmZml4KQog
ICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKLWJvb2wgU3Ry
aW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIGJvb2wgY2FzZVNlbnNp
dGl2ZSkKLXsKLSAgICBBU1NFUlQobWF0Y2hTdHJpbmcpOwotICAgIGlmIChtX2xlbmd0aCA+PSBt
YXRjaFN0cmluZy0+bV9sZW5ndGgpIHsKLSAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBtX2xlbmd0
aCAtIG1hdGNoU3RyaW5nLT5tX2xlbmd0aDsKLSAgICAgICAgcmV0dXJuIChjYXNlU2Vuc2l0aXZl
ID8gZmluZChtYXRjaFN0cmluZywgc3RhcnQpIDogZmluZElnbm9yaW5nQ2FzZShtYXRjaFN0cmlu
Zywgc3RhcnQpKSA9PSBzdGFydDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29s
IFN0cmluZ0ltcGw6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCog
c3VmZml4KSBjb25zdAogewotICAgIGlmICghc3VmZml4KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICpz
dWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoKnRoaXMsICpzdWZmaXgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgc3VmZml4KSBjb25zdApAQCAtMTQ3Niw1
MiArMTIzNCw0NiBAQCBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFVDaGFyIGNoYXJhY3Rlcikg
Y29uc3QKICAgICByZXR1cm4gbV9sZW5ndGggJiYgKCp0aGlzKVttX2xlbmd0aCAtIDFdID09IGNo
YXJhY3RlcjsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRj
aFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QK
K2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2ln
bmVkIG1hdGNoTGVuZ3RoKSBjb25zdAogewotICAgIEFTU0VSVChtYXRjaExlbmd0aCk7Ci0gICAg
aWYgKG1hdGNoTGVuZ3RoID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCA9IGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGg7Ci0gICAgcmV0dXJu
IGVxdWFsSW5uZXIodGhpcywgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0aCwg
Y2FzZVNlbnNpdGl2ZSk7CisgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVx
dWFsSW5uZXIoKnRoaXMsIGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGgsIG1hdGNoU3RyaW5nLCBtYXRj
aExlbmd0aCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChjb25zdCBT
dHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAogewotICAg
IGlmIChlbmRPZmZzZXQgPCBtYXRjaFN0cmluZy5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlzLCBlbmRPZmZzZXQgLSBtYXRjaFN0cmlu
Zy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcpOworICAgIHJldHVybiBlbmRPZmZzZXQgPj0gbWF0Y2hT
dHJpbmcubGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgZW5kT2Zmc2V0IC0gbWF0Y2hTdHJp
bmcubGVuZ3RoKCksIG1hdGNoU3RyaW5nKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykKK1JlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpCiB7Ci0gICAg
aWYgKG9sZEMgPT0gbmV3QykKKyAgICBpZiAodGFyZ2V0ID09IHJlcGxhY2VtZW50KQogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpICE9IG1f
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6
IG1fZGF0YTE2W2ldOwotICAgICAgICBpZiAoYyA9PSBvbGRDKQorICAgICAgICBVQ2hhciBjaGFy
YWN0ZXIgPSBpczhCaXQoKSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXTsKKyAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSB0YXJnZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYg
KGkgPT0gbV9sZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmIChpczhCaXQo
KSkgewotICAgICAgICBpZiAob2xkQyA+IDB4ZmYpCisgICAgICAgIGlmICh0YXJnZXQgPiAweEZG
KQogICAgICAgICAgICAgLy8gTG9va2luZyBmb3IgYSAxNiBiaXQgY2hhciBpbiBhbiA4IGJpdCBz
dHJpbmcsIHdlJ3JlIGRvbmUuCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICAgICAg
aWYgKG5ld0MgPD0gMHhmZikgeworICAgICAgICBpZiAocmVwbGFjZW1lbnQgPD0gMHhGRikgewog
ICAgICAgICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAgICAgICBMQ2hhciBvbGRDaGFyID0gc3Rh
dGljX2Nhc3Q8TENoYXI+KG9sZEMpOwotICAgICAgICAgICAgTENoYXIgbmV3Q2hhciA9IHN0YXRp
Y19jYXN0PExDaGFyPihuZXdDKTsKKyAgICAgICAgICAgIExDaGFyIG9sZENoYXIgPSBzdGF0aWNf
Y2FzdDxMQ2hhcj4odGFyZ2V0KTsKKyAgICAgICAgICAgIExDaGFyIG5ld0NoYXIgPSBzdGF0aWNf
Y2FzdDxMQ2hhcj4ocmVwbGFjZW1lbnQpOwogCiAgICAgICAgICAgICBhdXRvIG5ld0ltcGwgPSBj
cmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YSk7CiAKICAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgIExDaGFyIGNoID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gb2xk
Q2hhcikKLSAgICAgICAgICAgICAgICAgICAgY2ggPSBuZXdDaGFyOwotICAgICAgICAgICAgICAg
IGRhdGFbaV0gPSBjaDsKKyAgICAgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4
W2ldOworICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gb2xkQ2hhcikKKyAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyID0gbmV3Q2hhcjsKKyAgICAgICAgICAgICAgICBkYXRhW2ld
ID0gY2hhcmFjdGVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5ld0ltcGw7
CiAgICAgICAgIH0KQEAgLTE1MzIsMTAgKzEyODQsMTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykKICAgICAgICAgYXV0byBuZXdJ
bXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEp
OwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgVUNoYXIgY2ggPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKGNoID09IG9sZEMpCi0g
ICAgICAgICAgICAgICAgY2ggPSBuZXdDOwotICAgICAgICAgICAgZGF0YVtpXSA9IGNoOworICAg
ICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gdGFyZ2V0KQorICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2Vt
ZW50OworICAgICAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBuZXdJbXBsOwpAQCAtMTU0NSwzMSArMTI5NywzMSBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQogICAgIGF1dG8g
bmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBk
YXRhKTsKIAogICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBV
Q2hhciBjaCA9IG1fZGF0YTE2W2ldOwotICAgICAgICBpZiAoY2ggPT0gb2xkQykKLSAgICAgICAg
ICAgIGNoID0gbmV3QzsKLSAgICAgICAgZGF0YVtpXSA9IGNoOworICAgICAgICBVQ2hhciBjaGFy
YWN0ZXIgPSBtX2RhdGExNltpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCisg
ICAgICAgICAgICBjaGFyYWN0ZXIgPSByZXBsYWNlbWVudDsKKyAgICAgICAgZGF0YVtpXSA9IGNo
YXJhY3RlcjsKICAgICB9CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhU
b1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpy
ZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmlu
Z0ltcGwqIHN0cmluZykKIHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5n
dGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBs
ZW5ndGgoKSAtIHBvc2l0aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0ciA/
IHN0ci0+bGVuZ3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5n
ID8gc3RyaW5nLT5sZW5ndGgoKSA6IDA7CiAgICAgaWYgKCFsZW5ndGhUb1JlcGxhY2UgJiYgIWxl
bmd0aFRvSW5zZXJ0KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoKGxlbmd0aCgp
IC0gbGVuZ3RoVG9SZXBsYWNlKSA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC0gbGVuZ3RoVG9JbnNlcnQpKQogICAgICAgICBDUkFTSCgpOwogCi0gICAgaWYgKGlzOEJp
dCgpICYmICghc3RyIHx8IHN0ci0+aXM4Qml0KCkpKSB7CisgICAgaWYgKGlzOEJpdCgpICYmICgh
c3RyaW5nIHx8IHN0cmluZy0+aXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAg
ICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0gbGVuZ3Ro
VG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBtZW1jcHkoZGF0YSwg
bV9kYXRhOCwgcG9zaXRpb24gKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgaWYgKHN0cikKLSAg
ICAgICAgICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0ci0+bV9kYXRhOCwgbGVuZ3RoVG9J
bnNlcnQgKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgaWYgKHN0cmluZykKKyAgICAgICAgICAg
IG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQg
KiBzaXplb2YoTENoYXIpKTsKICAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0
aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsCiAgICAgICAg
ICAgICAgICAobGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSkgKiBzaXplb2Yo
TENoYXIpKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC0xNTgxLDEyICsxMzMzLDEyIEBA
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsCiAgICAgICAgICAgICBkYXRhW2ldID0gbV9kYXRhOFtp
XTsKICAgICBlbHNlCiAgICAgICAgIG1lbWNweShkYXRhLCBtX2RhdGExNiwgcG9zaXRpb24gKiBz
aXplb2YoVUNoYXIpKTsKLSAgICBpZiAoc3RyKSB7Ci0gICAgICAgIGlmIChzdHItPmlzOEJpdCgp
KQorICAgIGlmIChzdHJpbmcpIHsKKyAgICAgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoVG9JbnNlcnQ7ICsraSkKLSAg
ICAgICAgICAgICAgICBkYXRhW2kgKyBwb3NpdGlvbl0gPSBzdHItPm1fZGF0YThbaV07CisgICAg
ICAgICAgICAgICAgZGF0YVtpICsgcG9zaXRpb25dID0gc3RyaW5nLT5tX2RhdGE4W2ldOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIHBvc2l0aW9uLCBzdHItPm1fZGF0
YTE2LCBsZW5ndGhUb0luc2VydCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgbWVtY3B5
KGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLT5tX2RhdGExNiwgbGVuZ3RoVG9JbnNlcnQgKiBzaXpl
b2YoVUNoYXIpKTsKICAgICB9CiAgICAgaWYgKGlzOEJpdCgpKSB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlOyAr
K2kpCkBAIC0xNjAyLDEwICsxMzU0LDggQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
cGxhY2UoVUNoYXIgcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYg
KCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotCiAgICAgaWYgKHJlcGxhY2Vt
ZW50LT5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1l
bnQtPm1fZGF0YTgsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7Ci0KICAgICByZXR1cm4gcmVwbGFj
ZShwYXR0ZXJuLCByZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7
CiB9CiAKQEAgLTE4NzgsOCArMTYyOCw3IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCog
YSwgY29uc3QgU3RyaW5nSW1wbCogYikKICAgICByZXR1cm4gZXF1YWxDb21tb24oYSwgYik7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLWlubGluZSBib29sIGVxdWFsSW50ZXJu
YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgQ2hhclR5cGUqIGIsIHVuc2lnbmVkIGxlbmd0
aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFsSW50
ZXJuYWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogYiwgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghYSkKICAgICAgICAgcmV0dXJuICFiOwpAQCAtMTk1NCwx
MSArMTcwMyw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCogYSwgU3Ry
aW5nSW1wbCogYikKIAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCiB7Ci0gICAgaWYgKGEgPT0gYikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKCFhIHx8ICFiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oKmEsICpiKTsKKyAgICByZXR1
cm4gYSA9PSBiIHx8IChhICYmIGIgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbigqYSwg
KmIpKTsKIH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJp
bmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQpAQCAtMjAxMywxMyArMTc1OCwxMyBAQCBz
aXplX3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsg
c2l6ZW9mKCp0aGlzKTsKIH0KIAotLy8gSGVscGVyIHRvIHdyaXRlIGEgdGhyZWUtYnl0ZSBVVEYt
OCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0IGNoZWNrIHJvb20gaXMgYXZh
aWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlwbGUoY2hhciomIGJ1ZmZlciwg
VUNoYXIgY2gpCisvLyBIZWxwZXIgdG8gd3JpdGUgYSB0aHJlZS1ieXRlIFVURi04IGNvZGUgcG9p
bnQgaW50byB0aGUgYnVmZmVyOyBjYWxsZXIgbXVzdCBlbnN1cmUgcm9vbSBpcyBhdmFpbGFibGUu
CitzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYgYnVmZmVyLCBVQ2hhciBj
aGFyYWN0ZXIpCiB7Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7Ci0gICAgKmJ1ZmZlcisrID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8IDB4RTApOwotICAgICpidWZm
ZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAweDNGKSB8IDB4ODApOwotICAg
ICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4M0YpIHwgMHg4MCk7CisgICAg
QVNTRVJUKGNoYXJhY3RlciA+PSAweDA4MDApOworICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0
PGNoYXI+KCgoY2hhcmFjdGVyID4+IDEyKSAmIDB4MEYpIHwgMHhFMCk7CisgICAgKmJ1ZmZlcisr
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaGFyYWN0ZXIgPj4gNikgJiAweDNGKSB8IDB4ODApOwor
ICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaGFyYWN0ZXIgJiAweDNGKSB8IDB4
ODApOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnV0ZjhJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNoYXIqJiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBD
b252ZXJzaW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAxMzA4NjZj
ZjJhMGQwZjRhMThkNjE4MjMyZjZlYTE1YTQyMWY3MmYwLi4zZmJlZTA0YmE1NDFkZTMyZWRiNGUw
OTM5OWE1ZmZhMGRkZWRhNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
U0NJSUZhc3RQYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdNYWxsb2MuaD4KQEAgLTU3LDcgKzU4LDYgQEAgY2xhc3MgU3ltYm9sSW1wbDsKIGNsYXNzIFN5
bWJvbFJlZ2lzdHJ5OwogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKIHN0cnVjdCBIYXNo
QW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKIHN0cnVjdCBTdHJpbmdIYXNoOwpAQCAtNjYsMjIgKzY2LDIxIEBAIHN0cnVjdCBVQ2hhckJ1
ZmZlclRyYW5zbGF0b3I7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9y
OwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7
CiAKLWVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7Ci0gICAgVGV4dENhc2VTZW5zaXRpdmUsCi0g
ICAgVGV4dENhc2VJbnNlbnNpdGl2ZQotfTsKKy8vIERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0
dXJuIG9uIHJ1bnRpbWUgc3RhdGlzdGljcyBmb3Igc3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNh
Z2UuCisjZGVmaW5lIFNUUklOR19TVEFUUyAwCiAKIHR5cGVkZWYgYm9vbCAoKkNoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpKFVDaGFyKTsKIHR5cGVkZWYgYm9vbCAoKklzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyKShVQ2hhcik7CiAKLS8vIERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0dXJuIG9uIHJ1
biB0aW1lIHN0YXRpc3RpY3Mgb2Ygc3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNhZ2UKLSNkZWZp
bmUgU1RSSU5HX1NUQVRTIDAKK3RlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNv
bnN0IENoYXJhY3RlclR5cGUqLCBzaXplX3QgbGVuZ3RoKTsKIAogI2lmIFNUUklOR19TVEFUUwor
CiBzdHJ1Y3QgU3RyaW5nU3RhdHMgewotICAgIGlubGluZSB2b2lkIGFkZDhCaXRTdHJpbmcodW5z
aWduZWQgbGVuZ3RoLCBib29sIGlzU3ViU3RyaW5nID0gZmFsc2UpCisgICAgdm9pZCBhZGQ4Qml0
U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAgICAgKyttX251bWJlcjhCaXRT
dHJpbmdzOwpAQCAtODksNyArODgsNyBAQCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogICAgICAgICAg
ICAgbV90b3RhbDhCaXREYXRhICs9IGxlbmd0aDsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBh
ZGQxNkJpdFN0cmluZyh1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNTdWJTdHJpbmcgPSBmYWxzZSkK
KyAgICB2b2lkIGFkZDE2Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmlu
ZyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAg
ICAgKyttX251bWJlcjE2Qml0U3RyaW5nczsKQEAgLTEyMCw3ICsxMTksOSBAQCBzdHJ1Y3QgU3Ry
aW5nU3RhdHMgewogI2RlZmluZSBTVFJJTkdfU1RBVFNfUkVNT1ZFX1NUUklORyhzdHJpbmcpIFN0
cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCkucmVtb3ZlU3RyaW5nKHN0cmluZykKICNkZWZpbmUgU1RS
SU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSArK1N0cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCku
bV9yZWZDYWxsczsKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORyhzdHJpbmcpICsr
U3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5tX2RlcmVmQ2FsbHM7CisKICNlbHNlCisKICNkZWZp
bmUgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhsZW5ndGgpICgodm9pZCkwKQogI2RlZmlu
ZSBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihsZW5ndGgsIGlzU3ViU3RyaW5nKSAoKHZv
aWQpMCkKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobGVuZ3RoKSAoKHZv
aWQpMCkKQEAgLTEyOSw0MiArMTMwLDE4IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAjZGVmaW5l
IFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNU
UklOR19TVEFUU19SRUZfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNUUklOR19T
VEFUU19ERVJFRl9TVFJJTkcoc3RyaW5nKSAoKHZvaWQpMCkKKwogI2VuZGlmCiAKIGNsYXNzIFN0
cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbFNoYXBl
KTsKIHByb3RlY3RlZDoKLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3Mp
Ci0gICAgICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgICAgICwgbV9kYXRhOChkYXRhOCkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyho
YXNoQW5kRmxhZ3MpCi0gICAgeyB9Ci0KLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIGRhdGExNiwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzKQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YTE2KGRhdGExNikKLSAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgU3RyaW5nSW1wbFNoYXBlKHVu
c2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
aGFzaEFuZEZsYWdzKTsKKyAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOwogCiAg
ICAgZW51bSBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnIHsgQ29uc3RydWN0V2l0aENvbnN0RXhw
ciB9OwotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIGNv
bnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKQotICAgICAgICA6IG1fcmVmQ291
bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0
YThDaGFyKGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdz
KQotICAgIHsgfQotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50Pgot
ICAgIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVu
c2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKLSAgICAgICAg
OiBtX3JlZkNvdW50KHJlZkNvdW50KQotICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAg
ICAgLCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyho
YXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWdu
ZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKKyAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNp
Z25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRo
Q29uc3RFeHByVGFnKTsKIAogICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9sZW5ndGg7CkBAIC0xODEsMjYgKzE1OCwyNSBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIFN0cmlu
Z0ltcGwgOiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyaW5nSW1wbCk7IFdURl9NQUtFX1NUUklOR19BTExPQ0FURUQ7CisKKyAgICBmcmllbmQg
Y2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludDo6RGF0
YTsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJp
ZW5kIGNsYXNzIFByaXZhdGVTeW1ib2xJbXBsOworICAgIGZyaWVuZCBjbGFzcyBSZWdpc3RlcmVk
U3ltYm9sSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKKwogICAgIGZyaWVuZCBz
dHJ1Y3QgV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFuZENoYXJhY3RlcnNUcmFuc2xhdG9y
OwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9y
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RG
OjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6
OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5n
VHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwotICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOwotICAgIGZyaWVuZCBjbGFzcyBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
SW1wbDsKLSAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgUHJp
dmF0ZVN5bWJvbEltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOwot
ICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpCdWZmZXJG
cm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBz
dHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CisKIHB1YmxpYzoKLSAgICBl
bnVtIEJ1ZmZlck93bmVyc2hpcCB7Ci0gICAgICAgIEJ1ZmZlckludGVybmFsLAotICAgICAgICBC
dWZmZXJPd25lZCwKLSAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAotICAgIH07CisgICAgZW51bSBC
dWZmZXJPd25lcnNoaXAgeyBCdWZmZXJJbnRlcm5hbCwgQnVmZmVyT3duZWQsIEJ1ZmZlclN1YnN0
cmluZyB9OwogCiAgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdz
LgogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2OwpA
QCAtMjIyLDk0ICsxOTgsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nU3ltYm9sID0gc19o
YXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24tYXRvbWljCiAgICAgfTsK
IAotICAgIC8vIEZJWE1FOiB0aGVyZSBoYXMgdG8gYmUgYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0
aGlzLgogICAgIGVudW0gRm9yY2U4Qml0IHsgRm9yY2U4Qml0Q29uc3RydWN0b3IgfTsKLSAgICAv
LyBDcmVhdGUgYSBub3JtYWwgOC1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVm
ZmVySW50ZXJuYWwpCi0gICAgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgsIEZvcmNlOEJpdCkK
LSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0
YWlsUG9pbnRlcjxMQ2hhcj4oKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJJbnRlcm5hbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAg
ICAgQVNTRVJUKG1fbGVuZ3RoKTsKIAotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RS
SU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDgtYml0IHN0cmlu
ZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQorICAgIFN0cmluZ0ltcGwo
dW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDE2
LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICBT
dHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19y
ZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWwpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwot
ICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZC
SVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgZXhwbGljaXQgU3RyaW5nSW1wbCh1bnNp
Z25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25l
cnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1w
bChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAg
OiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJz
LmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJP
d25lZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1f
bGVuZ3RoKTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3Ro
KTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCk7CiAKICAgICBlbnVtIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnIHsg
Q29uc3RydWN0V2l0aG91dENvcHlpbmcgfTsKLSAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQot
ICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNo
YXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLQotICAgICAgICBT
VFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORyhtX2xlbmd0aCk7Ci0gICAgfQotCi0gICAgU3Ry
aW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1
Y3RXaXRob3V0Q29weWluZ1RhZykKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0
YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19B
RERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CisgICAg
U3RyaW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91
dENvcHlpbmdUYWcpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25l
cnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1w
bChNYWxsb2NQdHI8VUNoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAg
OiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJz
LmxlYWtQdHIoKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNU
UklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgU3RyaW5n
SW1wbChNYWxsb2NQdHI8VUNoYXI+LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gVXNlZCB0
byBjcmVhdGUgbmV3IHN0cmluZ3MgdGhhdCBhcmUgYSBzdWJzdHJpbmcgb2YgYW4gZXhpc3Rpbmcg
OC1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0cmluZ0ltcGwoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFz
ZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3Ro
LCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZl
clN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJU
KGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAg
c3Vic3RyaW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NU
QVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJ
bXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJik7CiAK
ICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBv
ZiBhbiBleGlzdGluZyAxNi1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0
cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0
cmluZ0ltcGw+JiYgYmFzZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJp
bmcpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1f
ZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJUKGJhc2Ut
PmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgc3Vic3Ry
aW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYpOwogCiBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RyaW5n
SW1wbCopOwpAQCAtMzE3LDcxICsyMjgsMjYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJs
ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5PgotICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9z
c2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxV
Q2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqKTsKIAot
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hh
ciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyksIGxlbmd0aCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9Ci0KLSAgICBzdGF0aWMgQUxXQVlT
X0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5n
SW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLmxlbmd0aCgpKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4g
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpKTsgfQogCi0gICAg
ICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuICplbXB0eSgpOworICAgIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAgICAgICBhdXRvKiBvd25l
clJlcCA9ICgocmVwLmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAu
c3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBj
aGFyICgmKVtjaGFyYWN0ZXJDb3VudF0pOwogCi0gICAgICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVm
ZmVyIHRoYXQgY29udGFpbnMgYm90aCB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QgYXMgd2VsbCBhcyB0
aGUgcG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nLgotICAgICAgICBhdXRvKiBzdHJpbmdJbXBs
ID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxT
dHJpbmdJbXBsKj4oMSkpKTsKLSAgICAgICAgaWYgKHJlcC5pczhCaXQoKSkKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJl
cC5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRh
MTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBS
ZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0byBj
cmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKIAotICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyQ291bnRdKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQg
PiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7Ci0gICAgICAgIENPTVBJTEVfQVNT
RVJUKChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5n
SW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVy
Zmxvdyk7Ci0KLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyQ291bnQgLSAxKTsKLSAg
ICB9Ci0KLSAgICAvLyBGSVhNRTogVHJhbnNpdGlvbiBvZmYgb2YgdGhlc2UgZnVuY3Rpb25zIHRv
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGluc3RlYWQuCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVComIG91dHB1dCkKLSAgICB7Ci0g
ICAgICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGVuZ3Ro
ID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5n
SW1wbCkpIC8gc2l6ZW9mKFQpKSkgewotICAgICAgICAgICAgb3V0cHV0ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZ0ltcGwq
IHJlc3VsdEltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4odHJ5U3RyaW5nTWFsbG9jKGFs
bG9jYXRpb25TaXplPFQ+KGxlbmd0aCkpKTsKLSAgICAgICAgaWYgKCFyZXN1bHRJbXBsKSB7Ci0g
ICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8VD4o
KTsKLQotICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVu
Z3RoKTsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3RlclR5cGUqJik7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBs
LiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYsCiAgICAg
Ly8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3Qg
bGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0zOTYsODMgKzI2MiwzMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4g
c19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhclR5cGUsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYmIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIGlm
IChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCh2ZWN0
b3IuZGF0YSgpKTsKLSAgICAgICAgICAgIGlmIChzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNp
emUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKmVtcHR5KCk7Ci0gICAgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CisgICAgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYpOwogCiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVD
aGFyPiYmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiYpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE1l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2xlbmd0
aCk7IH0KLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYg
c19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9sZW5ndGg7IH0KIAorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNo
QW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyBBU1NFUlQoaXM4Qml0KCkpOyByZXR1cm4g
bV9kYXRhODsgfQogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigp
IGNvbnN0IHsgQVNTRVJUKCFpczhCaXQoKSk7IHJldHVybiBtX2RhdGExNjsgfQogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgY29uc3QgQ2hhclR5
cGUgKmNoYXJhY3RlcnMoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7CiAKLSAgICBzaXpl
X3QgY29zdCgpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBGb3Igc3Vic3RyaW5ncywgcmV0dXJu
IHRoZSBjb3N0IG9mIHRoZSBiYXNlIHN0cmluZy4KLSAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hp
cCgpID09IEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdCdWZm
ZXIoKS0+Y29zdCgpOwotCi0gICAgICAgIC8vIE5vdGU6IHdlIG11c3Qgbm90IGFsdGVyIHRoZSBt
X2hhc2hBbmRGbGFncyBmaWVsZCBpbiBpbnN0YW5jZXMgb2YgU3RhdGljU3RyaW5nSW1wbC4KLSAg
ICAgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRS
ZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCi0gICAgICAgIC8vIFN0YXRpY1N0cmlu
Z0ltcGwuIEFzIGEgcmVzdWx0LCBTdGF0aWNTdHJpbmdJbXBsIGluc3RhbmNlcyB3aWxsIGFsd2F5
cyByZXR1cm4gYSBjb3N0IG9mCi0gICAgICAgIC8vIDAgaGVyZSBhbmQgYXZvaWQgbW9kaWZ5aW5n
IG1faGFzaEFuZEZsYWdzLgotICAgICAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIG1faGFzaEFu
ZEZsYWdzIHw9IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0OwotICAgICAgICBzaXplX3QgcmVzdWx0
ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0gICAgICAgICAgICByZXN1bHQg
PDw9IDE7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBj
b3N0RHVyaW5nR0MoKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3RhdGljKCkpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSA9PSBC
dWZmZXJTdWJzdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7Ci0gICAgICAgIAotICAg
ICAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0g
ICAgICAgICAgICByZXN1bHQgPDw9IDE7Ci0gICAgICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAo
cmVzdWx0LCByZWZDb3VudCgpKTsKLSAgICB9CisgICAgc2l6ZV90IGNvc3QoKSBjb25zdDsKKyAg
ICBzaXplX3QgY29zdER1cmluZ0dDKCk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBTdHJpbmdLaW5kIHN0cmluZ0tpbmQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihtX2hhc2hBbmRGbGFncyAmIHNf
aGFzaE1hc2tTdHJpbmdLaW5kKTsgfQogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVy
biBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KICAgICBi
b29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
U3RyaW5nS2luZElzQXRvbWljOyB9Ci0KLSAgICB2b2lkIHNldElzQXRvbWljKGJvb2wgaXNBdG9t
aWMpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwotICAgICAgICBBU1NFUlQo
IWlzU3ltYm9sKCkpOwotICAgICAgICBpZiAoaXNBdG9taWMpIHsKLSAgICAgICAgICAgIG1faGFz
aEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7Ci0gICAgICAgICAgICBB
U1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21p
YzsKLSAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nTm9ybWFsKTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldElzQXRvbWljKGJvb2wpOwogCiAjaWYgU1RSSU5H
X1NUQVRTCiAgICAgYm9vbCBpc1N1YlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVy
c2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZzsgfQpAQCAtNDg5LDQ0ICszMDMsMTUgQEAgcHJpdmF0
ZToKICAgICAvLyBUaGUgaGlnaCBiaXRzIG9mICdoYXNoJyBhcmUgYWx3YXlzIGVtcHR5LCBidXQg
d2UgcHJlZmVyIHRvIHN0b3JlIG91ciBmbGFncwogICAgIC8vIGluIHRoZSBsb3cgYml0cyBiZWNh
dXNlIGl0IG1ha2VzIHRoZW0gc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgdG8gYWNjZXNzLgogICAg
IC8vIFNvLCB3ZSBzaGlmdCBsZWZ0IGFuZCByaWdodCB3aGVuIHNldHRpbmcgYW5kIGdldHRpbmcg
b3VyIGhhc2ggY29kZS4KLSAgICB2b2lkIHNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghaGFzSGFzaCgpKTsKLSAgICAgICAgQVNTRVJUKCFpc1N0YXRp
YygpKTsKLSAgICAgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBhc3N1bWUgdGhhdCBTdHJpbmdIYXNo
ZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5jdGlvbi4KLSAgICAgICAgQVNTRVJU
KGhhc2ggPT0gKGlzOEJpdCgpID8gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX2RhdGE4LCBtX2xlbmd0aCkgOiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fZGF0YTE2LCBtX2xlbmd0aCkpKTsKLSAgICAgICAgQVNTRVJUKCEoaGFzaCAm
IChzX2ZsYWdNYXNrIDw8ICg4ICogc2l6ZW9mKGhhc2gpIC0gc19mbGFnQ291bnQpKSkpOyAvLyBW
ZXJpZnkgdGhhdCBlbm91Z2ggaGlnaCBiaXRzIGFyZSBlbXB0eS4KLSAgICAgICAgCi0gICAgICAg
IGhhc2ggPDw9IHNfZmxhZ0NvdW50OwotICAgICAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5k
RmxhZ3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBz
aGlmdC4KLSAgICAgICAgQVNTRVJUKGhhc2gpOyAvLyBWZXJpZnkgdGhhdCAwIGlzIGEgdmFsaWQg
c2VudGluZWwgaGFzaCB2YWx1ZS4KLQotICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBoYXNoOyAv
LyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93IGJpdHMuCi0gICAgfQorICAgIHZvaWQgc2V0
SGFzaCh1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2hBbmRGbGFncyA+PiBzX2ZsYWdDb3VudDsKLSAgICB9
CisgICAgdW5zaWduZWQgcmF3SGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzID4+
IHNfZmxhZ0NvdW50OyB9CiAKIHB1YmxpYzoKLSAgICBib29sIGhhc0hhc2goKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHJhd0hhc2goKSAhPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IGV4aXN0aW5nSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzSGFzaCgpKTsK
LSAgICAgICAgcmV0dXJuIHJhd0hhc2goKTsKLSAgICB9CisgICAgYm9vbCBoYXNIYXNoKCkgY29u
c3QgeyByZXR1cm4gISFyYXdIYXNoKCk7IH0KIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKGhhc0hhc2goKSkKLSAgICAgICAgICAgIHJldHVybiBleGlzdGlu
Z0hhc2goKTsKLSAgICAgICAgcmV0dXJuIGhhc2hTbG93Q2FzZSgpOwotICAgIH0KKyAgICB1bnNp
Z25lZCBleGlzdGluZ0hhc2goKSBjb25zdCB7IEFTU0VSVChoYXNIYXNoKCkpOyByZXR1cm4gcmF3
SGFzaCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGhhc0hhc2goKSA/
IHJhd0hhc2goKSA6IGhhc2hTbG93Q2FzZSgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY29uY3VycmVudEhhc2goKSBjb25zdDsKIApAQCAtNTM1LDQwICszMjAsMTEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQg
JiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IHJl
ZkNvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50IC8gc19yZWZD
b3VudEluY3JlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgaGFzT25lUmVmKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNy
ZW1lbnQ7Ci0gICAgfQorICAgIHNpemVfdCByZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVm
Q291bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OyB9CisgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25z
dCB7IHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KICAgICAKLSAg
ICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGFzc2VydGlvbnMuCi0gICAgaW5saW5lIGJv
b2wgaGFzQXRMZWFzdE9uZVJlZigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISFtX3Jl
ZkNvdW50OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHJlZigpCi0gICAgewotICAgICAgICBT
VFJJTkdfU1RBVFNfUkVGX1NUUklORygqdGhpcyk7Ci0KLSAgICAgICAgbV9yZWZDb3VudCArPSBz
X3JlZkNvdW50SW5jcmVtZW50OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIGRlcmVmKCkKLSAg
ICB7Ci0gICAgICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOwotCi0gICAgICAg
IHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9IG1fcmVmQ291bnQgLSBzX3JlZkNvdW50SW5jcmVtZW50
OwotICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkgewotICAgICAgICAgICAgU3RyaW5nSW1wbDo6
ZGVzdHJveSh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBt
X3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OwotICAgIH0KKyAgICB2b2lkIHJlZigpOworICAgIHZv
aWQgZGVyZWYoKTsKIAogICAgIGNsYXNzIFN0YXRpY1N0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmlu
Z0ltcGxTaGFwZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1N0cmluZ0lt
cGwpOwpAQCAtNjAwLDY0ICszNTYsMjkgQEAgcHVibGljOgogICAgICAgICAvLyAgICAgICBTdHJp
bmdJbXBsOjpoYXNoKCkgb25seSBzZXRzIGEgbmV3IGhhc2ggaWZmICFoYXNIYXNoKCkuCiAgICAg
ICAgIC8vICAgICAgIEFkZGl0aW9uYWxseSwgU3RyaW5nSW1wbDo6c2V0SGFzaCgpIGFzc2VydHMg
aGFzSGFzaCgpIGFuZCAhaXNTdGF0aWMoKS4KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5k
ID0gU3RyaW5nTm9ybWFsKQotICAgICAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAotICAg
ICAgICAgICAgICAgIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0RpZFJlcG9ydENv
c3QgfCBzdHJpbmdLaW5kIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRl
TGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBD
b25zdHJ1Y3RXaXRoQ29uc3RFeHByKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRp
Y1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0s
IFN0cmluZ0tpbmQgc3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCkKLSAgICAgICAgICAgIDogU3Ry
aW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50
IC0gMSwgY2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0Q29z
dCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVM
aXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENv
bnN0cnVjdFdpdGhDb25zdEV4cHIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIG9w
ZXJhdG9yIFN0cmluZ0ltcGwmKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPih0aGlzKTsKLSAgICAgICAgfQorICAgICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwo
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0
cmluZ05vcm1hbCk7CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBj
b25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAgIG9wZXJh
dG9yIFN0cmluZ0ltcGwmKCk7CiAgICAgfTsKIAogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBT
dGF0aWNTdHJpbmdJbXBsIHNfYXRvbWljRW1wdHlTdHJpbmc7CiAgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFN0cmlu
Z0ltcGwqPigmc19hdG9taWNFbXB0eVN0cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBEb2VzIHRo
aXMgcmVhbGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVCogZGVzdGluYXRpb24sIGNvbnN0IFQqIHNvdXJjZSwg
dW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIGlmIChudW1DaGFyYWN0ZXJz
ID09IDEpIHsKLSAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2Us
IG51bUNoYXJhY3RlcnMgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgTENoYXIqIHNv
dXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlv
bltpXSA9IHNvdXJjZVtpXTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRp
b24sIGNvbnN0IENoYXJhY3RlclR5cGUqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7
CisgICAgc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25z
dCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsKIAogICAgIC8vIFNvbWUg
c3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5IGZsYWcs
IGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2FmZXR5IGJ5
IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5IG9mIHRo
ZSBzdHJpbmcuCiAgICAgUmVmPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKLSAgICBV
Q2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKLSAgICAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIG1fZGF0YThbaV07Ci0gICAgICAgIHJldHVybiBtX2RhdGExNltp
XTsKLSAgICB9CisgICAgVUNoYXIgYXQodW5zaWduZWQpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJh
dG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLQog
ICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVu
c2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIGlu
dDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNjky
LDQ5ICs0MTMsNDQgQEAgcHVibGljOgogICAgIFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRl
U3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwogCiAgICAgUmVmPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFJlZjxT
dHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBDaGFyYWN0
ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKworICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0OworICAg
IGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENo
YXJhY3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwogCiAg
ICAgc2l6ZV90IGZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAg
IHNpemVfdCBmaW5kKGNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNp
emVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwg
dW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGluZGV4ID0gMCk7Ci0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZChjb25zdCBjaGFy
KiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5k
KGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXgg
PSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNo
YXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZElnbm9yaW5nQ2FzZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfQotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQg
aW5kZXggPSAwKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0g
VUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQo
U3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXpl
X3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHJl
dmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCopIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlKSB7IHJldHVy
biBjYXNlU2Vuc2l0aXZlID8gc3RhcnRzV2l0aChzdHIpIDogKHJldmVyc2VGaW5kSWdub3JpbmdD
YXNlKHN0ciwgMCkgPT0gMCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFy
dHNXaXRoKFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0
aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hM
ZW5ndGggLSAxLCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChw
cmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKFN0
cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChTdHJp
bmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikg
Y29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1w
bCosIGJvb2wgY2FzZVNlbnNpdGl2ZSk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVu
ZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0
aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29s
IGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0
aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKKyAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIGVuZHNXaXRoKHByZWZpeCwgbWF0
Y2hMZW5ndGggLSAxKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGhhc0luZml4
RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIs
IFVDaGFyKTsKQEAgLTc0MywxMyArNDU5LDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVD
aGFyLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJl
cGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKIAogI2lmIFVTRShDRikKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JK
Q19fCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIG9wZXJhdG9yIE5TU3RyaW5nICooKTsKICNl
bmRpZgpAQCAtNzYwLDEyICs0NzcsNyBAQCBwdWJsaWM6CiAKICAgICBCdWZmZXJPd25lcnNoaXAg
YnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJz
aGlwPihtX2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAg
Ci0gICAgdm9pZCBhc3NlcnRDYWdlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkKLSAgICAgICAgICAgIHJlbGVhc2VBc3NlcnRDYWdlZCgpOwotICAgIH0KLSAg
ICAKKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTc3NCw5
NiArNDg2LDM1IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0
ZVN5bWJvbCB9OwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRo
YXQgaG9sZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBhcyBhIHN1YnN0
cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCi0gICAgU3RyaW5nSW1wbChDcmVhdGVTeW1i
b2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAg
IDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVy
cywgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXM4Qml0KCkpOwotICAgICAgICBBU1NFUlQobV9kYXRh
OCk7Ci0gICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVl
KTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3Ry
aW5ncyB0aGF0IGhvbGRzIGV4aXN0aW5nIDE2LWJpdCBbW0Rlc2NyaXB0aW9uXV0gc3RyaW5nIGFz
IGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KLSAgICBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBj
aGFyYWN0ZXJzLCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAg
ICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9Cisg
ICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKIAogICAgIC8vIE51bGwgc3ltYm9sLgotICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9s
VGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBl
bXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJv
bCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NU
UklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJv
bFRhZyk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2Yo
VCkpLnVuc2FmZUdldCgpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0YWlsRWxlbWVudENvdW50KTsK
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHNpemVfdCB0YWlsT2Zmc2V0
KCkKLSAgICB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgLy8gTVNWQyBkb2Vzbid0IHN1
cHBvcnQgYWxpZ25vZiB5ZXQuCi0gICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihUKT4oc2l6ZW9mKFN0cmluZ0ltcGwpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiByb3Vu
ZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG9mZnNldG9mKFN0cmluZ0ltcGwsIG1faGFzaEFu
ZEZsYWdzKSArIHNpemVvZihTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFncykpOwotI2VuZGlmCi0g
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzaXplX3QgdGFpbE9mZnNldCgp
OwogCiBwcml2YXRlOgotICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2RhdGE4ID09IHRhaWxQb2ludGVyPExDaGFyPigpOwotICAgICAgICByZXR1cm4gbV9kYXRh
MTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBjb25zdCBUKiB0YWlsUG9pbnRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNldDxUPigpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIHRhaWxQb2ludGVyKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0X3B0cjxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
dGhpcykgKyB0YWlsT2Zmc2V0PFQ+KCkpOwotICAgIH0KLQotICAgIFN0cmluZ0ltcGwqIGNvbnN0
JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlck93
bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgcmV0dXJuICp0YWlsUG9p
bnRlcjxTdHJpbmdJbXBsKj4oKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5n
QnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZm
ZXJTdWJzdHJpbmcpOwotCi0gICAgICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+
KCk7Ci0gICAgfQorICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY29uc3QgVCogdGFpbFBvaW50ZXIoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUKiB0YWlsUG9pbnRlcigpOworICAgIFN0cmluZ0ltcGwqIGNvbnN0JiBzdWJz
dHJpbmdCdWZmZXIoKSBjb25zdDsKKyAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5nQnVmZmVyKCk7
CiAKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OwotICAg
IHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSB0eXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYsIGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCk7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQ
cmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJl
ZGljYXRlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJl
ZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2Uo
VUNoYXJQcmVkaWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJl
YWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiwgdW5zaWduZWQsIENoYXJUeXBlKiYp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0
ZTxDYXNlQ29udmVydFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY29udmVydEFTQ0lJQ2FzZShTdHJpbmdJbXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSosIHVuc2lnbmVkKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVDaGFyUHJlZGljYXRlPiBS
ZWY8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgVUNoYXJQcmVkaWNh
dGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hh
clByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBl
KiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQsIENo
YXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUmVmPFN0cmluZ0ltcGw+JiYs
IHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGJvdHRvbSBi
aXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFsKSBzdHJpbmcu
CkBAIC04NzUsMTMgKzUyNiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogcHVibGljOgotI2lmbmRl
ZiBOREVCVUcKLSAgICB2b2lkIGFzc2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGhhc0hhc2goKSk7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCks
IGxlbmd0aCgpKSk7Ci0gICAgfQotI2VuZGlmCisgICAgdm9pZCBhc3NlcnRIYXNoSXNDb3JyZWN0
KCkgY29uc3Q7CiB9OwogCiB1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6U3Rh
dGljU3RyaW5nSW1wbDsKQEAgLTkwMCwxNyArNTQ1LDYgQEAgVmFsdWVDaGVjazxTdHJpbmdJbXBs
Kj4gewogfTsKICNlbmRpZgogCi10ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGlt
cGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1w
bCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KLXRlbXBsYXRl
IDw+Ci1BTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJ
bnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9Ci0K
LXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpjaGFy
YWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KLQotdGVtcGxh
dGUgPD4KLUFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8
VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczE2KCk7IH0KLQogV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwq
KTsKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGIpKTsgfQpAQCAtOTM0LDcgKzU2OCwzMSBAQCBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiwgY29ucwog
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0ltcGwmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVu
Z3RoXSk7CiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0
ZXJzKVtsZW5ndGhdKTsKIAotaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5j
dGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKQorc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0g
MCk7CitzaXplX3QgZmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3Qg
Q2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25l
ZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3NpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVu
c2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3Np
emVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0
Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFs
SWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiwgU3Ry
aW5nSW1wbCopOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZTI+IGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IENoYXJhY3RlclR5cGUx
KiwgdW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIqLCB1bnNpZ25lZCBsZW5n
dGgyKTsKK2ludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJp
bmdJbXBsKik7CisKKy8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBp
dCB1c2VzIHRoZSBVbmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KKy8vIE1vc3QgV2Vi
S2l0IGNhbGxlcnMgZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNI
VE1MU3BhY2UgaW5zdGVhZC4KK2Jvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcik7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0
ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSopOworCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPExDaGFyPihT
dHJpbmdJbXBsKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0
b3IpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogc3RyaW5nLCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZykgU3RyaW5n
SW1wbChsZW5ndGgpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4
KCk7IH0KK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6
Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQorCitp
bmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVu
Y3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTQ0LDcgKzYwMiw3IEBAIGlubGluZSBzaXpl
X3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0
ZXJNYXRjaEZ1bmN0CiAgICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCi1pbmxpbmUgc2l6ZV90IGZp
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0
Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApCitpbmxpbmUg
c2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsK
ICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVuY3Rpb24o
Y2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTU0LDI0ICs2MTIsMjIgQEAgaW5saW5lIHNpemVfdCBm
aW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1h
dGNoRnVuY3QKICAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBp
bmRleCA9IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICBpZiAoaW5kZXggPj0gbGVuZ3Ro
KQogICAgICAgICBpbmRleCA9IGxlbmd0aCAtIDE7Ci0gICAgQ2hhcmFjdGVyVHlwZSBjID0gY2hh
cmFjdGVyc1tpbmRleF07Ci0gICAgd2hpbGUgKChjICE9ICdcbicpICYmIChjICE9ICdccicpKSB7
CisgICAgYXV0byBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICB3aGlsZSAoY2hh
cmFjdGVyICE9ICdcbicgJiYgY2hhcmFjdGVyICE9ICdccicpIHsKICAgICAgICAgaWYgKCFpbmRl
eC0tKQogICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICBjID0gY2hhcmFjdGVy
c1tpbmRleF07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOwogICAgIH0K
ICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlu
bGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBp
bmRleCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpAQCAt
OTg0LDEyICs2NDAsMTIgQEAgaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXIKICAgICByZXR1cm4gaW5k
ZXg7CiB9CiAKLUFMV0FZU19JTkxJTkUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25l
ZCBpbmRleCA9IFVJTlRfTUFYKQorQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0
ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJz
LCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0K
IAotaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCkKK2lubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQog
ewogICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CkBAIC0xMDIxLDQ1ICs2NzcsMzAgQEAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUMKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUy
PgotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKHVuc2lnbmVkIGwxLCB1bnNpZ25lZCBsMiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZTEqIGMxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogYzIpCi17Ci0g
ICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIHVuc2lnbmVk
IHBvcyA9IDA7Ci0gICAgd2hpbGUgKHBvcyA8IGxtaW4gJiYgKmMxID09ICpjMikgewotICAgICAg
ICArK2MxOwotICAgICAgICArK2MyOwotICAgICAgICArK3BvczsKK2lubGluZSBpbnQgY29kZVBv
aW50Q29tcGFyZShjb25zdCBDaGFyYWN0ZXJUeXBlMSogY2hhcmFjdGVyczEsIHVuc2lnbmVkIGxl
bmd0aDEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiBjaGFyYWN0ZXJzMiwgdW5zaWduZWQgbGVuZ3Ro
MikKK3sKKyAgICB1bnNpZ25lZCBjb21tb25MZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgxLCBsZW5n
dGgyKTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAocG9zaXRpb24g
PCBjb21tb25MZW5ndGggJiYgKmNoYXJhY3RlcnMxID09ICpjaGFyYWN0ZXJzMikgeworICAgICAg
ICArK2NoYXJhY3RlcnMxOworICAgICAgICArK2NoYXJhY3RlcnMyOworICAgICAgICArK3Bvc2l0
aW9uOwogICAgIH0KIAotICAgIGlmIChwb3MgPCBsbWluKQotICAgICAgICByZXR1cm4gKGMxWzBd
ID4gYzJbMF0pID8gMSA6IC0xOworICAgIGlmIChwb3NpdGlvbiA8IGNvbW1vbkxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIChjaGFyYWN0ZXJzMVswXSA+IGNoYXJhY3RlcnMyWzBdKSA/IDEgOiAtMTsK
IAotICAgIGlmIChsMSA9PSBsMikKKyAgICBpZiAobGVuZ3RoMSA9PSBsZW5ndGgyKQogICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Ci19Ci0KLWlubGlu
ZSBpbnQgY29kZVBvaW50Q29tcGFyZTgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3Qg
U3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJp
bmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCksIHN0cmluZzEtPmNoYXJhY3RlcnM4KCks
IHN0cmluZzItPmNoYXJhY3RlcnM4KCkpOwotfQotCi1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBh
cmUxNihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcy
KQotewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJp
bmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmNoYXJhY3Rl
cnMxNigpKTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlOFRvMTYoY29uc3QgU3Ry
aW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCks
IHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsKKyAgICBy
ZXR1cm4gKGxlbmd0aDEgPiBsZW5ndGgyKSA/IDEgOiAtMTsKIH0KIAogaW5saW5lIGludCBjb2Rl
UG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwq
IHN0cmluZzIpCiB7CisgICAgLy8gRklYTUU6IFNob3VsZCBudWxsIHN0cmluZ3MgY29tcGFyZSBh
cyBsZXNzIHRoYW4gZW1wdHkgc3RyaW5ncyByYXRoZXIgdGhhbiBlcXVhbCB0byB0aGVtPwogICAg
IGlmICghc3RyaW5nMSkKICAgICAgICAgcmV0dXJuIChzdHJpbmcyICYmIHN0cmluZzItPmxlbmd0
aCgpKSA/IC0xIDogMDsKLQogICAgIGlmICghc3RyaW5nMikKICAgICAgICAgcmV0dXJuIHN0cmlu
ZzEtPmxlbmd0aCgpID8gMSA6IDA7CiAKQEAgLTEwNjcsMjMgKzcwOCwyMiBAQCBpbmxpbmUgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5n
SW1wbCogc3RyaW5nMgogICAgIGJvb2wgc3RyaW5nMklzOEJpdCA9IHN0cmluZzItPmlzOEJpdCgp
OwogICAgIGlmIChzdHJpbmcxSXM4Qml0KSB7CiAgICAgICAgIGlmIChzdHJpbmcySXM4Qml0KQot
ICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmU4KHN0cmluZzEsIHN0cmluZzIpOwot
ICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZThUbzE2KHN0cmluZzEsIHN0cmluZzIpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFjdGVyczgo
KSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFj
dGVyczgoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcyLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIGlmIChzdHJpbmcySXM4Qml0KQotICAgICAgICBy
ZXR1cm4gLWNvZGVQb2ludENvbXBhcmU4VG8xNihzdHJpbmcyLCBzdHJpbmcxKTsKLSAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZTE2KHN0cmluZzEsIHN0cmluZzIpOworICAgICAgICByZXR1cm4g
Y29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVuZ3Ro
KCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxlbmd0aCgpKTsKKyAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVu
Z3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJpbmcyLT5sZW5ndGgoKSk7CiB9CiAK
LWlubGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKK2lubGluZSBib29sIGlzU3Bh
Y2VPck5ld2xpbmUoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2Uo
KSBmb3IgYmFzaWMgTGF0aW4tMS4KICAgICAvLyBUaGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywg
d2hpY2ggYXJlbid0IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1MuCi0gICAgcmV0dXJuIGMgPD0g
MHg3RiA/IGlzQVNDSUlTcGFjZShjKSA6IHVfY2hhckRpcmVjdGlvbihjKSA9PSBVX1dISVRFX1NQ
QUNFX05FVVRSQUw7CisgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFj
ZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFD
RV9ORVVUUkFMOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotaW5saW5l
IHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogc3RyaW5nKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHVuc2ln
bmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3Ry
aW5nKQogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAgIHNpemVfdCBsZW5ndGggPSAwOwpAQCAt
MTA5NCw2ICs3MzQsMzggQEAgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRT
dHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5n
SW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExDaGFy
KiBkYXRhOCwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQorICAgIDogbV9yZWZDb3VudChyZWZDb3Vu
dCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1fZGF0YTgoZGF0YTgpCisgICAgLCBt
X2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCit7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsU2hh
cGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBVQ2hhciogZGF0YTE2LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCisgICAgOiBtX3JlZkNv
dW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhMTYoZGF0
YTE2KQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQoreworfQorCit0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hh
cGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5k
RmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpCisgICAgOiBtX3JlZkNvdW50KHJlZkNv
dW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhOENoYXIoY2hhcmFjdGVy
cykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwordGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGlubGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbFNoYXBl
OjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hB
bmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKKyAgICA6IG1fcmVmQ291bnQocmVm
Q291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2RhdGExNkNoYXIoY2hhcmFj
dGVycykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwogaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAg
IGlmICghcmVxdWlyZXNDb3B5KCkpIHsKQEAgLTExMDcsNiArNzc5LDM4OSBAQCBpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJu
IGNyZWF0ZShtX2RhdGExNiwgbV9sZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBs
Ojppc0FsbEFTQ0lJKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOworICAgIHJl
dHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKK30K
KworaW5saW5lIGJvb2wgU3RyaW5nSW1wbDo6aXNBbGxMYXRpbjEoKSBjb25zdAoreworICAgIGlm
IChpczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byogY2hhcmFjdGVycyA9
IGNoYXJhY3RlcnMxNigpOworICAgIFVDaGFyIG9yZWQgPSAwOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkKKyAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwor
ICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOworfQorCit0ZW1wbGF0ZTxib29sIGlzU3BlY2lh
bENoYXJhY3RlcihVQ2hhciksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlz
QWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBpbmxpbmUgYm9vbCBTdHJpbmdJbXBs
Ojppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFj
dGVyPihjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3RlcnMxNigpLCBsZW5ndGgo
KSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCwg
Rm9yY2U4Qml0KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxl
bmd0aCwgdGFpbFBvaW50ZXI8TENoYXI+KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5n
Tm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFT
U0VSVChtX2xlbmd0aCk7CisKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVu
Z3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgdGFp
bFBvaW50ZXI8VUNoYXI+KCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAg
IEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19T
VEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwoTWFsbG9jUHRyPExDaGFyPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFy
YWN0ZXJzLmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBC
dWZmZXJPd25lZCkKK3sKKyAgICBBU1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitp
bmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykKKyAgICA6IFN0cmluZ0lt
cGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05v
cm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNT
RVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVu
Z3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpCisg
ICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0
ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFs
KQoreworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAg
U1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Cit9CisKK2lubGluZSBTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0
aCwgY2hhcmFjdGVycy5sZWFrUHRyKCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQorewor
ICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklO
R19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0lt
cGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
UmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50
SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7Cisg
ICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJh
c2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJp
bmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJ
VF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmlu
Z0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50
LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sK
KyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIEFTU0VS
VChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZl
clN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsK
KworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9
CisKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgdmVjdG9yKQoreworICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJs
ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKK30KKworQUxXQVlTX0lOTElORSBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5n
SW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoIDw9IHJlcC5sZW5ndGgoKSk7CisKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAg
cmV0dXJuICplbXB0eSgpOworCisgICAgYXV0byogb3duZXJSZXAgPSAoKHJlcC5idWZmZXJPd25l
cnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJl
cCk7CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIGJvdGggdGhl
IFN0cmluZ0ltcGwgc3RydWN0IGFzIHdlbGwgYXMgdGhlIHBvaW50ZXIgdG8gdGhlIG93bmVyIHN0
cmluZy4KKyAgICBhdXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0
cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMSkpKTsKKyAgICBpZiAocmVw
LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5n
SW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhOCArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXAp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5n
SW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Cit9CisKK3Rl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyQ291bnRdKQoreworICAgIENPTVBJTEVfQVNTRVJUKGNoYXJhY3RlckNvdW50
ID4gMSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsTm90RW1wdHkpOworICAgIENPTVBJTEVfQVNTRVJU
KChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5nSW1w
bCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVyZmxv
dyk7CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJDb3VudCAtIDEpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
Q2hhcmFjdGVyVHlwZSomIG91dHB1dCkKK3sKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICBv
dXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gZW1wdHkoKTsKKyAgICB9CisKKyAgICBp
ZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXpl
b2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkgeworICAgICAgICBvdXRw
dXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byog
cmVzdWx0SW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPih0cnlTdHJpbmdNYWxsb2MoYWxs
b2NhdGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkpOworICAgIGlmICghcmVzdWx0SW1w
bCkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8Q2hhcmFjdGVyVHlw
ZT4oKTsKKworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPihyZXN1
bHRJbXBsLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5PgoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJp
bmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+JiYgdmVjdG9yKQoreworICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5z
aXplKCkpIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOworICAgICAgICBpZiAoc2l6
ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJl
bGVhc2VCdWZmZXIoKSwgc2l6ZSkpOworICAgIH0KKyAgICByZXR1cm4gKmVtcHR5KCk7Cit9CisK
K2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdCgpIGNvbnN0Cit7CisgICAgLy8gRm9yIHN1
YnN0cmluZ3MsIHJldHVybiB0aGUgY29zdCBvZiB0aGUgYmFzZSBzdHJpbmcuCisgICAgaWYgKGJ1
ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgcmV0dXJuIHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0KCk7CisKKyAgICAvLyBOb3RlOiB3ZSBtdXN0IG5vdCBhbHRlciB0
aGUgbV9oYXNoQW5kRmxhZ3MgZmllbGQgaW4gaW5zdGFuY2VzIG9mIFN0YXRpY1N0cmluZ0ltcGwu
CisgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRS
ZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCisgICAgLy8gU3RhdGljU3RyaW5nSW1w
bC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2VzIHdpbGwgYWx3YXlzIHJl
dHVybiBhIGNvc3Qgb2YKKyAgICAvLyAwIGhlcmUgYW5kIGF2b2lkIG1vZGlmeWluZyBtX2hhc2hB
bmRGbGFncy4KKyAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29z
dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdDsKKyAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFp
czhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8PSAxOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdER1cmluZ0dDKCkKK3sKKyAgICBpZiAoaXNT
dGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkg
PT0gQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7CisKKyAgICBzaXplX3Qg
cmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFpczhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8
PSAxOworICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsKK30K
KworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKK3sK
KyAgICBBU1NFUlQoIWlzU3RhdGljKCkpOworICAgIEFTU0VSVCghaXNTeW1ib2woKSk7CisgICAg
aWYgKGlzQXRvbWljKSB7CisgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNBdG9taWM7CisgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRv
bWljKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxh
Z1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJp
bmdOb3JtYWwpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SGFzaCh1
bnNpZ25lZCBoYXNoKSBjb25zdAoreworICAgIC8vIFRoZSBoaWdoIGJpdHMgb2YgJ2hhc2gnIGFy
ZSBhbHdheXMgZW1wdHksIGJ1dCB3ZSBwcmVmZXIgdG8gc3RvcmUgb3VyIGZsYWdzCisgICAgLy8g
aW4gdGhlIGxvdyBiaXRzIGJlY2F1c2UgaXQgbWFrZXMgdGhlbSBzbGlnaHRseSBtb3JlIGVmZmlj
aWVudCB0byBhY2Nlc3MuCisgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0IHdoZW4g
c2V0dGluZyBhbmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgorCisgICAgQVNTRVJUKCFoYXNIYXNo
KCkpOworICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CisgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBh
c3N1bWUgdGhhdCBTdHJpbmdIYXNoZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5j
dGlvbi4KKyAgICBBU1NFUlQoaGFzaCA9PSAoaXM4Qml0KCkgPyBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTgsIG1fbGVuZ3RoKSA6IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKSkpOworICAgIEFT
U0VSVCghKGhhc2ggJiAoc19mbGFnTWFzayA8PCAoOCAqIHNpemVvZihoYXNoKSAtIHNfZmxhZ0Nv
dW50KSkpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGhpZ2ggYml0cyBhcmUgZW1wdHkuCisKKyAg
ICBoYXNoIDw8PSBzX2ZsYWdDb3VudDsKKyAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5kRmxh
Z3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBzaGlm
dC4KKyAgICBBU1NFUlQoaGFzaCk7IC8vIFZlcmlmeSB0aGF0IDAgaXMgYSB2YWxpZCBzZW50aW5l
bCBoYXNoIHZhbHVlLgorCisgICAgbV9oYXNoQW5kRmxhZ3MgfD0gaGFzaDsgLy8gU3RvcmUgaGFz
aCB3aXRoIGZsYWdzIGluIGxvdyBiaXRzLgorfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpy
ZWYoKQoreworICAgIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKCp0aGlzKTsKKworICAgIG1fcmVm
Q291bnQgKz0gc19yZWZDb3VudEluY3JlbWVudDsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1w
bDo6ZGVyZWYoKQoreworICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOworCisg
ICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIHNfcmVmQ291bnRJbmNyZW1l
bnQ7CisgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsKKyAgICAgICAgU3RyaW5nSW1wbDo6ZGVzdHJv
eSh0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlZkNvdW50ID0gdGVtcFJl
ZkNvdW50OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdm9p
ZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQorewor
ICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNv
dXJjZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNv
dXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhVQ2hhciogZGVzdGluYXRp
b24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkKKyAgICAgICAgZGVz
dGluYXRpb25baV0gPSBzb3VyY2VbaV07Cit9CisKK2lubGluZSBVQ2hhciBTdHJpbmdJbXBsOjph
dCh1bnNpZ25lZCBpKSBjb25zdAoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGkgPCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1f
ZGF0YTE2W2ldOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjphc3NlcnRDYWdlZCgpIGNv
bnN0Cit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJlbGVhc2VBc3NlcnRD
YWdlZCgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xU
YWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJp
bmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAg
ICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdfU1RB
VFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGluZSBTdHJpbmdJ
bXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVt
ZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykK
K3sKKyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIFNU
UklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGlu
ZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZykKKyAgICA6IFN0cmluZ0lt
cGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBlbXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sK
KyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdf
U1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6YWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCit7CisgICAgcmV0dXJuICh0YWlsT2Zmc2V0PFQ+
KCkgKyB0YWlsRWxlbWVudENvdW50ICogc2l6ZW9mKFQpKS51bnNhZmVHZXQoKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjp0YWlsT2Zmc2V0KCkK
K3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIC8vIE1TVkMgZG9lc24ndCBzdXBwb3J0IGFsaWdu
b2YgeWV0LgorICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihUKT4oc2l6ZW9m
KFN0cmluZ0ltcGwpKTsKKyNlbHNlCisgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxp
Z25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9mKFN0
cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU3Ry
aW5nSW1wbDo6cmVxdWlyZXNDb3B5KCkgY29uc3QKK3sKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlw
KCkgIT0gQnVmZmVySW50ZXJuYWwpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gbV9kYXRhOCA9PSB0YWlsUG9pbnRlcjxMQ2hhcj4oKTsK
KyAgICByZXR1cm4gbV9kYXRhMTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdCBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFQqPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRl
cigpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9CisKK2lubGluZSBTdHJp
bmdJbXBsKiBjb25zdCYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJl
dHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBs
KiYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkKK3sKKyAgICBBU1NFUlQoYnVmZmVyT3du
ZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJldHVybiAqdGFpbFBvaW50ZXI8
U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2VydEhhc2hJ
c0NvcnJlY3QoKSBjb25zdAoreworICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9PSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
KSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3Rl
eHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5k
KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNo
YXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5h
bCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFy
YWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCit7Cit9CisK
K3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3RleHByIFN0cmlu
Z0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3Qg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2luZCkKKyAg
ICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0
ZXJDb3VudCAtIDEsIGNoYXJhY3RlcnMsCisgICAgICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0
IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxp
dGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29u
c3RydWN0V2l0aENvbnN0RXhwcikKK3sKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0YXRpY1N0
cmluZ0ltcGw6Om9wZXJhdG9yIFN0cmluZ0ltcGwmKCkKK3sKKyAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworfQorCiAvLyBTdHJpbmdIYXNoIGlzIHRoZSBk
ZWZhdWx0IGhhc2ggZm9yIFN0cmluZ0ltcGwqIGFuZCBSZWZQdHI8U3RyaW5nSW1wbD4KIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiB7CkBAIC0xMTU2LDE0ICsxMjExLDEwIEBAIHRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiAmaW1wbDsgXAogICAgIH0oKSkKIAotCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpT
dGF0aWNTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjplcXVhbDsKLXVzaW5nIFdURjo6VGV4dENhc2VT
ZW5zaXRpdml0eTsKLXVzaW5nIFdURjo6VGV4dENhc2VTZW5zaXRpdmU7Ci11c2luZyBXVEY6OlRl
eHRDYXNlSW5zZW5zaXRpdmU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCAyYTIyNTVhNmM1MjlmNDFiNzQ3ZDBkNTE1ZDlmMTQ1ZTBmZjRlMmQyLi4xODEzZWMzMDg3ZDRk
ZjBjM2FhZjM4NGE1OWZhYzQ4ZmM2OWVhMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtNDUxLDE2ICs0NTEsMTYgQEAgaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdAogaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoTENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChp
czhCaXQoKSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3RpbmF0aW9uLCBjaGFyYWN0
ZXJzOCgpLCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGlu
YXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgU3RyaW5n
Vmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25z
dAogewogICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMo
ZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGlu
YXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CiB9CiAKIGlu
bGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRlZENoYXJhY3RlcnM6OlVwY29udmVydGVkQ2hhcmFj
dGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggMGU5OTUwMjFmOGVmZThiYWRlZGI3OGI5ODA5ZmMyZTBkMzFkNDY3YS4uZTU0ZjU5NWEx
ZWQ4Yzg3MDkyNjNjM2FhYjM4MWU3NjBjZjQ5Zjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ4LDEy
ICs0OCwxMCBAQCBTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogfQogCiAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwg
ZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1TdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hh
ciogc3RyKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5n
KQogewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ltcGwgPSBTdHJp
bmdJbXBsOjpjcmVhdGUoc3RyLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKHN0cikpOwor
ICAgIGlmIChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlKG51bGxUZXJtaW5hdGVkU3RyaW5nLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3Ry
aW5nKG51bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLgpAQCAtNjksMTcgKzY3LDE3IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgbV9pbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsKIH0KIAotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEs
IGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotU3RyaW5nOjpTdHJpbmcoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMpCisvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBMYXRpbi0xIGRhdGEs
IGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgorU3RyaW5nOjpTdHJpbmcoY29uc3QgTENo
YXIqIG51bGxUZXJtaW5hdGVkU3RyaW5nKQogewotICAgIGlmIChjaGFyYWN0ZXJzKQotICAgICAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycyk7CisgICAgaWYgKG51bGxU
ZXJtaW5hdGVkU3RyaW5nKQorICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUobnVs
bFRlcm1pbmF0ZWRTdHJpbmcpOwogfQogCi1TdHJpbmc6OlN0cmluZyhjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcp
CiB7Ci0gICAgaWYgKGNoYXJhY3RlcnMpCi0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpOworICAgIGlm
IChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihudWxsVGVybWluYXRlZFN0cmluZykp
OwogfQogCiBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKQEAgLTg3LDM1
ICs4NSwzNiBAQCBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKIHsKIH0K
IAotdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cikKK3ZvaWQgU3RyaW5nOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBvdGhlclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBleHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRv
IHRha2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgogCi0gICAgaWYgKHN0ci5pc0VtcHR5KCkp
Ci0gICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0ci5tX2ltcGwpIHsKLSAgICAgICAgaWYgKG1f
aW1wbCkgewotICAgICAgICAgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgc3RyLm1faW1wbC0+
aXM4Qml0KCkpIHsKLSAgICAgICAgICAgICAgICBMQ2hhciogZGF0YTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RyLmxlbmd0aCgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KG1faW1wbC0+bGVuZ3RoKCkgKyBzdHIubGVuZ3RoKCksIGRhdGEpOwotICAgICAgICAgICAgICAg
IG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkgKiBz
aXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVu
Z3RoKCksIHN0ci5jaGFyYWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsK
LSAgICAgICAgICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFVDaGFyKiBkYXRhOwotICAg
ICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSAtIG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwgZGF0YSk7Ci0gICAgICAgICAgICBTdHJp
bmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwotICAgICAg
ICAgICAgU3RyaW5nVmlldyhzdHIpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBt
X2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbXBsID0gc3RyLm1faW1wbDsKKyAgICBp
ZiAoIW1faW1wbCkgeworICAgICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7CisgICAg
YXV0byBvdGhlckxlbmd0aCA9IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7CisgICAgaWYg
KG90aGVyTGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVu
Z3RoKQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgb3Ro
ZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgeworICAgICAgICBMQ2hhciogZGF0YTsKKyAgICAg
ICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgg
KyBvdGhlckxlbmd0aCwgZGF0YSk7CisgICAgICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBtZW1jcHkoZGF0YSAr
IGxlbmd0aCwgb3RoZXJTdHJpbmcubV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCAq
IHNpemVvZihMQ2hhcikpOworICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOworICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIFVDaGFyKiBkYXRhOworICAgIGF1dG8gbmV3SW1wbCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoICsgb3RoZXJMZW5ndGgsIGRh
dGEpOworICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZGF0YSk7CisgICAgU3RyaW5nVmlldygqb3RoZXJTdHJpbmcubV9pbXBsKS5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChkYXRhICsgbGVuZ3RoKTsKKyAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0lt
cGwpOwogfQogCiB2b2lkIFN0cmluZzo6YXBwZW5kKExDaGFyIGNoYXJhY3RlcikKQEAgLTIyNyw4
ICsyMjYsOCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9B
cHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgTENoYXIqIGRhdGE7CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc3RyTGVuZ3RoICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwotICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBz
dHJMZW5ndGgpOwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0
aCwgY2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7CisgICAgICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgc3RyTGVuZ3Ro
KTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIHN0ckxlbmd0aCwg
Y2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7CiAgICAgICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzcsOCArMjM2LDgg
QEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBMQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1
bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICAgICAgQ1JBU0goKTsKICAgICBVQ2hhciogZGF0
YTsKICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCgpICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnMxNigpLCBzdHJMZW5ndGgpOwotICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0
aFRvQXBwZW5kKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBtX2ltcGwt
PmNoYXJhY3RlcnMxNigpLCBzdHJMZW5ndGgpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQp
OwogICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CiB9CiAKQEAgLTI2NCwxMCArMjYzLDEw
IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNUb0FwcGVuZCwg
dW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgVUNoYXIqIGRhdGE7CiAgICAgYXV0byBuZXdJ
bXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhU
b0FwcGVuZCwgZGF0YSk7CiAgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkpCi0gICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFycyhkYXRhLCBjaGFyYWN0ZXJzOCgpLCBzdHJMZW5ndGgpOworICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFyYWN0ZXJzOCgpLCBzdHJMZW5n
dGgpOwogICAgIGVsc2UKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIGNoYXJh
Y3RlcnMxNigpLCBzdHJMZW5ndGgpOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkYXRhICsg
c3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKKyAgICAgICAg
U3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgY2hhcmFjdGVyczE2KCksIHN0ckxlbmd0
aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hh
cmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7CiAgICAgbV9pbXBsID0gV1RGTW92ZShu
ZXdJbXBsKTsKIH0KIApAQCAtMjg1LDQxICsyODQsMzMgQEAgdm9pZCBTdHJpbmc6OnRydW5jYXRl
KHVuc2lnbmVkIHBvc2l0aW9uKQogICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnN1YnN0cmluZygw
LCBwb3NpdGlvbik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotaW5s
aW5lIHZvaWQgU3RyaW5nOjpyZW1vdmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBwb3NpdGlvbiwgaW50IGxlbmd0aFRvUmVtb3ZlKQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHZvaWQgU3RyaW5nOjpyZW1vdmVJbnRlcm5h
bChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5z
aWduZWQgbGVuZ3RoVG9SZW1vdmUpCiB7CiAgICAgQ2hhcmFjdGVyVHlwZSogZGF0YTsKICAgICBh
dXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0g
bGVuZ3RoVG9SZW1vdmUsIGRhdGEpOwogICAgIG1lbWNweShkYXRhLCBjaGFyYWN0ZXJzLCBwb3Np
dGlvbiAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Ci0gICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlv
biwgY2hhcmFjdGVycyArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZW1vdmUsCi0gICAgICAgIChsZW5n
dGgoKSAtIGxlbmd0aFRvUmVtb3ZlIC0gcG9zaXRpb24pICogc2l6ZW9mKENoYXJhY3RlclR5cGUp
KTsKLQorICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIGNoYXJhY3RlcnMgKyBwb3NpdGlvbiAr
IGxlbmd0aFRvUmVtb3ZlLCAobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSAtIHBvc2l0aW9uKSAq
IHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7CiAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsK
IH0KIAotdm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgaW50IGxlbmd0aFRv
UmVtb3ZlKQordm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQg
bGVuZ3RoVG9SZW1vdmUpCiB7Ci0gICAgaWYgKGxlbmd0aFRvUmVtb3ZlIDw9IDApCisgICAgaWYg
KCFsZW5ndGhUb1JlbW92ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChwb3NpdGlvbiA+PSBs
ZW5ndGgoKSkKKyAgICBhdXRvIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIGlmIChwb3Np
dGlvbiA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxlbmd0aFRvUmVtb3ZlKSA+IGxlbmd0aCgpIC0gcG9zaXRpb24pCi0gICAgICAgIGxl
bmd0aFRvUmVtb3ZlID0gbGVuZ3RoKCkgLSBwb3NpdGlvbjsKLQotICAgIGlmIChpczhCaXQoKSkg
eworICAgIGxlbmd0aFRvUmVtb3ZlID0gc3RkOjptaW4obGVuZ3RoVG9SZW1vdmUsIGxlbmd0aCAt
IHBvc2l0aW9uKTsKKyAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJlbW92ZUludGVybmFsKGNo
YXJhY3RlcnM4KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7Ci0KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHJlbW92ZUludGVybmFsKGNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwg
bGVuZ3RoVG9SZW1vdmUpOworICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlSW50ZXJuYWwoY2hhcmFj
dGVyczE2KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7CiB9CiAKLVN0cmluZyBTdHJpbmc6
OnN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbikgY29uc3QKK1N0cmluZyBTdHJp
bmc6OnN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAog
ewotICAgIGlmICghbV9pbXBsKSAKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVy
biBtX2ltcGwtPnN1YnN0cmluZyhwb3MsIGxlbik7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlz
IGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5ndGgpIDogU3Ry
aW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkBAIC0zMzIsMTAwICszMjMsOTUgQEAg
U3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0CiAKICAgICBpZiAoIW9mZnNldCAmJiBsZW5ndGggPT0gc3RyaW5n
TGVuZ3RoKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJ
bXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9pbXBsLCBvZmZzZXQsIGxlbmd0aCkp
OworICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9p
bXBsLCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24s
IGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAgICBpZiAoIW1faW1w
bCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZl
cnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
ZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAgICBp
ZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwt
PmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJp
bmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25zdAogewotICAgIGlmICgh
bV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29u
dmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAg
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUo
KSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCBmYWlsaW5nSW5k
ZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRp
bmdBdEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KTsKKyAgICAvLyBGSVhNRTogU2hvdWxk
IHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8K
KyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9j
YWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KSA6IFN0cmluZyB7IH07
CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKSBj
b25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8v
IEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0
LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVy
Y2FzZVdpdGhvdXRMb2NhbGUoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNv
bnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShsb2Nh
bGVJZGVudGlmaWVyKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0
aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpIDog
U3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvVXBwZXJjYXNlV2l0aExv
Y2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBs
LT5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpOworICAgIC8v
IEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0
LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVy
Y2FzZVdpdGhMb2NhbGUobG9jYWxlSWRlbnRpZmllcikgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJp
bmcgU3RyaW5nOjpzdHJpcFdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNw
YWNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkg
b3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24g
bmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2UiIGlzIGEgc2luZ2xl
CisgICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2UuIEZvciBhbm90aGVy
LCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQgdGhlIGZ1bmN0aW9u
IHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBNb3N0IFdlYktpdCBj
YWxsZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5IHdlIHNob3VsZCBj
b25zaWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0cmlw
V2hpdGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3RyaXBXaGl0
ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKIHsKLSAg
ICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2lt
cGwtPnN0cmlwV2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAgIC8vIEZJWE1FOiBTaG91bGQg
dGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPwor
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIG5lZWRzIGEgbmV3IG5hbWUuIEl0IHN0cmlwcyBs
ZWFkaW5nIGFuZCB0cmFpbGluZworICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBtYXRjaCBhIHByZWRp
Y2F0ZTsgbm90IG5lY2Vzc2FyaWx5ICJ3aGl0ZSBzcGFjZSIuCisgICAgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSkgOiBTdHJpbmcgeyB9OwogfQog
CiBTdHJpbmcgU3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlmICgh
bV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c2lt
cGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBh
bmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2Ui
IGlzIGEgc2luZ2xlCisgICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2Uu
IEZvciBhbm90aGVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQg
dGhlIGZ1bmN0aW9uIHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBN
b3N0IFdlYktpdCBjYWxsZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5
IHdlIHNob3VsZCBjb25zaWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0
cmluZzo6c2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVT
cGFjZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOwor
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBs
aWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnNpbXBsaWZ5
V2hpdGVTcGFjZShpc1doaXRlU3BhY2UpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiBtX2ltcGwtPnJlbW92ZUNoYXJhY3RlcnMoZmluZE1hdGNoKTsKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUg
aW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZW1vdmVDaGFyYWN0ZXJzKGZp
bmRNYXRjaCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpmb2xkQ2FzZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gbV9pbXBsLT5mb2xkQ2FzZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5j
dGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZvbGRDYXNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBib29sIFN0
cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKQEAgLTQ2NSw4ICs0NTEsNyBAQCBW
ZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25z
dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApCi1z
dGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9y
bWF0LCB2YV9saXN0IGFyZ3MpCitXVEZfQVRUUklCVVRFX1BSSU5URigxLCAwKSBzdGF0aWMgU3Ry
aW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9s
aXN0IGFyZ3MpCiB7CiAgICAgdmFfbGlzdCBhcmdzQ29weTsKICAgICB2YV9jb3B5KGFyZ3NDb3B5
LCBhcmdzKTsKQEAgLTQ3OCwxNCArNDYzLDEyIEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZv
cm1hdEFuZEFyZ3VtZW50cyhjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogI2lm
IFVTRShDRikgJiYgIU9TKFdJTkRPV1MpCiAgICAgaWYgKHN0cnN0cihmb3JtYXQsICIlQCIpKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGb3JtYXQgPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9ybWF0LCBrQ0ZTdHJp
bmdFbmNvZGluZ1VURjgpKTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7Ci0KKyAgICAgICAg
YXV0byBjZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmb3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7CiAg
ICAgICAgIHZhX2VuZChhcmdzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKICAgICB9
Ci0jZW5kaWYgLy8gVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyNlbmRpZgogCiAgICAgLy8gRG8g
dGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJTEVSKE1TVkMpCkBA
IC00OTcsNyArNDgwLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1l
bnRzKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgIHZhX2VuZChhcmdzKTsK
IAogICAgIGlmIChyZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTUyNyw3ICs1MTAsNiBAQCBTdHJpbmcgU3RyaW5nOjpmb3Jt
YXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAgICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsK
ICAgICBTdHJpbmcgcmVzdWx0ID0gY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhmb3JtYXQs
IGFyZ3MpOwogICAgIHZhX2VuZChhcmdzKTsKLSAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC03MDAsMTEgKzY4MiwxMSBAQCBmbG9hdCBTdHJpbmc6OnRvRmxvYXQoYm9vbCogb2spIGNv
bnN0CiB9CiAKICNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9G
VU5DVElPTlMpCisKIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAg
ICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2lt
cGwtPmlzb2xhdGVkQ29weSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwg
YW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0
cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKQEAgLTcxMiwzNiArNjk0LDI3IEBAIFN0cmluZyBTdHJp
bmc6Omlzb2xhdGVkQ29weSgpICYmCiAgICAgaWYgKGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpKSB7CiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhhdCBvdXIgc3RyaW5nIGlzIGEgdGVt
cG9yYXJ5IHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQKICAgICAgICAgLy8gd2UgY2FuIGp1c3Qgc3Rl
YWwgdGhlIG1faW1wbCBmcm9tIGl0LCB0aHVzIGF2b2lkaW5nIGEgY29weS4KLSAgICAgICAgcmV0
dXJuIFN0cmluZyhXVEZNb3ZlKCp0aGlzKSk7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKnRo
aXMpIH07CiAgICAgfQogCi0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2Vsc2UKKwog
U3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29w
eSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90
aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlz
b2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgU3RyaW5nOjpp
c1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogewotICAgIGlmICghaW1wbCgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAvLyBBdG9taWNTdHJpbmdzIGFyZSBub3Qgc2FmZSB0byBzZW5kIGJldHdlZW4g
dGhyZWFkcyBhcyB+U3RyaW5nSW1wbCgpCiAgICAgLy8gd2lsbCB0cnkgdG8gcmVtb3ZlIHRoZW0g
ZnJvbSB0aGUgd3JvbmcgQXRvbWljU3RyaW5nVGFibGUuCi0gICAgaWYgKGltcGwoKS0+aXNBdG9t
aWMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbXBsKCktPmhhc09uZVJlZigp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlz
RW1wdHkoKSB8fCAobV9pbXBsLT5oYXNPbmVSZWYoKSAmJiAhbV9pbXBsLT5pc0F0b21pYygpKTsK
IH0KIAogdm9pZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFs
bG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdApAQCAtODQ4LDEw
ICs4MjEsNyBAQCBDU3RyaW5nIFN0cmluZzo6bGF0aW4xKCkgY29uc3QKIAogQ1N0cmluZyBTdHJp
bmc6OnV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwotICAgIAotICAgIHJldHVybiBtX2ltcGwt
PnV0ZjgobW9kZSk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+dXRmOChtb2RlKSA6IENT
dHJpbmcgeyAiIiwgMCB9OwogfQogCiBDU3RyaW5nIFN0cmluZzo6dXRmOCgpIGNvbnN0CkBAIC04
ODAsNyArODUwLDcgQEAgU3RyaW5nIFN0cmluZzo6bWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29u
c3QgTENoYXIqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKICAgICBVQ2hhciogZGVzdGluYXRpb247
CiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgs
IGRlc3RpbmF0aW9uKTsKICAgICAKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRp
b24sIHNvdXJjZSwgbGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0
aW5hdGlvbiwgc291cmNlLCBsZW5ndGgpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBA
IC05NDksOCArOTE5LDggQEAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNlKFVD
aGFyIGMsIGludCBiYXNlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMgaW5saW5lIEludGVn
cmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgYm9vbCogb2ssIGludCBiYXNlKQordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBJbnRlZ3JhbFR5cGUgdG9JbnRl
Z3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2ssIGludCBiYXNlKQogewogICAgIHN0YXRpYyBjb25zdCBJbnRlZ3JhbFR5cGUgaW50ZWdyYWxN
YXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPEludGVncmFsVHlwZT46Om1heCgpOwogICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRlZ3JhbFR5cGU+
Ojppc19zaWduZWQ7CkBAIC05ODQsNyArOTU0LDcgQEAgc3RhdGljIGlubGluZSBJbnRlZ3JhbFR5
cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGIK
ICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFzZSgqZGF0YSwgYmFz
ZSkpIHsKICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAgIEludGVncmFsVHlwZSBkaWdpdFZhbHVl
OwotICAgICAgICBDaGFyVHlwZSBjID0gKmRhdGE7CisgICAgICAgIGF1dG8gYyA9ICpkYXRhOwog
ICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KGMpKQogICAgICAgICAgICAgZGlnaXRWYWx1ZSA9IGMg
LSAnMCc7CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnKQpAQCAtMTAyNSw4ICs5OTUsOCBAQCBi
eWU6CiAgICAgcmV0dXJuIGlzT2sgPyB2YWx1ZSA6IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLXN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIo
Y29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdl
cihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIHNpemVf
dCBpID0gMDsKIApAQCAtMTE1MSw4ICsxMTIxLDggQEAgaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50
UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIAogZW51bSBU
cmFpbGluZ0p1bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywgQWxsb3dUcmFpbGluZ0p1
bmsgfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kg
cG9saWN5Pgotc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJUeXBl
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5
Pgorc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKIHsK
ICAgICBzaXplX3QgbGVhZGluZ1NwYWNlc0xlbmd0aCA9IDA7CiAgICAgd2hpbGUgKGxlYWRpbmdT
cGFjZXNMZW5ndGggPCBsZW5ndGggJiYgaXNBU0NJSVNwYWNlKGRhdGFbbGVhZGluZ1NwYWNlc0xl
bmd0aF0pKQpAQCAtMTIxOSw3ICsxMTg5LDggQEAgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygp
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmbmRlZiBOREVCVUcKLS8vIEZvciB1c2UgaW4gdGhl
IGRlYnVnZ2VyCisKKy8vIEZvciB1c2UgaW4gdGhlIGRlYnVnZ2VyLgogU3RyaW5nKiBzdHJpbmco
Y29uc3QgY2hhciopOwogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCogaW1wbCk7
CiBWZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZyk7CkBAIC0xMjMxLDcgKzEy
MDIsNyBAQCB2b2lkIFN0cmluZzo6c2hvdygpIGNvbnN0CiAKIFN0cmluZyogc3RyaW5nKGNvbnN0
IGNoYXIqIHMpCiB7Ci0gICAgLy8gbGVha3MgbWVtb3J5IQorICAgIC8vIEludGVudGlvbmFsbHkg
bGVha3MgbWVtb3J5IQogICAgIHJldHVybiBuZXcgU3RyaW5nKHMpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAppbmRleCAzYTk3YjE2Nzg3OTMwNTkwNmQ2NWI3MGY5YTFkNTE1ZmI2MjgxY2Nh
Li4yZjI5YWE1MWM4NzEwZmM1NWFiMjM0YjIzYzE1YzBiNmVmMTFiZTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGgu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC04MCw3ICs3OSw3IEBAIGVudW0gVHJh
aWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgeyBLZWVwVHJhaWxpbmdaZXJvcywgVHJ1bmNhdGVU
cmFpbGluZ1plcm9zIH07CiBjbGFzcyBTdHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0cnVj
dCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0g
ICAgU3RyaW5nKCkgeyB9CisgICAgU3RyaW5nKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTEy
NSwyMiArMTI0LDE2IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBh
IGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgdGhl
ICJiaWciIHZlcnNpb24sIGFzIGl0IHB1dCB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxs
IGFuZCBnZW5lcmF0ZSBiaWdnZXIgY29kZS4KICAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFs
VGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFy
YWN0ZXJDb3VudD4KLSAgICBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3Rl
ckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNy
ZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9Ci0KLSAgICAv
LyBXZSBoYXZlIHRvIGRlY2xhcmUgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5kIGNvcHkgYXNzaWdu
bWVudCBvcGVyYXRvciBhcyB3ZWxsLCBvdGhlcndpc2UKLSAgICAvLyB0aGV5J2xsIGJlIGltcGxp
Y2l0bHkgZGVsZXRlZCBieSBhZGRpbmcgdGhlIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNz
aWdubWVudCBvcGVyYXRvci4KLSAgICBTdHJpbmcoY29uc3QgU3RyaW5nJiBvdGhlcikKLSAgICAg
ICAgOiBtX2ltcGwob3RoZXIubV9pbXBsKQotICAgIHsgfQotICAgIFN0cmluZyhTdHJpbmcmJiBv
dGhlcikKLSAgICAgICAgOiBtX2ltcGwoV1RGTW92ZShvdGhlci5tX2ltcGwpKQotICAgIHsgfQot
ICAgIFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZyYgb3RoZXIpIHsgbV9pbXBsID0gb3Ro
ZXIubV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KLSAgICBTdHJpbmcmIG9wZXJhdG9yPShTdHJpbmcm
JiBvdGhlcikgeyBtX2ltcGwgPSBXVEZNb3ZlKG90aGVyLm1faW1wbCk7IHJldHVybiAqdGhpczsg
fQotCi0gICAgLy8gSW5saW5lIHRoZSBkZXN0cnVjdG9yLgotICAgIEFMV0FZU19JTkxJTkUgflN0
cmluZygpIHsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmco
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxp
dGVyYWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3Rl
ckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9CisKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGhhdmUg
dG8gZGVmaW5lIHRoZXNlIGV4cGxpY2l0bHkgZ2l2ZW4gdGhhdCB3ZSBqdXN0IHdhbnQgdGhlIGRl
ZmF1bHQgdmVyc2lvbnM/CisgICAgLy8gV2UgaGF2ZSB2ZXJpZmllZCBlbXBpcmljYWxseSB0aGF0
IHdlIGRvLgorICAgIFN0cmluZyhjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5n
KFN0cmluZyYmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5n
JikgPSBkZWZhdWx0OworICAgIFN0cmluZyYgb3BlcmF0b3I9KFN0cmluZyYmKSA9IGRlZmF1bHQ7
CisKKyAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN3
YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQogCkBAIC0xNTAsNDYgKzE0
MywyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdWZWN0b3I8Q2hh
cmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiYgdmVjdG9yKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHZlY3RvcikpOyB9
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlz
RW1wdHkoKTsgfQogCiAgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bC5nZXQoKTsgfQogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZWxlYXNlSW1wbCgpIHsgcmV0dXJu
IFdURk1vdmUobV9pbXBsKTsgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJl
dHVybiBtX2ltcGwtPmxlbmd0aCgpOwotICAgIH0KLQotICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzOCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICBBU1NFUlQobV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJldHVy
biBtX2ltcGwtPmNoYXJhY3RlcnM4KCk7Ci0gICAgfQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMxNigpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBBU1NFUlQoIW1faW1wbC0+aXM4Qml0KCkpOwotICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICB9CisgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7IH0KKyAgICBj
b25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PmNoYXJhY3RlcnM4KCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMx
NigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y2hhcmFjdGVyczE2KCkgOiBudWxs
cHRyOyB9CiAKICAgICAvLyBSZXR1cm4gY2hhcmFjdGVyczgoKSBvciBjaGFyYWN0ZXJzMTYoKSBk
ZXBlbmRpbmcgb24gQ2hhcmFjdGVyVHlwZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNv
bnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCi0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENo
YXIpIDogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgfQorICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNp
emVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKSA6IDA7IH0KIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CkBAIC0xOTcsMTYgKzE2NSwxMSBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSkgY29u
c3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0g
ICAgVUNoYXIgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1f
aW1wbCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwotICAgIH0KLSAgICBVQ2hhciBvcGVy
YXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBV
Q2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgVUNoYXIgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyQXQoaW5kZXgpOyB9
CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
aW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihs
b25nKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGxvbmcgbG9uZyk7CkBAIC0yMTksMTE5ICsxODIsNjQgQEAgcHVibGljOgogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRXaWR0aChk
b3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoYywgc3RhcnQpIDogbm90Rm91
bmQ7IH0KLQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAg
ICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsg
fQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCksIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmIHN0cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQotICAgIHNpemVf
dCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQotCi0g
ICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBm
aW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0K
KyAgICBzaXplX3QgZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90
Rm91bmQ7IH0KKworICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsg
fQorICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQorCisgICAgc2l6ZV90
IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBz
dGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0
aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBz
dHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxh
c3QgaW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KLSAgICBzaXplX3Qg
cmV2ZXJzZUZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjLCBzdGFydCkgOiBu
b3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5z
aWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0g
ICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgbWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZpbmRJ
Z25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0
cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RG
b3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcm
IHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQotCi0gICAgLy8gV3JhcHBlcnMgZm9yIGZpbmQgJiByZXZlcnNlRmlu
ZCBhZGRpbmcgZHluYW1pYyBzZW5zaXRpdml0eSBjaGVjay4KLSAgICBzaXplX3QgZmluZChjb25z
dCBMQ2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIsIHN0YXJ0KSA6IGZpbmRJ
Z25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcm
IHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IGZpbmQoc3RyLCBzdGFydCkgOiBmaW5kSWdub3JpbmdD
YXNlKHN0ciwgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYg
c3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7
IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNl
RmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQorICAgIHNpemVfdCByZXZlcnNlRmluZChV
Q2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5k
KGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVy
c2VGaW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIgY2hhcmFjdGVy
U3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgotCi0gICAgYm9vbCBjb250YWlu
cyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9v
bCBjb250YWlucyhjb25zdCBMQ2hhciogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGZpbmQoc3Ry
LCBzdGFydE9mZnNldCwgY2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNv
bnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kKHN0
cikgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyLCBi
b29sIGNhc2VTZW5zaXRpdmUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QKLSAgICAg
ICAgeyByZXR1cm4gZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RG
b3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cikg
IT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVy
biBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7IH0K
LQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHko
KTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYg
cykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2Uocy5pbXBsKCkpIDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNp
dGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChj
aGFyYWN0ZXIpIDogZmFsc2U7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4K
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBi
b29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkg
OiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJp
bmcmIHByZWZpeCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IG1faW1wbCAmJiBwcmVmaXguaW1wbCgpID8gbV9pbXBsLT5oYXNJbmZpeFN0YXJ0aW5nQXQoKnBy
ZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IGZhbHNlOyB9Ci0KLSAgICBib29sIGVuZHNXaXRo
KGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzLmltcGwoKSkgOiBz
LmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNh
c2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5k
c1dpdGgocy5pbXBsKCksIGNhc2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29s
IGVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsK
KworICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5k
KGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFy
KiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQo
c3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZykgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7
IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90
Rm91bmQ7IH0KKworICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoKHN0cmluZy5pbXBsKCkpIDog
c3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0
YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgJiYgbV9pbXBsLT5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVm
aXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNX
aXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1hdGNoTGVuZ3RoOyB9CisgICAgYm9vbCBoYXNJ
bmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nJiBwcmVmaXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgcHJlZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0lu
Zml4U3RhcnRpbmdBdCgqcHJlZml4LmltcGwoKSwgc3RhcnRPZmZzZXQpOyB9CisKKyAgICBib29s
IGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmVuZHNXaXRoKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0
cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5lbmRzV2l0aChj
aGFyYWN0ZXIpOyB9CiAgICAgYm9vbCBlbmRzV2l0aChjaGFyIGNoYXJhY3RlcikgY29uc3QgeyBy
ZXR1cm4gZW5kc1dpdGgoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJhY3RlcikpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFy
ICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGg8bWF0Y2hMZW5ndGg+
KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0lu
Zml4RW5kaW5nQXQoY29uc3QgU3RyaW5nJiBzdWZmaXgsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsICYmIHN1ZmZpeC5pbXBsKCkgPyBtX2ltcGwtPmhh
c0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCkgOiBmYWxzZTsgfQorICAg
IHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIg
KCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5l
bmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQorICAgIGJvb2wg
aGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zmc2V0
KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0lu
Zml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KIAogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgdm9pZCBhcHBlbmQoTENoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIgYykg
eyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsgfTsKKyAgICB2b2lkIGFwcGVuZChjaGFy
IGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChVQ2hhcik7CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGluc2VydChj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2
b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKLSAgICBTdHJp
bmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2lt
cGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQotICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5y
ZXBsYWNlKGEsIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiByZXBsYWNl
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9
IG1faW1wbC0+cmVwbGFjZShhLmltcGwoKSwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KLSAg
ICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgY29uc3QgU3Ry
aW5nJiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShpbmRleCwgbGVu
LCBiLmltcGwoKSk7IHJldHVybiAqdGhpczsgfQorICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0
YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFy
Z2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIFN0cmlu
ZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50KTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3Ry
aW5nJiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFj
ZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7CiAKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVD
aGFyIGEsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCi0gICAgewot
ICAgICAgICBpZiAobV9pbXBsKQotICAgICAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNl
KGEsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9
IDEpOwogCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKLQotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWdu
ZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJp
bmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5U
X01BWCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVy
biBzdWJzdHJpbmcoMCwgbGVuKTsgfQotICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNv
bnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQorICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNp
Z25lZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwo
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CisgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuZ3Ro
KSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQorICAgIFN0cmluZyByaWdo
dCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgo
KSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmlu
ZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKQEAgLTM0Nyw3ICsy
NTUsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlm
eVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OwogCiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVu
Y3Rpb25QdHIpIGNvbnN0OwotICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVD
aGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1
cm5zIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21w
YXJpc29uLgogICAgIC8vIFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBpbnN0ZWFkIGlmIEFT
Q0lJIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBpcyBkZXNpcmVkLgpAQCAtMzU4LDM1ICsy
NjUsMTggQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmlu
Zy4gVGhlIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgogICAgIC8vIGludG8gdGhlIGJ1
ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIHVzZWQu
Ci0gICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1bnByZWRpY3RhYmxlIHJlc3Vs
dHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVu
dHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoY29u
c3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Ci0gICAg
ewotICAgICAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwotICAgIH0KKyAgICB2
b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KIAogICAgIHVzaW5n
IFNwbGl0RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmdWaWV3Jik+Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9v
bCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93
RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAgfQotICAgIFZl
Y3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwg
cmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJl
c3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIHZvaWQgc3BsaXQoVUNo
YXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFy
YXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBz
ZXBhcmF0b3IpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgdG9JbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CkBAIC00MzksMTEgKzMyOSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRG
cm9tMTZCaXRTb3VyY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlPHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KLSAgICBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBidWZmZXIpCi0gICAgewot
ICAgICAgICByZXR1cm4gbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7Ci0gICAgfQorICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
c3RhdGljIFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIs
IGlubGluZUNhcGFjaXR5PiYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBT
dHJpbmcgbWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3QgTENoYXIqLCBzaXplX3QpOwogCkBA
IC00NTEsMjggKzMzNywyMSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFp
bnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqLCBzaXplX3QpOwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7Ci0gICAg
c3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJl
dHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7
IH07Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBm
cm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9OworICAgIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkg
eyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3Rl
cnMpLCBsZW5ndGgpOyB9OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciog
c3RyaW5nKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
c3RyaW5nKSk7IH07CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJv
bVVURjgoY29uc3QgQ1N0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3Qg
VmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycyk7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRo
ZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4t
MSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hh
ciosIHNpemVfdCk7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07
CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0
aCk7IH07CiAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0
aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0gICAgVUNoYXJEaXJl
Y3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxp
dHkgPSBudWxscHRyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAg
ICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKLSAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQotICAgICAg
ICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBV
X0xFRlRfVE9fUklHSFQ7Ci0gICAgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVsbHB0cikgY29uc3Q7
CiAKLSAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWlu
c09ubHlMYXRpbjEoKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBj
b25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
OyB9CisgICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2lt
cGwtPmlzQWxsQVNDSUkoKTsgfQorICAgIGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdCB7IHJldHVy
biAhbV9pbXBsIHx8IG1faW1wbC0+aXNBbGxMYXRpbjEoKTsgfQorICAgIHRlbXBsYXRlPGJvb2wg
aXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNTcGVjaWFsQ2hhcmFjdGVyPigpOyB9CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFs
dWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ry
b3llZC4KICAgICBTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1w
bChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkBAIC00ODQsNDAgKzM2MywxNiBAQCBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc2hvdygpIGNvbnN0OwogI2Vu
ZGlmCiAKLSAgICAvLyBXb3JrYXJvdW5kIGZvciBhIGNvbXBpbGVyIGJ1Zy4gVXNlIG9wZXJhdG9y
W10gaW5zdGVhZC4KLSAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07
Ci0gICAgfQotCiAgICAgLy8gVHVybnMgdGhpcyBTdHJpbmcgZW1wdHkgaWYgdGhlIFN0cmluZ0lt
cGwgaXMgbm90IHJlZmVyZW5jZWQgYnkgYW55b25lIGVsc2UuCiAgICAgLy8gVGhpcyBpcyB1c2Vm
dWwgZm9yIGNsZWFyaW5nIFN0cmluZy1iYXNlZCBjYWNoZXMuCi0gICAgdm9pZCBjbGVhckltcGxJ
Zk5vdFNoYXJlZCgpCi0gICAgewotICAgICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+aGFzT25l
UmVmKCkpCi0gICAgICAgICAgICBtX2ltcGwgPSBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAg
ICAgICAgICBtX2ltcGwtPmFzc2VydENhZ2VkKCk7Ci0gICAgfQorICAgIHZvaWQgY2xlYXJJbXBs
SWZOb3RTaGFyZWQoKTsKIAotICAgIHZvaWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwtPnJlbGVhc2VBc3Nl
cnRDYWdlZCgpOwotICAgIH0KKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CisgICAgdm9p
ZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IENo
YXJhY3RlclR5cGUqLCB1bnNpZ25lZCwgaW50KTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotICAgIHZvaWQgYXBwZW5kSW50ZXJuYWwoQ2hhcmFjdGVyVHlwZSk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRlcm5hbChj
b25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZEludGVybmFsKENoYXJhY3RlclR5cGUp
OwogCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKIH07CkBAIC01MzIsNyArMzg3LDYg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuIGVxdWFsKHJlaW50ZXJwcmUKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNp
dHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEo
KSwgYS5zaXplKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5l
Q2FwYWNpdHk+JiBiKSB7IHJldHVybiBiID09IGE7IH0KIAotCiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5p
bXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcm
IGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1
cm4gIWVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9
CkBAIC01NTAsNyArNDA0LDcgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwKIGlubGluZSBib29s
IGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiB0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxs
aXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEsIGIuaW1wbCgpKTsgfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHIpIHsgcmV0dXJuIHN0ci5pc051bGwo
KTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVy
biBzdHJpbmcuaXNOdWxsKCk7IH0KIAogaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmlu
ZyYgYikgeyBhLnN3YXAoYik7IH0KIApAQCAtNTYxLDgxICs0MTUsMTc2IEBAIE5TU3RyaW5nICog
bnNTdHJpbmdOaWxJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiAjZW5kaWYKIAorV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBw
ZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKTsK
KworLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCitXVEZfRVhQT1JUX1NUUklOR19BUEkg
Y29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7IHVz
aW5nIEhhc2ggPSBTdHJpbmdIYXNoOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRz
PFN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisKK2NsYXNzIEFTQ0lJTGl0
ZXJhbCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQorICAgIG9wZXJhdG9yIGNv
bnN0IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisKK3ByaXZhdGU6CisgICAgY29u
c3QgY2hhciogbV9jaGFyYWN0ZXJzOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvblRyYWl0PFN0cmluZz4geworICAgIHVzaW5nIFJldHVyblR5cGUgPSBT
dHJpbmc7CisgICAgdXNpbmcgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSA9IHZvaWQ7CisgICAgc3Rh
dGljIFN0cmluZyBmbHVzaChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB2b2lk
KikgeyByZXR1cm4geyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsgfQorfTsKKwogLy8gRGVmaW5pdGlv
bnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0lt
cGwmIGltcGwpCi0gICAgOiBtX2ltcGwoJmltcGwpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3Ry
aW5nSW1wbCYgc3RyaW5nKQorICAgIDogbV9pbXBsKCZzdHJpbmcpCiB7CiB9CiAKLWlubGluZSBT
dHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKQotICAgIDogbV9pbXBsKGltcGwpCitpbmxp
bmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9pbXBsKHN0cmlu
ZykKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxTdHJpbmdJbXBsPiYmIGltcGwp
Ci0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8
U3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewog
fQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW1wbCkKLSAg
ICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxT
dHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1wbChXVEZNb3ZlKHN0cmluZykpCiB7CiB9
CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8QXRvbWljU3RyaW5nSW1wbD4mJiBpbXBsKQot
ICAgIDogbV9pbXBsKFdURk1vdmUoaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmPEF0
b21pY1N0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9pbXBsKFdURk1vdmUoc3RyaW5nKSkK
IHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYm
IGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmlu
ZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92
ZShzdHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1w
bCYgaW1wbCkKLSAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigmaW1w
bCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYgc3RyaW5nKQorICAg
IDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpKQogewogfQog
Ci1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCogaW1wbCkKLSAgICA6IG1f
aW1wbChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPihpbXBsKSkKK2lubGluZSBTdHJpbmc6
OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX2ltcGwocmVpbnRlcnBy
ZXRfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSkKIHsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1TdHJpbmc6OlN0cmluZyhj
b25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0
b3IpCi0gICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0
b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPigqU3RyaW5nSW1wbDo6
ZW1wdHkoKSkpCit0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlcj4gU3RyaW5nOjpTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXpl
KCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBS
ZWY8U3RyaW5nSW1wbD4geyAqU3RyaW5nSW1wbDo6ZW1wdHkoKSB9KQogewogfQogCi10ZW1wbGF0
ZTw+Ci1pbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25z
dAordGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hh
cj4oKSBjb25zdAogewotICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3Rl
cnM4KCk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFy
YWN0ZXJzPFVDaGFyPigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3Ry
aW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpczhCaXQoKSk7
CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJpbmc6OmNv
bnRhaW5zT25seUxhdGluMSgpIGNvbnN0CitpbmxpbmUgVUNoYXIgU3RyaW5nOjpjaGFyYWN0ZXJB
dCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBt
X2ltcGwtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKCptX2ltcGwp
W2luZGV4XTsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdl
dCwgVUNoYXIgcmVwbGFjZW1lbnQpCiB7Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBs
YWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5l
IFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJl
cGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhpczsKK30K
KworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1f
aW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkp
OworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnQpCit7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNl
KHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50LmltcGwoKSk7CisgICAgcmV0dXJuICp0aGlzOwor
fQogCi0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKK3RlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBs
YWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hh
cmFjdGVyQ291bnRdKQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1w
bC0+cmVwbGFjZSh0YXJnZXQsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAg
cmV0dXJuICp0aGlzOworfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBjaGFyYWN0
ZXJzMTYoKTsKLSAgICBVQ2hhciBvcmVkID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faW1wbC0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwot
ICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOworaW5saW5lIFZlY3RvcjxTdHJpbmc+IFN0cmlu
Zzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3VsdDsKKyAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0
cmluZyYgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAg
ICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIFN0cmluZyBTdHJpbmc6
Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNp
dHk+JiBidWZmZXIpCit7CisgICAgcmV0dXJuIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorCitpbmxpbmUgVUNoYXJEaXJlY3Rpb24gU3Ry
aW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSkgY29uc3QKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgaWYgKGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkg
PSBmYWxzZTsKKyAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOworfQorCitpbmxpbmUgdm9pZCBT
dHJpbmc6OmNsZWFySW1wbElmTm90U2hhcmVkKCkKK3sKKyAgICBpZiAobV9pbXBsICYmIG1faW1w
bC0+aGFzT25lUmVmKCkpCisgICAgICAgIG1faW1wbCA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2
b2lkIFN0cmluZzo6YXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbC0+YXNzZXJ0Q2FnZWQoKTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nOjpyZWxl
YXNlQXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1w
bC0+cmVsZWFzZUFzc2VydENhZ2VkKCk7CiB9CiAKICNpZmRlZiBfX09CSkNfXwpAQCAtNjU2LDE5
ICs2MDUsNiBAQCBpbmxpbmUgTlNTdHJpbmcgKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAKICNlbmRpZgogCi1pbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25s
eUFTQ0lJKCkgY29uc3QKLXsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxB
U0NJSShjaGFyYWN0ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotfQot
Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7Ci0KIGlubGluZSBib29sIGNvZGVQb2ludENvbXBhcmVMZXNzVGhh
bihjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKIHsKICAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZShhLmltcGwoKSwgYi5pbXBsKCkpIDwgMDsKQEAgLTY5Nyw0OSArNjMzLDYgQEAg
aW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYgdmVjdG9yLCB1
bnNpZ25lZCBjaGFyIG51bWJlcikKICAgICB9CiB9CiAKLXRlbXBsYXRlPGJvb2wgaXNTcGVjaWFs
Q2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBib29sIGlz
QWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxh
dGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPgotaW5saW5lIGJvb2wgU3RyaW5nOjpp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKLXsKLSAgICBzaXplX3QgbGVuID0gbGVuZ3Ro
KCk7Ci0KLSAgICBpZiAoIWxlbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXM4
Qml0KCkpCi0gICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVj
aWFsQ2hhcmFjdGVyLCBMQ2hhcj4oY2hhcmFjdGVyczgoKSwgbGVuKTsKLSAgICByZXR1cm4gV1RG
Ojppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3RlciwgVUNoYXI+KGNoYXJh
Y3RlcnMxNigpLCBsZW4pOwotfQotCi0vLyBTdHJpbmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2gg
Zm9yIFN0cmluZwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7Ci0gICAgdHlwZWRlZiBTdHJpbmdI
YXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4g
OiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Ci0KLWNsYXNzIEFTQ0lJTGl0ZXJhbCB7Ci1w
dWJsaWM6Ci0gICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
IDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQotICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIq
KCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciog
bV9jaGFyYWN0ZXJzOwotfTsKLQotLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCi1XVEZf
RVhQT1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOwotCiBpbmxpbmUg
U3RyaW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykK
IHsKICAgICBpZiAoY2hhcmFjdGVycy5pc0VtcHR5KCkpCkBAIC03NjcsMzggKzY2MCwzMCBAQCB0
ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgUwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCi10ZW1w
bGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7Ci0g
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1l
bnRUeXBlID0gdm9pZDsKLSAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9
OyB9Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpDU3RyaW5nOwordXNp
bmcgV1RGOjpBU0NJSUxpdGVyYWw7CiB1c2luZyBXVEY6OktlZXBUcmFpbGluZ1plcm9zOwogdXNp
bmcgV1RGOjpTdHJpbmc7Ci11c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjphcHBl
bmROdW1iZXI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKLXVzaW5nIFdURjo6
Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3VibGU7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNU
b0Zsb2F0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NDsKIHVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50NjRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsK
LXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0OwogdXNpbmcgV1RGOjpjaGFyYWN0
ZXJzVG9JbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Ci11c2luZyBXVEY6OmNoYXJh
Y3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7CiB1c2luZyBXVEY6
OmNoYXJhY3RlcnNUb0ludFB0cjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwotdXNp
bmcgV1RGOjpjaGFyYWN0ZXJzVG9GbG9hdDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRy
U3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmNo
YXJhY3RlcnNUb1VJbnQ2NDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0Owor
dXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0OwordXNpbmcgV1RGOjplbXB0eVN0cmluZzsKIHVzaW5nIFdURjo6ZXF1YWw7CiB1c2lu
ZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM7CiB1c2luZyBX
VEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6OnJldmVyc2VGaW5kOwotdXNpbmcgV1RG
OjpBU0NJSUxpdGVyYWw7CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAppbmRl
eCAyNWEwZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlLi5iODEwOWQ3NjE5YTU0
MmJlMmQyOTZjZWQwYzI2YmYzNTVmMGNhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBV
Qm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdVRleHQsIGludDY0X3QgaW5kZXgsIFVCb29s
IGZvcndhcmQpCiAgICAgfQogICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQp
OwogCi0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+
Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQp
ICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih1VGV4dC0+
Y2h1bmtMZW5ndGgpKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhjb25zdF9jYXN0
PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7CiAKICAgICB1VGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRp
YyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3RhcnQs
IGludDY0X3QgbGltaXQsIFVDCiAgICAgICAgIGlmICh0cmltbWVkTGVuZ3RoID4gZGVzdENhcGFj
aXR5KQogICAgICAgICAgICAgdHJpbW1lZExlbmd0aCA9IGRlc3RDYXBhY2l0eTsKIAotICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1
VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyaW1tZWRMZW5n
dGgpKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdCwgc3RhdGljX2Nh
c3Q8Y29uc3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRyaW1tZWRMZW5ndGgpKTsKICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgZGVzdENh
cGFjaXR5KSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRl
eHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGkKICAg
ICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CiAgICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwogICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
LSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7Cisg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNo
dW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQt
PmNodW5rTGVuZ3RoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVT
d2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBp
bnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
aW5kZXggYjQ5N2FkYzc3YWQ4OTM0YWFmYTc1MzM1M2Y4ZGZiNDMxNDRkZmY0My4uYzkxNzFkYzJh
M2I0NjQyODQwOTQyZTllOTUxNDZmNTc5OTEwYTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
QEAgLTE3NCwxMSArMTc0LDYgQEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5
VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICByZXR1cm4g
cXVlcnlEaWN0aW9uYXJ5OwogfQogICAgIAotc3RhdGljIGJvb2wgaGFzQ2FzZUluc2Vuc2l0aXZl
UHJlZml4KGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFN0cmluZyYgcHJlZml4KQotewotICAg
IHJldHVybiBpbnB1dC5zdGFydHNXaXRoKHByZWZpeCwgZmFsc2UpOwotfQotICAgIAogc3RhdGlj
IGJvb2wgaXNZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBob3N0TmFt
ZSA9IHVybC5ob3N0KCk7CkBAIC0yNjQsNyArMjU5LDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5k
Q3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVk
VVIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChwYXRoLCAiL3YvIikgfHwgaGFzQ2FzZUlu
c2Vuc2l0aXZlUHJlZml4KHBhdGgsICIvZS8iKSkgeworICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKICAgICAgICAgU3RyaW5nIGxhc3RQ
YXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIFN0cmluZyB2
aWRlb0lEOwogICAgICAgICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCmluZGV4IDBlYTkwZjU4OWIyYWJjYTIyYTI5YmJmOGEyNTViOGU5N2U5ZTgwMjEuLjdl
YzI3ODYzODBkNmEwYTgzYjdjMzBlY2I0NjAzMjkxYjVhMjhjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CkBAIC01MjUsNyArNTI1LDcgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
SFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgaWYg
KChoZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRFeHRlbnNpb25zCiAg
ICAgICAgICAgICB8fCBoZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRB
Y2NlcHQKICAgICAgICAgICAgIHx8IGhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNlY1dl
YlNvY2tldFByb3RvY29sKQotICAgICAgICAgICAgJiYgIXZhbHVlLmNvbnRhaW5zT25seUFTQ0lJ
KCkpIHsKKyAgICAgICAgICAgICYmICF2YWx1ZS5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcobmFtZSwgIiBoZWFkZXIgdmFsdWUgc2hvdWxk
IG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzIik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKaW5kZXggMjk5MmEwOTIxZTUyMzY0MThjNzEyN2RkNjY1YjZkNzNhNTVhYjdi
Zi4uMWRmMWYwNTEyZjEyNjdkMGViMzBjZjJkY2JiMDdiZTJiMWM3MmY2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03Niw2ICs3Niw3
IEBACiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpAQCAtMTYx
NSwxNCArMTYxNiwxNCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VU
b09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlLCBuZXcgbGluZSwgdGFnIG5vZGUuCiAgICAg
ICAgICAgICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
U3BhY2VPck5ld2xpbmUoaXRlcmF0b3IudGV4dCgpWzBdKSkgeworICAgICAgICAgICAgICAgIGlm
IChpc0hUTUxTcGFjZShpdGVyYXRvci50ZXh0KClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBub2RlIGhhcyBCUiB0YWcsIHdlIHdhbnQgdG8gc2V0IHRoZSBjdXJyZW50Tm9k
ZSB0byBpdC4KICAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9yLnJh
bmdlKCktPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9k
ZSA9IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5y
ZW5kZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2Rl
ID0gY2hpbGROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JC
UiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoRWxlbWVudCAqc2hhZG93
SG9zdCA9IGN1cnJlbnROb2RlLT5zaGFkb3dIb3N0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gY3VycmVudE5vZGUtPnNoYWRvd0hvc3QoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGVudGVyaW5nIHRleHQg
Y29udHJvbHMsIHdlIHNob3VsZCBzZXQgdGhlIGN1cnJlbnROb2RlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB0byBiZSB0aGUgc2hhZG93IGhvc3Qgd2hlbiB0aGVyZSdzIG5vIGNvbnRlbnQu
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZUlzVGV4dENvbnRyb2woc2hhZG93SG9z
dCkgJiYgY3VycmVudE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCmluZGV4IDZlMzAxYjBjMjVj
MzljM2EzNGI3OWYxOGUzNzhiNTUzNmQ2MjIxMWMuLmQ1ZGI5ZTI0NWQwZGQ0MDUwYzRhZjhlOWM2
NmJhNmM4OTRjOTE5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJzKFJlbmRlck9iamVj
dCogbGlzdEkKICAgICAvLyB0aG9zZSByZW5kZXJlcnMgYXMgImlnbm9yZWQiIG9iamVjdHMuCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0ZXh0ID0gYXhPYmotPnRleHRVbmRlckVsZW1l
bnQoKTsKLSAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKTsKKyAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA1N2QwZWFjNzM1MzYwZDc1YzIxM2U4YmU1NWUx
ZTU5MGFkOTljZGNmLi5lOTRhYTk0NmRjZjczNTQ3MjgwZjkzYzQ5MTI3ZTEyZWQ3NTUxMjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcApAQCAtNDgxLDEyICs0ODEsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNTZWFyY2hGaWVsZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayB0aGUgbm9k
ZSBuYW1lIG9mIHRoZSBpbnB1dCB0eXBlLCBzb21ldGltZXMgaXQncyAic2VhcmNoIi4KICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwotICAgIGlmIChuYW1lQXR0cmlidXRlLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpCisgICAg
aWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGhlIGZvcm0gYWN0aW9uIGFuZCB0
aGUgbmFtZSwgd2hpY2ggd2lsbCBzb21ldGltZXMgYmUgInNlYXJjaCIuCiAgICAgYXV0byogZm9y
bSA9IGlucHV0RWxlbWVudC5mb3JtKCk7Ci0gICAgaWYgKGZvcm0gJiYgKGZvcm0tPm5hbWUoKS5j
b250YWlucygic2VhcmNoIiwgZmFsc2UpIHx8IGZvcm0tPmFjdGlvbigpLmNvbnRhaW5zKCJzZWFy
Y2giLCBmYWxzZSkpKQorICAgIGlmIChmb3JtICYmIChmb3JtLT5uYW1lKCkuY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikgfHwgZm9ybS0+YWN0aW9uKCkuY29udGFpbnNJZ25vcmlu
Z0FTQ0lJQ2FzZSgic2VhcmNoIikpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCmluZGV4IDI5MTkxNDIwNzc3N2M1OWU0ODkyZTA0NTE2NTY0YjMxZjU2
NjQ5MDIuLmJkNGViODE5OTkyZTExODhjMjYwZjg0ZTJmMzBiODg2MTJkN2I1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cApAQCAtMjg5LDkgKzI4OSw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJp
bGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcqIHRleHQpIGNvbnN0CiAgICAgLy8gSWYgdGV4
dCBpcyBudWxsIG9yIGVtcHR5IHdlIHJldHVybiB0cnVlLgogICAgIHJldHVybiAhdGV4dAogICAg
ICAgICB8fCB0ZXh0LT5pc0VtcHR5KCkKLSAgICAgICAgfHwgdGl0bGUoKS5jb250YWlucygqdGV4
dCwgZmFsc2UpCi0gICAgICAgIHx8IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5z
KCp0ZXh0LCBmYWxzZSkKLSAgICAgICAgfHwgc3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwg
ZmFsc2UpOworICAgICAgICB8fCBmaW5kUGxhaW5UZXh0KHRpdGxlKCksICp0ZXh0LCBDYXNlSW5z
ZW5zaXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQoYWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCksICp0ZXh0LCBDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQo
c3RyaW5nVmFsdWUoKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAKIC8vIEFSSUEgbWFy
a3MgZWxlbWVudHMgYXMgaGF2aW5nIHRoZWlyIGFjY2Vzc2libGUgbmFtZSBkZXJpdmUgZnJvbSBl
aXRoZXIgdGhlaXIgY29udGVudHMsIG9yIHRoZWlyIGF1dGhvciBwcm92aWRlIG5hbWUuCkBAIC04
MzgsOCArODM4LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNj
ZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEKICAgICAgICAgaWYgKGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNsb3Nlc3RTdHJpbmdSYW5nZS5nZXQoKSwg
RE9XTlNUUkVBTSwgdHJ1ZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKICAg
ICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENh
cGl0YWxpemU6Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjbG9zZXN0U3Ry
aW5nOwotICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcs
IDApOworICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gY2FwaXRhbGl6ZShjbG9z
ZXN0U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBhY2Nv
dW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24g
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kVXBwZXJjYXNlOgpAQCAtODU2LDcgKzg1
NSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEFjY2Vzc2liaWxp
dHlTZWxlY3RUZXh0Q3JpdGVyaWEqIGNyaXRlcmlhCiAgICAgICAgICAgICAgICAgLy8gKHVubGVz
cyB3ZSdyZSByZXBsYWNpbmcgd2l0aCBhbiBhYmJyZXZpYXRpb24uKQogICAgICAgICAgICAgICAg
IGlmIChjbG9zZXN0U3RyaW5nLmxlbmd0aCgpID4gMCAmJiByZXBsYWNlbWVudFN0cmluZy5sZW5n
dGgoKSA+IDIgJiYgcmVwbGFjZW1lbnRTdHJpbmcgIT0gcmVwbGFjZW1lbnRTdHJpbmcuY29udmVy
dFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChj
bG9zZXN0U3RyaW5nWzBdID09IHVfdG91cHBlcihjbG9zZXN0U3RyaW5nWzBdKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFsaXplKHJl
cGxhY2VtZW50U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50
byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50U3Ry
aW5nLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5lZWRzIGxv
Y2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAppbmRleCAxMTNmZmY1YzIzYTUxNWYyYzk2Nzc5NGE4N2ZiZTFmMjIzM2IzOWZjLi42ZGI5
Zjc3MTE1NmNjZTkxYzI5NTBhYzJjOTg3YWEyODRhMGI0NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdAogc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoY29uc3QgU3RyaW5nJiBhbHRUZXh0
KQogewogICAgIC8vIERvbid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgot
ICAgIGlmICghYWx0VGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKCFhbHRU
ZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogICAgIAogICAg
IC8vIFRoZSBpbmZvcm1hbCBzdGFuZGFyZCBpcyB0byBpZ25vcmUgaW1hZ2VzIHdpdGggemVyby1s
ZW5ndGggYWx0IHN0cmluZ3MuCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIHRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBlbXB0eSB3
aGl0ZXNwYWNlIHNob3VsZCBub3QgYmUgcmV0dXJuZWQKLSAgICAgICAgcmV0dXJuIHJlbmRlclRl
eHQudGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZW5k
ZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAg
IH0KICAgICAKICAgICBpZiAoaXNIZWFkaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCmluZGV4IDY5ZGQ0YmY4MjA0YTE5OTU3
ZjhjOGE3MWNhMDk2ZTBkNmMxMGNmMzAuLmI1NDM4ZjdlMWUwYTU1YWE5ZjA0ZTIwNzYyMWQ3NDFi
MzQ2YmZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1RvQnl0ZVN0cmluZyhFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFz
dHJpbmcuY29udGFpbnNPbmx5TGF0aW4xKCkpIHsKKyAgICBpZiAoIXN0cmluZy5pc0FsbExhdGlu
MSgpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMzdjMmNhOGY5OTU2
MWRlM2U4MDA4ZDQ3NjBkMTAxM2Q2OWZmZjMxNS4uMTY2MTRjNWNiZjQ2MDUxZmU3NDBlZTI1ZmRj
MWYzYzgzMWFkMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTUxLDkgKzUxLDggQEAg
bmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKICAgICAKIHN0YXRpYyBib29sIGNvbnRhaW5z
T25seUFTQ0lJV2l0aE5vVXBwZXJjYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkb21haW4ubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBV
Q2hhciBjID0gZG9tYWluLmF0KGkpOwotICAgICAgICBpZiAoIWlzQVNDSUkoYykgfHwgaXNBU0NJ
SVVwcGVyKGMpKQorICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBTdHJpbmdWaWV3IHsgZG9tYWlu
IH0uY29kZVVuaXRzKCkpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgaXNB
U0NJSVVwcGVyKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMzA3MjEwMWYz
ZmEwMWNkMWNmODJiZTdjODlhYWYyMTI4MTZlNTIxNi4uYzBkYjFiMTJkYTczYWMwYzUyNzk3M2Qw
MWI1OTNhZTA2NzhmOTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIHN0ZDo6cGFpcjxWZWN0b3I8QWN0aW9uPiwgVmVjdG9yPFN0cmluZz4+IENvbnRlbnRF
eHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHJlc291cmNlTG9hZEluZm8ucmVzb3VyY2VVUkwu
c3RyaW5nKCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh1cmxTdHJpbmcuY29udGFpbnNPbmx5
QVNDSUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0
ZXJzLiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVj
b2RlZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hp
bmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwogICAgIGNvbnN0IENT
dHJpbmcmIHVybENTdHJpbmcgPSB1cmxTdHJpbmcudXRmOCgpOwogCiAgICAgVmVjdG9yPEFjdGlv
bj4gZmluYWxBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggMjJkZmMxM2E4NDZmNDZhODJiZmY2YzA0Nzg3
NDk0NWVlZjNkZTk3Ny4uZTM1MWUxN2Q5ZWE3NjRiNDY4ZGRmZjY1M2E4ZWQwNmM1MTI1ZWE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgVVJMRmlsdGVyUGFyc2VyOjp+VVJMRmlsdGVy
UGFyc2VyKCkgPSBkZWZhdWx0OwogCiBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZp
bHRlclBhcnNlcjo6YWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVy
bklzQ2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewotICAgIGlmICghcGF0dGVy
bi5jb250YWluc09ubHlBU0NJSSgpKQorICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAg
ICAgICAgIHJldHVybiBOb25BU0NJSTsKICAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFbXB0eVBhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5jcHAKaW5kZXggNjM1NzJjNTE1YmVhNjY1ZjU2Mjc0MTI1YmZmODNjYmE4MjRjMTYx
ZC4uOGFjZDlhZjFiMDFmMDBiYTBhMDIzZTdjMzQzOTA0NDA3ZDE4MTRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29s
IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmlzU3VwcG9ydGVkRm9ybWF0KCkgY29uc3QKICAgICAvLyB3
ZSB3aWxsIGFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBVUkwgZW5kcyB3aXRoIC5lb3QuIElmIHNv
LCB3ZSdsbCBhc3N1bWUgdGhhdCB3ZSBzaG91bGRuJ3QgbG9hZCBpdC4KICAgICBpZiAobV9mb3Jt
YXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENoZWNrIGZvciAuZW90LgotICAgICAgICBpZiAo
IW1fcmVzb3VyY2Uuc3RhcnRzV2l0aCgiZGF0YToiLCBmYWxzZSkgJiYgbV9yZXNvdXJjZS5lbmRz
V2l0aCgiLmVvdCIsIGZhbHNlKSkKKyAgICAgICAgaWYgKCFwcm90b2NvbElzKG1fcmVzb3VyY2Us
ICJkYXRhIikgJiYgbV9yZXNvdXJjZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuZW90Iikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKaW5kZXggYzZhYTc4NmVkODIwMjMz
MWM4OTAwYzFmY2RkNmM3NmE1MjAwNmE4OS4uOTEzNTIzNzc2OTY1OTQyZjJmNTA4NjIzZjY1Njcw
YThhMGFhZTBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHZhbHVlV2l0
aG91dEltcG9ydGFudChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghdmFsdWUuZW5k
c1dpdGgoImltcG9ydGFudCIsIGZhbHNlKSkKKyAgICBpZiAoIXZhbHVlLmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoImltcG9ydGFudCIpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBT
dHJpbmcgbmV3VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYzE2Nzg3OWJkOTE0MGMwMTRiZjZlYmYzOGFmMTI5
N2RiZWJiMTIwMS4uOTljZWVkNDg0Mjc5MDc5M2U2NGZhMmFjNDM1MzQzYmYxNmY0ZGI2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAg
LTMyNTQsNyArMzI1NCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUdyaWRUZW1wbGF0
ZUFyZWFzQ29sdW1uTmFtZXMoY29uc3QgU3RyaW5nJiBncmlkUm93TmFtCiAKIHN0YXRpYyBib29s
IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMsIE5h
bWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBjb25zdCBzaXplX3Qgcm93Q291bnQsIHNpemVf
dCYgY29sdW1uQ291bnQpCiB7Ci0gICAgaWYgKGdyaWRSb3dOYW1lcy5pc0VtcHR5KCkgfHwgZ3Jp
ZFJvd05hbWVzLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICBpZiAoZ3JpZFJvd05hbWVz
LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDU1NTcGFjZT4oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uTmFtZXMgPSBwYXJzZUdyaWRUZW1wbGF0
ZUFyZWFzQ29sdW1uTmFtZXMoZ3JpZFJvd05hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcAppbmRleCBlNmVlMmFjMjRmMWQ1MzkxMGYxYjI4NTZlOGE4ZTA1ODlhN2U0YzhlLi5j
M2Y0YjA5ZmYyMWRhZjQxMDVjMGI3NzYxYTRmYjcyNjk5MjJjN2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCkBAIC0xNzQsMTEgKzE3NCw2IEBAIFN0cmluZyBDaGFyYWN0ZXJE
YXRhOjpub2RlVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLWJvb2wgQ2hh
cmFjdGVyRGF0YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZGF0YS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+
IENoYXJhY3RlckRhdGE6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIHsK
ICAgICBzZXREYXRhKG5vZGVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRl
eCBlNGFkMjIxZWQwZmZlMWEzZmUyZDJjNTM0MmExNDZmNGMzZDZiNGEyLi4xYmIxYmJlZGRiMTVl
ZmEzM2FkNGRjZGZjMGI3MGI3NzU5ZWQ5Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0zOSw4ICszOSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25Pcjx2b2lkPiBkZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291
bnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VEYXRhKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9v
bCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29uc3Q7Ci0KICAgICAvLyBMaWtlIGFwcGVuZERh
dGEsIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBwYXJzZXIgKGUuZy4sIG5vIG11dGF0aW9uIGV2ZW50
cykuCiAgICAgLy8gUmV0dXJucyBob3cgbXVjaCBjb3VsZCBiZSBhZGRlZCBiZWZvcmUgbGVuZ3Ro
IGxpbWl0IHdhcyBtZXQuCiAgICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGVmYTFlOWE3NzgyZTVmMWQxZjEyZGZhN2Zk
YjZlNjk3NTI3OTliNGYuLjZmMzMzMjY0MWQzODYyN2NlN2Q3ZWRiZTRmNWFjYzQxMzc3N2M1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBz
dGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICBy
ZXR1cm4gdHlwZTsKIAogICAgIFN0cmluZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAg
aWYgKGxvd2VyY2FzZVR5cGUgPT0gInRleHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCJ0ZXh0L3BsYWluOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlID09
ICJ0ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxhaW47IikpCiAgICAg
ICAgIHJldHVybiAidGV4dC9wbGFpbiI7Ci0gICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIg
fHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInRleHQvdXJpLWxp
c3Q7IikpCisgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5z
dGFydHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxp
c3QiOwotICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
dGV4dC9odG1sOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvaHRt
bDsiKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgcmV0dXJuIGxvd2VyY2Fz
ZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAwYzZiYzI1ZjRmYTRmZjE0YzI4NTJj
YzVmY2Q2Y2RlOGQ3OGJlZmY4Li44OWE1MDZmZjUwMTdhMzZmZThhZTY5ODExYjUxNWQ0ZTRjNWJi
ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNp
bmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgpAQCAtMTE0MSwxMSArMTE0MiwxMSBAQCBQb3NpdGlv
biBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHks
IGJvb2wgY29uc2lkZXJObwogCiAgICAgUG9zaXRpb24gcHJldiA9IHByZXZpb3VzQ2hhcmFjdGVy
UG9zaXRpb24oYWZmaW5pdHkpOwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xv
c2luZ0Jsb2NrRmxvd0VsZW1lbnQoZGVwcmVjYXRlZE5vZGUoKSwgcHJldi5kZXByZWNhdGVkTm9k
ZSgpKSAmJiBpczxUZXh0PigqcHJldi5kZXByZWNhdGVkTm9kZSgpKSkgewotICAgICAgICBTdHJp
bmcgc3RyaW5nID0gZG93bmNhc3Q8VGV4dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkuZGF0YSgp
OwotICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KV07Ci0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1Nw
YWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxh
cHNpYmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgVUNoYXIgYyA9IGRvd25jYXN0PFRleHQ+KCpw
cmV2LmRlcHJlY2F0ZWROb2RlKCkpLmRhdGEoKVtwcmV2LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCldOworICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNI
VE1MU3BhY2UoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIDogZGVwcmVjYXRlZElzQ29sbGFwc2li
bGVXaGl0ZXNwYWNlKGMpKSB7CiAgICAgICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBy
ZXYpKQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OworICAgICAgICB9CiAgICAgfQogCiAg
ICAgcmV0dXJuIHsgfTsKQEAgLTExNjIsNyArMTE2Myw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0
cmFpbGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xs
YXBzCiAgICAgVUNoYXIgYyA9IHYuY2hhcmFjdGVyQWZ0ZXIoKTsKICAgICAvLyBUaGUgc3BhY2Ug
bXVzdCBub3QgYmUgaW4gYW5vdGhlciBwYXJhZ3JhcGggYW5kIGl0IG11c3QgYmUgZWRpdGFibGUu
CiAgICAgaWYgKCFpc0VuZE9mUGFyYWdyYXBoKHYpICYmIHYubmV4dChDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSkuaXNOb3ROdWxsKCkpCi0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNp
YmxlV2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNl
KSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgaWYgKGNv
bnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzSFRNTFNwYWNlKGMpIHx8IGMgPT0g
bm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKICAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IGJhMDZmNzljYjBkM2U0MTgyNDkwYzA4NjczODgyZTVjZTI1
ZWE0MjkuLjhhOTk3ZTRkOWM2MWY0NDRlNjlkNDFiYmZlOWQ3MzNkMTU0MDNkMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM1NTksNyArMzU1OSw3IEBAIHZvaWQgRWRpdG9yOjpl
ZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQoKQogICAgICAgICAgICAgVUNoYXIzMiBjID0gbmV3U3Rh
cnQuY2hhcmFjdGVyQmVmb3JlKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0
aW9uOjpjaGFyYWN0ZXJBZnRlcigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBu
ZXdsaW5lcyB0aGUgc2FtZQogICAgICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRvciwgc28g
d2UgZG8gYW4gaXNTdGFydE9mUGFyYWdyYXBoIGNoZWNrIGhlcmUuCi0gICAgICAgICAgICBpZiAo
aXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5l
d1N0YXJ0KSkgeworICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBu
b0JyZWFrU3BhY2UgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0YXJ0KSkgewogICAgICAgICAg
ICAgICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBuZXdBZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFy
dE9mV29yZChuZXdTdGFydCwgc3RhcnRXb3JkU2lkZSksIGVuZE9mV29yZChuZXdTdGFydCwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGIyMDczYWM0YzU3OTczMTE2ZTJkMDYwZjgyOGIxOWFhNTFhZjZkMGUuLmYz
NmUwNWVhZGU3MjRiYmZjN2RhOTYwMWUyZWYwOWJlZGEzM2QwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wg
c2VsZWN0ZWQpIGNvbnN0CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0
ZWQgPyAiPT0+ICIgOiAiICAgICIsIGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAg
ICAgICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpy
ZW5kZXJlcik7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSB8fCAhdGV4
dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CisgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4
dCgpLmlzRW1wdHkoKSB8fCAhdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzI3RleHQgKGVtcHR5KVxuIiwgc2VsZWN0ZWQgPyAiPT0+
ICIgOiAiICAgICIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjQxLDcg
KzI2NDEsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNv
bnN0CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7CiAg
ICAgICAgIGlmIChjKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMp
IHx8IGMgPT0gMHhBMCB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYm
IGMgIT0gJ1wnJyk7CisgICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gbm9CcmVha1NwYWNlIHx8ICh1X2lzcHVuY3QoYykgJiYgYyAhPSAnLCcgJiYgYyAhPSAn
LScgJiYgYyAhPSAnXCcnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjY4Niw3ICsyNjg2LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29y
ZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKIAogICAgIGlmIChp
c0VuZE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKSB7CiAgICAgICAg
IFVDaGFyIGMoZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbi5jaGFyYWN0ZXJCZWZvcmUoKSk7
Ci0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAg
ICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAg
ICAgICAgLy8gRW5kIG9mIHBhcmFncmFwaCB3aXRoIHNwYWNlLgogICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjcyOSw3ICsyNzI5LDcgQEAgVmlz
aWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9u
KCk7CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigp
KTsKLSAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAg
ICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAg
ICAgICAgICAvLyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjc0NCw3ICsyNzQ0LDcgQEAgVmlzaWJsZVNl
bGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVj
dGlvbihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAg
ICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAg
ICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgIGlm
IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAg
ICAvLyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxl
Y3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgVmlzaWJsZVNlbGVjdGlv
biBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihj
b25zdCBWaXMKICAgICB3aGlsZSAoZW5kVmlzaWJsZVBvcyAhPSBzdGFydFZpc2libGVQb3MpIHsK
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzKGVuZFZpc2libGVQb3MucHJldmlvdXMo
KSk7CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAg
IGlmICghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNT
cGFjZU9yTmV3bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBlbmRWaXNpYmxlUG9zID0gcHJldmlvdXM7CiAgICAgfQpAQCAtMjgwMiw3ICsy
ODAyLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0
YXJ0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbCkKICAgICAgICAgfQogICAgICAgICBVQ2hh
ciBjKHBvcy5jaGFyYWN0ZXJBZnRlcigpKTsKICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAg
IGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgaWYg
KGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAg
ICAgICBzYXdTcGFjZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1YzlmMzYwNTc3NzFm
NGU2MmRmYmYwYWFlNzExMGFiOGY5MmIwZjZjLi4zYWYxYWNmYjMxYWY1MTc1ZWRjNWEyMjkzNzNl
NzI4YWI1ZGViOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJv
c2t1cnlha292LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB1
bnNpZ25lZCB0ZXh0Tm9kZU9mZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5S
YW5nZSkKICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gMDsKICAgICBmb3IgKHJlbmRlcmVyID0g
cmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJl
ci0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRl
cmVyKSkKLSAgICAgICAgICAgIHRleHRPZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVu
ZGVyZXIpLT50ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0
PFJlbmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dCgpLmxlbmd0aCgpOwogICAgIH0KICAgICByZXR1
cm4gdGV4dE9mZnNldDsKIH0KQEAgLTY0MCw3ICs2NDAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICBib29sIGlzTmV3VGV4dE5vZGUgPSBtX3ByZXZpb3Vz
U2ltcGxlVGV4dE5vZGVJbkZsb3cgJiYgbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICE9
ICZ0ZXh0Tm9kZTsKICAgICAgICAgLy8gU2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBwb3NpdGlvbnMg
YXJlIGFsbCBhYnNvbHV0ZSB0byB0aGUgcGFyZW50IGZsb3cuCiAgICAgICAgIC8vIE9mZnNldHRp
bmcgaXMgcmVxdWlyZWQgd2hlbiBtdWx0aXBsZSByZW5kZXJlcnMgYXJlIHByZXNlbnQuCi0gICAg
ICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ICs9IGlzTmV3VGV4dE5vZGUg
PyBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3ctPnJlbmRlcmVyKCktPnRleHQoKS0+bGVu
Z3RoKCkgOiAwOworICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyAr
PSBpc05ld1RleHROb2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJl
cigpLT50ZXh0KCkubGVuZ3RoKCkgOiAwOwogICAgICAgICBtX3ByZXZpb3VzU2ltcGxlVGV4dE5v
ZGVJbkZsb3cgPSAmdGV4dE5vZGU7CiAKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAo
bV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9m
ZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRFbWl0RXh0cmFOZXdsaW5lRm9yTm9kZShOb2RlJiBub2RlKQogCiBzdGF0
aWMgaW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4
dEVuZCkKIHsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKnJlbmRlcmVyLnRleHQoKTsKKyAgICBT
dHJpbmdJbXBsJiB0ZXh0ID0gcmVuZGVyZXIudGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRleHQubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gdGV4dEVuZDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hp
dGVTcGFjZSh0ZXh0W2ldKSkKQEAgLTI3NjMsNCArMjc2MywyMCBAQCBSZWY8UmFuZ2U+IGZpbmRQ
bGFpblRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgbwogICAgIHJldHVybiByYW5nZUZvck1hdGNoKHJhbmdlLCBvcHRpb25zLCBtYXRjaFN0
YXJ0LCBtYXRjaExlbmd0aCwgc2VhcmNoRm9yd2FyZCk7CiB9CiAKK2Jvb2wgZmluZFBsYWluVGV4
dChjb25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlv
bnMgb3B0aW9ucykKK3sKKyAgICBTZWFyY2hCdWZmZXIgYnVmZmVyIHsgdGFyZ2V0LCBvcHRpb25z
IH07CisgICAgU3RyaW5nVmlldyByZW1haW5pbmdUZXh0IHsgZG9jdW1lbnQgfTsKKyAgICB3aGls
ZSAoIXJlbWFpbmluZ1RleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBjaGFyYWN0ZXJz
QXBwZW5kZWQgPSBidWZmZXIuYXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgcmVtYWluaW5nVGV4
dCA9IHJlbWFpbmluZ1RleHQuc3Vic3RyaW5nKGNoYXJhY3RlcnNBcHBlbmRlZCk7CisgICAgICAg
IGlmIChyZW1haW5pbmdUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFjaGVk
QnJlYWsoKTsKKyAgICAgICAgc2l6ZV90IG1hdGNoU3RhcnRPZmZzZXQ7CisgICAgICAgIGlmIChi
dWZmZXIuc2VhcmNoKG1hdGNoU3RhcnRPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKaW5kZXggMjNjMGI1ZWM3NWIzNzA2M2FmYzIxY2I4M2RlYWQzYmI1YTc4MGIw
ZC4uODYwZTc0Y2Y2YTUyMTE5ZmQ4NGY2ZDFjMjZjMTgyOTNhODMzMTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRl
eHQ7CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CisKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5
b3V0IHsKIGNsYXNzIFJ1blJlc29sdmVyOwogfQpAQCAtNDcsNiArNDgsNyBAQCBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFJhbmdlKiwg
VGV4dEl0ZXJhdG9yQgogUmVmPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29u
c3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwogV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBmaW5k
Q2xvc2VzdFBsYWluVGV4dChjb25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBS
YW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9y
KTsKK2Jvb2wgZmluZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucyk7IC8vIExldHMgdXMgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9u
IGEgc3RyaW5nLgogCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBl
ZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJl
clJlcGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwCmluZGV4IDk2MjBiZmI3MTI3MGNjZGMzNjM1YWRmZGRhZmVmMzIxYTYw
ODk0MGYuLmZkNzkwNjZmYmZhZTQ2YjhhYzkyMmVkMzZkY2IyMzBkNmZmZTkyYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21t
YW5kIGNvbW1hbmRUeXBlKQogICAgICAgICBVQ2hhcjMyIGMgPSBwcmV2aW91cy5jaGFyYWN0ZXJB
ZnRlcigpOwogICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRl
cigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQog
ICAgICAgICAvLyB3YXkgYXMgVGV4dEl0ZXJhdG9yLCBzbyB3ZSBkbyBhbiBpc0VuZE9mUGFyYWdy
YXBoIGNoZWNrIGhlcmUuCi0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0g
MHhBMCB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZpb3VzKSkgeworICAgICAgICBpZiAoaXNTcGFj
ZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHBy
ZXZpb3VzKSkgewogICAgICAgICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3Vu
ZGFyeTsKICAgICAgICAgfQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29y
ZChwcmV2aW91cywgc3RhcnRXb3JkU2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKaW5kZXggNmFiY2Q0Zjk0Y2U1YmFhOWJiYjI2ZjQzNWM4M2E0ZjQyYmRiNzQ3Yy4u
Y2MxN2RkNjNlZmNkMDY3MzdhNjBkZTgwOTYzZGMxNDMzNzg2NjFhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgTm9kZSogZmlu
ZFN0YXJ0T2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBoaWdoZXN0Um9vdCwgTm9k
ZSogc3RhcnRCbG9jaywKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUo
KSkgewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8UmVuZGVy
VGV4dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQgaSA9IHRl
eHQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgaWYgKG4gPT0gc3RhcnROb2RlICYmIG8gPCBpKQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAg
Tm9kZSogZmluZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJv
b3QsIE5vZGUqIHN0YXlJbnNpZGVCbG8KICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2
ZU5ld2xpbmUoKSkgewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0
ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBp
bnQgbyA9IG4gPT0gc3RhcnROb2RlID8gb2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICBpbnQg
bGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbzsg
aSA8IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggMzBhZDZkYmI2NDdjOTg2MzJiOWY5MTA0YWU3ZjdjZDcwOWU0ZGNl
ZS4uNmIxMzk3ZWJmNzM3YzFlZjE3NDkwNDhmZTIxNzY4NTBkNDI2NTk5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjIyNCw3ICsyMjI0
LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdGVyRGF0YSYgY2hh
cmFjdGVyRGF0YSkKICAgICBib29sIHdhc1NwYWNlID0gZmFsc2U7CiAgICAgaWYgKF9jYWNoZXMt
PnByb3BlcnR5VmFsdWVGb3JOb2RlKGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSkuc3RhcnRzV2l0aCgicHJlIikpIHsKICAgICAgICAgaWYgKHRleHRMZW5ndGggJiYgb3JpZ2lu
YWxTdHJpbmcubGVuZ3RoKCkgJiYgX2ZsYWdzLmlzU29mdCkgewotICAgICAgICAgICAgdW5pY2hh
ciBjID0gb3JpZ2luYWxTdHJpbmcuYXQoMCk7CisgICAgICAgICAgICB1bmljaGFyIGMgPSBvcmln
aW5hbFN0cmluZy5jaGFyYWN0ZXJBdCgwKTsKICAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwg
YyA9PSAnXHInIHx8IGMgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBO
U0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0Zvcm1GZWVkQ2hhcmFjdGVyIHx8IGMg
PT0gV2ViTmV4dExpbmVDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgcmFuZ2VUb1JlcGxhY2Ug
PSBOU01ha2VSYW5nZSh0ZXh0TGVuZ3RoIC0gMSwgMSk7CiAgICAgICAgIH0KQEAgLTIyMzQsNyAr
MjIzNCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEm
IGNoYXJhY3RlckRhdGEpCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAg
TENoYXIgbm9CcmVha1NwYWNlUmVwcmVzZW50YXRpb24gPSAwOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdp
bmFsU3RyaW5nLmF0KGkpOworICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmNo
YXJhY3RlckF0KGkpOwogICAgICAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UgPSBjID09ICcgJyB8
fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0JyB8fCBjID09IDB4YyB8fCBjID09
IDB4MjAwYjsKICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UpCiAgICAgICAgICAgICAgICAg
d2FzU3BhY2UgPSAoIXdhc0xlYWRpbmcgfHwgIXN1cHByZXNzTGVhZGluZ1NwYWNlKTsKQEAgLTIy
NjAsNyArMjI2MCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3Rl
ckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgaWYgKG91dHB1dFN0cmluZy5sZW5ndGgoKSkgewog
ICAgICAgICBTdHJpbmcgdGV4dFRyYW5zZm9ybSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JO
b2RlKGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSk7CiAgICAgICAgIGlm
ICh0ZXh0VHJhbnNmb3JtID09ICJjYXBpdGFsaXplIikKLSAgICAgICAgICAgIG1ha2VDYXBpdGFs
aXplZCgmb3V0cHV0U3RyaW5nLCAwKTsgLy8gRklYTUU6IE5lZWRzIHRvIHRha2UgbG9jYWxlIGlu
dG8gYWNjb3VudCB0byB3b3JrIGNvcnJlY3RseS4KKyAgICAgICAgICAgIG91dHB1dFN0cmluZyA9
IGNhcGl0YWxpemUob3V0cHV0U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBs
b2NhbGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICBlbHNlIGlmICh0
ZXh0VHJhbnNmb3JtID09ICJ1cHBlcmNhc2UiKQogICAgICAgICAgICAgb3V0cHV0U3RyaW5nID0g
b3V0cHV0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6
IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxzZSBpZiAodGV4dFRy
YW5zZm9ybSA9PSAibG93ZXJjYXNlIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggZWIyODY2NmU4NTMzODlkNmI2
Y2E1NjFlNzE0N2M1NTNhM2UyMTJiYy4uNmEzZmU0NjA2ZDY2MGQ3MjE3ODliMmEzNmEwNjk2ODhj
YmQ3MGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgU3RyaW5nIHN0
cmlwTWljcm9zb2Z0UHJlZml4KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8vIEl0J3MgYSBz
aW1wbGUtbWluZGVkIHdheSB0byBpZ25vcmUgdGhlIENGX0hUTUwgY2xpcGJvYXJkIGZvcm1hdCwg
anVzdCBza2lwcGluZyBvdmVyIHRoZQogICAgIC8vIGRlc2NyaXB0aW9uIHBhcnQgYW5kIHBhcnNp
bmcgdGhlIGVudGlyZSBjb250ZXh0IHBsdXMgZnJhZ21lbnQuCiAgICAgaWYgKHN0cmluZy5zdGFy
dHNXaXRoKCJWZXJzaW9uOiIpKSB7Ci0gICAgICAgIHNpemVfdCBsb2NhdGlvbiA9IHN0cmluZy5m
aW5kSWdub3JpbmdDYXNlKCI8aHRtbCIpOworICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJp
bmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKCI8aHRtbCIpOwogICAgICAgICBpZiAobG9jYXRpb24g
IT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlv
bik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCBlMzEzNDE5ODQ4MGVkYmZm
MTg5OGNiMTY2OWRiZmIyZjViYzI4ODAzLi4yZjFkZTliY2VjZWY1MjBjYTExZTgwZDM2MzhmNzAw
MWM3Yjg2M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBA
IEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgLy8gMTcuIElmIHRoZSBmaXJzdCBlaWdodCBj
aGFyYWN0ZXJzIG9mIHRoZSBpbmRleHRoIHRva2VuIGluIHRva2VucyBhcmUgbm90IGFuIEFTQ0lJ
IGNhc2UtaW5zZW5zaXRpdmUKICAgICAvLyBtYXRjaCBmb3IgdGhlIHN0cmluZyAic2VjdGlvbi0i
LCB0aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgogICAgIGNvbnN0IGF1dG8m
IHNlY3Rpb25Ub2tlbiA9IHRva2Vuc1tpbmRleF07Ci0gICAgaWYgKCFzZWN0aW9uVG9rZW4uc3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzZWN0aW9uLSIpKQorICAgIGlmICghc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzZWN0aW9uVG9rZW4sICJzZWN0aW9uLSIpKQogICAg
ICAgICByZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAKICAgICAvLyAxOC4gTGV0IHNlY3Rpb24gYmUg
dGhlIGluZGV4dGggdG9rZW4gaW4gdG9rZW5zLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAppbmRleCA1NmQ2NzA5
NzMwNzJmYWFkYzQzNjU1ZDFjMDVjYzFhY2FmZDllZmRjLi4yYmI0MzMxNTkyNGVjY2EwZmYxY2U1
M2ZjZWNiOGEwYjRiYWVmNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VU
ZXh0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRU
eXBlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OmlzVGV4
dFR5cGUoKSBjb25zdAogYm9vbCBCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByYXdQ
YXR0ZXJuID0gZWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGF0dGVy
bkF0dHIpOwotICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8
fCAhSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuLCBUZXh0Q2FzZVNlbnNp
dGl2ZSkuaXNWYWxpZCgpKQorICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlz
RW1wdHkoKSB8fCAhSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuKS5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcgcGF0dGVybiA9ICJeKD86
IiArIHJhd1BhdHRlcm4gKyAiKSQiOwogICAgIGludCBtYXRjaExlbmd0aCA9IDA7CiAgICAgaW50
IHZhbHVlTGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Ci0gICAgaW50IG1hdGNoT2Zmc2V0ID0gSlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSkubWF0
Y2godmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CisgICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuKS5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVu
Z3RoKTsKICAgICByZXR1cm4gbWF0Y2hPZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5n
dGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggMzFmOGFh
NTViNmZlZDA0ODBlMjU2OGQ1NDk4ODBiYjA3ZWUyOGRjMS4uMWMyN2Y4OGI0MTBlZDE0ZTRjZWEw
MmRkN2YzYzg5N2I0YjMxOTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFp
bElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25z
dCBTdHJpbmcmIGFkZHJlc3MpCiAgICAgaWYgKCFhZGRyZXNzTGVuZ3RoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2
ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24+IHJlZ0V4cChlbWFpbFBhdHRlcm4sIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNp
dGl2ZSk7CiAKICAgICBpbnQgbWF0Y2hMZW5ndGg7CiAgICAgaW50IG1hdGNoT2Zmc2V0ID0gcmVn
RXhwLmdldCgpLm1hdGNoKGFkZHJlc3MsIDAsICZtYXRjaExlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGM1MjMyMjkyYTExYmNlN2NkZjI3Nzky
NjdkZWNiNmIwZTExOTk0MTcuLjU2OTk0ZWUzOGVjNzdkYzE1M2YwYmYwZjUzODM1NzQ4ZjQxMTJk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0yMTQs
NyArMjE0LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50KCkg
Y29uc3QKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgLy8gSWdub3JlIHdoaXRl
c3BhY2Utb25seSB0ZXh0LCBhbmQgPHBhcmFtPiB0YWdzLCBhbnkgb3RoZXIgY29udGVudCBpcyBm
YWxsYmFjayBjb250ZW50LgogICAgICAgICBpZiAoaXM8VGV4dD4oKmNoaWxkKSkgewotICAgICAg
ICAgICAgaWYgKCFkb3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2Uo
KSkKKyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5kYXRhKCkuaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmICghaXM8SFRNTFBhcmFtRWxlbWVudD4oKmNoaWxkKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTE9i
amVjdEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEhUTUxNZXRhRWxlbWVudD4oZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIp
ICYmIG1ldGFFbGVtZW50LmNvbnRlbnQoKS5zdGFydHNXaXRoKCJNYWMgT1MgWCBTZXJ2ZXIgV2Vi
IFNlcnZpY2VzIFNlcnZlciIsIGZhbHNlKSkKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0YUVsZW1lbnQuY29udGVudCgpLCAibWFjIG9z
IHggc2VydmVyIHdlYiBzZXJ2aWNlcyBzZXJ2ZXIiKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNo
b3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAKIGJvb2wgSFRNTE9iamVjdEVs
ZW1lbnQ6Omhhc1ZhbGlkQ2xhc3NJZCgpCiB7Ci0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6Omlz
SmF2YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKCkpICYmIGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY2xhc3NpZEF0dHIpLnN0YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQorICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSgp
KSAmJiBwcm90b2NvbElzKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc2lkQXR0ciksICJqYXZhIikpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIGlmIChzaG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRR
dWlyaygpKQpAQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwcmV2ZW50c1Bh
cmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBOb2RlJiBjaGlsZCkKICAgICBpZiAoaXM8RWxl
bWVudD4oY2hpbGQpKQogICAgICAgICByZXR1cm4gcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhw
b3N1cmUoZG93bmNhc3Q8RWxlbWVudD4oY2hpbGQpKTsKICAgICBpZiAoaXM8VGV4dD4oY2hpbGQp
KQotICAgICAgICByZXR1cm4gIWRvd25jYXN0PFRleHQ+KGNoaWxkKS5jb250YWluc09ubHlXaGl0
ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiAhZG93bmNhc3Q8VGV4dD4oY2hpbGQpLmRhdGEoKS5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKaW5kZXggNzc0YWQ1NDdjZWM2YjNjNGFjOTE0
MmRhYWNkYTRhMmM1MzhiM2ZmOC4uNzY0ZTUwMjIzMGE3ZGM5YTM0ZDg3Y2JhNjkzYWNkNjY1NDkw
MWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcApAQCAtNDYsMTMgKzQ2LDExIEBAIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHR5cGVBaGVhZFRpbWVvdXQgeyAxX3MgfTsKIHN0YXRpYyBTdHJp
bmcgc3RyaXBMZWFkaW5nV2hpdGVTcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0KICAgICB1bnNpZ25lZCBpOwogICAg
IGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoc3RyaW5nW2ldICE9
IG5vQnJlYWtTcGFjZSAmJiAoc3RyaW5nW2ldIDw9IDB4N0YgPyAhaXNBU0NJSVNwYWNlKHN0cmlu
Z1tpXSkgOiAodV9jaGFyRGlyZWN0aW9uKHN0cmluZ1tpXSkgIT0gVV9XSElURV9TUEFDRV9ORVVU
UkFMKSkpCisgICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVha1NwYWNlICYmICFpc1NwYWNl
T3JOZXdsaW5lKHN0cmluZ1tpXSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0KICAgICBy
ZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhpLCBsZW5ndGggLSBpKTsKIH0KIApAQCAtOTUsMTAgKzkz
LDYgQEAgaW50IFR5cGVBaGVhZDo6aGFuZGxlRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQsIE1h
dGNoTW9kZUZsYWdzIG1hdGNoTW9kZSkKICAgICAgICAgaW50IGluZGV4ID0gKHNlbGVjdGVkIDwg
MCA/IDAgOiBzZWxlY3RlZCkgKyBzZWFyY2hTdGFydE9mZnNldDsKICAgICAgICAgaW5kZXggJT0g
b3B0aW9uQ291bnQ7CiAKLSAgICAgICAgLy8gQ29tcHV0ZSBhIGNhc2UtZm9sZGVkIGNvcHkgb2Yg
dGhlIHByZWZpeCBzdHJpbmcgYmVmb3JlIGJlZ2lubmluZyB0aGUgc2VhcmNoIGZvcgotICAgICAg
ICAvLyBhIG1hdGNoaW5nIGVsZW1lbnQuIFRoaXMgY29kZSB1c2VzIGZvbGRDYXNlIHRvIHdvcmsg
YXJvdW5kIHRoZSBmYWN0IHRoYXQKLSAgICAgICAgLy8gU3RyaW5nOjpzdGFydFdpdGggZG9lcyBu
b3QgZm9sZCBub24tQVNDSUkgY2hhcmFjdGVycy4gVGhpcyBjb2RlIGNhbiBiZSBjaGFuZ2VkCi0g
ICAgICAgIC8vIHRvIHVzZSBzdGFydFdpdGggb25jZSB0aGF0IGlzIGZpeGVkLgogICAgICAgICBT
dHJpbmcgcHJlZml4V2l0aENhc2VGb2xkZWQocHJlZml4LmZvbGRDYXNlKCkpOwogICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9wdGlvbkNvdW50OyArK2ksIGluZGV4ID0gKGluZGV4ICsgMSkg
JSBvcHRpb25Db3VudCkgewogICAgICAgICAgICAgLy8gRm9sZCB0aGUgb3B0aW9uIHN0cmluZyBh
bmQgY2hlY2sgaWYgaXRzIHByZWZpeCBpcyBlcXVhbCB0byB0aGUgZm9sZGVkIHByZWZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cAppbmRleCAxMjE3ZDliNTRmNThiM2MzNDg0MjQ5YWY1YmEwNDBiNzI3ZGMwNTMwLi4wMjNjOGZk
N2YzNTQwZjFhZDhjNzJhNmQwNTgyOWEwMzNlMTYyYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0zMzYsNzYgKzMz
Niw3NiBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpzZXRDb21wYXRpYmlsaXR5TW9kZUZy
b21Eb2N0eXBlKGNvbnN0IFN0cmluZyYgbmFtZSwgYwogCiAgICAgLy8gQ2hlY2sgZm9yIFF1aXJr
cyBNb2RlLgogICAgIGlmIChuYW1lICE9ICJodG1sIgotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCIrLy9TaWxtYXJpbC8vZHRkIGh0bWwgUHJvIHYwcjExIDE5OTcwMTAxLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vQWR2YVNvZnQgTHRkLy9EVEQg
SFRNTCAzLjAgYXNXZWRpdCArIGV4dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9BUy8vRFREIEhUTUwgMy4wIGFzV2VkaXQgKyBleHRlbnNpb25z
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFRE
IEhUTUwgMi4wIExldmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNX
aXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgTGV2ZWwgMi8vIiwgZmFsc2UpCi0gICAgICAgIHx8
IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBTdHJpY3QgTGV2ZWwg
MS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RU
RCBIVE1MIDIuMCBTdHJpY3QgTGV2ZWwgMi8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBTdHJpY3QvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAy
LjFFLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgMy4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vSUVURi8vRFREIEhUTUwgMy4yIEZpbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGlj
SWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMy4yLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMy8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDAv
LyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQg
SFRNTCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vSUVURi8vRFREIEhUTUwgTGV2ZWwgMi8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDMvLyIsIGZhbHNlKQotICAgICAg
ICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QgTGV2ZWwg
MC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RU
RCBIVE1MIFN0cmljdCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgU3RyaWN0IExldmVsIDIvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QgTGV2
ZWwgMy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYv
L0RURCBIVE1MIFN0cmljdC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL0lFVEYvL0RURCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vTWV0cml1cy8vRFREIE1ldHJpdXMgUHJlc2VudGF0aW9uYWwvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRl
cm5ldCBFeHBsb3JlciAyLjAgSFRNTCBTdHJpY3QvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAyLjAg
SFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jv
c29mdC8vRFREIEludGVybmV0IEV4cGxvcmVyIDIuMCBUYWJsZXMvLyIsIGZhbHNlKQotICAgICAg
ICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBs
b3JlciAzLjAgSFRNTCBTdHJpY3QvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAzLjAgSFRNTC8vIiwg
ZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8vRFRE
IEludGVybmV0IEV4cGxvcmVyIDMuMCBUYWJsZXMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9OZXRzY2FwZSBDb21tLiBDb3JwLi8vRFREIEhUTUwvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9OZXRzY2FwZSBDb21tLiBD
b3JwLi8vRFREIFN0cmljdCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vTydSZWlsbHkgYW5kIEFzc29jaWF0ZXMvL0RURCBIVE1MIDIuMC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5IGFuZCBBc3Nv
Y2lhdGVzLy9EVEQgSFRNTCBFeHRlbmRlZCAxLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9PJ1JlaWxseSBhbmQgQXNzb2NpYXRlcy8vRFREIEhUTUwgRXh0
ZW5kZWQgUmVsYXhlZCAxLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNX
aXRoKCItLy9Tb2Z0UXVhZCBTb2Z0d2FyZS8vRFREIEhvVE1ldGFMIFBSTyA2LjA6OjE5OTkwNjAx
OjpleHRlbnNpb25zIHRvIEhUTUwgNC4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vU29mdFF1YWQvL0RURCBIb1RNZXRhTCBQUk8gNC4wOjoxOTk3MTAxMDo6
ZXh0ZW5zaW9ucyB0byBIVE1MIDQuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0
YXJ0c1dpdGgoIi0vL1NweWdsYXNzLy9EVEQgSFRNTCAyLjAgRXh0ZW5kZWQvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TUS8vRFREIEhUTUwgMi4wIEhvVE1l
dGFMICsgZXh0ZW5zaW9ucy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1N1biBNaWNyb3N5c3RlbXMgQ29ycC4vL0RURCBIb3RKYXZhIEhUTUwvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TdW4gTWljcm9zeXN0ZW1zIENv
cnAuLy9EVEQgSG90SmF2YSBTdHJpY3QgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMyAxOTk1LTAzLTI0Ly8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRHJh
ZnQvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RU
RCBIVE1MIDMuMiBGaW5hbC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1czQy8vRFREIEhUTUwgMy4yLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjJTIERyYWZ0Ly8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAgRnJhbWVzZXQv
LyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBI
VE1MIDQuMCBUcmFuc2l0aW9uYWwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIEV4cGVyaW1lbnRhbCAxOTk2MDcxMi8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgRXhwZXJp
bWVudGFsIDk3MDQyMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgo
Ii0vL1czQy8vRFREIFczIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9XM08vL0RURCBXMyBIVE1MIDMuMC8vIiwgZmFsc2UpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIrLy9zaWxtYXJpbC8v
ZHRkIGh0bWwgcHJvIHYwcjExIDE5OTcwMTAxLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vYWR2YXNvZnQgbHRkLy9kdGQgaHRt
bCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9hcy8vZHRkIGh0bWwgMy4wIGFzd2Vk
aXQgKyBleHRlbnNpb25zLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDEvLyIpCisg
ICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIt
Ly9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBz
dHJpY3QgbGV2ZWwgMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMi8v
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJ
ZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAy
LjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjFlLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMy4w
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMy4yIGZpbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwg
My4yLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIGxldmVs
IDAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAxLy8iKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwg
bGV2ZWwgMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDMvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QgbGV2ZWwgMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAx
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QgbGV2ZWwgMy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdC8vIikKKyAg
ICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0v
L2lldGYvL2R0ZCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWV0cml1cy8vZHRkIG1ldHJpdXMgcHJlc2VudGF0aW9u
YWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbCBzdHJp
Y3QvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCB0YWJsZXMvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9t
aWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbCBzdHJpY3QvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9t
aWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbC8vIikKKyAgICAgICAgfHwg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29m
dC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCB0YWJsZXMvLyIpCisgICAgICAgIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9uZXRzY2FwZSBjb21t
LiBjb3JwLi8vZHRkIGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIHN0cmlj
dCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIDIuMC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCAxLjAvLyIpCisg
ICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIt
Ly9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgcmVsYXhlZCAxLjAv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy9zb2Z0cXVhZCBzb2Z0d2FyZS8vZHRkIGhvdG1ldGFsIHBybyA2LjA6OjE5OTkwNjAx
OjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc29mdHF1YWQvL2R0ZCBob3RtZXRhbCBw
cm8gNC4wOjoxOTk3MTAxMDo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vIikKKyAgICAgICAgfHwg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NweWdsYXNz
Ly9kdGQgaHRtbCAyLjAgZXh0ZW5kZWQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zcS8vZHRkIGh0bWwgMi4wIGhvdG1ldGFs
ICsgZXh0ZW5zaW9ucy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZh
IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cHVibGljSWQsICItLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90amF2YSBzdHJpY3Qg
aHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
dWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgMyAxOTk1LTAzLTI0Ly8iKQorICAgICAgICB8fCBz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQg
aHRtbCAzLjIgZHJhZnQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMuMiBmaW5hbC8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3cz
Yy8vZHRkIGh0bWwgMy4yLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAzLjJzIGRyYWZ0Ly8iKQorICAg
ICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
dzNjLy9kdGQgaHRtbCA0LjAgZnJhbWVzZXQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFu
c2l0aW9uYWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCAxOTk2MDcxMi8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDk3MDQyMS8vIikKKyAgICAgICAgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIHcz
IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cHVibGljSWQsICItLy93M28vL2R0ZCB3MyBodG1sIDMuMC8vIikKICAgICAgICAgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M28vL2R0ZCB3MyBodG1sIHN0
cmljdCAzLjAvL2VuLy8iKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XZWJU
ZWNocy8vRFREIE1vemlsbGEgSFRNTCAyLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJ
ZC5zdGFydHNXaXRoKCItLy9XZWJUZWNocy8vRFREIE1vemlsbGEgSFRNTC8vIiwgZmFsc2UpCisg
ICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIt
Ly93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbCAyLjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93ZWJ0ZWNocy8vZHRkIG1v
emlsbGEgaHRtbC8vIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cHVibGljSWQsICItL3czYy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsL2VuIikKICAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICJodG1sIikKICAgICAg
ICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3lzdGVtSWQsICJodHRwOi8vd3d3
LmlibS5jb20vZGF0YS9kdGQvdjExL2libXhodG1sMS10cmFuc2l0aW9uYWwuZHRkIikKLSAgICAg
ICAgfHwgKHN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0Mv
L0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvLyIsIGZhbHNlKSkKLSAgICAgICAgfHwgKHN5c3RlbUlk
LmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkpKSB7CisgICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5
KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3cz
Yy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vIikpCisgICAgICAgIHx8IChzeXN0ZW1JZC5pc0Vt
cHR5KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0v
L3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLyIpKSkgewogICAgICAgICBzZXRDb21w
YXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIENoZWNrIGZvciBMaW1pdGVkIFF1aXJrcyBN
b2RlLgotICAgIGlmIChwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBYSFRNTCAxLjAg
RnJhbWVzZXQvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9X
M0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgKCFz
eXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRN
TCA0LjAxIEZyYW1lc2V0Ly8iLCBmYWxzZSkpCi0gICAgICAgIHx8ICghc3lzdGVtSWQuaXNFbXB0
eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0
aW9uYWwvLyIsIGZhbHNlKSkpIHsKKyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIHhodG1sIDEuMCBmcmFtZXNldC8vIikKKyAg
ICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0v
L3czYy8vZHRkIHhodG1sIDEuMCB0cmFuc2l0aW9uYWwvLyIpCisgICAgICAgIHx8ICghc3lzdGVt
SWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLyIpKQorICAgICAgICB8fCAoIXN5
c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vIikpKSB7CiAgICAg
ICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0
ZWRRdWlya3NNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4IDhhODQ2
ODkxNWZlOTMyNmM5ZTczNmE3YWE1MzVhZThkZDNlYjRkMjQuLjhkMzNlZTY2M2ZiMzMwNzA0YTk4
OGEyMTE1YzA0MzBjYjE5ZTM2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMg
U3RyaW5nVmlldyBleHRyYWN0Q2hhcnNldChjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwogICAgIGZvciAoc2l6ZV90IHBvcyA9IDA7
IHBvcyA8IGxlbmd0aDsgKSB7Ci0gICAgICAgIHBvcyA9IHZhbHVlLmZpbmQoImNoYXJzZXQiLCBw
b3MsIGZhbHNlKTsKKyAgICAgICAgcG9zID0gdmFsdWUuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJj
aGFyc2V0IiwgcG9zKTsKICAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKICAgICAgICAgICAg
IGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4
IDkzZmZhNWJhNjQ4ZWM4OGE4OGQzNWVlNjAwMzE5NWM3NjMwMzhmMzQuLmE3M2VkOTNiOTk3ZmI3
YjVkYTE4MjgxODJiMTRmN2FlMmJhYWVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwCkBAIC03MTUsMTEgKzcxNSwxMSBAQCBib29sIFhTU0F1ZGl0b3I6Omlz
Q29udGFpbmVkSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgZGVjb2RlZFNuaXBwZXQpCiB7CiAgICAg
aWYgKGRlY29kZWRTbmlwcGV0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChtX2RlY29kZWRVUkwuZmluZChkZWNvZGVkU25pcHBldCwgMCwgZmFsc2UpICE9IG5vdEZv
dW5kKQorICAgIGlmIChtX2RlY29kZWRVUkwuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShkZWNv
ZGVkU25pcHBldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX2RlY29kZWRIVFRQ
Qm9keVN1ZmZpeFRyZWUgJiYgIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZS0+bWlnaHRDb250
YWluKGRlY29kZWRTbmlwcGV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBt
X2RlY29kZWRIVFRQQm9keS5maW5kKGRlY29kZWRTbmlwcGV0LCAwLCBmYWxzZSkgIT0gbm90Rm91
bmQ7CisgICAgcmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2UoZGVjb2RlZFNuaXBwZXQpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJl
c291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCmluZGV4IGFjZTY2ZTU0MWMwYjg5MzBiZGVmZDNiZDU5Y2IxYzg3ZWEyNDIx
NzMuLjUxOGVkOGIzMDYwZDA2ODllMjc0NDg5M2I0NmQ5YWM0Nzc3M2U5NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBi
b29sIFdlYlZUVFBhcnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGxpbmUpCiAgICAgLy8gQSBXZWJWVFQgZmlsZSBpZGVudGlmaWVyIGNvbnNpc3RzIG9mIGFuIG9w
dGlvbmFsIEJPTSBjaGFyYWN0ZXIsCiAgICAgLy8gdGhlIHN0cmluZyAiV0VCVlRUIiBmb2xsb3dl
ZCBieSBhbiBvcHRpb25hbCBzcGFjZSBvciB0YWIgY2hhcmFjdGVyLAogICAgIC8vIGFuZCBhbnkg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGxpbmUgdGVybWluYXRvcnMgLi4uCi0g
ICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoZmlsZUlkZW50aWZpZXIsIGZpbGVJZGVudGlmaWVyTGVu
Z3RoKSkKKyAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aChmaWxlSWRlbnRpZmllcikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAobGluZS5sZW5ndGgoKSA+IGZpbGVJZGVudGlmaWVyTGVu
Z3RoICYmICFpc0hUTUxTcGFjZShsaW5lW2ZpbGVJZGVudGlmaWVyTGVuZ3RoXSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JOb2RlRmluZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcAppbmRleCA1OTU4M2E5MDI4NTQ0YmI5MWIyYzQ3NWUzYTg2ZTVlOWU5Y2Yx
MTc4Li5mOTJhNWQ4OTI3ZTc2MGJmNGI3YjVmMDg4ODhmNmEwNWQzZTVhYzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCkBAIC0xMTAs
OCArMTEwLDggQEAgYm9vbCBJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxlbWVudChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogICAgIFN0cmluZyBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5h
bWUoKTsKICAgICBpZiAoKCFtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9k
ZU5hbWUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3RhZ05hbWVRdWVyeSkpCiAgICAgICAg
IHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5vZGVOYW1lLCBtX3RhZ05hbWVRdWVyeSkpCi0gICAgICAgIHx8IChtX3N0YXJ0VGFn
Rm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuc3RhcnRzV2l0aChtX3RhZ05hbWVR
dWVyeSwgZmFsc2UpKQotICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0Zv
dW5kICYmIG5vZGVOYW1lLmVuZHNXaXRoKG1fdGFnTmFtZVF1ZXJ5LCBmYWxzZSkpKQorICAgICAg
ICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShtX3RhZ05hbWVRdWVyeSkpCisgICAgICAgIHx8ICghbV9z
dGFydFRhZ0ZvdW5kICYmIG1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShtX3RhZ05hbWVRdWVyeSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggZDdlMmU5M2QzZDgxYzdjOTYyNzA1
YjQxYWRhNGU1YTc3ZWY5NzYxYS4uZDJjZDg1YTdmMjQ5OTk5OWI5MzQ2ZjY1ZDI2N2Y2NDI1MDMw
OTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtMTA5OCw3ICsxMDk4LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1NlbGVjdG9yPiBidWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKGMKIAog
c3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1NlbGVjdG9yPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291
cmNlRGF0YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQsIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIv
XFwqW15dKj9cXCovIiwgVGV4dENhc2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5h
YmxlZCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBKU0M6OllhcnI6OlRleHRDYXNlU2Vuc2l0
aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOwogCiAgICAgYXV0byByZXN1bHQgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Nl
bGVjdG9yPjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2Vs
ZWN0b3JMaXN0LmZpcnN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGU0NzAwMTYyOWFhYmQ2ZjM5ODFjNTkw
ZDk4ZjE0ZWZiMjIzNTUyOWMuLmQwODY5ZWZhYjFkNWNiYjQ2Y2Y4ZWZkYTE5NTc0OGMzM2FhYmEy
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlw
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFRlbXBsYXRlRWxlbWVudC5oIgpAQCAtMTk3MywxMCArMTk3NCwxNiBAQCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aQogICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlKTsKIH0KIAorc3RhdGljIGJvb2wg
Y29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoTm9kZSogbm9kZSkKK3sKKyAgICAvLyBGSVhNRTog
UmVzcGVjdCBpZ25vcmVXaGl0ZXNwYWNlIHNldHRpbmcgZnJvbSBpbnNwZWN0b3IgZnJvbnQgZW5k
PworICAgIHJldHVybiBpczxUZXh0Pihub2RlKSAmJiBkb3duY2FzdDxUZXh0Pigqbm9kZSkuZGF0
YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7Cit9CisKIE5vZGUqIElu
c3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQoTm9kZSogbm9kZSkKIHsKICAgICBub2Rl
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChpc1doaXRlc3BhY2Uobm9kZSkpCisg
ICAgd2hpbGUgKGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKG5vZGUpKQogICAgICAgICBub2Rl
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE5ODUsNyAr
MTk5Miw3IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKE5vZGUq
IG5vZGUpCiB7CiAgICAgZG8gewogICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsK
LSAgICB9IHdoaWxlIChpc1doaXRlc3BhY2Uobm9kZSkpOworICAgIH0gd2hpbGUgKGNvbnRhaW5z
T25seUhUTUxXaGl0ZXNwYWNlKG5vZGUpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIApAQCAtMTk5
MywxOCArMjAwMCwxNSBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQcmV2aW91c1Np
YmxpbmcoTm9kZSogbm9kZSkKIHsKICAgICBkbyB7CiAgICAgICAgIG5vZGUgPSBub2RlLT5wcmV2
aW91c1NpYmxpbmcoKTsKLSAgICB9IHdoaWxlIChpc1doaXRlc3BhY2Uobm9kZSkpOworICAgIH0g
d2hpbGUgKGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKG5vZGUpKTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KIAogdW5zaWduZWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGROb2RlQ291bnQo
Tm9kZSogbm9kZSkKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgTm9kZSogY2hpbGQg
PSBpbm5lckZpcnN0Q2hpbGQobm9kZSk7Ci0gICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIGNv
dW50Kys7Ci0gICAgICAgIGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCk7Ci0gICAgfQor
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBpbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGls
ZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQorICAgICAgICArK2NvdW50OwogICAgIHJldHVy
biBjb3VudDsKIH0KIApAQCAtMjAxOCwxMyArMjAyMiw2IEBAIE5vZGUqIEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lclBhcmVudE5vZGUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZS0+cGFyZW50
Tm9kZSgpOwogfQogCi1ib29sIEluc3BlY3RvckRPTUFnZW50Ojppc1doaXRlc3BhY2UoTm9kZSog
bm9kZSkKLXsKLSAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNvbnRhaW5zT25seUhUTUxTcGFjZXM/
Ci0gICAgLy8gRklYTUU6IFJlc3BlY3QgaWdub3JlV2hpdGVzcGFjZSBzZXR0aW5nIGZyb20gaW5z
cGVjdG9yIGZyb250IGVuZD8KLSAgICByZXR1cm4gaXM8VGV4dD4obm9kZSkgJiYgZG93bmNhc3Q8
VGV4dD4oKm5vZGUpLmRhdGEoKS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci19Ci0KIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6Om1haW5GcmFtZURPTUNvbnRlbnRMb2FkZWQoKQogewogICAgIC8v
IFJlLXB1c2ggZG9jdW1lbnQgb25jZSBpdCBpcyBsb2FkZWQuCkBAIC0yMDU2LDcgKzIwNTMsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50KiBkb2N1bWVu
dCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2Rl
KQogewotICAgIGlmIChpc1doaXRlc3BhY2UoJm5vZGUpKQorICAgIGlmIChjb250YWluc09ubHlI
VE1MV2hpdGVzcGFjZSgmbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNvdWxk
IGJlIGF0dGFjaGluZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhlIGJpbmRpbmdzLgpAQCAt
MjA4NSw3ICsyMDgyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9k
ZShOb2RlJiBub2RlKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2Rl
KE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKGlzV2hpdGVzcGFjZSgmbm9kZSkpCisgICAgaWYgKGNv
bnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKCZub2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNjBl
YjZjN2FiMzk1ZDZiZjk0NmQwMzgxOTIyZGFiOGZlNzJjYmEzZi4uMGFmYjI4NTBkMmZjZDc0MjZk
MDUxYWZiYTMzYWE5MDY2MzQwN2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMjAzLDcgKzIwMyw2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgTm9kZSogaW5uZXJQcmV2aW91c1NpYmxpbmcoTm9kZSopOwogICAgIHN0
YXRpYyB1bnNpZ25lZCBpbm5lckNoaWxkTm9kZUNvdW50KE5vZGUqKTsKICAgICBzdGF0aWMgTm9k
ZSogaW5uZXJQYXJlbnROb2RlKE5vZGUqKTsKLSAgICBzdGF0aWMgYm9vbCBpc1doaXRlc3BhY2Uo
Tm9kZSopOwogCiAgICAgTm9kZSogYXNzZXJ0Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQp
OwogICAgIEVsZW1lbnQqIGFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDdiZTkxYmU1NTNmZGZmOTNlNzdkNzAyY2E4MTQxOTg4
ZTI4ODkzMTkuLjE1M2U4ODQwMjFiZDc4MzI4NTg4NmZhNzJmYzgyYzRlNTQ2MTI2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtMTI4NSw4ICsxMjg1LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZGVsZXRlVGFibGVzKCkKICAgICAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCkuc3RhcnRzV2l0aCgiYXVkaW8vIiwgZmFsc2UpIAotICAgICAgICB8fCByZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLnN0YXJ0c1dpdGgoInZpZGVvLyIsIGZhbHNlKTsKKyAgICBh
dXRvJiB0eXBlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKKyAgICByZXR1cm4g
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAg
CiBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRp
cmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QmFzZTY0VXRpbGl0aWVzLmNwcAppbmRleCBlMDhhMTZiNDA1ZjRhMjJhYThjZmNmNTgxNzQ5YjE0
Y2EwNGQ4ZGM1Li4wYzYxM2ZhNDMwOTBiNzk2MGQwZGU3YjlhZjM3ODc4ZjQ5M2Q5ZmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIEV4
Y2VwdGlvbk9yPFN0cmluZz4gQmFzZTY0VXRpbGl0aWVzOjpidG9hKGNvbnN0IFN0cmluZyYgc3Ry
aW5nVG9FbmNvZGUpCiAgICAgaWYgKHN0cmluZ1RvRW5jb2RlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoIXN0cmluZ1RvRW5jb2RlLmNvbnRhaW5zT25seUxh
dGluMSgpKQorICAgIGlmICghc3RyaW5nVG9FbmNvZGUuaXNBbGxMYXRpbjEoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCiAgICAgcmV0dXJu
IGJhc2U2NEVuY29kZShzdHJpbmdUb0VuY29kZS5sYXRpbjEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDNjNGQwMDc3MmZhMTc3OTEwMTgzODg4NGU3YTYxYzA2MjA3YjQyNzkuLmUyZTEzMTA3
NWM0NTY0NWJkYWQwZjFjMmVlY2Q2ODE1OGI1NTEyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC0zMjgsNyArMzI4LDcgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3Jl
YXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgIC8vIFJFVklFVy0g
dmVyc2lvbiBvZiB0aGlzIGNhbGwgaW4gRnJhbWVNYWMubW0gY2FjaGVzIGJhc2VkIG9uIHRoZSBO
U0FycmF5IHB0cnMgYmVpbmcKICAgICAvLyB0aGUgc2FtZSBhY3Jvc3MgY2FsbHMuICBXZSBjYW4n
dCBkbyB0aGF0LgogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJl
Z0V4cCgiXFx3Iik7CiAgICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAgIHBhdHRlcm4uYXBw
ZW5kKCcoJyk7CiAgICAgdW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CkBA
IC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gY3Jl
YXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogICAgICAgICAgICAgcGF0
dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKICAgICB9CiAgICAgcGF0dGVybi5hcHBlbmQoJykn
KTsKLSAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3Ry
aW5nKCksIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vu
c2l0aXZlKTsKIH0KIAogU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoY29u
c3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnRXhwLCBIVE1MVGFibGVDZWxsRWxl
bWVudCogY2VsbCwgc2l6ZV90KiByZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCkKQEAgLTQ1
OSw3ICs0NTksNyBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBjb25zdCBTdHJpbgogICAgIFN0cmluZyBtdXRhYmxl
U3RyaW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7CiAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5k
IF8ncyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJh
ZGRyZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uKCJcXGQiLCBUZXh0Q2FzZVNlbnNpdGl2ZSksICIgIik7CisgICAgcmVw
bGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbigi
XFxkIiksICIgIik7CiAgICAgbXV0YWJsZVN0cmluZ1RvTWF0Y2gucmVwbGFjZSgnXycsICcgJyk7
CiAgICAgCiAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAgPSBjcmVhdGVS
ZWdFeHBGb3JMYWJlbHMobGFiZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBj
MGM2OTc3YmQ3NmRiYmVhYjE4MDNjYzI0MzRlYTQ4YWUxZDAxOGEwLi5lNGUzNTI1MzY1ZDFjYmQx
YmY3MDViNTZhZWE3NGJiY2U3YzFlZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0yNDg4LDcgKzI0ODgsNyBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRSZW5kZXJlZENoYXJhY3Rl
cnNJblJlbmRlck9iamVjdFdpdGhUaHJlc2hvbGQoY29uc3QgUmVuZGVyRQogICAgIHVuc2lnbmVk
IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9ICZy
ZW5kZXJlcjsgZGVzY2VuZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9y
ZGVyKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpkZXNjZW5kYW50KSkgewotICAg
ICAgICAgICAgY291bnQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmRlc2NlbmRhbnQpLnRleHQo
KS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBjb3VudCArPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
ZGVzY2VuZGFudCkudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICAgICAgaWYgKGNvdW50ID49IHRo
cmVzaG9sZCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA1M2M5OWM1NzQ3OTI2ZjRmMGFlYzQ5ZjBjZWRl
ZmQyNDJiOGI1Yzg0Li45ZDJlNWNjZDRlYjExZDAyZDliNDU3YzVkMDI1NTg4NDExYWVjNjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMzMxLDE0ICszMzEsMTYg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVjZWl2ZURyYWdEYXRhKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBkcmFnSW5pdGlhdG9yKSBjb24KIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJl
bW92ZWQgYXMgYW4gb3V0Y29tZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxOTYKIHN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZh
bWlseShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVy
bC5zdHJpbmcoKTsKLSAgICBpZiAoIXVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkIiwgZmFsc2Up
KQorICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gdXJsLnN0cmluZygpOworICAgIGlmICghc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkIikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZDov
LyIsIGZhbHNlKSAKLSAgICAgICAgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWQ6aHR0cDoi
LCBmYWxzZSkgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWQ6aHR0cHM6IiwgZmFsc2UpCi0g
ICAgICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkczpodHRwOiIsIGZhbHNlKSB8fCB1
cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHM6aHR0cHM6IiwgZmFsc2UpCi0gICAgICAgIHx8IHVy
bFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHA6IiwgZmFsc2UpIHx8IHVybFN0cmlu
Zy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHBzOiIsIGZhbHNlKTsKKyAgICByZXR1cm4gc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkOi8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkOmh0
dHA6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcsICJmZWVkOmh0dHBzOiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc3RyaW5nLCAiZmVlZHM6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzOmh0dHBzOiIpCisgICAgICAgIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZHNlYXJjaDpo
dHRwOiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nLCAiZmVlZHNlYXJjaDpodHRwczoiKTsKIH0KIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2Fu
RGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCA0ZGFiNTQ3OTRiNjc3M2JjNWQ5NjM1YTU4ZjBm
MzQ0OGM3MzY4ZTE5Li5lMWZkYzliNzUzOWY5Zjc0Yjc5MmU0YWFlMmY4MmFlYWNiYWVjMTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0KGNv
bnN0IFVSTCYgdGVzdCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVj
ayBpZiB0aGUgZG9tYWluIGlzIGEgc3ViZG9tYWluIG9mIG91ciBob3N0LgotICAgIGlmICghaG9z
dC5lbmRzV2l0aChtX2hvc3QsIGZhbHNlKSkKKyAgICBpZiAoIWhvc3QuZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShtX2hvc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQo
aG9zdC5sZW5ndGgoKSA+IG1faG9zdC5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAppbmRleCA1OTYw
NGM2N2FjZTc3YTM1NGQ0ZGVhOGFhZGI1N2Y5OTZiZWRhMmM2Li43YTQzMzNkNWQ2YWY4ODk2Mjg4
YjIwNzk1NjUwNGI2YzNmNzc5YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKQEAgLTY0LDkgKzY0LDcgQEAg
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6aG9zdE1hdGNo
ZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgY29uc3QgU3RyaW5nJiBob3N0ID0gdXJs
Lmhvc3QoKTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShob3N0LCBtX2hvc3QpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9ob3N0SGFzV2lsZGNhcmQgJiYgaG9z
dC5lbmRzV2l0aCgiLiIgKyBtX2hvc3QsIGZhbHNlKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShob3N0LCBtX2hvc3QpIHx8IChtX2hvc3RIYXNXaWxkY2FyZCAmJiBob3N0LmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi4iICsgbV9ob3N0KSk7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAppbmRleCA5MjBhZDEyZDk4YWFhNjlmYjYwMzE4YTM1Y2Q1YzhhZjY3MjNjZDZi
Li5jMzYwODE1YjE0ZmY0YTU4NmFjZGE4ZjliNTRiODYzODFmYWM4Njg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcApAQCAtNDM3LDEwICs0MzcsMTAgQEAgc3RhdGljIGJvb2wgaXNOb25jZUNoYXJh
Y3RlcihVQ2hhciBjKQogLy8gbm9uY2UtdmFsdWUgICAgID0gYmFzZTY0LXZhbHVlCiBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlTm9uY2VTb3VyY2UoY29uc3QgVUNo
YXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IG5vbmNlUHJlZml4KCInbm9uY2UtIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgaWYgKCFTdHJpbmdWaWV3KGJlZ2luLCBlbmQgLSBiZWdpbikuc3RhcnRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKG5vbmNlUHJlZml4LmdldCgpKSkKKyAgICBjb25zdCB1bnNpZ25l
ZCBub25jZVByZWZpeExlbmd0aCA9IDY7CisgICAgaWYgKCFTdHJpbmdWaWV3KGJlZ2luLCBlbmQg
LSBiZWdpbikuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJub25jZS0iKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFVDaGFyKiBwb3NpdGlvbiA9IGJlZ2luICsgbm9uY2VQ
cmVmaXguZ2V0KCkubGVuZ3RoKCk7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0aW9uID0gYmVnaW4g
KyBub25jZVByZWZpeExlbmd0aDsKICAgICBjb25zdCBVQ2hhciogYmVnaW5Ob25jZVZhbHVlID0g
cG9zaXRpb247CiAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc05vbmNlQ2hhcmFjdGVyPihwb3NpdGlv
biwgZW5kKTsKICAgICBpZiAocG9zaXRpb24gPj0gZW5kIHx8IHBvc2l0aW9uID09IGJlZ2luTm9u
Y2VWYWx1ZSB8fCAqcG9zaXRpb24gIT0gJ1wnJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1Mu
bW0KaW5kZXggYjMzZTg2OTdlMjk1Yjg3ZTlhOTA0NzExOTljN2Y2MGM5NDU0ZjRlMy4uNTg0Zjc0
YmI1NDEwMTJmZjdjOWU0ZjQ0OTkxMmY1MTI5ZGQxNmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RnJhbWVJT1MubW0KQEAgLTExOSw3ICsxMTksNyBAQCBOU0FycmF5ICpGcmFtZTo6d29yZHNJbkN1
cnJlbnRQYXJhZ3JhcGgoKSBjb25zdAogICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBoKGVuZCkp
IHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gZW5kLnByZXZpb3VzKCk7CiAg
ICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlmICgh
aXN3cHVuY3QoYykgJiYgIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSAweEEwKQorICAgICAg
ICBpZiAoIWlzd3B1bmN0KGMpICYmICFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVh
a1NwYWNlKQogICAgICAgICAgICAgZW5kID0gc3RhcnRPZldvcmQoZW5kKTsKICAgICB9CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kKSk7CkBAIC0xNDAsNyAr
MTQwLDcgQEAgTlNBcnJheSAqRnJhbWU6OndvcmRzSW5DdXJyZW50UGFyYWdyYXBoKCkgY29uc3QK
ICAgICAgICAgaWYgKGxlbmd0aCA+IDEgfHwgIWlzU3BhY2VPck5ld2xpbmUodGV4dFswXSkpIHsK
ICAgICAgICAgICAgIGludCBzdGFydE9mV29yZEJvdW5kYXJ5ID0gMDsKICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNT
cGFjZU9yTmV3bGluZSh0ZXh0W2ldKSB8fCB0ZXh0W2ldID09IDB4QTApIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZSh0ZXh0W2ldKSB8fCB0ZXh0W2ldID09IG5vQnJlYWtT
cGFjZSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgd29yZExlbmd0aCA9IGkgLSBzdGFydE9m
V29yZEJvdW5kYXJ5OwogICAgICAgICAgICAgICAgICAgICBpZiAod29yZExlbmd0aCA+IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2h1bmsgPSB0ZXh0
LnN1YnN0cmluZyhzdGFydE9mV29yZEJvdW5kYXJ5LCB3b3JkTGVuZ3RoKS5jcmVhdGVOU1N0cmlu
ZygpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jkc0luQ3VycmVudFBh
cmFncmFwaCgpIGNvbnN0CiAgICAgaWYgKFt3b3JkcyBjb3VudF0gPiAwICYmIGlzRW5kT2ZQYXJh
Z3JhcGgocG9zaXRpb24pICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zaXRpb24pKSB7CiAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9IHBvc2l0aW9uLnByZXZpb3VzKCk7CiAgICAg
ICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlmICghaXNT
cGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNTcGFjZU9yTmV3
bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIFt3b3JkcyByZW1vdmVM
YXN0T2JqZWN0XTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNw
cAppbmRleCA5OTYxY2RkZDUwZmY3N2I0N2Y3YzAzNzMyZjkyZTA5ZWU5ZTIzYjAxLi5hYzc1ZTZm
OTUxMWYxZjFiN2RlMTA0OTgxMDM1MDY1YjRkNWJiYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGVudFR5cGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZyBDb250ZW50VHlwZTo6
cGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyTmFtZSkgY29uc3QKICAgICAvLyBhIE1J
TUUgdHlwZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSAicGFyYW09dmFsdWUiIGFmdGVyIGEgc2VtaS1j
b2xvbiwgYW5kIHNlcGFyYXRlZCBmcm9tIGVhY2ggb3RoZXIgYnkgc2VtaS1jb2xvbnMKICAgICBz
aXplX3Qgc2VtaSA9IHN0cmlwcGVkVHlwZS5maW5kKCc7Jyk7CiAgICAgaWYgKHNlbWkgIT0gbm90
Rm91bmQpIHsKLSAgICAgICAgc2l6ZV90IHN0YXJ0ID0gc3RyaXBwZWRUeXBlLmZpbmQocGFyYW1l
dGVyTmFtZSwgc2VtaSArIDEsIGZhbHNlKTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0ID0gc3RyaXBw
ZWRUeXBlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShwYXJhbWV0ZXJOYW1lLCBzZW1pICsgMSk7CiAg
ICAgICAgIGlmIChzdGFydCAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgc3RhcnQgPSBzdHJp
cHBlZFR5cGUuZmluZCgnPScsIHN0YXJ0ICsgcGFyYW1ldGVyTmFtZS5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICBpZiAoc3RhcnQgIT0gbm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWJhYjFiYmU2NzQwZTMyODI1MmViMTAxYzk1
NzNjNzNhMjkwMWVhNi4uYTc5OWU4NzFjMGUzNWYyOTUwYzUzNjliMjdiODVkYTdkMDlmNTljZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTQ5
MSwxNSArNDkxLDE1IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRTdHlsZVNo
ZWV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogYm9vbCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEZvbnRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmb250TGVuID0gNTsKLSAgICBpZiAoIW1pbWVUeXBl
LnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZm9udC8iKSkKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgZm9udExlbmd0aCA9IDU7CisgICAgaWYgKCFzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiZm9udC8iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFN0cmluZyBzdWJUeXBlID0gbWltZVR5cGUuc3Vic3RyaW5nKGZvbnRMZW4pOwotICAgIHJl
dHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJUeXBlLCAid29mZiIpCi0gICAg
ICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUsICJ3b2ZmMiIpCi0g
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUsICJvdGYiKQot
ICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJUeXBlLCAidHRmIikK
LSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3ViVHlwZSwgInNmbnQi
KTsKKyAgICBhdXRvIHN1YnR5cGUgPSBTdHJpbmdWaWV3IHsgbWltZVR5cGUgfS5zdWJzdHJpbmco
Zm9udExlbmd0aCk7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1
YnR5cGUsICJ3b2ZmIikKKyAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c3VidHlwZSwgIndvZmYyIikKKyAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3VidHlwZSwgIm90ZiIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN1YnR5cGUsICJ0dGYiKQorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzdWJ0eXBlLCAic2ZudCIpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC01MTEsNyArNTEx
LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFdoZW4g
ZGV0ZWN0aW5nICtqc29uIGVuc3VyZSB0aGVyZSBpcyBhIG5vbi1lbXB0eSB0eXBlIC8gc3VidHlw
ZSBwcmVjZWVkaW5nIHRoZSBzdWZmaXguCi0gICAgaWYgKG1pbWVUeXBlLmVuZHNXaXRoKCIranNv
biIsIGZhbHNlKSAmJiBtaW1lVHlwZS5sZW5ndGgoKSA+PSA4KSB7CisgICAgaWYgKG1pbWVUeXBl
LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIitqc29uIikgJiYgbWltZVR5cGUubGVuZ3RoKCkg
Pj0gOCkgewogICAgICAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9IG1pbWVUeXBlLmZpbmQoJy8n
KTsKICAgICAgICAgaWYgKHNsYXNoUG9zaXRpb24gIT0gbm90Rm91bmQgJiYgc2xhc2hQb3NpdGlv
biA+IDAgJiYgc2xhc2hQb3NpdGlvbiA8PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDYpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1NiwxMyArNTU2LDEyIEBAIGJvb2wgTUlNRVR5cGVSZWdp
c3RyeTo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICByZXR1
cm4gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpCiAgICAgICAgIHx8IGlz
U3VwcG9ydGVkSlNPTk1JTUVUeXBlKG1pbWVUeXBlKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3Bs
YWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkKKyAg
ICAgICAgfHwgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0LyIpCiAgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJ0ZXh0L2h0bWwiKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSk7CiB9CiAKLQogc3Rh
dGljIGlubGluZSBib29sIGlzVmFsaWRYTUxNSU1FVHlwZUNoYXIoVUNoYXIgYykKIHsKICAgICAv
LyBWYWxpZCBjaGFyYWN0ZXJzIHBlciBSRkNzIDMwMjMgYW5kIDIwNDU6IDAtOWEtekEtWl8tK34h
JF57fXwuJSdgIyYqCkBAIC01NzUsNyArNTc0LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3htbCIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoKCIreG1sIiwgZmFsc2UpKQor
ICAgIGlmICghbWltZVR5cGUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiK3htbCIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9IG1pbWVUeXBl
LmZpbmQoJy8nKTsKQEAgLTU5OSw5ICs1OTgsOSBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
SmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgLy8gb2YgdXNp
bmcgYSBoYXNoIHNldC4KICAgICAvLyBBbnkgb2YgdGhlIE1JTUUgdHlwZXMgYmVsb3cgbWF5IGJl
IGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2Ygc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIEpWTSwK
ICAgICAvLyB3aGljaCBpcyB3aHkgd2UgdXNlIHN0YXJ0c1dpdGgoKQotICAgIHJldHVybiBtaW1l
VHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpCi0gICAg
ICAgIHx8IG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3gtamF2YS1iZWFuIiwgZmFs
c2UpCi0gICAgICAgIHx8IG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3gtamF2YS12
bSIsIGZhbHNlKTsKKyAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1q
YXZhLWJlYW4iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1qYXZhLXZtIik7CiB9CiAKIGJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQpAQCAtNjI2LDcgKzYyNSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKGlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZShtaW1lVHlwZSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoInRl
eHQvIiwgZmFsc2UpKQorICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAidGV4dC8iKSkKICAgICAgICAgcmV0dXJuICFpc1Vuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
Y3BwCmluZGV4IDJlZDQ0YjAyZDlhNGRkMzJlY2U1OTllMTEzNjI1YmI5Y2RjYzQ4OGUuLjJmMzU1
YTk3ZWRkNmVhMjFjNjQ0YWI3MGI5MTAzZGUyZGU5Mzk3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJp
bmcmIHMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGNvbnRhaW5zT25seUFT
Q0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RhdGljIGJvb2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3
IHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShV
Q2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKICAgICAvLyBGb3IgaG9zdCBu
YW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlz
IGFsbW9zdCBjZXJ0YWlubHkgT0suCiAgICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJM
ZW5ndGggPSAyMDQ4OwogICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1
ZmZlckxlbmd0aCB8fCBjb250YWluc09ubHlBU0NJSShzdHJpbmcpKSB7CisgICAgaWYgKHN0cmlu
Zy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5nKSkg
ewogICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAppbmRleCBlZDU2MDQ1MWFj
YjFmMzU1ZWI5NDRjNTQzOWFiYWNjNDMwNzkyNjFmLi42NzI4NjEyZWQwMzI0OWZmOTc2Mjg4MjE1
ZGM5YjQ1MTNjYTk3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKQEAg
LTI1MzgsMTkgKzI1MzgsMTAgQEAgVmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJbmxp
bmVCdWZmZXJTaXplPiBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QKICAgICByZXR1cm4g
b3V0cHV0OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUFTQ0lJ
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsK
LSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVy
biBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RkOjpvcHRp
b25hbDxWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBV
UkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBv
c2l0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxW
ZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBVUkxQYXJz
ZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
IHsKICAgICBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBhc2NpaTsKLSAg
ICBpZiAoY29udGFpbnNPbmx5QVNDSUkoZG9tYWluKSkgeworICAgIGlmIChkb21haW4uaXNBbGxB
U0NJSSgpKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7CiAgICAg
ICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFy
YWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CkBAIC0yNzY3LDcgKzI3NTgsNyBAQCBib29s
IFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChkb21haW4gIT0g
U3RyaW5nVmlldyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkp
CiAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgIGF1dG8gYXNjaWlEb21h
aW4gPSBkb21haW5Ub0FTQ0lJKGRvbWFpbiwgaG9zdEJlZ2luKTsKKyAgICBhdXRvIGFzY2lpRG9t
YWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKICAgICBpZiAo
IWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFs
dWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBWZWN0b3I8TENoYXIsIGRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPiYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmluZGV4IDFhNTNjOGM3ZTA2YjI3NTc0NDkw
MTQ5MzFhMTcxZTc1NjVkYjk0MzIuLjA2ZDAxYzFjZjIyNTJiNzZhY2UxMTQzNTk1Y2Y2NTE0MGM1
YjdkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCkBAIC05Nyw3ICs5Nyw3IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4gdm9p
ZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUpOwogICAgIHRl
bXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRm
OFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxWZWN0b3I8
TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPj4gZG9tYWluVG9BU0NJSShjb25zdCBTdHJp
bmcmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JT
eW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RkOjpvcHRpb25hbDxWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXpl
Pj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGlu
ZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT4gcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDc4ODlkOGExNGRiYzg2YTkyNTI0ZTUxZTllZWU5ZmFkZjYxOTY2YzEuLjVmZmUzZDI5NTRmZWU4
YmM5YTY5NTM1ZDc1OGJkNWExNzhkMjEyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkzMyw4ICs5MzMsOCBAQCBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFF
bmdpbmVTdXBwb3J0UGFyYQogICAgIC8vIHNsb3cgY29ubmVjdGlvbnMuIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MDk+CiAgICAgaWYgKGNsaWVudCAmJiBjbGll
bnQtPm1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpKSB7CiAgICAgICAgIFN0cmlu
ZyBob3N0ID0gY2xpZW50LT5tZWRpYVBsYXllckRvY3VtZW50SG9zdCgpOwotICAgICAgICBpZiAo
KGhvc3QuZW5kc1dpdGgoIi55b3V0dWJlLmNvbSIsIGZhbHNlKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShob3N0LCAieW91dHViZS5jb20iKSkKLSAgICAgICAgICAgICYmIChjb250
YWluZXJUeXBlLnN0YXJ0c1dpdGgoInZpZGVvL3dlYm0iLCBmYWxzZSkgfHwgY29udGFpbmVyVHlw
ZS5zdGFydHNXaXRoKCJ2aWRlby94LWZsdiIsIGZhbHNlKSkpCisgICAgICAgIGlmICgoaG9zdC5l
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIueW91dHViZS5jb20iKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShob3N0LCAieW91dHViZS5jb20iKSkKKyAgICAgICAgICAgICYmIChz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2aWRlby93
ZWJtIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBl
LCAidmlkZW8veC1mbHYiKSkpCiAgICAgICAgICAgICByZXR1cm4gSXNOb3RTdXBwb3J0ZWQ7CiAg
ICAgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZmJlMTEzY2ZiOTUyOWNmM2I5MjI3YTI2ZDc1YzkyNjVkNzljMjI2
My4uZDI3ODBjOThmY2YyNDQ2ZmFmOTIwN2VkNTUyN2ZiZmVkZTMzMWQ0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24m
IHZhbGlkS2V5U3lzdGVtUkUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFy
RXhwcmVzc2lvbj4ga2V5U3lzdGVtUkUoIl5jb21cXC5hcHBsZVxcLmZwc1xcLlsyM11fXFxkKyg/
OixcXGQrKSokIiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlZ3VsYXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwuZnBzXFwu
WzIzXV9cXGQrKD86LFxcZCspKiQiLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwog
ICAgIHJldHVybiBrZXlTeXN0ZW1SRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4
IGZiMGVjZTNjNzRhNjliYzVlYzJhZDc1N2UyZTU0OTliZGRiYWExYWEuLjFmMmI1ZjVkMGJhODUx
YjIxMzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAg
LTY4NSw3ICs2ODUsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzaW1pbGFyRm9udChjb25z
dCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdAogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGdlZXphUGxhaW4oIkdlZXphUHJvIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZ2VlemFCb2xkKCJHZWV6YVByby1Cb2xkIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgZm9yIChTdHJpbmcqIG1hdGNoV29yZCA6IG1hdGNoV29y
ZHMpIHsKLSAgICAgICAgaWYgKGZhbWlseS5jb250YWlucygqbWF0Y2hXb3JkLCBmYWxzZSkpCisg
ICAgICAgIGlmIChmYW1pbHkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgqbWF0Y2hXb3JkKSkK
ICAgICAgICAgICAgIHJldHVybiBmb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBpc0ZvbnRXZWln
aHRCb2xkKGRlc2NyaXB0aW9uLndlaWdodCgpKSA/IGdlZXphQm9sZCA6IGdlZXphUGxhaW4pOwog
ICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMjVmNTkzZGVjODMzOTgwOTU0ZjI2YmJiMGJiZGZj
NmUwNTljMTMuLjBlNGFjNGJiZTFjNDk1Y2MxZGVkZjdkZTIzNTM1ZDdhNjdmMGQ4MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtMTY1NSw3
ICsxNjU1LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbm1hbmdsZWRJbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXSwgR0MzRHMKIHsKICAgICBMT0coV2ViR0wsICJP
cmlnaW5hbCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBsb2cudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNk
ZWZBQkNERUZdKyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNkZWZBQkNERUZdKyIpOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBwcm9jZXNzZWRMb2c7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQppbmRleCAzZjQzMTcyMzhlZGUzMzc2ZGVh
YjZjYTA5Y2E4YWFhYmY4NDE4MGQ0Li44MTM4MGNjYTM0NzE0ZGQ0MzdlYzA2ZjFkMThkNWIyOGM3
ZjJlZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3Vm
Zml4TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhN
YWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4oY29uc3QgU3RyaW5nJiBkb21haW4pCiAgICAgaWYgKFtkb21haW4gX3dlYl9sb29rc0xpa2VJ
UEFkZHJlc3NdKQogICAgICAgICByZXR1cm4gZG9tYWluOwogCi0gICAgaWYgKCFkb21haW4uY29u
dGFpbnNPbmx5QVNDSUkoKSkKKyAgICBpZiAoIWRvbWFpbi5pc0FsbEFTQ0lJKCkpCiAgICAgICAg
IHJldHVybiBkb21haW47CiAgICAgCiAgICAgY29uc3QgYXV0byYgbG93ZXJjYXNlRG9tYWluID0g
ZG9tYWluLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRleCBhODJjNTZiZDEzNjA1ZTYz
NjM1ODA5Y2M1MTQwMjBiYWIwZjU3NTZjLi4zZjE0ZjQyOTdiYzliZjZhMGI2NTU5YWQ1MzAwOWFj
MGNkZDYwNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlH
ZW5lcmF0b3JNYWMubW0KQEAgLTIzOCw3ICsyMzgsNyBAQCBTdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byBjaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2VTdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSA/IGNoYWxsZW5nZVN0cmluZy5h
c2NpaSgpIDogIiI7CisgICAgYXV0byBjaGFsbGVuZ2UgPSBjaGFsbGVuZ2VTdHJpbmcuaXNBbGxB
U0NJSSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkgOiAiIjsKIAogICAgIHJldHVybiBzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlLCBrZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IGI4OWZjNmU0MWVmNTZiYjgyZjdiYmZh
OTA2NjZkZjYzOGQ4N2FkNWYuLmJmMDQ4Y2VkYWU3NmZhMDBkZGZmOWNlOTRlNDlkOWE0YTM5M2M5
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgU3RyaW5nIHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIAogYm9vbCBzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRTdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRS
ZWdleFBhdHRlcm5TdHJpbmcod2lsZGNhcmRTdHJpbmcpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKS5t
YXRjaChzdHJpbmcpICE9IC0xOworICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uKHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5nKSwgSlNDOjpZYXJy
OjpUZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJpbmcpICE9IC0xOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDQwYTYxNzcyODg4ODNlMzg5NzVkZDJh
MWM0ODEzNjE3OTdlYjA1N2YuLmJkMGFhNzlhODM2NDM5YjAzMmIxN2NjMTU3MDU1MGM0NDBlZDJk
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcg
QEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7Cisg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJSSgpKSB7CiAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgbnVsbEJ5dGUgPSAwOwogICAgICAgICBzaGExLmFkZEJ5dGVzKHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBzaGExLmFkZEJ5dGVz
KCZudWxsQnl0ZSwgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggN2IyMjNlNzg4NTliNjRjZTNkNmU5N2ZhN2Y3ZDQy
OGE1MzY3ZjY2ZC4uYzkxMzAxOTc0MDBjOTE4NjkyNmVhODYzNjFkODljMmY4MTU3ZTVhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcApAQCAtMzMwLDEwICszMzAsOCBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2Fj
aGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIGlm
ICghcmVzdWx0Lm5vQ2FjaGUpIHsKICAgICAgICAgLy8gSGFuZGxlIFByYWdtYTogbm8tY2FjaGUK
ICAgICAgICAgLy8gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCBlcXVpdmFsZW50IHRvIENhY2hlLWNv
bnRyb2w6IG5vLWNhY2hlCi0gICAgICAgIC8vIERvbid0IGJvdGhlciB0b2tlbml6aW5nIHRoZSB2
YWx1ZSwgaXQgaXMgbm90IGltcG9ydGFudAotICAgICAgICBTdHJpbmcgcHJhZ21hVmFsdWUgPSBo
ZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hKTsKLQotICAgICAgICByZXN1bHQubm9D
YWNoZSA9IHByYWdtYVZhbHVlLmNvbnRhaW5zKCJuby1jYWNoZSIsIGZhbHNlKTsKKyAgICAgICAg
Ly8gRG9uJ3QgYm90aGVyIHRva2VuaXppbmcgdGhlIHZhbHVlOyBoYW5kbGluZyB0aGF0IGV4YWN0
bHkgcmlnaHQgaXMgbm90IGltcG9ydGFudC4KKyAgICAgICAgcmVzdWx0Lm5vQ2FjaGUgPSBoZWFk
ZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KCJuby1jYWNoZSIpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGY2MzliODIyOTFh
YzIzNTBiYWY4Yzg2YzFjOWNiOTM0ZjIyNTc4OTkuLjA3ZmI3MThhMzExNTlmNDRmZjY5ZDIyOWIw
ZjI3Nzg1NDJkYzY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNo
KGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpCiAgICAg
ICAgICsrcG9zOwogICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCBwb3MpOwogICAgICAg
ICB1bnNpZ25lZCB1cmxTdGFydFBvcyA9IHBvczsKLSAgICAgICAgaWYgKHJlZnJlc2guZmluZCgi
dXJsIiwgdXJsU3RhcnRQb3MsIGZhbHNlKSA9PSB1cmxTdGFydFBvcykgeworICAgICAgICBpZiAo
cmVmcmVzaC5maW5kSWdub3JpbmdBU0NJSUNhc2UoInVybCIsIHVybFN0YXJ0UG9zKSA9PSB1cmxT
dGFydFBvcykgewogICAgICAgICAgICAgdXJsU3RhcnRQb3MgKz0gMzsKICAgICAgICAgICAgIHNr
aXBXaGl0ZVNwYWNlKHJlZnJlc2gsIHVybFN0YXJ0UG9zKTsKICAgICAgICAgICAgIGlmIChyZWZy
ZXNoW3VybFN0YXJ0UG9zXSA9PSAnPScpIHsKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIGZpbmRD
aGFyc2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYg
Y2hhcnNldFBvcywgdQogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1lZGlhVHlwZS5sZW5ndGgoKTsK
ICAgICAKICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHBvcyA9IG1lZGlhVHlw
ZS5maW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7CisgICAgICAgIHBvcyA9IG1lZGlhVHlwZS5m
aW5kSWdub3JpbmdBU0NJSUNhc2UoImNoYXJzZXQiLCBwb3MpOwogICAgICAgICBpZiAocG9zID09
IG5vdEZvdW5kIHx8IHBvcyA9PSAwKSB7CiAgICAgICAgICAgICBjaGFyc2V0TGVuID0gMDsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTUzMiwxMCArNTMyLDExIEBAIGJvb2wgcGFyc2VSYW5nZShj
b25zdCBTdHJpbmcmIHJhbmdlLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmIHJh
bmdlRW5kCiAgICAgcmFuZ2VPZmZzZXQgPSByYW5nZUVuZCA9IHJhbmdlU3VmZml4TGVuZ3RoID0g
LTE7CiAKICAgICAvLyBUaGUgImJ5dGVzIiB1bml0IGlkZW50aWZpZXIgc2hvdWxkIGJlIHByZXNl
bnQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZXNTdGFydFtdID0gImJ5dGVzPSI7IAotICAg
IGlmICghcmFuZ2Uuc3RhcnRzV2l0aChieXRlc1N0YXJ0LCBmYWxzZSkpCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGJ5dGVzTGVuZ3RoID0gNjsKKyAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmFuZ2UsICJieXRlcz0iKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN0cmluZyBieXRlUmFuZ2UgPSByYW5nZS5zdWJzdHJpbmcoc2l6ZW9mKGJ5dGVzU3Rh
cnQpIC0gMSk7CisgICAgLy8gRklYTUU6IFRoZSByZXN0IG9mIHRoaXMgc2hvdWxkIHVzZSBTdHJp
bmdWaWV3LgorICAgIFN0cmluZyBieXRlUmFuZ2UgPSByYW5nZS5zdWJzdHJpbmcoYnl0ZXNMZW5n
dGgpOwogCiAgICAgLy8gVGhlICctJyBjaGFyYWN0ZXIgbmVlZHMgdG8gYmUgcHJlc2VudC4KICAg
ICBpbnQgaW5kZXggPSBieXRlUmFuZ2UuZmluZCgnLScpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Jp
ZGlSdW4uY3BwCmluZGV4IGJhODNmOWMxMmI3ZjVjMzZiYjlmMzU2Nzg2NmUyNTMxMWE3ZWQzZDUu
LjRhZWNkMTk5ODEzMjkwMjBlYzU5MmRlZDE2YTY4NTg0NWYxY2FkM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQmlkaVJ1bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQmlkaVJ1bjo6QmlkaVJ1bih1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc3RvcCwgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgQmlk
aUNvbnQKICNpZm5kZWYgTkRFQlVHCiAgICAgYmlkaVJ1bkNvdW50ZXIuaW5jcmVtZW50KCk7CiAj
ZW5kaWYKLSAgICBBU1NFUlQoIWlzPFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpIHx8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdG9wKSA8PSBkb3duY2FzdDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKS50
ZXh0TGVuZ3RoKCkpOworICAgIEFTU0VSVCghaXM8UmVuZGVyVGV4dD4obV9yZW5kZXJlcikgfHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0b3ApIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KG1fcmVu
ZGVyZXIpLnRleHQoKS5sZW5ndGgoKSk7CiAgICAgLy8gU3RvcmVkIGluIGJhc2UgY2xhc3MgdG8g
c2F2ZSBzcGFjZS4KICAgICBtX2hhc0h5cGhlbiA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGFjYjllZGNjMjJlYWEwOTgxOWRlZjYx
NDczZGQ0ODFkMWE2ODlhODUuLmRlZGVmOGU1ZThjOGQwOGI3NmQ3NDQ0OGQ0OWVlNzVlNjk1MTRm
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM5
NCw3ICszOTQsNyBAQCBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25zdAog
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgaWYg
KGVsZW1lbnQuc2VydmljZVR5cGUoKSA9PSAiYXBwbGljYXRpb24vcGRmIiB8fCAoZWxlbWVudC5z
ZXJ2aWNlVHlwZSgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmVuZHNXaXRoKCIucGRmIiwgZmFs
c2UpKSkKKyAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYi
IHx8IChlbGVtZW50LnNlcnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKSkKICAgICAgICAgcmV0dXJuIHVybDsKICAgICBy
ZXR1cm4gVVJMKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKaW5kZXggNThlYjRkZDk0Zjg1MTY3NmVkMTI1NTNkZGEyMzhlM2FlYTk1MjYzZi4uNjgyOTZk
NGM0ZDhlNmVmY2YzODM5NTA3NjA4MjE3ZDY0OGIxNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIGZsb2F0IElubGlu
ZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0
Q2hpbGQsIElubGluCiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZC0+cmVuZGVyZXIo
KSkpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94
PigqY2hpbGQpOwogICAgICAgICAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IHRleHRCb3gu
cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkgewor
ICAgICAgICAgICAgaWYgKHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG5lZWRzV29yZFNwYWNpbmcgJiYgaXNTcGFjZU9yTmV3bGluZShyZW5kZXJUZXh0
LmNoYXJhY3RlckF0KHRleHRCb3guc3RhcnQoKSkpKQogICAgICAgICAgICAgICAgICAgICBsb2dp
Y2FsTGVmdCArPSB0ZXh0Qm94LmxpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkud29yZFNwYWNpbmco
KTsKICAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gIWlzU3BhY2VPck5ld2xpbmUo
cmVuZGVyVGV4dC5jaGFyYWN0ZXJBdCh0ZXh0Qm94LmVuZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IDA4ZWIyYWI4YTRhYTlmZGFiNzI3YjM3MmVh
NTVhOGYyOTQ0ZTNlY2UuLjdmNzkzNGQ3Y2M3NDZhZDY5OWI2NWVlOGZkMjNjMWJlMjQ0YTc0MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0zNDIsNyAr
MzQyLDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdEluY2x1ZGluZ0Vt
cHR5SW5saW5lcyhSZW5kZXJFbGVtZW50JiByb290KQogaW5saW5lIHZvaWQgSW5saW5lSXRlcmF0
b3I6OmZhc3RJbmNyZW1lbnRJblRleHROb2RlKCkKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7
Ci0gICAgQVNTRVJUKG1fcG9zIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50
ZXh0TGVuZ3RoKCkpOworICAgIEFTU0VSVChtX3BvcyA8PSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
bV9yZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpKTsKICAgICArK21fcG9zOwogfQogCkBAIC0zOTYs
NyArMzk2LDcgQEAgaW5saW5lIHZvaWQgSW5saW5lSXRlcmF0b3I6OmluY3JlbWVudChJbmxpbmVC
aWRpUmVzb2x2ZXIqIHJlc29sdmVyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzPFJlbmRl
clRleHQ+KCptX3JlbmRlcmVyKSkgewogICAgICAgICBmYXN0SW5jcmVtZW50SW5UZXh0Tm9kZSgp
OwotICAgICAgICBpZiAobV9wb3MgPCBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlciku
dGV4dExlbmd0aCgpKQorICAgICAgICBpZiAobV9wb3MgPCBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
bV9yZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAvLyBiaWRpTmV4dCBjYW4gcmV0dXJuIG51bGxwdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyYTE3MGE5ODNiODFmZDVkOTU0M2VlNzk4Njg5
ZDU4OTRhMDAwZDdkLi45ZDEzNDgwOWQ0MTY0ZDViMzg4NDk2YmM4MGIyNGJjZDUzZGRmMmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMTQsNyAr
MzE0LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJveDo6cGxhY2VFbGxpcHNpc0JveChib29sIGZsb3dJ
c0xUUiwgZmxvYXQgdmlzaWJsZUxlZnRFZGdlLCBmbG8KIAogYm9vbCBJbmxpbmVUZXh0Qm94Ojpp
c0xpbmVCcmVhaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5wcmVz
ZXJ2ZU5ld2xpbmUoKSAmJiBsZW4oKSA9PSAxICYmICgqcmVuZGVyZXIoKS50ZXh0KCkpW3N0YXJ0
KCldID09ICdcbic7CisgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5wcmVzZXJ2ZU5ld2xp
bmUoKSAmJiBsZW4oKSA9PSAxICYmIHJlbmRlcmVyKCkudGV4dCgpW3N0YXJ0KCldID09ICdcbic7
CiB9CiAKIGJvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIExheW91dFVuaXQgLyogbGluZVRvcCAqLywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLywK
QEAgLTYxNyw3ICs2MTcsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBJbmxpbmVU
ZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCgpIGNvbnN0CiAgICAgYXV0byBzdGFydCA9IHJlbmRl
cmVyKCkudmlldygpLnNlbGVjdGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKICAgICBhdXRvIGVuZCA9
IHJlbmRlcmVyKCkudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CiAgICAgaWYgKHNl
bGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpCi0gICAgICAgIGVu
ZCA9IHJlbmRlcmVyKCkudGV4dExlbmd0aCgpOworICAgICAgICBlbmQgPSByZW5kZXJlcigpLnRl
eHQoKS5sZW5ndGgoKTsKICAgICBlbHNlIGlmIChzZWxlY3Rpb25TdGF0ZSA9PSBSZW5kZXJPYmpl
Y3Q6OlNlbGVjdGlvbkVuZCkKICAgICAgICAgc3RhcnQgPSAwOwogICAgIHJldHVybiB7IGNsYW1w
ZWRPZmZzZXQoc3RhcnQpLCBjbGFtcGVkT2Zmc2V0KGVuZCkgfTsKQEAgLTEwODIsMTUgKzEwODIs
MTUgQEAgU3RyaW5nIElubGluZVRleHRCb3g6OnRleHQoYm9vbCBpZ25vcmVDb21iaW5lZFRleHQs
IGJvb2wgaWdub3JlSHlwaGVuKSBjb25zdAogewogICAgIGlmIChhdXRvKiBjb21iaW5lZFRleHQg
PSB0aGlzLT5jb21iaW5lZFRleHQoKSkgewogICAgICAgICBpZiAoaWdub3JlQ29tYmluZWRUZXh0
KQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudGV4dCgpLT5zdWJzdHJpbmcobV9zdGFy
dCwgbV9sZW4pOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudGV4dCgpLnN1YnN0cmlu
ZyhtX3N0YXJ0LCBtX2xlbik7CiAgICAgICAgIHJldHVybiBjb21iaW5lZFRleHQtPmNvbWJpbmVk
U3RyaW5nRm9yUmVuZGVyaW5nKCk7CiAgICAgfQogICAgIGlmIChoYXNIeXBoZW4oKSkgewogICAg
ICAgICBpZiAoaWdub3JlSHlwaGVuKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCkudGV4
dCgpLT5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4pOworICAgICAgICAgICAgcmV0dXJuIHJlbmRl
cmVyKCkudGV4dCgpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CiAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhtX3N0YXJ0
LCBtX2xlbiksIGxpbmVTdHlsZSgpLmh5cGhlblN0cmluZygpKTsKICAgICB9Ci0gICAgcmV0dXJu
IHJlbmRlcmVyKCkudGV4dCgpLT5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4pOworICAgIHJldHVy
biByZW5kZXJlcigpLnRleHQoKS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4pOwogfQogCiBpbmxp
bmUgY29uc3QgUmVuZGVyQ29tYmluZVRleHQqIElubGluZVRleHRCb3g6OmNvbWJpbmVkVGV4dCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBiOTU1
ODY5MTllNzMzMjJlMTg4ODBjMzAyODM3Nzc4ZjgzODFmNGU5Li5mNDkyZjE4MDFiY2U2MTE3NTE1
OGMwZjVlOTNmZTk1NzAzY2QyOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTM1NDgsNyArMzU0OCw3IEBAIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmCiBU
ZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmIHRl
eHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsKICAgICB1bnNpZ25lZCBzdG9w
ID0gb2Zmc2V0ICsgbGVuZ3RoOwotICAgIEFTU0VSVChzdG9wIDw9IHRleHQudGV4dExlbmd0aCgp
KTsKKyAgICBBU1NFUlQoc3RvcCA8PSB0ZXh0LnRleHQoKS5sZW5ndGgoKSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3KG9mZnNldCwgc3RvcCksIHN0eWxlLCBl
eHBhbnNpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCmluZGV4IDc5NzU3ZTc0YzY5N2Y4NjJmYTBmODY0MDhiNzkyYjJhNmNjYmRlYjYuLmIy
NmQ2NzJiYTA4YzY5YmVmOTIyYzcyYWM4ZWFkZGJlYzBiNWRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RMb2NhdGlv
bi5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKQEAgLTM2NzEsMTMgKzM2NzIsMTQgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEoKQogfQog
CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKwogc3RhdGljIGlubGluZSBib29sIGlzVmlz
aWJsZVJlbmRlclRleHQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAo
IWlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKTsKLSAgICBy
ZXR1cm4gIXJlbmRlclRleHQubGluZXNCb3VuZGluZ0JveCgpLmlzRW1wdHkoKSAmJiAhcmVuZGVy
VGV4dC50ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gIXJlbmRl
clRleHQubGluZXNCb3VuZGluZ0JveCgpLmlzRW1wdHkoKSAmJiAhcmVuZGVyVGV4dC50ZXh0KCku
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIHJlc2l6ZVRleHRQZXJtaXR0ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikK
QEAgLTM3ODcsNiArMzc4OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RDb21wdXRl
ZEZvbnRTaXplcyhmbG9hdCBzaXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpCiAgICAgICAgIGRlc2Nl
bmRhbnQgPSBSZW5kZXJPYmplY3RUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKHRleHQs
IHRoaXMpOwogICAgIH0KIH0KKwogI2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAK
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbikKQEAgLTQyNjQsMTggKzQyNjcsMTUgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWwKICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgc3RyaW5nLiBJZiB0aG9zZSBhcmUgZ29pbmcg
dG8gYmUgc3RyaXBwZWQgb3V0LAogICAgICAgICAgICAgICAgIC8vIHRoZW4gdGhleSBzaG91bGRu
J3QgYmUgY29uc2lkZXJlZCBpbiB0aGUgYnJlYWthYmxlIGNoYXIKICAgICAgICAgICAgICAgICAv
LyBjaGVjay4KLSAgICAgICAgICAgICAgICBib29sIGhhc0JyZWFrYWJsZUNoYXIsIGhhc0JyZWFr
OwotICAgICAgICAgICAgICAgIGZsb2F0IGJlZ2luTWluLCBlbmRNaW47Ci0gICAgICAgICAgICAg
ICAgYm9vbCBiZWdpbldTLCBlbmRXUzsKLSAgICAgICAgICAgICAgICBmbG9hdCBiZWdpbk1heCwg
ZW5kTWF4OwogICAgICAgICAgICAgICAgIGJvb2wgc3RyaXBwaW5nQmVnaW5XUyA9IHN0cmlwRnJv
bnRTcGFjZXM7Ci0gICAgICAgICAgICAgICAgcmVuZGVyVGV4dC50cmltbWVkUHJlZldpZHRocyhp
bmxpbmVNYXgsIGJlZ2luTWluLCBiZWdpbldTLCBlbmRNaW4sIGVuZFdTLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0JyZWFrYWJsZUNoYXIsIGhhc0JyZWFrLCBiZWdp
bk1heCwgZW5kTWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxk
TWluLCBjaGlsZE1heCwgc3RyaXBGcm9udFNwYWNlcyk7CisgICAgICAgICAgICAgICAgYXV0byB3
aWR0aHMgPSByZW5kZXJUZXh0LnRyaW1tZWRQcmVmZXJyZWRXaWR0aHMoaW5saW5lTWF4LCBzdHJp
cEZyb250U3BhY2VzKTsKKworICAgICAgICAgICAgICAgIGNoaWxkTWluID0gd2lkdGhzLm1pbjsK
KyAgICAgICAgICAgICAgICBjaGlsZE1heCA9IHdpZHRocy5tYXg7CiAKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIHRleHQgb2JqZWN0IHdpbGwgbm90IGJlIHJlbmRlcmVkLCBidXQgaXQgbWF5IHN0
aWxsIHByb3ZpZGUgYSBicmVha2luZyBvcHBvcnR1bml0eS4KLSAgICAgICAgICAgICAgICBpZiAo
IWhhc0JyZWFrICYmICFjaGlsZE1heCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0b1dy
YXAgJiYgKGJlZ2luV1MgfHwgZW5kV1MpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF3aWR0aHMu
aGFzQnJlYWsgJiYgIWNoaWxkTWF4KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvV3Jh
cCAmJiAod2lkdGhzLmJlZ2luV1MgfHwgd2lkdGhzLmVuZFdTKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRo
LCBpbmxpbmVNaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtNDI5NCwxNCArNDI5NCwxNCBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbAogICAgICAgICAgICAgICAgIGlmICghYWRkZWRUZXh0SW5kZW50IHx8IGhhc1Jl
bWFpbmluZ05lZ2F0aXZlVGV4dEluZGVudCkgewogICAgICAgICAgICAgICAgICAgICB0aSA9IHRl
eHRJbmRlbnQuY2VpbFRvRmxvYXQoKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gKz0g
dGk7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luTWluICs9IHRpOworICAgICAgICAgICAgICAg
ICAgICB3aWR0aHMuYmVnaW5NaW4gKz0gdGk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSXQg
dGhlIHRleHQgaW5kZW50IG5lZ2F0aXZlIGFuZCBsYXJnZXIgdGhhbiB0aGUgY2hpbGQgbWluaW11
bSwgd2UgcmUtdXNlIHRoZSByZW1haW5kZXIKICAgICAgICAgICAgICAgICAgICAgLy8gaW4gZnV0
dXJlIG1pbmltdW0gY2FsY3VsYXRpb25zLCBidXQgdXNpbmcgdGhlIG5lZ2F0aXZlIHZhbHVlIGFn
YWluIG9uIHRoZSBtYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgbGVhZCB0byB1
bmRlci1jb3VudGluZyB0aGUgbWF4IHByZWYgd2lkdGguCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghYWRkZWRUZXh0SW5kZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE1heCAr
PSB0aTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luTWF4ICs9IHRpOworICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4ICs9IHRpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogCkBA
IC00MzE2LDQ4ICs0MzE2LDQ4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
UHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBzdHJpcHBpbmdCZWdpbldTID8gcmVuZGVy
VGV4dC5maXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgOiAwOwogICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBoYW5nU3RhcnRXaWR0aCA9IHJlbmRlclRleHQuaGFuZ2FibGVQdW5j
dHVhdGlvblN0YXJ0V2lkdGgoc3RhcnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxk
TWluIC09IGhhbmdTdGFydFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBiZWdpbk1pbiAtPSBo
YW5nU3RhcnRXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWluIC09IGhh
bmdTdGFydFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1heCAtPSBoYW5nU3RhcnRX
aWR0aDsKLSAgICAgICAgICAgICAgICAgICAgYmVnaW5NYXggLT0gaGFuZ1N0YXJ0V2lkdGg7Cisg
ICAgICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1heCAtPSBoYW5nU3RhcnRXaWR0aDsKICAg
ICAgICAgICAgICAgICAgICAgYWRkZWRTdGFydFB1bmN0dWF0aW9uSGFuZyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmUgbm8gYnJlYWthYmxlIGNoYXJhY3RlcnMgYXQgYWxsLAogICAgICAgICAgICAgICAgIC8v
IHRoZW4gdGhpcyBpcyB0aGUgZWFzeSBjYXNlLiBXZSBhZGQgb3Vyc2VsdmVzIHRvIHRoZSBjdXJy
ZW50CiAgICAgICAgICAgICAgICAgLy8gbWluIGFuZCBtYXggYW5kIGNvbnRpbnVlLgotICAgICAg
ICAgICAgICAgIGlmICghaGFzQnJlYWthYmxlQ2hhcikKKyAgICAgICAgICAgICAgICBpZiAoIXdp
ZHRocy5oYXNCcmVha2FibGVDaGFyKQogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0g
Y2hpbGRNaW47CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIGhhdmUgYSBicmVha2FibGUgY2hhcmFjdGVyLiBOb3cgd2UgbmVlZCB0byBrbm93IGlmCiAg
ICAgICAgICAgICAgICAgICAgIC8vIHdlIHN0YXJ0IGFuZCBlbmQgd2l0aCB3aGl0ZXNwYWNlLgot
ICAgICAgICAgICAgICAgICAgICBpZiAoYmVnaW5XUykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAod2lkdGhzLmJlZ2luV1MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCB0aGUg
Y3VycmVudCBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0g
cHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBpbmxpbmVNaW4pOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluICs9IGJl
Z2luTWluOworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluICs9IHdpZHRocy5iZWdp
bk1pbjsKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJl
ZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkTWluIC09IHRpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICAgICAgaW5saW5lTWluID0gY2hpbGRNaW47CiAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGVuZFdTKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aHMuZW5kV1MpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGVuZCBpbiB3aGl0ZXNwYWNlLCB3aGljaCBtZWFucyB3
ZSBjYW4gZW5kIG91ciBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5M
b2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0ID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGgg
PSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVNaW4gPSBlbmRNaW47CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbmxpbmVNaW4gPSB3aWR0aHMuZW5kTWluOwogICAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQnJlYWtMaW5lQWZ0ZXJUZXh0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChoYXNCcmVhaykgewotICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVNYXggKz0gYmVnaW5NYXg7CisgICAgICAgICAgICAgICAgaWYg
KHdpZHRocy5oYXNCcmVhaykgeworICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggKz0gd2lk
dGhzLmJlZ2luTWF4OwogICAgICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBwcmVm
ZXJyZWRXaWR0aChtYXhMb2dpY2FsV2lkdGgsIGlubGluZU1heCk7CiAgICAgICAgICAgICAgICAg
ICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgY2hp
bGRNYXgpOwotICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggPSBlbmRNYXg7CisgICAgICAg
ICAgICAgICAgICAgIGlubGluZU1heCA9IHdpZHRocy5lbmRNYXg7CiAgICAgICAgICAgICAgICAg
ICAgIGFkZGVkVGV4dEluZGVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGFkZGVkU3Rh
cnRQdW5jdHVhdGlvbkhhbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAtNDM4
OCw4ICs0Mzg4LDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKICAgICBpZiAoc3R5bGVUb1Vz
ZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKICAgICAgICAgc3RyaXBUcmFpbGluZ1NwYWNlKGlubGlu
ZU1heCwgaW5saW5lTWluLCB0cmFpbGluZ1NwYWNlQ2hpbGQpOwogICAgIAotICAgIGlmIChjYW5I
YW5nUHVuY3R1YXRpb25BdEVuZCAmJiBsYXN0VGV4dCAmJiBsYXN0VGV4dC0+dGV4dExlbmd0aCgp
ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBlbmRJbmRleCA9IHRyYWlsaW5nU3BhY2VDaGlsZCA9
PSBsYXN0VGV4dCA/IGxhc3RUZXh0LT5sYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMo
KSA6IGxhc3RUZXh0LT50ZXh0TGVuZ3RoKCkgLSAxOworICAgIGlmIChjYW5IYW5nUHVuY3R1YXRp
b25BdEVuZCAmJiBsYXN0VGV4dCAmJiBsYXN0VGV4dC0+dGV4dCgpLmxlbmd0aCgpID4gMCkgewor
ICAgICAgICB1bnNpZ25lZCBlbmRJbmRleCA9IHRyYWlsaW5nU3BhY2VDaGlsZCA9PSBsYXN0VGV4
dCA/IGxhc3RUZXh0LT5sYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6IGxhc3RU
ZXh0LT50ZXh0KCkubGVuZ3RoKCkgLSAxOwogICAgICAgICBmbG9hdCBlbmRIYW5nV2lkdGggPSBs
YXN0VGV4dC0+aGFuZ2FibGVQdW5jdHVhdGlvbkVuZFdpZHRoKGVuZEluZGV4KTsKICAgICAgICAg
aW5saW5lTWluIC09IGVuZEhhbmdXaWR0aDsKICAgICAgICAgaW5saW5lTWF4IC09IGVuZEhhbmdX
aWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKaW5kZXggYjczNmQ0YzFkYjI3Y2ZkZTBmOTVjMjFkZTAyOWQ2OGVkMWU2ZWIwNi4u
MTEwMGI2ZmUyZmZjZDFlMmNhODEzNDAzOTU5ZDQxNDExNzczMzAxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTI0NCwx
NSArMjQ0LDEzIEBAIElubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlTGluZUJv
eGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIGJv
b2wgZW5kc1dpdGhBU0NJSVNwYWNlcyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGVuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBlbmRzV2l0aEhUTUxTcGFjZXMoY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGVuZCkKIHsKLSAg
ICB3aGlsZSAoaXNBU0NJSVNwYWNlKGNoYXJhY3RlcnNbcG9zXSkpIHsKLSAgICAgICAgcG9zKys7
Ci0gICAgICAgIGlmIChwb3MgPj0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gcG9zaXRpb247IGkgPCBlbmQ7ICsraSkgeworICAgICAgICBpZiAo
IWlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihjb25zdCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYg
YmlkaVJ1bnMpCkBAIC0yNjAsMTggKzI1OCwxNCBAQCBzdGF0aWMgYm9vbCByZWFjaGVkRW5kT2ZU
ZXh0UmVuZGVyZXIoY29uc3QgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zKQogICAgIEJp
ZGlSdW4qIHJ1biA9IGJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKTsKICAgICBpZiAoIXJ1bikK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgdW5zaWduZWQgcG9zID0gcnVuLT5zdG9wKCk7Ci0g
ICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9IHJ1bi0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIWlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KHJ1
bi0+cmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpOwotICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHJlbmRlclRleHQudGV4dExlbmd0aCgpOwotICAgIGlmIChwb3MgPj0g
bGVuZ3RoKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChyZW5kZXJUZXh0LmlzOEJp
dCgpKQotICAgICAgICByZXR1cm4gZW5kc1dpdGhBU0NJSVNwYWNlcyhyZW5kZXJUZXh0LmNoYXJh
Y3RlcnM4KCksIHBvcywgbGVuZ3RoKTsKLSAgICByZXR1cm4gZW5kc1dpdGhBU0NJSVNwYWNlcyhy
ZW5kZXJUZXh0LmNoYXJhY3RlcnMxNigpLCBwb3MsIGxlbmd0aCk7CisgICAgYXV0byYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSkudGV4dCgpOworICAgIHVuc2ln
bmVkIHBvc2l0aW9uID0gcnVuLT5zdG9wKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5s
ZW5ndGgoKTsKKyAgICBpZiAodGV4dC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVuZHNXaXRo
SFRNTFNwYWNlcyh0ZXh0LmNoYXJhY3RlcnM4KCksIHBvc2l0aW9uLCBsZW5ndGgpOworICAgIHJl
dHVybiBlbmRzV2l0aEhUTUxTcGFjZXModGV4dC5jaGFyYWN0ZXJzMTYoKSwgcG9zaXRpb24sIGxl
bmd0aCk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6Y29uc3RydWN0TGlu
ZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5m
bykKQEAgLTg4OSw3ICs4ODMsNyBAQCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCbwogICAgICAgICAg
ICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuKQog
ICAgICAgICAgICAgICAgIGNvbXB1dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKCp0aGlzLCB0ZXh0
Qm94LCBwcmV2aW91c1J1biwgcnVuLT5uZXh0KCksIHJlbmRlclRleHQuc3RyaW5nVmlldyhydW4t
Pm1fc3RhcnQsIHJ1bi0+bV9zdG9wKSwgcnVuLT5ib3goKS0+ZGlyZWN0aW9uKCkpOwogCi0gICAg
ICAgICAgICBpZiAodW5zaWduZWQgbGVuZ3RoID0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKSkgewogICAgICAgICAgICAgICAgIGlmICghcnVuLT5tX3N0YXJ0ICYmIG5lZWRzV29yZFNw
YWNpbmcgJiYgaXNTcGFjZU9yTmV3bGluZShyZW5kZXJUZXh0LmNoYXJhY3RlckF0KHJ1bi0+bV9z
dGFydCkpKQogICAgICAgICAgICAgICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBsaW5lU3R5
bGUoKnJlbmRlclRleHQucGFyZW50KCksIGxpbmVJbmZvKS5mb250Q2FzY2FkZSgpLndvcmRTcGFj
aW5nKCk7CiAgICAgICAgICAgICAgICAgLy8gcnVuLT5tX3N0YXJ0ID09IHJ1bi0+bV9zdG9wIHNo
b3VsZCBvbmx5IGJlIHRydWUgaWZmIHRoZSBydW4gaXMgYSByZXBsYWNlZCBydW4gZm9yIGJpZGk6
IGlzb2xhdGUuCkBAIC0xMDU2LDEwICsxMDUwLDEwIEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJC
bG9ja0Zsb3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRp
CiAKICAgICBjb25zdCBSZW5kZXJUZXh0JiBsYXN0VGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KGxhc3RPYmplY3QpOwogICAgIHVuc2lnbmVkIGZpcnN0U3BhY2U7Ci0gICAgaWYgKGxhc3RUZXh0
LmlzOEJpdCgpKQotICAgICAgICBmaXJzdFNwYWNlID0gZmluZEZpcnN0VHJhaWxpbmdTcGFjZShs
YXN0VGV4dCwgbGFzdFRleHQuY2hhcmFjdGVyczgoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQo
KSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKKyAgICBpZiAobGFzdFRleHQudGV4dCgpLmlz
OEJpdCgpKQorICAgICAgICBmaXJzdFNwYWNlID0gZmluZEZpcnN0VHJhaWxpbmdTcGFjZShsYXN0
VGV4dCwgbGFzdFRleHQudGV4dCgpLmNoYXJhY3RlcnM4KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0
YXJ0KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSk7CiAgICAgZWxzZQotICAgICAgICBmaXJz
dFNwYWNlID0gZmluZEZpcnN0VHJhaWxpbmdTcGFjZShsYXN0VGV4dCwgbGFzdFRleHQuY2hhcmFj
dGVyczE2KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0YXJ0KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0
b3AoKSk7CisgICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RU
ZXh0LCBsYXN0VGV4dC50ZXh0KCkuY2hhcmFjdGVyczE2KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0
YXJ0KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSk7CiAKICAgICBpZiAoZmlyc3RTcGFjZSA9
PSB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTg1NCw3ICsxODQ4LDcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93OjpkZXRlcm1p
bmVTdGFydFBvc2l0aW9uKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3QKICAgICAgICAgICAgICAg
ICBpZiAoIWRpcnRpZWRCeUZsb2F0ICYmICghcHJldlJvb3RCb3gtPmVuZHNXaXRoQnJlYWsoKQog
ICAgICAgICAgICAgICAgICAgICB8fCAhcHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpCiAgICAg
ICAgICAgICAgICAgICAgIHx8IChpczxSZW5kZXJUZXh0PigqcHJldlJvb3RCb3gtPmxpbmVCcmVh
a09iaigpKQotICAgICAgICAgICAgICAgICAgICAmJiBwcmV2Um9vdEJveC0+bGluZUJyZWFrUG9z
KCkgPj0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSku
dGV4dExlbmd0aCgpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgJiYgcHJldlJvb3RCb3gtPmxp
bmVCcmVha1BvcygpID49IGRvd25jYXN0PFJlbmRlclRleHQ+KCpwcmV2Um9vdEJveC0+bGluZUJy
ZWFrT2JqKCkpLnRleHQoKS5sZW5ndGgoKSkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBwcmV2aW91cyBsaW5lIGRpZG4ndCBicmVhayBjbGVhbmx5IG9yIGJyb2tlIGF0IGEgbmV3bGlu
ZQogICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHNvIHRyZWF0
IGl0IGFzIGRpcnR5IHRvby4KICAgICAgICAgICAgICAgICAgICAgY3VycmVudExpbmUgPSBwcmV2
Um9vdEJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21i
aW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
Y3BwCmluZGV4IDgzODZlYWYyODYzNWIzOTNmNDMwMjRkNjFlYzkzYWY2NzQ0ZGUyNGUuLjljZjRm
YjhlZGMyYTI1ODczN2Q0MzAwNjE3ZjhlOWIzNjIxODZlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0SWZOZWVkZWQoKQogICAgIAogICAgIEds
eXBoT3ZlcmZsb3cgZ2x5cGhPdmVyZmxvdzsKICAgICBnbHlwaE92ZXJmbG93LmNvbXB1dGVCb3Vu
ZHMgPSB0cnVlOwotICAgIGZsb2F0IGNvbWJpbmVkVGV4dFdpZHRoID0gd2lkdGgoMCwgdGV4dExl
bmd0aCgpLCBob3Jpem9udGFsRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOworICAg
IGZsb2F0IGNvbWJpbmVkVGV4dFdpZHRoID0gd2lkdGgoMCwgdGV4dCgpLmxlbmd0aCgpLCBob3Jp
em9udGFsRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOwogCiAgICAgZmxvYXQgYmVz
dEZpdERlbHRhID0gY29tYmluZWRUZXh0V2lkdGggLSBlbVdpZHRoOwogICAgIGF1dG8gYmVzdEZp
dERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBSZW5k
ZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgpCiAgICAgICAgICAgICBjb21wcmVz
c2VkRm9udC51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Z2x5cGhPdmVyZmxvdy5sZWZ0ID0gZ2x5cGhPdmVyZmxvdy50b3AgPSBnbHlwaE92ZXJmbG93LnJp
Z2h0ID0gZ2x5cGhPdmVyZmxvdy5ib3R0b20gPSAwOwotICAgICAgICAgICAgZmxvYXQgcnVuV2lk
dGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGNvbXByZXNzZWRGb250LCAw
LCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9
IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHQoKS5sZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAs
IG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKICAgICAgICAgICAgIGlmIChydW5XaWR0aCA8PSBl
bVdpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29tYmluZWRUZXh0V2lkdGggPSBydW5XaWR0aDsK
ICAgICAgICAgICAgICAgICBtX2lzQ29tYmluZWQgPSB0cnVlOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0SWZOZWVkZWQoKQogICAgICAgICAg
ICAgY29tcHJlc3NlZEZvbnQudXBkYXRlKGZvbnRTZWxlY3Rvcik7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGdseXBoT3ZlcmZsb3cudG9wID0gZ2x5cGhP
dmVyZmxvdy5yaWdodCA9IGdseXBoT3ZlcmZsb3cuYm90dG9tID0gMDsKLSAgICAgICAgICAgIGZs
b2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dExlbmd0aCgpLCBjb21wcmVz
c2VkRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOworICAgICAgICAgICAgZmxvYXQg
cnVuV2lkdGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0KCkubGVuZ3RoKCksIGNvbXByZXNz
ZWRGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CiAgICAgICAgICAgICBpZiAocnVu
V2lkdGggPD0gZW1XaWR0aCkgewogICAgICAgICAgICAgICAgIGNvbWJpbmVkVGV4dFdpZHRoID0g
cnVuV2lkdGg7CiAgICAgICAgICAgICAgICAgbV9pc0NvbWJpbmVkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDU5OGZhZTljMzM0NTUwZTViYTk4
NDM3ODUyOWFkNDVkNmY4YjA4NzkuLjI0MDc3ZjIwNGFiZGQwOGU3NzZiYmIwZWU5ZTAxZDdhNzJi
NzczNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNzYs
NiArNzYsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5o
IgpAQCAtNjQ0Nyw3ICs2NDQ4LDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lTm9uTGF5ZXJEZXNj
ZW5kYW50c1BhaW50ZWRDb250ZW50KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmQKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnVzZXJTZWxlY3QoKSAhPSBTRUxFQ1RfTk9ORSkKICAg
ICAgICAgICAgICAgICByZXF1ZXN0LnNldEhhc1BhaW50ZWRDb250ZW50KCk7CiAKLSAgICAgICAg
ICAgIGlmICghcmVuZGVyVGV4dC50ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkgewor
ICAgICAgICAgICAgaWYgKCFyZW5kZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzSFRNTFNwYWNlPigpKSB7CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIYXNQYWludGVk
Q29udGVudCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QubmVlZFRvRGV0ZXJtaW5l
U3VicGl4ZWxBbnRpYWxpYXNlZFRleHRTdGF0ZSgpICYmIHN0eWxlSGFzU21vb3RoaW5nVGV4dE1v
ZGUoY2hpbGQuc3R5bGUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKaW5kZXggMDM2MGNkN2U2Y2ZlNjVlODU5NWVhMWViMTFiODJmYzBiMjc5YTlhYS4uNGM0
ZDlhYmNiNTNhMzI2NmFjYWI5NjAzMjkzMzNhNjE3OTZlYTg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMTE2LDM4ICsxMTYsNDYgQEAgSFRNTFNl
bGVjdEVsZW1lbnQmIFJlbmRlckxpc3RCb3g6OnNlbGVjdEVsZW1lbnQoKSBjb25zdAogICAgIHJl
dHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsK
IH0KIAorc3RhdGljIEZvbnRDYXNjYWRlIGJvbGRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250KQoreworICAgIGF1dG8gZGVzY3JpcHRpb24gPSBmb250LmZvbnRE
ZXNjcmlwdGlvbigpOworICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChkZXNjcmlwdGlvbi5ib2xk
ZXJXZWlnaHQoKSk7CisgICAgYXV0byByZXN1bHQgPSBGb250Q2FzY2FkZSB7IGRlc2NyaXB0aW9u
LCBmb250LmxldHRlclNwYWNpbmcoKSwgZm9udC53b3JkU3BhY2luZygpIH07CisgICAgcmVzdWx0
LnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIHZvaWQgUmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIGlmICht
X29wdGlvbnNDaGFuZ2VkKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBs
aXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7Ci0gICAgICAgIGludCBzaXpl
ID0gbnVtSXRlbXMoKTsKLSAgICAgICAgCiAgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOworICAgICAgICBhdXRvJiBub3JtYWxGb250ID0g
c3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRl
PiBib2xkRm9udDsKKyAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogc2VsZWN0RWxlbWVudCgp
Lmxpc3RJdGVtcygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGV4dDsKLSAgICAgICAgICAgIEZv
bnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgICAgICAgICAg
V1RGOjpGdW5jdGlvbjxjb25zdCBGb250Q2FzY2FkZSYoKT4gc2VsZWN0Rm9udCA9IFsmbm9ybWFs
Rm9udF0gKCkgLT4gY29uc3QgRm9udENhc2NhZGUmIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9ybWFsRm9udDsKKyAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KCplbGVtZW50KSkKICAgICAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRN
TE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVs
KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVu
dCkpIHsKICAgICAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVu
dD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBkZXNj
cmlwdGlvbiA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9uLnNldFdlaWdodChkZXNjcmlwdGlvbi5ib2xkZXJXZWlnaHQoKSk7Ci0gICAgICAg
ICAgICAgICAgaXRlbUZvbnQgPSBGb250Q2FzY2FkZShkZXNjcmlwdGlvbiwgaXRlbUZvbnQubGV0
dGVyU3BhY2luZygpLCBpdGVtRm9udC53b3JkU3BhY2luZygpKTsKLSAgICAgICAgICAgICAgICBp
dGVtRm9udC51cGRhdGUoJmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
YXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7Ci0gICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IENhbid0IHRleHQgZGlyZWN0aW9uIGFm
ZmVjdCB0aGUgd2lkdGg/Ci0gICAgICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3Ry
dWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICAg
ICAgICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKLSAg
ICAgICAgICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4KHdpZHRoLCB0ZXh0V2lkdGgpOworICAgICAg
ICAgICAgICAgIHNlbGVjdEZvbnQgPSBbdGhpcywgJm5vcm1hbEZvbnQsICZib2xkRm9udF0gKCkg
LT4gY29uc3QgRm9udENhc2NhZGUmIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFib2xkRm9u
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvbGRGb250ID0gYm9sZGVyKGRvY3VtZW50KCks
IG5vcm1hbEZvbnQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm9sZEZvbnQudmFsdWUo
KTsKKyAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRl
eHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGV4
dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCB0ZXh0LCAnICcpOworICAgICAgICAgICAg
YXV0byB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpLCBBbGxvd1RyYWls
aW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIHNlbGVj
dEZvbnQoKS53aWR0aCh0ZXh0UnVuKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9vcHRpb25zV2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKHdpZHRoKSk7CisgICAgICAgIC8vIEZJWE1FOiBJ
cyBjZWlsaW5nIHJpZ2h0IGhlcmUsIG9yIHNob3VsZCB3ZSBiZSBkb2luZyBzb21lIGtpbmQgb2Yg
cm91bmRpbmcgaW5zdGVhZD8KKyAgICAgICAgbV9vcHRpb25zV2lkdGggPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6Y2VpbCh3aWR0aCkpOwogICAgICAgICBtX29wdGlvbnNDaGFuZ2VkID0gZmFsc2U7
Ci0gICAgICAgIAorCiAgICAgICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHRydWUpOwogCiAg
ICAgICAgIGNvbXB1dGVGaXJzdEluZGV4ZXNWaXNpYmxlSW5QYWRkaW5nVG9wQm90dG9tQXJlYXMo
KTsKQEAgLTQxMiw3ICs0MjAsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVn
cm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBp
dGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS50
ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiAgICAgZWxzZSBpZiAoaXM8SFRNTE9w
dEdyb3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkpCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93
bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuZ3JvdXBMYWJlbFRl
eHQoKTsKLSAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcgJyk7Cisg
ICAgaXRlbVRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcgJyk7
CiAKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYgZG93bmNhc3Q8
SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDhhZWE3MzNlYmZh
NjdhMjZkZDBhZmM5N2RhMDNkOWYwNDdhZTcxMGQuLjIzNGE3Yzg5MjliZjAxZTA2ZDljZDRiMzNk
NmMxYjVlMmY1M2UzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElu
bmVyU3R5bGUoKQogICAgICAgICAvLyBJdGVtcyBpbiB0aGUgcG9wdXAgd2lsbCBub3QgcmVzcGVj
dCB0aGUgQ1NTIHRleHQtYWxpZ24gYW5kIGRpcmVjdGlvbiBwcm9wZXJ0aWVzLAogICAgICAgICAv
LyBzbyB3ZSBtdXN0IGFkanVzdCBvdXIgb3duIHN0eWxlIHRvIG1hdGNoLgogICAgICAgICBpbm5l
clN0eWxlLnNldFRleHRBbGlnbihMRUZUKTsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLT5kZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRl
eHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBSVEwg
OiBMVFI7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgp
LnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkgewpAQCAt
MjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCgp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJpbmcgdGV4dCA9IGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBM
YWJlbCgpOwotICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsK
KyAgICAgICAgdGV4dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCB0ZXh0LCAnICcpOwog
ICAgICAgICBpZiAodGhlbWUoKS5wb3B1cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpKSB7CiAg
ICAgICAgICAgICAvLyBBZGQgaW4gdGhlIG9wdGlvbidzIHRleHQgaW5kZW50LiAgV2UgY2FuJ3Qg
Y2FsY3VsYXRlIHBlcmNlbnRhZ2UgdmFsdWVzIGZvciBub3cuCiAgICAgICAgICAgICBmbG9hdCBv
cHRpb25XaWR0aCA9IDA7CkBAIC00NDYsMTkgKzQ0NiwxOCBAQCB2b2lkIFJlbmRlck1lbnVMaXN0
OjpkaWRVcGRhdGVBY3RpdmVPcHRpb24oaW50IG9wdGlvbkluZGV4KQogCiBTdHJpbmcgUmVuZGVy
TWVudUxpc3Q6Oml0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIHsKLSAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVudCgpLmxpc3RJ
dGVtcygpOworICAgIGF1dG8mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMo
KTsKICAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIFN0cmluZyBpdGVtU3RyaW5nOwotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKLSAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVu
dD4oKmVsZW1lbnQpKQotICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdEdyb3Vw
RWxlbWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7Ci0gICAgZWxzZSBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgaXRlbVN0cmluZyA9IGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBM
YWJlbCgpOwotCi0gICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIGl0ZW1TdHJpbmcsICcg
Jyk7Ci0gICAgcmV0dXJuIGl0ZW1TdHJpbmc7CisgICAgYXV0byYgZWxlbWVudCA9ICpsaXN0SXRl
bXNbbGlzdEluZGV4XTsKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkp
CisgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVt
ZW50KS5ncm91cExhYmVsVGV4dCgpOworICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSkKKyAgICAgICAgaXRlbVN0cmluZyA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CisKKyAgICBy
ZXR1cm4gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIGl0ZW1TdHJpbmcsICcgJyk7CiB9CiAK
IFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbUxhYmVsKHVuc2lnbmVkKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGQyY2RmNDI0ZDA3NjJkZmYwMmY5
MmZlMDlhNDAyOTA2ZDA5OTIyMWMuLjU2M2QyY2EzODJlY2RlZTZjYmYyMmJlZjFhMTI1N2RiMzZm
YWNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJIeXBoZW5hdGlvbi5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJSYW5nZS5oIgpAQCAtNDYsMTMgKzQ3LDEzIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTE0MSwzMiArMTQyLDMyIEBAIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRlclRl
eHQqLCBXZWFrUHRyPFJlbmRlcklubGluZT4+JiBpbmxpbmVXcmFwcGVyRm9yRGlzcGxhCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotdm9pZCBtYWtlQ2FwaXRhbGl6ZWQoU3RyaW5nKiBzdHJpbmcsIFVD
aGFyIHByZXZpb3VzKQorU3RyaW5nIGNhcGl0YWxpemUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFVD
aGFyIHByZXZpb3VzQ2hhcmFjdGVyKQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGNoYW5nZSB0
aGlzIHRvIHVzZSB1X3N0clRvVGl0bGUgaW5zdGVhZCBvZiB1X3RvdGl0bGUgYW5kIHRvIGNvbnNp
ZGVyIGxvY2FsZS4KIAotICAgIGlmIChzdHJpbmctPmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
CisgICAgaWYgKHN0cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKIAotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7Ci0gICAgY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nSW1wbCA9ICpzdHJpbmctPmltcGwoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoKCk7CisgICAgYXV0byYgc3RyaW5nSW1wbCA9ICpzdHJpbmcuaW1wbCgpOwog
CiAgICAgaWYgKGxlbmd0aCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIENSQVNIKCk7CiAKICAgICBTdHJpbmdCdWZmZXI8VUNoYXI+IHN0cmluZ1dpdGhQ
cmV2aW91cyhsZW5ndGggKyAxKTsKLSAgICBzdHJpbmdXaXRoUHJldmlvdXNbMF0gPSBwcmV2aW91
cyA9PSBub0JyZWFrU3BhY2UgPyAnICcgOiBwcmV2aW91czsKKyAgICBzdHJpbmdXaXRoUHJldmlv
dXNbMF0gPSBwcmV2aW91c0NoYXJhY3RlciA9PSBub0JyZWFrU3BhY2UgPyAnICcgOiBwcmV2aW91
c0NoYXJhY3RlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbGVuZ3RoICsgMTsgaSsr
KSB7Ci0gICAgICAgIC8vIFJlcGxhY2UgJm5ic3Agd2l0aCBhIHJlYWwgc3BhY2Ugc2luY2UgSUNV
IG5vIGxvbmdlciB0cmVhdHMgJm5ic3AgYXMgYSB3b3JkIHNlcGFyYXRvci4KKyAgICAgICAgLy8g
UmVwbGFjZSBOTyBCUkVBSyBTUEFDRSB3aXRoIGEgcmVhbCBzcGFjZSBzaW5jZSBJQ1UgZG9lcyBu
b3QgdHJlYXQgaXQgYXMgYSB3b3JkIHNlcGFyYXRvci4KICAgICAgICAgaWYgKHN0cmluZ0ltcGxb
aSAtIDFdID09IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIHN0cmluZ1dpdGhQcmV2aW91c1tp
XSA9ICcgJzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RyaW5nV2l0aFByZXZpb3VzW2ld
ID0gc3RyaW5nSW1wbFtpIC0gMV07CiAgICAgfQogCi0gICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5k
YXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmdXaXRoUHJldmlvdXMuY2hh
cmFjdGVycygpLCBsZW5ndGggKyAxKSk7CisgICAgYXV0byogYm91bmRhcnkgPSB3b3JkQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJzKCksIGxlbmd0
aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBzdHJpbmc7CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVz
ZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CkBAIC0xODAsNyArMTgxLDcgQEAgdm9pZCBtYWtlQ2FwaXRh
bGl6ZWQoU3RyaW5nKiBzdHJpbmcsIFVDaGFyIHByZXZpb3VzKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdHJpbmdJbXBsW2kgLSAxXSk7CiAgICAgfQogCi0gICAgKnN0cmluZyA9IHJlc3Vs
dC50b1N0cmluZygpOworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogaW5saW5l
IFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQpA
QCAtMTg4LDI0ICsxODksMTcgQEAgaW5saW5lIFJlbmRlclRleHQ6OlJlbmRlclRleHQoTm9kZSYg
bm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgICwgbV9oYXNUYWIoZmFsc2UpCiAgICAgLCBt
X2xpbmVzRGlydHkoZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zUmV2ZXJzZWRUZXh0KGZhbHNlKQot
ICAgICwgbV9pc0FsbEFTQ0lJKHRleHQuY29udGFpbnNPbmx5QVNDSUkoKSkKKyAgICAsIG1faXNB
bGxBU0NJSSh0ZXh0LmltcGwoKS0+aXNBbGxBU0NJSSgpKQogICAgICwgbV9rbm93blRvSGF2ZU5v
T3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMoZmFsc2UpCiAgICAgLCBtX3VzZUJhY2tzbGFzaEFz
WWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9vcmlnaW5hbFRleHREaWZmZXJzRnJvbVJlbmRlcmVk
KGZhbHNlKQogICAgICwgbV9oYXNJbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKGZhbHNl
KQotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgLCBtX2NhbmRpZGF0ZUNvbXB1dGVk
VGV4dFNpemUoMCkKLSNlbmRpZgotICAgICwgbV9taW5XaWR0aCgtMSkKLSAgICAsIG1fbWF4V2lk
dGgoLTEpCi0gICAgLCBtX2JlZ2luTWluV2lkdGgoMCkKLSAgICAsIG1fZW5kTWluV2lkdGgoMCkK
ICAgICAsIG1fdGV4dCh0ZXh0KQogewogICAgIEFTU0VSVCghbV90ZXh0LmlzTnVsbCgpKTsKICAg
ICBzZXRJc1RleHQoKTsKICAgICBtX2NhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1dGVD
YW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKTsKLSAgICB2aWV3KCkuZnJhbWVWaWV3KCkuaW5jcmVt
ZW50VmlzdWFsbHlOb25FbXB0eUNoYXJhY3RlckNvdW50KHRleHRMZW5ndGgoKSk7CisgICAgdmll
dygpLmZyYW1lVmlldygpLmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlDaGFyYWN0ZXJDb3VudCh0
ZXh0LmltcGwoKS0+bGVuZ3RoKCkpOwogfQogCiBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KFRleHQm
IHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCkBAIC00NjAsNyArNDU0LDcgQEAgUG9zaXRp
b24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQp
CiAgICAgaWYgKHNpbXBsZUxpbmVMYXlvdXQoKSAmJiBwYXJlbnQoKS0+Zmlyc3RDaGlsZCgpID09
IHBhcmVudCgpLT5sYXN0Q2hpbGQoKSkgewogICAgICAgICBhdXRvIG9mZnNldCA9IFNpbXBsZUxp
bmVMYXlvdXQ6OnRleHRPZmZzZXRGb3JQb2ludChwb2ludCwgKnRoaXMsICpzaW1wbGVMaW5lTGF5
b3V0KCkpOwogICAgICAgICAvLyBEaWQgbm90IGZpbmQgYSB2YWxpZCBvZmZzZXQuIEZhbGwgYmFj
ayB0byB0aGUgbm9ybWFsIGxpbmUgbGF5b3V0IGJhc2VkIFBvc2l0aW9uLgotICAgICAgICBpZiAo
b2Zmc2V0ID09IHRleHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKG9mZnNldCA9PSB0ZXh0KCkubGVu
Z3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0
cikuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IFBvc2l0aW9uKHRl
eHROb2RlKCksIG9mZnNldCk7CiAgICAgICAgIEFTU0VSVChwb3NpdGlvbiA9PSBwb3NpdGlvbkZv
clBvaW50KHBvaW50LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpKTsKQEAgLTQ5NywxMCArNDkx
LDggQEAgQUxXQVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25z
dCBGb250Q2FzY2FkZSYgZiwgdW5zaWduZWQgc3QKICAgICAgICAgZmxvYXQgbW9ub3NwYWNlQ2hh
cmFjdGVyV2lkdGggPSBmLnNwYWNlV2lkdGgoKTsKICAgICAgICAgZmxvYXQgdyA9IDA7CiAgICAg
ICAgIGJvb2wgaXNTcGFjZTsKLSAgICAgICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgICAgIFN0cmlu
Z0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
c3RhcnQ7IGkgPCBzdGFydCArIGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBjaGFyIGMgPSB0ZXh0
W2ldOworICAgICAgICAgICAgY2hhciBjID0gdGV4dCgpW2ldOwogICAgICAgICAgICAgaWYgKGMg
PD0gJyAnKSB7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1xuJykgewog
ICAgICAgICAgICAgICAgICAgICB3ICs9IG1vbm9zcGFjZUNoYXJhY3RlcldpZHRoOwpAQCAtNTQ0
LDQxICs1MzYsMzEgQEAgaW5saW5lIGJvb2wgaXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRMaW5lRW5k
KFVDaGFyIGMpCiAKIGZsb2F0IFJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdp
ZHRoKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5n
dGgoKTsKLSAgICBpZiAoIWxlbiB8fCBpbmRleCA+PSBsZW4pCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGV4dCgpLmxlbmd0aCgpOworICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICpt
X3RleHQuaW1wbCgpOwotICAgIAotICAgIGlmICghaXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRMaW5l
U3RhcnQodGV4dFtpbmRleF0pKQorICAgIGlmICghaXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRMaW5l
U3RhcnQodGV4dCgpW2luZGV4XSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgIAotICAgIHJldHVybiB3aWR0aEZy
b21DYWNoZShmb250LCBpbmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOworICAgIGF1dG8mIHN0eWxl
ID0gdGhpcy0+c3R5bGUoKTsKKyAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUoc3R5bGUuZm9udENh
c2NhZGUoKSwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKIH0KIAogZmxvYXQgUmVuZGVyVGV4
dDo6aGFuZ2FibGVQdW5jdHVhdGlvbkVuZFdpZHRoKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewot
ICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5ndGgoKTsKLSAgICBpZiAoIWxlbiB8fCBpbmRleCA+
PSBsZW4pCisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dCgpLmxlbmd0aCgpOworICAgIGlmIChp
bmRleCA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIEFTU0VSVChtX3Rl
eHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKIAotICAgIGlmICgh
aXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRMaW5lRW5kKHRleHRbaW5kZXhdKSkKKyAgICBpZiAoIWlz
SGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZUVuZCh0ZXh0KClbaW5kZXhdKSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUo
KTsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7Ci0g
ICAgCi0gICAgcmV0dXJuIHdpZHRoRnJvbUNhY2hlKGZvbnQsIGluZGV4LCAxLCAwLCAwLCAwLCBz
dHlsZSk7CisKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CisgICAgcmV0dXJuIHdp
ZHRoRnJvbUNhY2hlKHN0eWxlLmZvbnRDYXNjYWRlKCksIGluZGV4LCAxLCAwLCAwLCAwLCBzdHls
ZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGV4dDo6aXNIYW5nYWJsZVN0b3BPckNvbW1hKFVDaGFyIGMp
IGNvbnN0Citib29sIFJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hhciBjKQog
ewogICAgIHJldHVybiBjID09IDB4MDAyQyB8fCBjID09IDB4MDAyRSB8fCBjID09IDB4MDYwQyB8
fCBjID09IDB4MDZENCB8fCBjID09IDB4MzAwMQogICAgICAgICB8fCBjID09IDB4MzAwMiB8fCBj
ID09IDB4RkYwQyB8fCBjID09IDB4RkYwRSB8fCBjID09IDB4RkU1MCB8fCBjID09IDB4RkU1MQpA
QCAtNTg5LDEzICs1NzEsMTAgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Zmlyc3RDaGFyYWN0ZXJJ
bmRleFN0cmlwcGluZ1NwYWNlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLmNvbGxhcHNl
V2hpdGVTcGFjZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBBU1NFUlQobV90ZXh0
KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgCisKICAgICB1
bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKCA7IGkgPCB0ZXh0TGVuZ3RoKCk7ICsraSkgewotICAg
ICAgICBpZiAodGV4dFtpXSAhPSAnICcgJiYgKHRleHRbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnBy
ZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0W2ldICE9ICdcdCcpCisgICAgZm9yICh1bnNpZ25lZCBs
ZW5ndGggPSB0ZXh0KCkubGVuZ3RoKCkgOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYg
KHRleHQoKVtpXSAhPSAnICcgJiYgKHRleHQoKVtpXSAhPSAnXG4nIHx8IHN0eWxlKCkucHJlc2Vy
dmVOZXdsaW5lKCkpICYmIHRleHQoKVtpXSAhPSAnXHQnKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIHJldHVybiBpOwpAQCAtNjAzLDExMCArNTgyLDk3IEBAIHVuc2lnbmVkIFJlbmRl
clRleHQ6OmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25zdAogCiB1bnNp
Z25lZCBSZW5kZXJUZXh0OjpsYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25z
dAogewotICAgIGlmICghdGV4dExlbmd0aCgpKQorICAgIGlmICghdGV4dCgpLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSkKLSAgICAgICAgcmV0dXJuIHRleHRMZW5ndGgoKSAtIDE7Ci0gICAgCi0gICAgQVNTRVJUKG1f
dGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOworICAgICAgICBy
ZXR1cm4gdGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICAKLSAgICBpbnQgaSA9IHRleHRMZW5ndGgo
KSAtIDE7CisgICAgaW50IGkgPSB0ZXh0KCkubGVuZ3RoKCkgLSAxOwogICAgIGZvciAoIDsgaSAg
Pj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmICh0ZXh0W2ldICE9ICcgJyAmJiAodGV4dFtpXSAhPSAn
XG4nIHx8IHN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCkpICYmIHRleHRbaV0gIT0gJ1x0JykKKyAg
ICAgICAgaWYgKHRleHQoKVtpXSAhPSAnICcgJiYgKHRleHQoKVtpXSAhPSAnXG4nIHx8IHN0eWxl
KCkucHJlc2VydmVOZXdsaW5lKCkpICYmIHRleHQoKVtpXSAhPSAnXHQnKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIHJldHVybiBpOwogfQogCi12b2lkIFJlbmRlclRleHQ6OnRyaW1t
ZWRQcmVmV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQmIGJlZ2luTWluVywgYm9vbCYgYmVnaW5XUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGVuZE1pblcsIGJvb2wmIGVuZFdTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBoYXNCcmVha2FibGVDaGFyLCBib29s
JiBoYXNCcmVhaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGJl
Z2luTWF4VywgZmxvYXQmIGVuZE1heFcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0JiBtaW5XLCBmbG9hdCYgbWF4VywgYm9vbCYgc3RyaXBGcm9udFNwYWNlcykKK1Jl
bmRlclRleHQ6OldpZHRocyBSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVycmVkV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCwgYm9vbCYgc3RyaXBGcm9udFNwYWNlcykKIHsKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIGF1dG8mIHN0eWxlID0gdGhpcy0+c3R5
bGUoKTsKICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSA9IHN0eWxlLmNvbGxhcHNlV2hpdGVT
cGFjZSgpOworCiAgICAgaWYgKCFjb2xsYXBzZVdoaXRlU3BhY2UpCiAgICAgICAgIHN0cmlwRnJv
bnRTcGFjZXMgPSBmYWxzZTsKIAogICAgIGlmIChtX2hhc1RhYiB8fCBwcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzRGlydHkoKSkKICAgICAgICAgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMobGVh
ZFdpZHRoKTsKIAotICAgIGJlZ2luV1MgPSAhc3RyaXBGcm9udFNwYWNlcyAmJiBtX2hhc0JlZ2lu
V1M7Ci0gICAgZW5kV1MgPSBtX2hhc0VuZFdTOworICAgIFdpZHRocyB3aWR0aHM7CiAKLSAgICB1
bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgd2lkdGhzLmJlZ2luV1MgPSAhc3RyaXBG
cm9udFNwYWNlcyAmJiBtX2hhc0JlZ2luV1M7CisgICAgd2lkdGhzLmVuZFdTID0gbV9oYXNFbmRX
UzsKIAotICAgIGlmICghbGVuIHx8IChzdHJpcEZyb250U3BhY2VzICYmIHRleHQoKS0+Y29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpKSkgewotICAgICAgICBiZWdpbk1pblcgPSAwOwotICAgICAgICBl
bmRNaW5XID0gMDsKLSAgICAgICAgYmVnaW5NYXhXID0gMDsKLSAgICAgICAgZW5kTWF4VyA9IDA7
Ci0gICAgICAgIG1pblcgPSAwOwotICAgICAgICBtYXhXID0gMDsKLSAgICAgICAgaGFzQnJlYWsg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aGlzLT5sZW5ndGgoKTsKIAotICAgIG1pblcgPSBtX21pbldpZHRoOwotICAgIG1heFcgPSBtX21h
eFdpZHRoOworICAgIGlmICghbGVuZ3RoIHx8IChzdHJpcEZyb250U3BhY2VzICYmIHRleHQoKS5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpKSkKKyAgICAgICAgcmV0dXJuIHdp
ZHRoczsKIAotICAgIGJlZ2luTWluVyA9IG1fYmVnaW5NaW5XaWR0aDsKLSAgICBlbmRNaW5XID0g
bV9lbmRNaW5XaWR0aDsKKyAgICB3aWR0aHMubWluID0gbV9taW5XaWR0aDsKKyAgICB3aWR0aHMu
bWF4ID0gbV9tYXhXaWR0aDsKIAotICAgIGhhc0JyZWFrYWJsZUNoYXIgPSBtX2hhc0JyZWFrYWJs
ZUNoYXI7Ci0gICAgaGFzQnJlYWsgPSBtX2hhc0JyZWFrOworICAgIHdpZHRocy5iZWdpbk1pbiA9
IG1fYmVnaW5NaW5XaWR0aDsKKyAgICB3aWR0aHMuZW5kTWluID0gbV9lbmRNaW5XaWR0aDsKIAot
ICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwo
KTsKLSAgICBpZiAodGV4dFswXSA9PSBzcGFjZSB8fCAodGV4dFswXSA9PSBuZXdsaW5lQ2hhcmFj
dGVyICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgdGV4dFswXSA9PSAnXHQnKSB7Ci0g
ICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8g
RklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgotICAgICAgICBpZiAoc3RyaXBGcm9udFNw
YWNlcykgewotICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBzdHlsZSkpOwotICAgICAgICAgICAg
bWF4VyAtPSBzcGFjZVdpZHRoOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1heFcgKz0g
Zm9udC53b3JkU3BhY2luZygpOworICAgIHdpZHRocy5oYXNCcmVha2FibGVDaGFyID0gbV9oYXNC
cmVha2FibGVDaGFyOworICAgIHdpZHRocy5oYXNCcmVhayA9IG1faGFzQnJlYWs7CisKKyAgICBp
ZiAodGV4dCgpWzBdID09ICcgJyB8fCAodGV4dCgpWzBdID09ICdcbicgJiYgIXN0eWxlLnByZXNl
cnZlTmV3bGluZSgpKSB8fCB0ZXh0KClbMF0gPT0gJ1x0JykgeworICAgICAgICBhdXRvJiBmb250
ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5l
LgorICAgICAgICBpZiAoc3RyaXBGcm9udFNwYWNlcykKKyAgICAgICAgICAgIHdpZHRocy5tYXgg
LT0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmc3BhY2UsIDEsIHN0
eWxlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdpZHRocy5tYXggKz0gZm9udC53b3Jk
U3BhY2luZygpOwogICAgIH0KIAogICAgIHN0cmlwRnJvbnRTcGFjZXMgPSBjb2xsYXBzZVdoaXRl
U3BhY2UgJiYgbV9oYXNFbmRXUzsKIAotICAgIGlmICghc3R5bGUuYXV0b1dyYXAoKSB8fCBtaW5X
ID4gbWF4VykKLSAgICAgICAgbWluVyA9IG1heFc7CisgICAgaWYgKCFzdHlsZS5hdXRvV3JhcCgp
KQorICAgICAgICB3aWR0aHMubWluID0gc3RkOjptaW4od2lkdGhzLm1pbiwgd2lkdGhzLm1heCk7
CiAKICAgICAvLyBDb21wdXRlIG91ciBtYXggd2lkdGhzIGJ5IHNjYW5uaW5nIHRoZSBzdHJpbmcg
Zm9yIG5ld2xpbmVzLgotICAgIGlmIChoYXNCcmVhaykgewotICAgICAgICBjb25zdCBGb250Q2Fz
Y2FkZSYgZiA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmly
c3QtbGluZS4KKyAgICBpZiAod2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAgIGF1dG8mIGZvbnQg
PSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUu
CiAgICAgICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICAgICAgYmVnaW5NYXhXID0gbWF4
VzsKLSAgICAgICAgZW5kTWF4VyA9IG1heFc7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgdW5zaWduZWQgbGluZWxlbiA9IDA7Ci0gICAg
ICAgICAgICB3aGlsZSAoaSArIGxpbmVsZW4gPCBsZW4gJiYgdGV4dFtpICsgbGluZWxlbl0gIT0g
J1xuJykKLSAgICAgICAgICAgICAgICBsaW5lbGVuKys7Ci0KLSAgICAgICAgICAgIGlmIChsaW5l
bGVuKSB7Ci0gICAgICAgICAgICAgICAgZW5kTWF4VyA9IHdpZHRoRnJvbUNhY2hlKGYsIGksIGxp
bmVsZW4sIGxlYWRXaWR0aCArIGVuZE1heFcsIDAsIDAsIHN0eWxlKTsKKyAgICAgICAgd2lkdGhz
LmJlZ2luTWF4ID0gd2lkdGhzLm1heDsKKyAgICAgICAgd2lkdGhzLmVuZE1heCA9IHdpZHRocy5t
YXg7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgdW5zaWduZWQgbGluZUxlbmd0aCA9IDA7CisgICAgICAgICAgICB3aGlsZSAoaSAr
IGxpbmVMZW5ndGggPCBsZW5ndGggJiYgdGV4dCgpW2kgKyBsaW5lTGVuZ3RoXSAhPSAnXG4nKQor
ICAgICAgICAgICAgICAgIGxpbmVMZW5ndGgrKzsKKworICAgICAgICAgICAgaWYgKGxpbmVMZW5n
dGgpIHsKKyAgICAgICAgICAgICAgICB3aWR0aHMuZW5kTWF4ID0gd2lkdGhGcm9tQ2FjaGUoZm9u
dCwgaSwgbGluZUxlbmd0aCwgbGVhZFdpZHRoICsgd2lkdGhzLmVuZE1heCwgMCwgMCwgc3R5bGUp
OwogICAgICAgICAgICAgICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAgICAgICAgICAgICAg
Zmlyc3RMaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGxlYWRXaWR0aCA9IDA7Ci0g
ICAgICAgICAgICAgICAgICAgIGJlZ2luTWF4VyA9IGVuZE1heFc7CisgICAgICAgICAgICAgICAg
ICAgIHdpZHRocy5iZWdpbk1heCA9IHdpZHRocy5lbmRNYXg7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGkgKz0gbGluZWxlbjsKKyAgICAgICAgICAgICAgICBpICs9IGxpbmVM
ZW5ndGg7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0TGluZSkgewotICAgICAgICAgICAg
ICAgIGJlZ2luTWF4VyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4ID0gMDsK
ICAgICAgICAgICAgICAgICBmaXJzdExpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBsZWFk
V2lkdGggPSAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaSA9PSBsZW4gLSAx
KQorICAgICAgICAgICAgaWYgKGkgPT0gbGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgIC8v
IEEgPHByZT4gcnVuIHRoYXQgZW5kcyB3aXRoIGEgbmV3bGluZSwgYXMgaW4sIGUuZy4sCiAgICAg
ICAgICAgICAgICAgLy8gPHByZT5Tb21lIHRleHRcblxuPHNwYW4+TW9yZSB0ZXh0PC9wcmU+Ci0g
ICAgICAgICAgICAgICAgZW5kTWF4VyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGhzLmVuZE1h
eCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gd2lk
dGhzOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoVUNo
YXIgYywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtODIwLDEyICs3ODYsMTMgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBtX2hhc0JlZ2luV1MgPSBmYWxzZTsKICAgICBtX2hh
c0VuZFdTID0gZmFsc2U7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5z
dHlsZSgpOwotICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUo
KTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgorICAgIGF1dG8mIHN0eWxlID0g
dGhpcy0+c3R5bGUoKTsKKyAgICBhdXRvJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8g
RklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgIGZsb2F0IHdvcmRTcGFjaW5nID0g
Zm9udC53b3JkU3BhY2luZygpOwotICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5ndGgoKTsKKyAg
ICBhdXRvJiBzdHJpbmcgPSB0ZXh0KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwogICAgIGF1dG8gaXRlcmF0b3JNb2RlID0gbWFwTGluZUJyZWFrVG9JdGVyYXRvck1v
ZGUoc3R5bGUubGluZUJyZWFrKCkpOwotICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0
ZXJhdG9yKG1fdGV4dCwgc3R5bGUubG9jYWxlKCksIGl0ZXJhdG9yTW9kZSk7CisgICAgTGF6eUxp
bmVCcmVha0l0ZXJhdG9yIGJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBzdHlsZS5sb2NhbGUoKSwgaXRl
cmF0b3JNb2RlKTsKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKICAgICBib29s
IGlnbm9yaW5nU3BhY2VzID0gZmFsc2U7CiAgICAgYm9vbCBpc1NwYWNlID0gZmFsc2U7CkBAIC04
NjIsOCArODI5LDggQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBib29sIGtlZXBBbGxX
b3JkcyA9IHN0eWxlLndvcmRCcmVhaygpID09IEtlZXBBbGxXb3JkQnJlYWs7CiAgICAgYm9vbCBj
YW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCA9IGl0ZXJhdG9yTW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRv
ck1vZGU6OkRlZmF1bHQ7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgICAgVUNoYXIgYyA9IHVuY2hlY2tlZENoYXJhY3RlckF0KGkpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBVQ2hhciBjID0gc3Ry
aW5nW2ldOwogCiAgICAgICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlID0gaXNTcGFj
ZTsKIApAQCAtODg2LDcgKzg1Myw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAg
ICAgaWYgKChpc1NwYWNlIHx8IGlzTmV3bGluZSkgJiYgIWkpCiAgICAgICAgICAgICBtX2hhc0Jl
Z2luV1MgPSB0cnVlOwotICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNOZXdsaW5lKSAmJiBpID09
IGxlbiAtIDEpCisgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc05ld2xpbmUpICYmIGkgPT0gbGVu
Z3RoIC0gMSkKICAgICAgICAgICAgIG1faGFzRW5kV1MgPSB0cnVlOwogCiAgICAgICAgIGlnbm9y
aW5nU3BhY2VzIHw9IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpICYmIHByZXZpb3VzQ2hhcmFj
dGVySXNTcGFjZSAmJiBpc1NwYWNlOwpAQCAtOTExLDkgKzg3OCw5IEBAIHZvaWQgUmVuZGVyVGV4
dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0
PGNvbnN0IEZvCiAgICAgICAgIHVuc2lnbmVkIGogPSBpOwogICAgICAgICB3aGlsZSAoYyAhPSAn
XG4nICYmICFpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYgYyAhPSAnXHQnICYm
IChjICE9IHNvZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNOb25lKSkgewog
ICAgICAgICAgICAgaisrOwotICAgICAgICAgICAgaWYgKGogPT0gbGVuKQorICAgICAgICAgICAg
aWYgKGogPT0gbGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYyA9
IHVuY2hlY2tlZENoYXJhY3RlckF0KGopOworICAgICAgICAgICAgYyA9IHN0cmluZ1tqXTsKICAg
ICAgICAgICAgIGlmIChpc0JyZWFrYWJsZShicmVha0l0ZXJhdG9yLCBqLCBuZXh0QnJlYWthYmxl
LCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpICYmIGNo
YXJhY3RlckF0KGogLSAxKSAhPSBzb2Z0SHlwaGVuKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgaWYgKGJyZWFrQWxsKSB7CkBAIC05MjUsNyArODkyLDcgQEAgdm9pZCBSZW5k
ZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhh
c2hTZXQ8Y29uc3QgRm8KICAgICAgICAgdW5zaWduZWQgd29yZExlbiA9IGogLSBpOwogICAgICAg
ICBpZiAod29yZExlbikgewogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldpZHRoID0gMDsKLSAg
ICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuKSAmJiBpc1NwYWNlQWNjb3JkaW5nVG9T
dHlsZShjLCBzdHlsZSk7CisgICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbmd0aCkg
JiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOwogICAgICAgICAgICAgZmxvYXQg
dzsKICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lk
dGg7CiAgICAgICAgICAgICBpZiAoaXNTcGFjZSkKQEAgLTk0MCw3ICs5MDcsNyBAQCB2b2lkIFJl
bmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwg
SGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgICAgICBpZiAodyA+IG1heFdvcmRXaWR0aCkgewog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1ZmZpeFN0YXJ0OwotICAgICAgICAgICAgICAgIGZs
b2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgqdGhpcywgc3R5bGUs
IGZvbnQsIFN0cmluZ1ZpZXcobV90ZXh0KS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1Q
cmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxsYmFja0Zv
bnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBmbG9hdCBtYXhGcmFnbWVudFdp
ZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoKnRoaXMsIHN0eWxlLCBmb250LCBTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKGksIHdvcmRMZW4pLCBtaW5pbXVtUHJlZml4TGVuZ3RoLCBtaW5p
bXVtU3VmZml4TGVuZ3RoLCBzdWZmaXhTdGFydCwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxv
dyk7CiAKICAgICAgICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgc3VmZml4V2lkdGg7CkBAIC05NzMsMTMgKzk0MCwxMyBAQCB2b2lkIFJlbmRl
clRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFz
aFNldDxjb25zdCBGbwogICAgICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRhcnkgPSBqOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlID0g
KGogPCBsZW4pICYmIHN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGMpOwotICAgICAgICAg
ICAgaWYgKGogPCBsZW4gJiYgc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAgICAgICAgIGJvb2wgaXND
b2xsYXBzaWJsZVdoaXRlU3BhY2UgPSAoaiA8IGxlbmd0aCkgJiYgc3R5bGUuaXNDb2xsYXBzaWJs
ZVdoaXRlU3BhY2UoYyk7CisgICAgICAgICAgICBpZiAoaiA8IGxlbmd0aCAmJiBzdHlsZS5hdXRv
V3JhcCgpKQogICAgICAgICAgICAgICAgIG1faGFzQnJlYWthYmxlQ2hhciA9IHRydWU7CiAKICAg
ICAgICAgICAgIC8vIEFkZCBpbiB3b3JkU3BhY2luZyB0byBvdXIgY3Vyck1heFdpZHRoLCBidXQg
bm90IGlmIHRoaXMgaXMgdGhlIGxhc3Qgd29yZCBvbiBhIGxpbmUgb3IgdGhlCiAgICAgICAgICAg
ICAvLyBsYXN0IHdvcmQgaW4gdGhlIHJ1bi4KLSAgICAgICAgICAgIGlmICgoaXNTcGFjZSB8fCBp
c0NvbGxhcHNpYmxlV2hpdGVTcGFjZSkgJiYgIWNvbnRhaW5zT25seVdoaXRlc3BhY2UoaiwgbGVu
LWopKQorICAgICAgICAgICAgaWYgKChpc1NwYWNlIHx8IGlzQ29sbGFwc2libGVXaGl0ZVNwYWNl
KSAmJiAhY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoaiwgbGVuZ3RoIC0gaikpCiAgICAgICAg
ICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwogCiAgICAgICAgICAgICBpZiAo
Zmlyc3RXb3JkKSB7CkBAIC0xMDIwLDcgKzk4Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZv
CiAKICAgICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gZm9udC53aWR0aChydW4sICZmYWxs
YmFja0ZvbnRzKTsKICAgICAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LnJpZ2h0ID0gMDsKLSAg
ICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gaXNTcGFjZSAmJiAhcHJldmlvdXNDaGFy
YWN0ZXJJc1NwYWNlICYmIGkgPT0gbGVuIC0gMTsKKyAgICAgICAgICAgICAgICBuZWVkc1dvcmRT
cGFjaW5nID0gaXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGkgPT0gbGVu
Z3RoIC0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChsYXN0V29yZEJvdW5k
YXJ5ID09IGkpOwogICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSsrOwpAQCAtMTAyOSw3ICs5
OTYsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZs
b2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0
ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93LmxlZnQpOwog
Ci0gICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25vcmluZ1NwYWNl
cyAmJiAhZmlyc3RXb3JkKSkKKyAgICBpZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuZ3RoID4g
MSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lk
dGggKz0gd29yZFNwYWNpbmc7CiAKICAgICBtX21heFdpZHRoID0gc3RkOjptYXgoY3Vyck1heFdp
ZHRoLCBtX21heFdpZHRoKTsKQEAgLTEwNDYsMzMgKzEwMTMsMzkgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgRm8KICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQog
Ci1ib29sIFJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKCkgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FsbENv
bGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRl
eHRMZW5ndGgoKTsKLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLmlzQ29sbGFw
c2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnM4KClbaV0pKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFzdHlsZS5pc0NvbGxh
cHNpYmxlV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVyVGV4dDo6aXNBbGxD
b2xsYXBzaWJsZVdoaXRlc3BhY2UoKSBjb25zdAoreworICAgIGlmICh0ZXh0KCkuaXM4Qml0KCkp
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjppc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZSh0ZXh0
KCkuY2hhcmFjdGVyczgoKSwgdGV4dCgpLmxlbmd0aCgpLCBzdHlsZSgpKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnMxNigp
LCB0ZXh0KCkubGVuZ3RoKCksIHN0eWxlKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hp
dGVzcGFjZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGlmICghc3R5bGUuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoY2hhcmFjdGVyczE2KClbaV0pKQor
ICAgICAgICBpZiAoIShjaGFyYWN0ZXJzW2ldID09ICdcbicgfHwgY2hhcmFjdGVyc1tpXSA9PSAn
ICcgfHwgY2hhcmFjdGVyc1tpXSA9PSAnXHQnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCi1ib29sIFJlbmRlclRleHQ6OmNvbnRh
aW5zT25seVdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSBjb25zdAorCiti
b29sIFJlbmRlclRleHQ6OmNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJp
bmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgdW5zaWduZWQgY3VyclBvczsKLSAg
ICBmb3IgKGN1cnJQb3MgPSBmcm9tOwotICAgICAgICAgY3VyclBvcyA8IGZyb20gKyBsZW4gJiYg
KHRleHRbY3VyclBvc10gPT0gJ1xuJyB8fCB0ZXh0W2N1cnJQb3NdID09ICcgJyB8fCB0ZXh0W2N1
cnJQb3NdID09ICdcdCcpOwotICAgICAgICAgY3VyclBvcysrKSB7IH0KLSAgICByZXR1cm4gY3Vy
clBvcyA+PSAoZnJvbSArIGxlbik7CisgICAgQVNTRVJUKGZyb20gPD0gdGV4dCgpLmxlbmd0aCgp
KTsKKyAgICBBU1NFUlQobGVuZ3RoIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGZy
b20gKyBsZW5ndGggPD0gdGV4dCgpLmxlbmd0aCgpKTsKKyAgICBpZiAodGV4dCgpLmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hpdGVzcGFjZSh0ZXh0
KCkuY2hhcmFjdGVyczgoKSArIGZyb20sIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzQWxsUG9zc2li
bHlDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnMxNigpICsgZnJvbSwgbGVu
Z3RoKTsKIH0KIAogVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+PiBSZW5kZXJU
ZXh0OjpkcmFnZ2VkQ29udGVudFJhbmdlc0JldHdlZW5PZmZzZXRzKHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0CkBAIC0xMTIzLDQ0ICsxMDk2LDM2IEBAIHZv
aWQgUmVuZGVyVGV4dDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAg
ICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0U2VsZWN0aW9uU3RhdGUoc3RhdGUpOwogfQogCi12
b2lkIFJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmluZyYgdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9yY2UpCit2b2lkIFJlbmRlclRleHQ6
OnNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgZm9yY2UpCiB7Ci0gICAgaWYgKCFmb3JjZSAmJiBtX3Rl
eHQgPT0gdGV4dCkKKyAgICBpZiAoIWZvcmNlICYmIHRleHQoKSA9PSBuZXdUZXh0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgZGVsdGEgPSB0ZXh0Lmxlbmd0aCgpIC0gdGV4dExlbmd0aCgp
OwotICAgIHVuc2lnbmVkIGVuZCA9IGxlbiA/IG9mZnNldCArIGxlbiAtIDEgOiBvZmZzZXQ7Cisg
ICAgaW50IGRlbHRhID0gbmV3VGV4dC5sZW5ndGgoKSAtIHRleHQoKS5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBlbmQgPSBsZW5ndGggPyBvZmZzZXQgKyBsZW5ndGggLSAxIDogb2Zmc2V0OwogCiAg
ICAgbV9saW5lc0RpcnR5ID0gc2ltcGxlTGluZUxheW91dCgpIHx8IG1fbGluZUJveGVzLmRpcnR5
UmFuZ2UoKnRoaXMsIG9mZnNldCwgZW5kLCBkZWx0YSk7CiAKLSAgICBzZXRUZXh0KHRleHQsIGZv
cmNlIHx8IG1fbGluZXNEaXJ0eSk7CisgICAgc2V0VGV4dChuZXdUZXh0LCBmb3JjZSB8fCBtX2xp
bmVzRGlydHkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbmxpbmVGbG93T3JFbXB0eVRl
eHQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVySW5s
aW5lPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nSW1wbCog
dGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCk7Ci0gICAgaWYgKCF0
ZXh0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIXRleHQtPmxlbmd0aCgpOwor
ICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSB8fCAoaXM8UmVuZGVyVGV4dD4o
cmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCkuaXNFbXB0
eSgpKTsKIH0KIAogVUNoYXIgUmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0ZXIoKSBjb25zdAog
ewogICAgIC8vIGZpbmQgcHJldmlvdXMgdGV4dCByZW5kZXJlciBpZiBvbmUgZXhpc3RzCiAgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1RleHQgPSB0aGlzOwotICAgIHdoaWxlICgocHJl
dmlvdXNUZXh0ID0gcHJldmlvdXNUZXh0LT5wcmV2aW91c0luUHJlT3JkZXIoKSkpCisgICAgd2hp
bGUgKChwcmV2aW91c1RleHQgPSBwcmV2aW91c1RleHQtPnByZXZpb3VzSW5QcmVPcmRlcigpKSkg
ewogICAgICAgICBpZiAoIWlzSW5saW5lRmxvd09yRW1wdHlUZXh0KCpwcmV2aW91c1RleHQpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgVUNoYXIgcHJldiA9ICcgJzsKLSAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4ocHJldmlvdXNUZXh0KSkgewotICAgICAgICBpZiAoU3RyaW5nSW1wbCogcHJldmlv
dXNTdHJpbmcgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldmlvdXNUZXh0KS50ZXh0KCkpCi0g
ICAgICAgICAgICBwcmV2ID0gKCpwcmV2aW91c1N0cmluZylbcHJldmlvdXNTdHJpbmctPmxlbmd0
aCgpIC0gMV07CiAgICAgfQotICAgIHJldHVybiBwcmV2OworICAgIGlmICghaXM8UmVuZGVyVGV4
dD4ocHJldmlvdXNUZXh0KSkKKyAgICAgICAgcmV0dXJuICcgJzsKKyAgICBhdXRvJiBwcmV2aW91
c1N0cmluZyA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpwcmV2aW91c1RleHQpLnRleHQoKTsKKyAg
ICByZXR1cm4gcHJldmlvdXNTdHJpbmdbcHJldmlvdXNTdHJpbmcubGVuZ3RoKCkgLSAxXTsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJUZXh0Ojp0b3BPZkZpcnN0VGV4dCgpIGNvbnN0CkBAIC0xMTY4
LDM3ICsxMTMzLDM0IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZGaXJzdFRleHQoKSBj
b25zdAogICAgIHJldHVybiBmaXJzdFRleHRCb3goKS0+cm9vdCgpLmxpbmVUb3AoKTsKIH0KIAot
dm9pZCBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmcm
IHRleHQsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKQorU3RyaW5nIGFwcGx5VGV4dFRyYW5zZm9y
bShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVUNoYXIgcHJl
dmlvdXNDaGFyYWN0ZXIpCiB7CiAgICAgc3dpdGNoIChzdHlsZS50ZXh0VHJhbnNmb3JtKCkpIHsK
ICAgICBjYXNlIFRUTk9ORToKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0ZXh0Owog
ICAgIGNhc2UgQ0FQSVRBTElaRToKLSAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZ0ZXh0LCBwcmV2
aW91c0NoYXJhY3Rlcik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY2FwaXRhbGl6
ZSh0ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcik7IC8vIEZJWE1FOiBOZWVkIHRvIHRha2UgbG9jYWxl
IGludG8gYWNjb3VudC4KICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAgdGV4dCA9IHRleHQu
Y29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKHN0
eWxlLmxvY2FsZSgpKTsKICAgICBjYXNlIExPV0VSQ0FTRToKLSAgICAgICAgdGV4dCA9IHRleHQu
Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKHN0
eWxlLmxvY2FsZSgpKTsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIHRleHQ7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCkKK3ZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmlu
ZyYgbmV3VGV4dCkKIHsKLSAgICBBU1NFUlQoIXRleHQuaXNOdWxsKCkpOworICAgIEFTU0VSVCgh
bmV3VGV4dC5pc051bGwoKSk7CiAKICAgICBTdHJpbmcgb3JpZ2luYWxUZXh0ID0gdGhpcy0+b3Jp
Z2luYWxUZXh0KCk7CiAKLSAgICBtX3RleHQgPSB0ZXh0OworICAgIG1fdGV4dCA9IG5ld1RleHQ7
CiAKICAgICBpZiAobV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCkKICAgICAgICAgbV90ZXh0LnJl
cGxhY2UoJ1xcJywgeWVuU2lnbik7CiAKLSAgICBBU1NFUlQobV90ZXh0KTsKLQotICAgIGFwcGx5
VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBtX3RleHQsIHByZXZpb3VzQ2hhcmFjdGVyKCkpOworICAg
IG1fdGV4dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBtX3RleHQsIHByZXZpb3VzQ2hh
cmFjdGVyKCkpOwogCiAgICAgc3dpdGNoIChzdHlsZSgpLnRleHRTZWN1cml0eSgpKSB7CiAgICAg
Y2FzZSBUU05PTkU6CkBAIC0xMjI1LDkgKzExODcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFJl
bmRlcmVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAjZW5kaWYKICAgICB9CiAKLSAgICBBU1NF
UlQoIW1fdGV4dC5pc051bGwoKSk7Ci0KLSAgICBtX2lzQWxsQVNDSUkgPSBtX3RleHQuY29udGFp
bnNPbmx5QVNDSUkoKTsKKyAgICBtX2lzQWxsQVNDSUkgPSB0ZXh0KCkuaXNBbGxBU0NJSSgpOwog
ICAgIG1fY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoID0gY29tcHV0ZUNhblVzZVNpbXBsZUZvbnRD
b2RlUGF0aCgpOwogICAgIG1fY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgPSBjb21wdXRl
Q2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKTsKICAgICAKQEAgLTEyNDgsNyArMTIwOCw3
IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2VjdXJlVGV4dChVQ2hhciBtYXNraW5nQ2hhcmFjdGVyKQog
ICAgIC8vIG9mIHRoZSBjaGFyYWN0ZXJzIGFyZSBzdXJyb2dhdGUgcGFpcnMgb3IgY29tYmluaW5n
IG1hcmtzLiBUaHVzLCB0aGlzIGZ1bmN0aW9uCiAgICAgLy8gZG9lcyBub3QgYXR0ZW1wdCB0byBo
YW5kbGUgZWl0aGVyIG9mIHRob3NlLgogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dExlbmd0
aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjYwLDcgKzEyMjAsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OnNlY3VyZVRleHQoVUNoYXIgbWFza2luZ0NoYXJhY3RlcikKICAgICAgICAgLy8gSWYg
aXQncyBjYWxsZWQgYSBzZWNvbmQgdGltZSB3ZSBhc3N1bWUgdGhlIHRleHQgaXMgZGlmZmVyZW50
IGFuZCBhIGNoYXJhY3RlciBzaG91bGQgbm90IGJlIHJldmVhbGVkLgogICAgICAgICByZXZlYWxl
ZENoYXJhY3RlcnNPZmZzZXQgPSB0aW1lci0+dGFrZU9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFj
dGVyKCk7CiAgICAgICAgIGlmIChyZXZlYWxlZENoYXJhY3RlcnNPZmZzZXQgJiYgcmV2ZWFsZWRD
aGFyYWN0ZXJzT2Zmc2V0IDw9IGxlbmd0aCkKLSAgICAgICAgICAgIGNoYXJhY3RlclRvUmV2ZWFs
ID0gbV90ZXh0Wy0tcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0XTsKKyAgICAgICAgICAgIGNoYXJh
Y3RlclRvUmV2ZWFsID0gdGV4dCgpWy0tcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0XTsKICAgICB9
CiAKICAgICBVQ2hhciogY2hhcmFjdGVyczsKQEAgLTEyODIsMTQgKzEyNDIsMTQgQEAgYm9vbCBS
ZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBm
b250IGNvZGVwYXRoLgotICAgIFRleHRSdW4gcnVuKG1fdGV4dCk7CisgICAgVGV4dFJ1biBydW4o
dGV4dCgpKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKICAg
ICBpZiAoZm9udC5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gd2hpdGVzcGFjZUlzQ29sbGFwc2VkID0gc3R5bGUo
KS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90
ZXh0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCghd2hpdGVzcGFjZUlzQ29sbGFwc2Vk
ICYmIG1fdGV4dFtpXSA9PSAnXHQnKSB8fCBtX3RleHRbaV0gPT0gbm9CcmVha1NwYWNlIHx8IG1f
dGV4dFtpXSA+PSBIaXJhZ2FuYUxldHRlclNtYWxsQSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGV4dCgpLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCghd2hpdGVzcGFjZUlz
Q29sbGFwc2VkICYmIHRleHQoKVtpXSA9PSAnXHQnKSB8fCB0ZXh0KClbaV0gPT0gbm9CcmVha1Nw
YWNlIHx8IHRleHQoKVtpXSA+PSBIaXJhZ2FuYUxldHRlclNtYWxsQSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzI0LDEwICsxMjg0LDcg
QEAgU3RyaW5nIFJlbmRlclRleHQ6OnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVu
U3ltYm9sKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgfHwg
c3R5bGUoKS50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkUpCiAgICAgICAgIHJldHVybiB0ZXh0KCk7
Ci0KLSAgICBTdHJpbmcgdGV4dCA9IG9yaWdpbmFsVGV4dCgpOwotICAgIGFwcGx5VGV4dFRyYW5z
Zm9ybShzdHlsZSgpLCB0ZXh0LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKLSAgICByZXR1cm4gdGV4
dDsKKyAgICByZXR1cm4gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIG9yaWdpbmFsVGV4dCgp
LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0OjpkaXJ0eUxpbmVC
b3hlcyhib29sIGZ1bGxMYXlvdXQpCkBAIC0xMzY3LDExICsxMzI0LDExIEBAIGNvbnN0IFNpbXBs
ZUxpbmVMYXlvdXQ6OkxheW91dCogUmVuZGVyVGV4dDo6c2ltcGxlTGluZUxheW91dCgpIGNvbnN0
CiAKIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwg
ZmxvYXQgeFBvcywgYm9vbCBmaXJzdExpbmUsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFj
a0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewotICAgIGlmIChm
cm9tID49IHRleHRMZW5ndGgoKSkKKyAgICBpZiAoZnJvbSA+PSB0ZXh0KCkubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGZyb20gKyBsZW4gPiB0ZXh0TGVuZ3RoKCkpCi0g
ICAgICAgIGxlbiA9IHRleHRMZW5ndGgoKSAtIGZyb207CisgICAgaWYgKGZyb20gKyBsZW4gPiB0
ZXh0KCkubGVuZ3RoKCkpCisgICAgICAgIGxlbiA9IHRleHQoKS5sZW5ndGgoKSAtIGZyb207CiAK
ICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5l
U3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgcmV0dXJuIHdpZHRoKGZyb20sIGxlbiwgbGluZVN0eWxl
LmZvbnRDYXNjYWRlKCksIHhQb3MsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwpAQCAt
MTM3OSwxNCArMTMzNiwxNCBAQCBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lLAogCiBmbG9hdCBSZW5k
ZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0IEZvbnRDYXNj
YWRlJiBmLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywg
R2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJvbSAr
IGxlbiA8PSB0ZXh0TGVuZ3RoKCkpOwotICAgIGlmICghdGV4dExlbmd0aCgpKQorICAgIEFTU0VS
VChmcm9tICsgbGVuIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgaWYgKCF0ZXh0KCkubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
dGhpcy0+c3R5bGUoKTsKICAgICBmbG9hdCB3OwogICAgIGlmICgmZiA9PSAmc3R5bGUuZm9udENh
c2NhZGUoKSkgewotICAgICAgICBpZiAoIXN0eWxlLnByZXNlcnZlTmV3bGluZSgpICYmICFmcm9t
ICYmIGxlbiA9PSB0ZXh0TGVuZ3RoKCkgJiYgKCFnbHlwaE92ZXJmbG93IHx8ICFnbHlwaE92ZXJm
bG93LT5jb21wdXRlQm91bmRzKSkgeworICAgICAgICBpZiAoIXN0eWxlLnByZXNlcnZlTmV3bGlu
ZSgpICYmICFmcm9tICYmIGxlbiA9PSB0ZXh0KCkubGVuZ3RoKCkgJiYgKCFnbHlwaE92ZXJmbG93
IHx8ICFnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzKSkgewogICAgICAgICAgICAgaWYgKGZh
bGxiYWNrRm9udHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2x5cGhPdmVyZmxvdyk7CiAg
ICAgICAgICAgICAgICAgaWYgKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpIHx8ICFtX2tu
b3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tGb250cykgewpAQCAtMTQ1OCwxMiArMTQx
NSwxMiBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0Zvckxp
bmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgp
ID09IFNlbGVjdGlvbkluc2lkZSkgewogICAgICAgICAvLyBXZSBhcmUgZnVsbHkgc2VsZWN0ZWQu
CiAgICAgICAgIHN0YXJ0UG9zID0gMDsKLSAgICAgICAgZW5kUG9zID0gdGV4dExlbmd0aCgpOwor
ICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
c3RhcnRQb3MgPSB2aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwogICAgICAgICBl
bmRQb3MgPSB2aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICAgICAgaWYgKHNl
bGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uU3RhcnQpCi0gICAgICAgICAgICBlbmRQb3MgPSB0
ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAg
ICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uRW5kKQogICAgICAgICAg
ICAgc3RhcnRQb3MgPSAwOwogICAgIH0KQEAgLTE1MzksMzUgKzE0OTYsMzMgQEAgYm9vbCBSZW5k
ZXJUZXh0OjpoYXNSZW5kZXJlZFRleHQoKSBjb25zdAogCiBpbnQgUmVuZGVyVGV4dDo6cHJldmlv
dXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQWxsQVNDSUkoKSB8fCBt
X3RleHQuaXM4Qml0KCkpCisgICAgaWYgKG1faXNBbGxBU0NJSSB8fCB0ZXh0KCkuaXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiBjdXJyZW50IC0gMTsKIAotICAgIENhY2hlZFRleHRCcmVha0l0ZXJh
dG9yIGl0ZXJhdG9yKG1fdGV4dCwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxs
QXRvbSgpKTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRl
eHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGl0
ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZV9vcihjdXJyZW50IC0gMSk7CiB9CiAKIGlu
dCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJl
bnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX3RleHQuaXNOdWxsKCkpOwotCi0gICAgQ2FjaGVk
VGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IobV90ZXh0LCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9k
ZTo6RGVsZXRlLCBudWxsQXRvbSgpKTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVy
YXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUsIG51bGxBdG9tKCkp
OwogICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVfb3IoMCk7CiB9
CiAKIGludCBSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogewotICAg
IGlmIChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVND
SUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAKLSAg
ICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcihtX3RleHQsIFRleHRCcmVha0l0ZXJh
dG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0
b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxB
dG9tKCkpOwogICAgIHJldHVybiBpdGVyYXRvci5mb2xsb3dpbmcoY3VycmVudCkudmFsdWVfb3Io
Y3VycmVudCArIDEpOwogfQogCiBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1wbGVG
b250Q29kZVBhdGgoKSBjb25zdAogewotICAgIGlmIChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0Lmlz
OEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29k
ZVBhdGgoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOwor
ICAgIHJldHVybiBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hh
cmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOwogfQogCiB2b2lk
IFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVk
IG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKQpAQCAtMTU4MiwxMyArMTUzNywxMyBAQCB2
b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2ln
bmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1Zp
ZXcodW5zaWduZWQgc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7
Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHRMZW5ndGgoKSk7
CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHQoKS5sZW5ndGgo
KSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoZGVzdGluYXRp
b24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlvbik7Ci0gICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhjaGFyYWN0ZXJzOCgpICsg
c3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KGNoYXJh
Y3RlcnMxNigpICsgc3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOworICAgIGlmICh0ZXh0KCku
aXM4Qml0KCkpCisgICAgICAgIHJldHVybiB7IHRleHQoKS5jaGFyYWN0ZXJzOCgpICsgc3RhcnQs
IGRlc3RpbmF0aW9uIC0gc3RhcnQgfTsKKyAgICByZXR1cm4geyB0ZXh0KCkuY2hhcmFjdGVyczE2
KCkgKyBzdGFydCwgZGVzdGluYXRpb24gLSBzdGFydCB9OwogfQogCiBSZW5kZXJJbmxpbmUqIFJl
bmRlclRleHQ6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggZDg2ZjBiNGI4NGY0YjE0NzQ5YTVkY2I2OGM4Mzc0
ZmVkYzVjZWFlZi4uZjQ2MjkwZjVkZWFiMGFlYmU5YzdjODI0MGQwZDZmMzk0NTY2ODA0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMCBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDggKzQzLDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+UmVuZGVyVGV4dCgpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dCogdGV4dE5vZGUoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0OwpAQCAtNjMsNyAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2hUZXh0Qm94KElubGluZVRleHRCb3gmIGJv
eCkgeyBtX2xpbmVCb3hlcy5hdHRhY2goYm94KTsgfQogICAgIHZvaWQgcmVtb3ZlVGV4dEJveChJ
bmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMucmVtb3ZlKGJveCk7IH0KIAotICAgIFN0
cmluZ0ltcGwqIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpOyB9CisgICAgU3Ry
aW5nSW1wbCYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuICptX3RleHQuaW1wbCgpOyB9IC8vIFNpbmNl
IG1fdGV4dCBjYW4gbmV2ZXIgYmUgbnVsbCwgcmV0dXJuaW5nIHRoaXMgdHlwZSBtZWFucyBjYWxs
ZXJzIHdvbid0IG51bGwgY2hlY2suCiAgICAgU3RyaW5nIHRleHRXaXRob3V0Q29udmVydGluZ0Jh
Y2tzbGFzaFRvWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJ
bmxpbmVUZXh0Qm94KCkgeyByZXR1cm4gbV9saW5lQm94ZXMuY3JlYXRlQW5kQXBwZW5kTGluZUJv
eCgqdGhpcyk7IH0KQEAgLTcyLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0IGZpbmFsOwogICAgIFZlY3RvcjxJbnRSZWN0PiBhYnNvbHV0ZVJlY3RzRm9yUmFu
Z2UodW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01B
WCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSBudWxs
cHRyKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9u
UmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1
bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rp
b25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBmaW5hbDsKICNlbmRpZgogCiAg
ICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0IGZpbmFsOwpAQCAtODAsMzUgKzc4LDM4IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxG
bG9hdFF1YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNvbnN0OwogCi0gICAg
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwot
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKKyAgICBQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAKLSAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgpOyB9Ci0gICAgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+Y2hh
cmFjdGVyczgoKTsgfQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7IHJl
dHVybiBtX3RleHQuaW1wbCgpLT5jaGFyYWN0ZXJzMTYoKTsgfQogICAgIFVDaGFyIGNoYXJhY3Rl
ckF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICBVQ2hhciB1bmNoZWNrZWRDaGFyYWN0ZXJBdCh1bnNp
Z25lZCkgY29uc3Q7Ci0gICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJl
dHVybiB1bmNoZWNrZWRDaGFyYWN0ZXJBdChpKTsgfQotICAgIHVuc2lnbmVkIHRleHRMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5sZW5ndGgoKTsgfSAvLyBub24gdmlydHVh
bCBpbXBsZW1lbnRhdGlvbiBvZiBsZW5ndGgoKQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQorCiAgICAgdm9pZCBwb3NpdGlvbkxp
bmVCb3goSW5saW5lVGV4dEJveCYpOwogCi0gICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBvcywgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDAp
IGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bGVuLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CisgICAg
dmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMgPSBudWxscHRyLCBHbHlwaE92ZXJmbG93KiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZp
cnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCB4
UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cyA9IG51bGxwdHIsIEdseXBoT3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CiAKICAg
ICBmbG9hdCBtaW5Mb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBmbG9hdCBtYXhMb2dpY2FsV2lk
dGgoKSBjb25zdDsKIAotICAgIHZvaWQgdHJpbW1lZFByZWZXaWR0aHMoZmxvYXQgbGVhZFdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGJlZ2luTWluVywgYm9vbCYgYmVn
aW5XUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBlbmRNaW5XLCBib29sJiBl
bmRXUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGhhc0JyZWFrYWJsZUNoYXIs
IGJvb2wmIGhhc0JyZWFrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGJlZ2lu
TWF4VywgZmxvYXQmIGVuZE1heFcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYg
bWluVywgZmxvYXQmIG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpOworICAgIHN0cnVjdCBX
aWR0aHMgeworICAgICAgICBmbG9hdCBtaW4geyAwIH07CisgICAgICAgIGZsb2F0IG1heCB7IDAg
fTsKKyAgICAgICAgZmxvYXQgYmVnaW5NaW4geyAwIH07CisgICAgICAgIGZsb2F0IGVuZE1pbiB7
IDAgfTsKKyAgICAgICAgZmxvYXQgYmVnaW5NYXggeyAwIH07CisgICAgICAgIGZsb2F0IGVuZE1h
eCB7IDAgfTsKKyAgICAgICAgYm9vbCBiZWdpbldTIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBl
bmRXUyB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQnJlYWthYmxlQ2hhciB7IGZhbHNlIH07
CisgICAgICAgIGJvb2wgaGFzQnJlYWsgeyBmYWxzZSB9OworICAgIH07CisgICAgV2lkdGhzIHRy
aW1tZWRQcmVmZXJyZWRXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBib29sJiBzdHJpcEZyb250U3Bh
Y2VzKTsKKwogICAgIGZsb2F0IGhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdpZHRoKHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKICAgICBmbG9hdCBoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGgodW5z
aWduZWQgaW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpcnN0Q2hhcmFjdGVySW5kZXhTdHJp
cHBpbmdTcGFjZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsYXN0Q2hhcmFjdGVySW5kZXhTdHJp
cHBpbmdTcGFjZXMoKSBjb25zdDsKLSAgICBib29sIGlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hh
cikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaXNIYW5nYWJsZVN0b3BPckNvbW1hKFVDaGFyKTsK
ICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJlY3QgbGluZXNCb3VuZGluZ0Jv
eCgpIGNvbnN0OwogICAgIExheW91dFJlY3QgbGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94
KCkgY29uc3Q7CkBAIC0xMTksMjIgKzEyMCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0
V2l0aE9mZnNldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbiwg
Ym9vbCBmb3JjZSA9IGZhbHNlKTsKIAogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUo
U2VsZWN0aW9uU3RhdGUpIGZpbmFsOwotICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlOwotICAgIExheW91dFJlY3Qg
bG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgdW5zaWduZWQgY2FyZXRPZmZzZXQsIExheW91dFVu
aXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOwogCi0gICAgTGF5b3V0UmVj
dCBjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVj
dG9yPExheW91dFJlY3Q+JiByZWN0cyk7CisgICAgTGF5b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9u
UmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVjdG9yPExheW91dFJlY3Q+Jik7
CiAKICAgICBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5MZWZ0KCksIDApOyB9CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgp
Lm1hcmdpblJpZ2h0KCksIDApOyB9CiAKLSAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0IGZpbmFsOwotCiAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmlyc3QoKTsgfQogICAgIElubGluZVRleHRCb3gqIGxh
c3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgpOyB9CiAKLSAgICBp
bnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgY2FyZXRNYXhPZmZz
ZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBmaW5h
bDsKKyAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBj
b3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2lnbmVkKSBjb25zdDsKICAgICBi
b29sIGNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQodW5zaWduZWQpIGNvbnN0OwogICAg
IGJvb2wgY29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCkgY29uc3Q7CkBAIC0xNTksMTEgKzE1
NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCi0gICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpOyAvLyBTdWJjbGFz
c2VkIGJ5IFJlbmRlclNWR0lubGluZVRleHQuCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKICAgICBmbG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplOyB9Ci0gICAgdm9pZCBzZXRDYW5kaWRhdGVD
b21wdXRlZFRleHRTaXplKGZsb2F0IHMpIHsgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplID0g
czsgfQorICAgIHZvaWQgc2V0Q2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZShmbG9hdCBzaXplKSB7
IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSA9IHNpemU7IH0KICNlbmRpZgogCiAgICAgdm9p
ZCBlbnN1cmVMaW5lQm94ZXMoKTsKQEAgLTE3NCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAKICAgICBM
YXlvdXRVbml0IHRvcE9mRmlyc3RUZXh0KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBjb250YWlu
c09ubHlXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgY29uc3Q7CisgICAg
Ym9vbCBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nOyB9CiAK
QEAgLTE5NywyMSArMTkzLDI0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVuZGVyVGV4
dChOb2RlJiwgY29uc3QgU3RyaW5nJik7CiAKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBmaW5h
bDsKKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRl
bnQgPSB0cnVlKSBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJv
eCosIHVuc2lnbmVkIGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxp
bmUgPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1Jl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBH
bHlwaE92ZXJmbG93Jik7CiAKICAgICBib29sIGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGgoKSBjb25zdDsKICAgICAKLSAgICAvLyBNYWtlIGxlbmd0aCgpIHByaXZhdGUgc28gdGhhdCBj
YWxsZXJzIHRoYXQgaGF2ZSBhIFJlbmRlclRleHQqCi0gICAgLy8gd2lsbCB1c2UgdGhlIG1vcmUg
ZWZmaWNpZW50IHRleHRMZW5ndGgoKSBpbnN0ZWFkLCB3aGlsZQotICAgIC8vIGNhbGxlcnMgd2l0
aCBhIFJlbmRlck9iamVjdCogY2FuIGNvbnRpbnVlIHRvIHVzZSBsZW5ndGgoKS4KLSAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0TGVuZ3RoKCk7IH0KLQogICAg
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9u
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZs
b2F0IHdpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cqLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIGJvb2wg
aXNBbGxBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxBU0NJSTsgfQogICAgIGJvb2wgY29t
cHV0ZVVzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlY3VyZVRl
eHQoVUNoYXIgbWFzayk7CkBAIC0yNDQsMjggKzI0MywyMyBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
YmUgcGFydCBvZiB0aGUgdGV4dCBzaXppbmcgc3RydWN0dXJlcyBpbiBEb2N1bWVudCBpbnN0ZWFk
LiBUaGF0IHdvdWxkIHNhdmUgc29tZSBtZW1vcnkuCi0gICAgZmxvYXQgbV9jYW5kaWRhdGVDb21w
dXRlZFRleHRTaXplOworICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSB7IDAg
fTsKICNlbmRpZgotICAgIGZsb2F0IG1fbWluV2lkdGg7Ci0gICAgZmxvYXQgbV9tYXhXaWR0aDsK
LSAgICBmbG9hdCBtX2JlZ2luTWluV2lkdGg7Ci0gICAgZmxvYXQgbV9lbmRNaW5XaWR0aDsKKyAg
ICBmbG9hdCBtX21pbldpZHRoIHsgLTEgfTsKKyAgICBmbG9hdCBtX21heFdpZHRoIHsgLTEgfTsK
KyAgICBmbG9hdCBtX2JlZ2luTWluV2lkdGggeyAwIH07CisgICAgZmxvYXQgbV9lbmRNaW5XaWR0
aCB7IDAgfTsKIAogICAgIFN0cmluZyBtX3RleHQ7CiB9OwogCi1pbmxpbmUgVUNoYXIgUmVuZGVy
VGV4dDo6dW5jaGVja2VkQ2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QKLXsKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgdGV4dExlbmd0aCgpKTsKLSAgICByZXR1
cm4gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzOCgpW2ldIDogY2hhcmFjdGVyczE2KClbaV07Ci19CitT
dHJpbmcgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgU3RyaW5n
JiwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpOworU3RyaW5nIGNhcGl0YWxpemUoY29uc3QgU3Ry
aW5nJiwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpOworTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1h
cExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKExpbmVCcmVhayk7CiAKIGlubGluZSBVQ2hhciBSZW5k
ZXJUZXh0OjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAgIGlmIChpID49IHRl
eHRMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gdW5jaGVja2VkQ2hh
cmFjdGVyQXQoaSk7CisgICAgcmV0dXJuIGkgPj0gbGVuZ3RoKCkgPyAwIDogdGV4dCgpW2ldOwog
fQogCiBpbmxpbmUgY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlclRleHQ6OnN0eWxlKCkgY29uc3QK
QEAgLTI5OCwxMCArMjkyLDYgQEAgaW5saW5lIENvbG9yIFJlbmRlclRleHQ6OnNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50KCktPnNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKCk7CiB9CiAKLXZvaWQgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJl
bmRlclN0eWxlJiwgU3RyaW5nJiwgVUNoYXIpOwotdm9pZCBtYWtlQ2FwaXRhbGl6ZWQoU3RyaW5n
KiwgVUNoYXIgcHJldmlvdXMpOwotTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1hcExpbmVCcmVha1Rv
SXRlcmF0b3JNb2RlKExpbmVCcmVhayk7Ci0gICAgCiBpbmxpbmUgUmVuZGVyVGV4dCogVGV4dDo6
cmVuZGVyZXIoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihOb2Rl
OjpyZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5jcHAKaW5kZXggZjE1YmVlYzdkYzBkZTNkYWNiMGU3NmViOWU1NDE3MTU5M2I4ODRl
NS4uZGQ5YWNjN2QxMDMyNzc0NjhkOGM4ZTVjMjY3ZWMwZGQwYjFlZDVhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTgwLDEyICs4
MCwxMSBAQCB2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBS
ZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0RnJhZ21l
bnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIGZvcmNlKQordm9pZCBSZW5kZXJU
ZXh0RnJhZ21lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQog
ewotICAgIFJlbmRlclRleHQ6OnNldFRleHQodGV4dCwgZm9yY2UpOwotCisgICAgUmVuZGVyVGV4
dDo6c2V0VGV4dChuZXdUZXh0LCBmb3JjZSk7CiAgICAgbV9zdGFydCA9IDA7Ci0gICAgbV9lbmQg
PSB0ZXh0TGVuZ3RoKCk7CisgICAgbV9lbmQgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgaWYgKCFt
X2ZpcnN0TGV0dGVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9maXJzdExldHRlci0+cmVtb3Zl
RnJvbVBhcmVudEFuZERlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRleCA3NWUyMWM1ZGYzOTQ4MDZiYTg0MzQyMmZmYTg1
OGM2MjY3YmU4OGRiLi5iZDAyNDNhZDk0MGE4ZjgzMjMxOTAxNTJhZTdjMWQyMThmZTg0MTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
CkBAIC0yMjQsNyArMjI0LDcgQEAgaW50IFJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zm
c2V0KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8gYm94ID0g
bV9sYXN0OwogICAgIGlmICghYm94KQotICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dExlbmd0
aCgpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogCiAgICAgaW50
IG1heE9mZnNldCA9IGJveC0+c3RhcnQoKSArIGJveC0+bGVuKCk7CiAgICAgZm9yIChib3ggPSBi
b3gtPnByZXZUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2VGV4dEJveCgpKQpAQCAtMzk1
LDcgKzM5NSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
QWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGNvbnN0IEluCiAKIFZpc2libGVQb3NpdGlvbiBS
ZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Zp
cnN0IHx8ICFyZW5kZXJlci50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKCFtX2ZpcnN0IHx8ICFyZW5k
ZXJlci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNp
YmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKICAgICBMYXlvdXRVbml0IHBvaW50TGluZURp
cmVjdGlvbiA9IG1fZmlyc3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgpIDogcG9pbnQueSgp
OwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6c2V0U2VsZWN0
aW9uU3RhdGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6CiAgICAgYXV0byBz
dGFydCA9IHJlbmRlcmVyLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0aW9uKCk7CiAgICAg
YXV0byBlbmQgPSByZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAg
ICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkgewotICAgICAgICBl
bmQgPSByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyLnRleHQo
KS5sZW5ndGgoKTsKICAgICAgICAgLy8gdG8gaGFuZGxlIHNlbGVjdGlvbiBmcm9tIGVuZCBvZiB0
ZXh0IHRvIGVuZCBvZiBsaW5lCiAgICAgICAgIGlmIChzdGFydCAmJiBzdGFydCA9PSBlbmQpCiAg
ICAgICAgICAgICBzdGFydCA9IGVuZCAtIDE7CkBAIC01NjgsNyArNTY4LDcgQEAgVmVjdG9yPEZs
b2F0UXVhZD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJlciwKIAogICAgICAgICAvLyBTaG9ydGVuIHRoZSB3aWR0aCBvZiB0aGlzIHRl
eHQgYm94IGlmIGl0IGVuZHMgaW4gYW4gZWxsaXBzaXMuCiAgICAgICAgIC8vIEZJWE1FOiBlbGxp
cHNpc1JlY3RGb3JCb3ggc2hvdWxkIHN3aXRjaCB0byByZXR1cm4gRmxvYXRSZWN0IHNvb24gd2l0
aCB0aGUgc3VicGl4ZWxsYXlvdXQgYnJhbmNoLgotICAgICAgICBJbnRSZWN0IGVsbGlwc2lzUmVj
dCA9IChvcHRpb24gPT0gQ2xpcFRvRWxsaXBzaXMpID8gZWxsaXBzaXNSZWN0Rm9yQm94KCpib3gs
IDAsIHJlbmRlcmVyLnRleHRMZW5ndGgoKSkgOiBJbnRSZWN0KCk7CisgICAgICAgIEludFJlY3Qg
ZWxsaXBzaXNSZWN0ID0gKG9wdGlvbiA9PSBDbGlwVG9FbGxpcHNpcykgPyBlbGxpcHNpc1JlY3RG
b3JCb3goKmJveCwgMCwgcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpKSA6IEludFJlY3QoKTsKICAg
ICAgICAgaWYgKCFlbGxpcHNpc1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgICAg
IGJvdW5kYXJpZXMuc2V0V2lkdGgoZWxsaXBzaXNSZWN0Lm1heFgoKSAtIGJvdW5kYXJpZXMueCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRl
eCAxZWI0Njc3NzgxZTEzZTY3OTQ4NzBkNzBlMmFmNWIyYzc2YzUxMDBiLi5jODM2ZDFlYzVmNDY5
NGRmZWQ2Y2FhMTMxM2YyZjg0NjhhYzljYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIEF2b2lk
YW5jZVJlYXNvbkZsYWdzIGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYgZmxvdywgSW4KICAgICBib29sIGZsb3dJc0p1c3RpZmllZCA9IHN0eWxlLnRleHRBbGlnbigp
ID09IEpVU1RJRlk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgOiBjaGlsZHJl
bk9mVHlwZTxSZW5kZXJUZXh0PihmbG93KSkgewogICAgICAgICAvLyBGSVhNRTogRG8gbm90IHJl
dHVybiB1bnRpbCBhZnRlciBjaGVja2luZyBhbGwgY2hpbGRyZW4uCi0gICAgICAgIGlmICghdGV4
dFJlbmRlcmVyLnRleHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKHRleHRSZW5kZXJlci50ZXh0KCku
aXNFbXB0eSgpKQogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChG
bG93VGV4dElzRW1wdHksIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAgICAgaWYgKHRl
eHRSZW5kZXJlci5pc0NvbWJpbmVUZXh0KCkpCiAgICAgICAgICAgICBTRVRfUkVBU09OX0FORF9S
RVRVUk5fSUZfTkVFREVEKEZsb3dUZXh0SXNDb21iaW5lVGV4dCwgcmVhc29ucywgaW5jbHVkZVJl
YXNvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYWU4NTY5MGM1MjA2YjY3ZjUyNTBiN2Yy
NThiZjVmLi5iMjkyMzViNjM3NGM3YzM1ODBlZDUzYTIwYzNhOGM5OTY1YWUwZmE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdl
LmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQmIGNoYXJhY3RlCiBzdGF0aWMg
dW5zaWduZWQgdGV4dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
cikKIHsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAg
aWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHVuc2lnbmVkIHRleHRMZW5ndGggPSAwOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB1bnNp
Z25lZCB0ZXh0TGVuZ3RoRm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQog
c3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVh
ZlJlbmRlcmVycykKIHsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7Ci0gICAg
ICAgIGlmICghZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKSkKKyAg
ICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpLmxlbmd0aCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBGaW5kIFJlbmRlckJsb2NrRmxvdyBh
bmNlc3Rvci4KICAgICAgICAgZm9yIChjb25zdCBhdXRvKiBjdXJyZW50ID0gcmVuZGVyZXIucGFy
ZW50KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuY3BwCmluZGV4IDE4ZTViNjRiZDk3NjFkZTE5ZjEyOWYwZDhjY2ZhM2JhYWRjNDNjNzcuLjI5
YjM2YTBmMzI3NWE1ZTYwMDBjMjMwNzk4ZjIxNTA4OTRkZGVhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFZlY3RvcjxGbG93Q29udGVudHM6OlNlZ21lbnQ+
IGluaXRpYWxpemVTZWdtZW50cyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGYKICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihmbG93KSkgewogICAgICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q2hp
bGQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0
ZXh0TGVuZ3RoID0gdGV4dENoaWxkLnRleHQoKS0+bGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNp
Z25lZCB0ZXh0TGVuZ3RoID0gdGV4dENoaWxkLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgICAg
IHNlZ21lbnRzLmFwcGVuZChGbG93Q29udGVudHM6OlNlZ21lbnQgeyBzdGFydFBvc2l0aW9uLCBz
dGFydFBvc2l0aW9uICsgdGV4dExlbmd0aCwgdGV4dENoaWxkLnRleHQoKSwKICAgICAgICAgICAg
ICAgICB0ZXh0Q2hpbGQsIHRleHRDaGlsZC5jYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygp
IH0pOwogICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiArPSB0ZXh0TGVuZ3RoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
CmluZGV4IDA2YjYxY2M3NTY1ZjFiOWQyN2UwZmYyNTA4YWMwNjI4NjM3ZGM2MzIuLmU1NDM1MmRm
YjZiOTBjYzI5NGY4YTQxMGM4ZDU5YmEyYzViNTg4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTIxNyw3
ICsyMTcsNyBAQCB1bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcgogICAgIGF1dG8gcmVzb2x2ZXIgPSBy
dW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwogICAgIGF1dG8gaXQgPSByZXNvbHZlci5ydW5Gb3JQ
b2ludChwb2ludCk7CiAgICAgaWYgKGl0ID09IHJlc29sdmVyLmVuZCgpKQotICAgICAgICByZXR1
cm4gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dCgp
Lmxlbmd0aCgpOwogICAgIGF1dG8gcnVuID0gKml0OwogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5z
dHlsZSgpOwogICAgIFRleHRSdW4gdGV4dFJ1bihydW4udGV4dCgpLCBydW4ubG9naWNhbExlZnQo
KSwgcnVuLmV4cGFuc2lvbigpLCBydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAppbmRl
eCAwNjQxZjM3N2MwMzc0YTI3NDE5MjJkMDcyYjJlMGU1NTI3YzAzZmM2Li4zZThiODdjYmE1NDcz
NmVmYzk2NDU2MDBiMGE5ODc0MTI3ZWI0ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAgLTEwNiw3ICsxMDYsNyBA
QCBpbmxpbmUgdW5zaWduZWQgZmluZENhcmV0TWluaW11bU9mZnNldChjb25zdCBSZW5kZXJUZXh0
JiwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiBpbmxpbmUgdW5zaWduZWQgZmluZENhcmV0TWF4aW11
bU9mZnNldChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQp
CiB7CiAgICAgaWYgKCFsYXlvdXQucnVuQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsK
ICAgICBhdXRvJiBsYXN0ID0gbGF5b3V0LnJ1bkF0KGxheW91dC5ydW5Db3VudCgpIC0gMSk7CiAg
ICAgcmV0dXJuIGxhc3QuZW5kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCAwNTY2MDFlNWRmNWRkNTM5MzQ3MjRlYTdkZWI4Yzgz
ZGRiMjAwNDJjLi43ZjFiYTFjNGU0YTVjMjYwZWQ2OGI0NDBmM2VkZDg0NzkyYjlhZDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAt
Mzg5LDcgKzM4OSw3IEBAIGlubGluZSBib29sIHNob3VsZEFkZEJvcmRlclBhZGRpbmdNYXJnaW4o
UmVuZGVyT2JqZWN0KiBjaGlsZCkKICAgICBpZiAoIWNoaWxkKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAvLyBXaGVuIGRlY2lkaW5nIHdoZXRoZXIgd2UncmUgYXQgdGhlIGVkZ2Ugb2YgYW4g
aW5saW5lLCBhZGphY2VudCBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpcyB0aGUgc2FtZSBhcyBubyBz
aWJsaW5nIGF0IGFsbC4KLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmNoaWxkKSAmJiAhZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKmNoaWxkKS50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKGlzPFJlbmRlclRl
eHQ+KCpjaGlsZCkgJiYgIWRvd25jYXN0PFJlbmRlclRleHQ+KCpjaGlsZCkudGV4dCgpLmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9O
X0JSRUFLKQogICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KCpjaGlsZCkgJiYgY2hpbGQtPnBh
cmVudCgpLT5zdHlsZSgpLmJveERlY29yYXRpb25CcmVhaygpID09IERDTE9ORSkKQEAgLTQ4Miw3
ICs0ODIsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmpl
Y3QoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgUmVuZGVyTwogICAgIHdoaWxlIChuZXh0ICYmIG5l
eHQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgbmV4dCA9IGJp
ZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMoYmxvY2ssIG5leHQpOwogCi0gICAgaWYgKGlzPFJl
bmRlclRleHQ+KG5leHQpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0KS50ZXh0TGVuZ3Ro
KCkgPiAwKSB7CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KG5leHQpICYmIGRvd25jYXN0PFJlbmRl
clRleHQ+KCpuZXh0KS50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIFJlbmRlclRleHQm
IG5leHRUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpOwogICAgICAgICBVQ2hhciBu
ZXh0Q2hhciA9IG5leHRUZXh0LmNoYXJhY3RlckF0KDApOwogICAgICAgICBpZiAobmV4dFRleHQu
c3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShuZXh0Q2hhcikpIHsKQEAgLTU5Miw3ICs1
OTIsNyBAQCBpbmxpbmUgZmxvYXQgZmlyc3RQb3NpdGl2ZVdpZHRoKGNvbnN0IFdvcmRNZWFzdXJl
bWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiAKIGlubGluZSBib29sIGl0ZXJhdG9ySXNCZXlvbmRF
bmRPZlJlbmRlckNvbWJpbmVUZXh0KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyLCBSZW5kZXJD
b21iaW5lVGV4dCYgcmVuZGVyZXIpCiB7Ci0gICAgcmV0dXJuIGl0ZXIucmVuZGVyZXIoKSA9PSAm
cmVuZGVyZXIgJiYgaXRlci5vZmZzZXQoKSA+PSByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAg
cmV0dXJuIGl0ZXIucmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIgJiYgaXRlci5vZmZzZXQoKSA+PSBy
ZW5kZXJlci50ZXh0KCkubGVuZ3RoKCk7CiB9CiAKIGlubGluZSB2b2lkIG5leHRDaGFyYWN0ZXIo
VUNoYXImIGN1cnJlbnRDaGFyYWN0ZXIsIFVDaGFyJiBsYXN0Q2hhcmFjdGVyLCBVQ2hhciYgc2Vj
b25kVG9MYXN0Q2hhcmFjdGVyKQpAQCAtNjIxLDcgKzYyMSw3IEBAIEFMV0FZU19JTkxJTkUgZmxv
YXQgdGV4dFdpZHRoKFJlbmRlclRleHQmIHRleHQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxl
biwgY29uCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGV4dC5zdHlsZSgpOwogCiAg
ICAgR2x5cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93OwotICAgIGlmIChpc0ZpeGVkUGl0Y2ggfHwg
KCFmcm9tICYmIGxlbiA9PSB0ZXh0LnRleHRMZW5ndGgoKSkgfHwgc3R5bGUuaGFzVGV4dENvbWJp
bmUoKSkKKyAgICBpZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAmJiBsZW4gPT0gdGV4dC50ZXh0
KCkubGVuZ3RoKCkpIHx8IHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCiAgICAgICAgIHJldHVybiB0
ZXh0LndpZHRoKGZyb20sIGxlbiwgZm9udCwgeFBvcywgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92
ZXJmbG93KTsKIAogICAgIGlmIChsYXlvdXQpCkBAIC03NjUsNyArNzY1LDcgQEAgaW5saW5lIGJv
b2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFz
dXJlbWVudHMsIGJvb2wKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgPSBzdHls
ZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJv
b2wgY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAm
IExhc3RIYW5naW5nUHVuY3R1YXRpb247CiAgICAgYm9vbCBjYW5IYW5nU3RvcE9yQ29tbWFBdExp
bmVFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEFsbG93RW5kSGFuZ2luZ1B1bmN0
dWF0aW9uOwotICAgIGludCBlbmRQdW5jdHVhdGlvbkluZGV4ID0gY2FuSGFuZ1B1bmN0dWF0aW9u
QXRFbmQgJiYgbV9jb2xsYXBzZVdoaXRlU3BhY2UgPyByZW5kZXJUZXh0Lmxhc3RDaGFyYWN0ZXJJ
bmRleFN0cmlwcGluZ1NwYWNlcygpIDogcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSAxOworICAg
IGludCBlbmRQdW5jdHVhdGlvbkluZGV4ID0gY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgJiYgbV9j
b2xsYXBzZVdoaXRlU3BhY2UgPyByZW5kZXJUZXh0Lmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGlu
Z1NwYWNlcygpIDogcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSAxOwogICAgIHVuc2lnbmVk
IGxhc3RTcGFjZSA9IG1fY3VycmVudC5vZmZzZXQoKTsKICAgICBmbG9hdCB3b3JkU3BhY2luZyA9
IG1fY3VycmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLndvcmRTcGFjaW5nKCk7CiAgICAgZmxvYXQg
bGFzdFNwYWNlV29yZFNwYWNpbmcgPSAwOwpAQCAtODEwLDcgKzgxMCw3IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgLy8gd29yZHMgd2l0aCB0aGVpciB0cmFpbGluZyBzcGFjZSwgdGhl
biBzdWJ0cmFjdCBpdHMgd2lkdGguCiAgICAgVGV4dExheW91dCogdGV4dExheW91dCA9IG1fcmVu
ZGVyVGV4dEluZm8ubGF5b3V0LmdldCgpOwogICAgIFdvcmRUcmFpbGluZ1NwYWNlIHdvcmRUcmFp
bGluZ1NwYWNlKHN0eWxlLCAhdGV4dExheW91dCk7Ci0gICAgZm9yICg7IG1fY3VycmVudC5vZmZz
ZXQoKSA8IHJlbmRlclRleHQudGV4dExlbmd0aCgpOyBtX2N1cnJlbnQuZmFzdEluY3JlbWVudElu
VGV4dE5vZGUoKSkgeworICAgIGZvciAoOyBtX2N1cnJlbnQub2Zmc2V0KCkgPCByZW5kZXJUZXh0
LnRleHQoKS5sZW5ndGgoKTsgbV9jdXJyZW50LmZhc3RJbmNyZW1lbnRJblRleHROb2RlKCkpIHsK
ICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBtX2N1cnJlbnRDaGFyYWN0
ZXJJc1NwYWNlOwogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNXUyA9IG1fY3VycmVu
dENoYXJhY3RlcklzV1M7CiAgICAgICAgIFVDaGFyIGMgPSBtX2N1cnJlbnQuY3VycmVudCgpOwpA
QCAtODQwLDcgKzg0MCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4
dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAKICAgICAgICAgaWYg
KChicmVha0FsbCB8fCBicmVha1dvcmRzKSAmJiAhbWlkV29yZEJyZWFrICYmICghbV9jdXJyZW50
Q2hhcmFjdGVySXNTcGFjZSB8fCBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gUFJFX1dSQVApKSB7CiAg
ICAgICAgICAgICB3cmFwVyArPSBjaGFyV2lkdGg7Ci0gICAgICAgICAgICBib29sIG1pZFdvcmRC
cmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYmIG1fY3VycmVudC5v
ZmZzZXQoKSArIDEgPCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAmJiBVMTZfSVNfVFJBSUwocmVu
ZGVyVGV4dFttX2N1cnJlbnQub2Zmc2V0KCkgKyAxXSk7CisgICAgICAgICAgICBib29sIG1pZFdv
cmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYmIFUxNl9JU19U
UkFJTChyZW5kZXJUZXh0LmNoYXJhY3RlckF0KG1fY3VycmVudC5vZmZzZXQoKSArIDEpKTsKICAg
ICAgICAgICAgIGNoYXJXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBtX2N1cnJlbnQub2Zm
c2V0KCksIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA/IDIgOiAxLCBmb250LCBt
X3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNl
V2hpdGVTcGFjZSwgZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CiAgICAgICAgICAgICBtaWRX
b3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVyArIGNoYXJXaWR0aCA+
IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgfQpAQCAtOTI5LDcgKzkyOSw3IEBA
IGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRz
JiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHRy
eSB0byBoeXBoZW5hdGUgYXQgdGhlIGZpbmFsIGJyZWFrIG9mIGEgYmxvY2ssIHNpbmNlIHRoaXMg
bWVhbnMgdGhlcmUgaXMKICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbW9yZSBjb250ZW50LCBh
bmQgYSBoeXBoZW5hdGVkIHNpbmdsZSB3b3JkIHdvdWxkIGVuZCB1cCBvbiBhIGxpbmUgYnkgaXRz
ZWxmLiBUaGlzIGxvb2tzCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhZCBzbyBqdXN0IGRvbid0
IGFsbG93IGl0LgotICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVuYXRlICYmICFtX3dp
ZHRoLmZpdHNPbkxpbmUoKSAmJiAobV9uZXh0T2JqZWN0IHx8ICFyZW5kZXJUZXh0LmNvbnRhaW5z
T25seVdoaXRlc3BhY2UobV9jdXJyZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHRMZW5ndGgo
KSAtIG1fY3VycmVudC5vZmZzZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgIW1fd2lkdGguZml0c09uTGluZSgpICYmIChtX25l
eHRPYmplY3QgfHwgIXJlbmRlclRleHQuY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UobV9jdXJy
ZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIG1fY3VycmVudC5vZmZz
ZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xpbmVC
cmVha0hpc3RvcnkucHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVuYXRpbmcocmVuZGVyVGV4dCwgZm9udCwgc3R5
bGUubG9jYWxlKCksIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBtX2Jsb2NrU3R5bGUuaHlw
aGVuYXRpb25MaW1pdExpbmVzKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSwgc3R5
bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgbV9jdXJyZW50Lm9mZnNldCgp
LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRlbXBXaWR0aCwgbV93aWR0aC5h
dmFpbGFibGVXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBsYXN0
U3BhY2VXb3JkU3BhY2luZywgbW9kaWZ5TWUsIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRp
b24oKSwgbV9saW5lQnJlYWtlci5tX2h5cGhlbmF0ZWQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CkBAIC05NjUsNyArOTY1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0Ojpo
YW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlv
biA9IGxhc3RDaGFyYWN0ZXJGcm9tUHJldmlvdXNSZW5kZXJUZXh0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyQXRCcmVha2luZ1Bv
c2l0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB0
ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXJBdEJyZWFraW5nUG9z
aXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGFzdEJyZWFr
aW5nUG9zaXRvbi52YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSA+IChs
YXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgPj0gMSAmJiB0ZXh0
UmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAt
IDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJl
YWtpbmdQb3NpdGlvbiA9IHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdChsYXN0QnJlYWtpbmdQb3Np
dG9uLnZhbHVlKCkgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24p
CkBAIC0xMDczLDcgKzEwNzMsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRs
ZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAg
ICAgaWYgKG1fbmV4dE9iamVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNldCgpICYm
IG1fbmV4dE9iamVjdC0+aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gUklH
SFQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpIHsKICAgICAg
ICAgICAgICAgICBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLnNldE9mZnNldChtX3N0YXJ0T2ZJZ25v
cmVkU3BhY2VzLm9mZnNldCgpIC0gMSk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBq
dXN0IGEgc2luZ2xlIHRyYWlsaW5nIHNwYWNlIHN0YXJ0IGlnbm9yaW5nIGl0IG5vdyBzbyBpdCBj
b2xsYXBzZXMgYXdheS4KLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50Lm9mZnNldCgpID09
IHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0gMSkKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50Lm9mZnNldCgpID09IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0gMSkKICAgICAgICAg
ICAgICAgICAgICAgbV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdGFydElnbm9yaW5n
U3BhY2VzKG1fc3RhcnRPZklnbm9yZWRTcGFjZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0xMzEzLDEzICsxMzEzLDEzIEBAIGlubGluZSBJbmxpbmVJdGVyYXRvciBCcmVha2luZ0Nv
bnRleHQ6Om9wdGltYWxMaW5lQnJlYWtMb2NhdGlvbkZvclRyYWlsaW5nV29yZCgpCiAgICAgICAg
IHJldHVybiBsaW5lQnJlYWs7CiAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRvd25jYXN0
PFJlbmRlclRleHQ+KCpsaW5lQnJlYWsucmVuZGVyZXIoKSk7CiAgICAgLy8gRG9uJ3QgZXZlbiBi
b3RoZXIgbWVhc3VyaW5nIGlmIG91ciByZW1haW5pbmcgbGluZSBoYXMgbWFueSBjaGFyYWN0ZXJz
Ci0gICAgaWYgKHJlbmRlclRleHQudGV4dExlbmd0aCgpID09IGxpbmVCcmVhay5vZmZzZXQoKSB8
fCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAtIGxpbmVCcmVhay5vZmZzZXQoKSA+IGxvbmdUcmFp
bGluZ1dvcmRMZW5ndGgpCisgICAgaWYgKHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpID09IGxp
bmVCcmVhay5vZmZzZXQoKSB8fCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIGxpbmVCcmVh
ay5vZmZzZXQoKSA+IGxvbmdUcmFpbGluZ1dvcmRMZW5ndGgpCiAgICAgICAgIHJldHVybiBsaW5l
QnJlYWs7CiAgICAgYm9vbCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCA9IG1fcmVuZGVyVGV4dElu
Zm8ubGluZUJyZWFrSXRlcmF0b3IubW9kZSgpID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVm
YXVsdDsKICAgICBib29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYgbV9jdXJyZW50U3R5bGUt
Pm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOwogICAg
IGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIGxpbmVCcmVh
ay5vZmZzZXQoKSArIDEsIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtOQlNQLCBjYW5Vc2VM
aW5lQnJlYWtTaG9ydGN1dCwgbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09IEtlZXBBbGxX
b3JkQnJlYWspOwotICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVha2Fi
bGVQb3NpdGlvbi52YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dExlbmd0aCgpKQorICAgIGlmICgh
bmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVha2FibGVQb3NpdGlvbi52YWx1ZSgpICE9
IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGxpbmVTdHlsZShyZW5kZXJUZXh0LCBtX2xp
bmVJbmZvKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRl
KCk7CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdD
b250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAg
ICBjb25zdCBJbmxpbmVJdGVyYXRvciYgY2FuZGlkYXRlID0gbV9saW5lQnJlYWtIaXN0b3J5Lmdl
dChpKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZW5kZXJlcigpICE9IGxpbmVCcmVhay5yZW5k
ZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGJlc3Q7Ci0gICAgICAgIGZsb2F0IHdpZHRoID0g
dGV4dFdpZHRoKHJlbmRlclRleHQsIGNhbmRpZGF0ZS5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0
TGVuZ3RoKCkgLSBjYW5kaWRhdGUub2Zmc2V0KCksIGZvbnQsIDAsIGZvbnQuaXNGaXhlZFBpdGNo
KCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBkdW1teUZvbnRzKTsKKyAgICAgICAgZmxvYXQgd2lk
dGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgY2FuZGlkYXRlLm9mZnNldCgpLCByZW5kZXJUZXh0
LnRleHQoKS5sZW5ndGgoKSAtIGNhbmRpZGF0ZS5vZmZzZXQoKSwgZm9udCwgMCwgZm9udC5pc0Zp
eGVkUGl0Y2goKSwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGR1bW15Rm9udHMpOwogICAgICAgICBp
ZiAod2lkdGggPiBtX3dpZHRoLmF2YWlsYWJsZVdpZHRoKCkpCiAgICAgICAgICAgICByZXR1cm4g
YmVzdDsKICAgICAgICAgaWYgKHdpZHRoIC8gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpID4gb3B0
aW1hbFRyYWlsaW5nTGluZVJhdGlvKSAvLyBTdWJzZXF1ZW50IGxpbmUgaXMgbG9uZyBlbm91Z2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3Bw
CmluZGV4IDExY2UyYjZmNjE0MDhlODc1OWJlOWQ3YmZlNGRlY2IxMzcxNzhiZjUuLjU0ZjBiNTM0
MDM0MmY4MDNjYThmYjY0MDg4ZGQ5NGE0Mjc1MDQyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIFRyYWlsaW5nT2JqZWN0czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9u
c0ZvclRyYWlsaW5nQm94ZXMoTGluZQogICAgICAgICBBU1NFUlQobV93aGl0ZXNwYWNlLT5pc1Rl
eHQoKSk7CiAgICAgICAgIEFTU0VSVChjb2xsYXBzZUZpcnN0U3BhY2UgPT0gQ29sbGFwc2VGaXJz
dFNwYWNlKTsKICAgICAgICAgLy8gQWRkIGEgbmV3IGVuZCB0cmFuc2l0aW9uIHRoYXQgc3RvcHMg
cmlnaHQgYXQgdGhlIHZlcnkgZW5kLgotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRl
c3BhY2UtPnRleHRMZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV93aGl0ZXNw
YWNlLT50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBvcyA9IGxlbmd0aCA+PSAy
ID8gbGVuZ3RoIC0gMiA6IFVJTlRfTUFYOwogICAgICAgICBJbmxpbmVJdGVyYXRvciBlbmRNaWQo
MCwgbV93aGl0ZXNwYWNlLCBwb3MpOwogICAgICAgICBsaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdT
dGF0ZS5zdGFydElnbm9yaW5nU3BhY2VzKGVuZE1pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXggZWMxYTAx
MjVmMDA5MTQ5NzI5NDBkM2ZiZTdlODNjODU4NTQ3ZTIyMi4uMjhmYWZkYjUzZjM3MjE2MGVmNDk3
ZjlhY2Y3Y2JiODhkMDU2ZDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IFJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIGF1dG8mIHNlcGFy
YXRvcnMgPSBmZW5jZWQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihNYXRoTUxOYW1l
czo6c2VwYXJhdG9yc0F0dHIpOwogICAgIGlmICghc2VwYXJhdG9ycy5pc051bGwoKSkgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIGNoYXJhY3RlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgc2VwYXJhdG9ycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzZXBhcmF0b3JzLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAg
IGlmICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0b3JzW2ldKSkKICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJzLmFwcGVuZChzZXBhcmF0b3JzW2ldKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXgg
MjlmZGE0NjE0MTljMDJlMmJiOTFkMThlMTZjZGUyZjhiZDE4MTUxOS4uM2JhYzljYTVkMGFlMzNh
NTA1ODIzOTczZDExM2Y0NjVmYmQ5OTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAg
SW50UmVjdCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIGJv
b2wgUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y2hhcmFjdGVyU3RhcnRzTmV3VGV4dENodW5rKGludCBw
b3NpdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7Ci0gICAgQVNTRVJU
KHBvc2l0aW9uIDwgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0TGVuZ3RoKCkpKTsKKyAgICBBU1NFUlQo
cG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KHRleHQoKS5sZW5ndGgoKSkpOwogCiAgICAgLy8g
RWFjaCA8dGV4dFBhdGg+IGVsZW1lbnQgc3RhcnRzIGEgbmV3IHRleHQgY2h1bmssIHJlZ2FyZGxl
c3Mgb2YgYW55IHgveSB2YWx1ZXMuCiAgICAgaWYgKCFwb3NpdGlvbiAmJiBwYXJlbnQoKS0+aXNT
VkdUZXh0UGF0aCgpICYmICFwcmV2aW91c1NpYmxpbmcoKSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBi
b29sIFJlbmRlclNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQg
cG9zaXRpb24pIGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqKQogewotICAgIGlmICghZmlyc3RUZXh0Qm94KCkgfHwgIXRleHRMZW5n
dGgoKSkKKyAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8IHRleHQoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKICAgICBm
bG9hdCBiYXNlbGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggMmMwNjhiOWMzOThhNjM0NjlmNzdi
NzBjNDliODg1Y2Y1MDk1OTkwMC4uNWU5OTkzODYyOWRiMzljMzBmNjYxNTIzMmJlODI3NGY0Mjc1
ODdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtODAsMTcgKzgwLDIwIEBA
IHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRl
eHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzUmVu
ZGVyU1ZHSW5saW5lVGV4dChjb25zdCBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1bnNpZ25l
ZCYgYXRDaGFyYWN0ZXIsIGJvb2wmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkKIHsKKyAgICBhdXRv
JiBzdHJpbmcgPSB0ZXh0LnRleHQoKTsKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKICAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkUpIHsKLSAgICAgICAg
YXRDaGFyYWN0ZXIgKz0gdGV4dC50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGF0Q2hhcmFjdGVyICs9
IGxlbmd0aDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgdGV4
dFBvc2l0aW9uID0gMCwgdGV4dExlbmd0aCA9IHRleHQudGV4dExlbmd0aCgpOyB0ZXh0UG9zaXRp
b24gPCB0ZXh0TGVuZ3RoOyArK3RleHRQb3NpdGlvbikgewotICAgICAgICBjb25zdCBVQ2hhciBj
dXJyZW50Q2hhcmFjdGVyID0gdGV4dFt0ZXh0UG9zaXRpb25dOwotICAgICAgICBpZiAoY3VycmVu
dENoYXJhY3RlciA9PSAnICcgJiYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKQorICAgIC8vIEZJWE1F
OiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBpbXBsZW1lbnRh
dGlvbjsgaXQgZG9lc24ndCBoYW5kbGUgbmV3bGluZXMgb3IgdGFicy4KKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0g
c3RyaW5nW2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcgJyAmJiBsYXN0Q2hhcmFjdGVy
V2FzU3BhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBsYXN0Q2hhcmFjdGVy
V2FzU3BhY2UgPSBjdXJyZW50Q2hhcmFjdGVyID09ICcgJzsKKyAgICAgICAgbGFzdENoYXJhY3Rl
cldhc1NwYWNlID0gY2hhcmFjdGVyID09ICcgJzsKICAgICAgICAgKythdENoYXJhY3RlcjsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lLmNwcAppbmRleCA2NjBlODZhMzJhODFkNGRlNGMzY2I1MjYzMjYyYWUyM2ZiY2E1
NThjLi4yMzMzNzAxZDI0MzZkMTA0MDg3Mjk2Y2UyOTM3ZjMxYzFhNDA2NTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAK
QEAgLTMxNiw3ICszMTYsNyBAQCBib29sIFNWR1RleHRMYXlvdXRFbmdpbmU6OmN1cnJlbnRMb2dp
Y2FsQ2hhcmFjdGVyQXR0cmlidXRlcyhTVkdUZXh0TGF5b3V0QXR0cmlidQogICAgIGxvZ2ljYWxB
dHRyaWJ1dGVzID0gbV9sYXlvdXRBdHRyaWJ1dGVzW21fbGF5b3V0QXR0cmlidXRlc1Bvc2l0aW9u
XTsKICAgICBBU1NFUlQobG9naWNhbEF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKG1fbG9naWNhbENo
YXJhY3Rlck9mZnNldCAhPSBsb2dpY2FsQXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHRMZW5ndGgo
KSkKKyAgICBpZiAobV9sb2dpY2FsQ2hhcmFjdGVyT2Zmc2V0ICE9IGxvZ2ljYWxBdHRyaWJ1dGVz
LT5jb250ZXh0KCkudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
ICsrbV9sYXlvdXRBdHRyaWJ1dGVzUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggODZlNGJmMmYzZDUxZWNmZGMyZjg4YWMwNTU4
NDgyOGI3MmVlYWY3Ni4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4NmY1N2FiYTY0NGI2ZTAzZTVlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9u
c1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgdW5zaWduZWQgdGV4
dE1ldHJpY3NTaXplID0gdGV4dE1ldHJpY3NWYWx1ZXMuc2l6ZSgpOwogCiAgICAgdW5zaWduZWQg
cG9zaXRpb25PZmZzZXQgPSAwOwotICAgIHVuc2lnbmVkIHBvc2l0aW9uU2l6ZSA9IGxheW91dEF0
dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQgcG9zaXRpb25T
aXplID0gbGF5b3V0QXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHQoKS5sZW5ndGgoKTsKIAogICAg
IGJvb2wgYWx0ZXJTdGFydFBvc2l0aW9uID0gdHJ1ZTsKICAgICBib29sIGFsdGVyRW5kUG9zaXRp
b24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmlu
ZGV4IDczMzExMDlhZjVhMDVmYTczODE0ZmUzNmJiZTI3NjExNzM0NjQ0YmMuLmNjMzlmMjIzZGYx
ZTc3ODk4OWQzMjYyZTFlNTQ5MmI1ZWYzNDc4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb21wb3Nl
ZFRyZWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCB2b2lkIFJlbmRlclRyZWVV
cGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgICAgICAg
ICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7CiAgICAgICAgICAgICBhdXRvKiB0
ZXh0VXBkYXRlID0gbV9zdHlsZVVwZGF0ZS0+dGV4dFVwZGF0ZSh0ZXh0KTsKICAgICAgICAgICAg
IGJvb2wgZGlkQ3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlcyAmJiBwYXJlbnQoKS51cGRh
dGVzLT51cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2g7Ci0gICAgICAgICAgICBib29sIG1h
eU5lZWRVcGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50KCkuZGlk
Q3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmNvbnRhaW5zT25seVdoaXRlc3Bh
Y2UoKTsKKyAgICAgICAgICAgIGJvb2wgbWF5TmVlZFVwZGF0ZVdoaXRlc3BhY2VPbmx5UmVuZGVy
ZXIgPSByZW5kZXJpbmdQYXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyICYm
IHRleHQuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAgICAg
ICAgICAgICBpZiAoZGlkQ3JlYXRlUGFyZW50IHx8IHRleHRVcGRhdGUgfHwgbWF5TmVlZFVwZGF0
ZVdoaXRlc3BhY2VPbmx5UmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dFJlbmRl
cmVyKHRleHQsIHRleHRVcGRhdGUpOwogCkBAIC00MDgsNyArNDA5LDcgQEAgYm9vbCBSZW5kZXJU
cmVlVXBkYXRlcjo6dGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVGV4dCYgdGV4dE5vZGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghdGV4dE5vZGUubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXRleHROb2RlLmNvbnRhaW5zT25seVdoaXRlc3BhY2Uo
KSkKKyAgICBpZiAoIXRleHROb2RlLmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRN
TFNwYWNlPigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4o
cmVuZGVyaW5nUGFyZW50LnByZXZpb3VzQ2hpbGRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggODM0YzBlM2Q5OGU4YjJkZTVkOTgwYWZh
ZmU3NjM1ZjI0MzdlMWYwZC4uNTk3Y2VkZDdjMGFhZDNlNjczMGZiMzgwNTE1NmE1NTA3OTMwMzg1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0yNTEsOCArMjUxLDggQEAgYm9vbCBTVkdU
ZXN0czo6aGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwg
Y29uc3QgU3RyaW5nJgogICAgIC8vIFRoaXMgaXMgd2hhdCB0aGUgRE9NSW1wbGVtZW50YXRpb24g
ZnVuY3Rpb24gbm93IGRvZXMgaW4gSmF2YVNjcmlwdCBhcyBpcyBub3cgc3VnZ2VzdGVkIGluIHRo
ZSBET00gc3BlY2lmaWNhdGlvbi4KICAgICAvLyBUaGUgYmVoYXZpb3IgaW1wbGVtZW50ZWQgYmVs
b3cgaXMgcXVpcmt5LCBidXQgcHJlc2VydmVzIHdoYXQgV2ViS2l0IGhhcyBkb25lIGZvciBhdCBs
ZWFzdCB0aGUgbGFzdCBmZXcgeWVhcnMuCiAKLSAgICBib29sIGhhc1NWRzEwRmVhdHVyZVByZWZp
eCA9IGZlYXR1cmUuc3RhcnRzV2l0aCgib3JnLnczYy5kb20uc3ZnIiwgZmFsc2UpIHx8IGZlYXR1
cmUuc3RhcnRzV2l0aCgib3JnLnczYy5zdmciLCBmYWxzZSk7Ci0gICAgYm9vbCBoYXNTVkcxMUZl
YXR1cmVQcmVmaXggPSBmZWF0dXJlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3JnL3RyL3N2
ZyIsIGZhbHNlKTsKKyAgICBib29sIGhhc1NWRzEwRmVhdHVyZVByZWZpeCA9IHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9yZy53M2MuZG9tLnN2ZyIpIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9yZy53M2Muc3ZnIik7
CisgICAgYm9vbCBoYXNTVkcxMUZlYXR1cmVQcmVmaXggPSBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZlYXR1cmUsICJodHRwOi8vd3d3LnczLm9yZy90ci9zdmciKTsKIAogICAg
IC8vIFdlIGRvbid0IGV2ZW4gdHJ5IHRvIGhhbmRsZSBmZWF0dXJlIG5hbWVzIHRoYXQgZG9uJ3Qg
bG9vayBsaWtlIHRoZSBTVkcgb25lcywgc28ganVzdCByZXR1cm4gdHJ1ZSBmb3IgYWxsIG9mIHRo
b3NlLgogICAgIGlmICghKGhhc1NWRzEwRmVhdHVyZVByZWZpeCB8fCBoYXNTVkcxMUZlYXR1cmVQ
cmVmaXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGMzMTMxMzVhZWUwODdmNjgxY2VjNjBkNGI1YmJlZDk5
NzRjMWEzNGEuLmEzN2Q2MTUxNmE2MjgwMGY1YTQzMWI4OTFjNzI3MzRmMDkwMzViY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTM5OSwyMiArMzk5LDIwIEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RXh0
ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwu
c3RyaW5nKCk7CiAKLSAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMgbGlieG1sIGFza3Mg
Zm9yIHRoaXMgVVJMLCB0aGUKLSAgICAvLyAiWE1MX1hNTF9ERUZBVUxUX0NBVEFMT0ciLCBvbiBp
bml0aWFsaXphdGlvbi4KKyAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMgbGlieG1sIGFz
a3MgZm9yIHRoaXMgVVJMLCB0aGUgIlhNTF9YTUxfREVGQVVMVF9DQVRBTE9HIiwgb24gaW5pdGlh
bGl6YXRpb24uCiAgICAgaWYgKHVybFN0cmluZyA9PSAiZmlsZTovLy9ldGMveG1sL2NhdGFsb2ci
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBPbiBXaW5kb3dzLCBsaWJ4bWwgY29t
cHV0ZXMgYSBVUkwgcmVsYXRpdmUgdG8gd2hlcmUgaXRzIERMTCByZXNpZGVzLgotICAgIGlmICh1
cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmlsZTovLy8iLCBmYWxzZSkgJiYgdXJsU3RyaW5nLmVuZHNX
aXRoKCIvZXRjL2NhdGFsb2ciLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodXJsU3RyaW5nLCAiZmlsZTovLy8iKSAmJiB1cmxTdHJpbmcuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiL2V0Yy9jYXRhbG9nIikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vIFRoZSBtb3N0IGNvbW1vbiBEVEQuICBUaGVyZSBpc24ndCBtdWNoIHBvaW50
IGluIGhhbW1lcmluZyB3d3cudzNjLm9yZwotICAgIC8vIGJ5IHJlcXVlc3RpbmcgdGhpcyBVUkwg
Zm9yIGV2ZXJ5IFhIVE1MIGRvY3VtZW50LgotICAgIGlmICh1cmxTdHJpbmcuc3RhcnRzV2l0aCgi
aHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwiLCBmYWxzZSkpCisgICAgLy8gVGhlIG1vc3QgY29t
bW9uIERURC4gVGhlcmUgaXNuJ3QgbXVjaCBwb2ludCBpbiBoYW1tZXJpbmcgd3d3LnczYy5vcmcg
YnkgcmVxdWVzdGluZyB0aGlzIGZvciBldmVyeSBYSFRNTCBkb2N1bWVudC4KKyAgICBpZiAoc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJodHRwOi8vd3d3Lncz
Lm9yZy90ci94aHRtbCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTaW1pbGFy
bHksIHRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gcmVxdWVzdGluZyB0aGUgU1ZHIERURC4KLSAg
ICBpZiAodXJsU3RyaW5nLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NW
RyIsIGZhbHNlKSkKKyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1
cmxTdHJpbmcsICJodHRwOi8vd3d3LnczLm9yZy9ncmFwaGljcy9zdmciKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gVGhlIGxpYnhtbCBkb2Vzbid0IGdpdmUgdXMgYSBsb3Qgb2Yg
Y29udGV4dCBmb3IgZGVjaWRpbmcgd2hldGhlciB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDFlYjc5M2Q5ZWZlMjdl
YzM2MDQ4ZjE1ZTRhZGExMDBhNTBmYzg4OTQuLmZkN2JhNzhiNjM3OTg0NzgzMGVkY2RlOWVkZDQ3
MzliNDdmZDk4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTIyMSwxMyArMjIxLDkgQEAgc3RhdGljIFJldHJpZXZl
RGVjaXNpb24gbWFrZVJldHJpZXZlRGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXEKICAgICByZXR1cm4gUmV0cmlldmVEZWNpc2lvbjo6WWVzOwogfQogCi1zdGF0aWMg
Ym9vbCBpc01lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBib29s
IGlzTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBl
LnN0YXJ0c1dpdGgoInZpZGVvLyIsIC8qY2FzZVNlbnNpdGl2ZSovIGZhbHNlKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIsIC8qY2Fz
ZVNlbnNpdGl2ZSovIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUs
ICJ2aWRlby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJh
dWRpby8iKTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZFRvdGFs
UmVzb3VyY2VTaXplRnJvbUNvbnRlbnRSYW5nZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCAzYzQ5OTFjYzc1OWQyZmI3NTg0ZDNkYWNj
NDEwNDUzNmIyMDFhNmU0Li44ZmE4MWQxMDlhNGM3M2NkMGIzMTk1Yjg4ZmY1ZTNkYjE1N2MzOGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGhhc2hTdHJpbmco
U0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHN0cmluZy5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcu
Y29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5n
LmlzQWxsQVNDSUkoKSkgewogICAgICAgICBjb25zdCB1aW50OF90IG51bGxCeXRlID0gMDsKICAg
ICAgICAgc2hhMS5hZGRCeXRlcyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgp
KTsKICAgICAgICAgc2hhMS5hZGRCeXRlcygmbnVsbEJ5dGUsIDEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCmluZGV4IDAxY2U4
MTNjM2JjOTEyNGNmMjJlMmZkNzM0NTA1MGNiODcyYzYzMzYuLjI3NDI5MzRiZDRmNGE0OWMyZTMy
NDkzMzg2NmM4NmZmMDQ3ZGYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlUG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMoV0tXZWJzaXRlUG9s
aWNpZXNSZWYgd2Vic2kKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgIFdLU3RyaW5nUmVmIG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tB
cnJheUdldEl0ZW1BdEluZGV4KGtleXMuZ2V0KCksIGkpKTsKICAgICAgICAgYXV0byBmaWVsZCA9
IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHRvSW1wbChuYW1lKS0+c3RyaW5nKCks
IHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShkaWN0aW9uYXJ5LCBuYW1lKSkpLT5zdHJpbmcoKSk7Ci0gICAgICAgIGlmIChmaWVsZCAmJiBm
aWVsZC0+bmFtZSgpLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiWC0iKSkKKyAgICAgICAg
aWYgKGZpZWxkICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmllbGQtPm5h
bWUoKSwgIngtIikpCiAgICAgICAgICAgICBmaWVsZHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
KmZpZWxkKSk7CiAgICAgfQogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRDdXN0b21I
ZWFkZXJGaWVsZHMoV1RGTW92ZShmaWVsZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IGNiMmU1NjY4
ZTYyYTRjN2MwMWVhZmY4ZmQ0MjE5MWViZjYwY2FhZWIuLmQ3YWEyNWE0ZWQ1Y2YwNjk0NWIxNmNh
NDNiY2JlYjcxZGVmYmFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIC0g
KHZvaWQpc2V0Q3VzdG9tSGVhZGVyRmllbGRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNT
dHJpbmcgKj4gKilmaWVsZHMKICAgICAKICAgICBmb3IgKE5TU3RyaW5nKiBuYW1lIGluIGZpZWxk
cykgewogICAgICAgICBhdXRvIGZpZWxkID0gV2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkOjpjcmVh
dGUobmFtZSwgW2ZpZWxkcyBvYmplY3RGb3JLZXk6bmFtZV0pOwotICAgICAgICBpZiAoZmllbGQg
JiYgZmllbGQtPm5hbWUoKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIlgtIikpCisgICAg
ICAgIGlmIChmaWVsZCAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpZWxk
LT5uYW1lKCksICJ4LSIpKQogICAgICAgICAgICAgcGFyc2VkRmllbGRzLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKCpmaWVsZCkpOwogICAgIH0KICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRDdXN0
b21IZWFkZXJGaWVsZHMoV1RGTW92ZShwYXJzZWRGaWVsZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDViMDVhYWYyZTA5Y2M5MzcyOTMxNWNmYWU0MzE2
ZjM3NmFiYmJkMTAuLjc1OTBkNTE3ZGQ3NjcyY2RmZWJlM2E2ZmZhOTU3ZmE2NWMwYmY2OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjI1Miw3ICs2MjUy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFMKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQ
REZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJM
JiYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSkKIHsKLSAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2Up
KQorICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
LnBkZiIpKQogICAgICAgICByZXR1cm47CiAKICAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBBU0NJSUxpdGVyYWwoImFwcGxpY2F0
aW9uL3BkZiIpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nVVJMKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGRmZWY1OGIwODU5YmE1N2VjYTYy
ZmRkMTc4YTFlNGUxYjNkNjA2NWIuLjAwYzFhNzI5YWUyODgyNjhlNzRmMmViMDM4MzhkYzY3ZGZk
YTY1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1w
b3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0CiAgICAgLy8g
RklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRp
bmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRh
VVJMKCk/KS4KICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCi0gICAg
aWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkgeworICAgIGlm
ICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKSB7
CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHNhdmUgZmlsZSB3aXRob3V0IC5wZGYgZXh0
ZW5zaW9uIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRl
bXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmCiB7CiAgICAg
U3RyaW5nIHBkZkZpbGVuYW1lID0gbV90ZW1wb3JhcnlQREZGaWxlcy5nZXQocGRmVVVJRCk7CiAK
LSAgICBpZiAoIXBkZkZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKQorICAgIGlmICgh
cGRmRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6cGRm
RmlsZW5hbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA1YzcwOTI0Y2U5MTgzMDVmZjZhZTBlODMyY2U5NjM2ZjVlY2YwMjliLi5hYTJmZWY5
OGNhODVjZmJhNGVhNTQ0MWYwYWRkNGNkMWIxZjk1YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAwLDcgKzgwMCw3IEBAIFJlZlB0cjxQ
bHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5F
bGVtZW50KiBwbHVnaW5FCiAgICAgaWYgKGlzQmxvY2tlZFBsdWdpbiB8fCAhcGx1Z2luUHJvY2Vz
c1Rva2VuKSB7CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmluZyBwYXRo
ID0gcGFyYW1ldGVycy51cmwucGF0aCgpOwotICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2lu
KCkgJiYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1l
dGVycy5taW1lVHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRo
LmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkp
KSkgeworICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgKE1JTUVUeXBlUmVnaXN0
cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5taW1lVHlwZSkgfHwgKHBh
cmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoIi5wZGYiKSB8fCBwYXRoLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wcyIpKSkp
KSB7CiAgICAgICAgICAgICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1l
KTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggMjAyNDYyNTI5ZDRhZDc4YTRlOWY2Zjc1ZDNmZjEzYzlmYzU0ZTVjNS4uOGJkOTdmNmE0
MWI0ZWYwZWZkY2I5NDBhOTg4MGE1ZTcwZDA4NzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyOCw3ICsyMjgsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LndvcmRBdFNlbGVjdGlvbiA9IHNlbGVjdGVkVGV4dDsKICAgICAgICAgfQogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGRpc2FsbG93IHJlcGxhY2Ugd2hlbiB0aGUgc3RyaW5nIGNvbnRhaW5z
IG9ubHkgQ0ogY2hhcmFjdGVycy4KLSAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxs
b3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZp
ZWxkICYmICFzZWxlY3RlZFRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICBw
b3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxl
ICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIH0KICAgICBwb3N0TGF5b3V0RGF0YS5p
bnNpZGVGaXhlZFBvc2l0aW9uID0gc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uIHx8IGVu
ZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb247CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJv
cGVydHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJv
cGVydHlMaXN0LmNwcAppbmRleCAxZjliYWVjZTA2OTUwZDk2MjVmNDdiNzljMDYwNjBjMDY2OGI2
YjljLi42ZDQ3NGEyNmM1MjJhZTcxN2Q5YmI3YTIwOGQyMzZhYjM4ZTU3OTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3Qu
Y3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0
ZVN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgbV9ieXRlQ291bnQgKz0gbWFya2VyUGx1c0xlbmd0
aEJ5dGVDb3VudChsZW5ndGgpICsgbGVuZ3RoOwotICAgIGlmICghc3RyaW5nLmNvbnRhaW5zT25s
eUFTQ0lJKCkpCisgICAgaWYgKCFzdHJpbmcuaXNBbGxBU0NJSSgpKQogICAgICAgICBtX2J5dGVD
b3VudCArPSBsZW5ndGg7CiB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIEJpbmFyeVByb3Bl
cnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICBzdGFydE9iamVjdCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLSAgICBpZiAoc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICBpZiAo
c3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aElu
TWFya2VyQnl0ZSkKICAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oYXNjaWlTdHJpbmdNYXJrZXJCeXRlIHwgbGVuZ3RoKSk7CiAgICAgICAgIGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQppbmRleCA1NmY2ZGVjMGI3ZjUyZWVlYWZlZGE2NzE1N2MzNmU3NmE5YjZj
YWY0Li5iN2JjYTQ1YjE2MDlhNzgxNGM3MjA3ZGIyZjBjYjU0MWVlMDZiOGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVn
RXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7CiAgICAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiByZWdF
eHBMYWJlbHMgPSBuaWw7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxSZWd1bGFy
RXhwcmVzc2lvbio+PiByZWdFeHBzOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFy
RXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3IiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3Iik7
CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxz
KQpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9y
TGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExp
dGVyYWwoIlxcYiIpOwogICAgICAgICB9CiAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCcpJyk7Ci0g
ICAgICAgIHJlc3VsdCA9IG5ldyBSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCks
IFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAgICAgICByZXN1bHQgPSBuZXcgUmVndWxhckV4cHJl
c3Npb24ocGF0dGVybi50b1N0cmluZygpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUp
OwogICAgIH0KIAogICAgIC8vIGFkZCByZWdleHAgdG8gdGhlIGNhY2hlLCBtYWtpbmcgc3VyZSBp
dCBpcyBhdCB0aGUgZnJvbnQgZm9yIExSVSBvcmRlcmluZwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0
YXRpYyBOU1N0cmluZyAqbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKE5TQXJyYXkgKmxhYmVscywg
Y29uc3QgU3RyaW5nJiBzdHJpbmdUCiAgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0g
c3RyaW5nVG9NYXRjaDsKICAgICAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8ncyBpbiBmaWVs
ZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRyZXNzMiIKLSAg
ICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwg
VGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0
Y2gsIFJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiKSwgIiAiKTsKICAgICBtdXRhYmxlU3RyaW5nVG9N
YXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVn
RXhwID0gcmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk1NTE4MDBkOTIyY2IzYmVmNzY1YWYwYTA4MmE3
ZTU5NzJhYjE2MS4uYmNmM2IyNmUzOWQyZDdiNmZiYWEwZjc0ZWEzNzU1NWZlMDUzYTE1NiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVubmVjZXNzYXJ5IFVu
aWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbToKKyAgICAgICAgKGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQpOiBVc2UgY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwogMjAxNy0xMS0yMCAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRGlzYWJsZSBBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMgaW4gRmVhdHVyZUxpc3QucG0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQppbmRleCA1MTY5ZTY5NmM3MjIyZjVhMmZlNDhlY2VlN2I1ZGJiZTJh
MGU1M2EzLi40ZDFjNmVlOWYxNmI4YWM0YzhhNDM4Zjk0YTc4YjRiOTAwNWQzNzBiIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTkyLDkgKzE1OTIs
OSBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKGNvbnN0IGNoYXIqIHRl
c3RQYXRoT3JVUikKICAgICBXVEY6OlN0cmluZyBsb2NhbFBhdGhPclVybCA9IFN0cmluZyh0ZXN0
UGF0aE9yVVIpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IFtbW21haW5GcmFtZSB3
ZWJWaWV3XSB3aW5kb3ddIGJhY2tpbmdTY2FsZUZhY3Rvcl07CiAgICAgZmxvYXQgcmVxdWlyZWRT
Y2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKGxvY2FsUGF0aE9yVXJsLmZpbmRJZ25vcmluZ0Nhc2Uo
Ii9oaWRwaS0zeC0iKSAhPSBub3RGb3VuZCkKKyAgICBpZiAobG9jYWxQYXRoT3JVcmwuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLTN4LSIpKQogICAgICAgICByZXF1aXJlZFNjYWxl
RmFjdG9yID0gMzsKLSAgICBlbHNlIGlmIChsb2NhbFBhdGhPclVybC5maW5kSWdub3JpbmdDYXNl
KCIvaGlkcGktIikgIT0gbm90Rm91bmQpCisgICAgZWxzZSBpZiAobG9jYWxQYXRoT3JVcmwuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLSIpKQogICAgICAgICByZXF1aXJlZFNjYWxl
RmFjdG9yID0gMjsKICAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IHJlcXVpcmVkU2NhbGVG
YWN0b3IpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327388</attachid>
            <date>2017-11-20 22:38:49 -0800</date>
            <delta_ts>2017-11-20 22:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171120223847.patch</filename>
            <type>text/plain</type>
            <size>419677</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZDYwYmU0MGQyYmNlZTBmYWYwZDI3Nzk1ZGQxNDQxZDMzMzJmZjI0Li4xOGY0MzI0NjMyYmQ3ZWE4
MDZiNjU2YTJiZWFkYTA0N2ViMThhYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIERldGVjdCBfX2Rl
Y2xzcGVjIHdpdGhpbiBKU0Jhc2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmMTYxMzU0NTFiYTEyMTY1NjlhYWY1ZGYzN2Ez
MWE0NDAyNjQ0ZmIzLi5mM2UxOTM1MDQ2YmQ3Yjc3NWI4MzQwMjA4MDFlOWFmNDdhZmYxYTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVu
bmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGguaDogTW92ZWQgdGhlIHVzaW5nIGZvciBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkgaGVyZSBz
aW5jZQorICAgICAgICB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBoZXJlLgorCisgICAgICAgICog
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg6IFJlbW92ZWQgb3ZlcmxvYWRzIG9mIGNvbnRhaW5zLCBm
aW5kLCBzdGFydHNXaXRoLCBhbmQKKyAgICAgICAgZW5kc1dpdGggdGhhdCB0YWtlIGEgYm9vbGVh
biBpbmRpY2F0aW5nIHdoZXRoZXIgdGhleSBzaG91bGQgYmUgImNhc2Ugc2Vuc2l0aXZlIi4KKyAg
ICAgICAgV2hlbiBmYWxzZSwgdGhpcyB3YXMgZG9pbmcgVW5pY29kZSBjYXNlIGZvbGRpbmcsIGFu
ZCBubyBjYWxsZXJzIG5lZWRlZCB0aGF0LgorICAgICAgICBBbHNvIHR3ZWFrZWQgZm9ybWF0dGlu
ZyBhbmQgYXJndW1lbnQgbmFtZXMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmg6IEFkZGVkIGFuIGluY2x1ZGUgb2YgTENoYXIuaCBzaW5jZSB0aGlzIGZp
bGUKKyAgICAgICAgdXNlcyB0aGF0LiBBbHNvIHR3ZWFrZWQgZm9ybWF0dGluZyBhIGJpdC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjb250YWluc09ubHlXaGl0ZXNwYWNlKTogRGVsZXRlZC4gRGVzcGl0ZSBpdHMgbmFtZSBz
b3VuZGluZyBsaWtlCisgICAgICAgIGl0IHVzZWQgdGhlIGZ1bGwgVW5pY29kZSB3aGl0ZXNwYWNl
IGRlZmluaXRpb24sIHRoaXMgYWN0dWFsbHkgY2hlY2tlZCBpc0FTQ0lJU3BhY2UuCisgICAgICAg
IENhbGxlcnMgbm93IGFsbCB1c2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBpbnN0ZWFkIHdpdGgg
dGhlIHdoaXRlc3BhY2UgZGVmaW5pdGlvbgorICAgICAgICB0aGF0IGlzIGFwcHJvcHJpYXRlIHRv
IGVhY2ggY2FsbCBzaXRlLgorICAgICAgICAoV1RGOjpsYXRpbjFDYXNlRm9sZFRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6ZmluZElnbm9yaW5nQ2FzZUlubmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6ZXF1YWxJbm5lcik6IFJlbW92ZWQgYm9vbGVhbiBjYXNlU2Vuc2l0aXZlIGFyZ3Vt
ZW50LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRoKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmg6IE1vdmVkIFRleHRDYXNlU2Vuc2l0aXZpdHkgb3V0IGludG8gYSBk
aWZmZXJlbnQgaGVhZGVyLgorICAgICAgICBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggaW5jbHVkZSBo
ZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMKKyAgICAg
ICAgZnJlZSBmdW5jdGlvbiBoZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGxvdHMgb2YgZnVu
Y3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcworICAgICAgICBkZWZpbml0aW9ucyB0byBtYWtlIHRo
ZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIgdG8gcmVhZC4gU29ydGVkIHRoaW5ncyBhIGJpdC4K
KyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nLiBNYXJrZWQgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBvbmUgYXJndW1lbnQgZXhwbGljaXQuIEFkZGVkCisgICAgICAgIGFuIGlzRW1wdHkgZnVuY3Rp
b24gbGlrZSB0aGUgb25lIGluIFN0cmluZy4gUmVtb3ZlZCB0aGUgaGFzQXRMZWFzdE9uZVJlZgor
ICAgICAgICBmdW5jdGlvbiBzaW5jZSBpdCBkb2Vzbid0IG9mZmVyIGEgYmVuZWZpdCBvdmVyIHRo
ZSByZWZDb3VudCBmdW5jdGlvbi4gUmVuYW1lZAorICAgICAgICBjb3B5Q2hhcnMgdG8gY29weUNo
YXJhY3RlcnMuIEFkZGVkIGlzQWxsQVNDSUksIGlzQWxsTGF0aW4xIGFuZAorICAgICAgICBpc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzIGZ1bmN0aW9ucy4gUmVtb3ZlZCBib29sZWFuIGNhc2VTZW5zaXRp
dmUgYXJndW1lbnRzCisgICAgICAgIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmlu
ZElnbm9yaW5nQ2FzZSBhbmQgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuCisgICAgICAgIEFkZGVk
IGEgRklYTUUgdG8gY29kZVBvaW50Q29tcGFyZSBhYm91dCB0aGUgd2F5IGl0IHRyZWF0cyBudWxs
IGFuZCBlbXB0eSBzdHJpbmdzCisgICAgICAgIGFzIGVxdWFsLiBDaGFuZ2VkIGxlbmd0aCBhcmd1
bWVudCBpbiByZW1vdmUgdG8gdW5zaWduZWQgdG8gbWF0Y2ggb3RoZXIgbGVuZ3Rocy4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6cmVt
b3ZlSW50ZXJuYWwpOiBDaGFuZ2VkIGxlbmd0aCBhcmd1bWVudCB0byBiZSB1bnNpZ25lZC4KKyAg
ICAgICAgKFdURjo6Y3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyk6IFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgKFdURjo6U3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQgY29u
c3QpOiBSZXdyb3RlIHRvIGJlIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6IE1vdmVkIEFTQ0lJRmFzdFBhdGguaCB0byBTdHJpbmdJbXBsLmguIE1vdmVk
IGxvdHMgb2YKKyAgICAgICAgZnVuY3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcyBkZWZpbml0aW9u
cyB0byBtYWtlIHRoZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIKKyAgICAgICAgdG8gcmVhZCwg
bWFkZSBvdGhlcnMgb25lLWxpbmVycy4gUmVtb3ZlZCB0aGUgU3RyaW5nOjphdCBmdW5jdGlvbiBi
dXQga2VwdCB0aGUKKyAgICAgICAgU3RyaW5nOjpjaGFyYWN0ZXJBdCBmdW5jdGlvbjsgdGhlIHR3
byB3ZXJlIGlkZW50aWNhbC4gUmVtb3ZlZCBib29sZWFuCisgICAgICAgIGNhc2VTZW5zaXRpdmUg
YXJndW1lbnRzIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmluZElnbm9yaW5nQ2Fz
ZSBhbmQKKyAgICAgICAgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuIFJlbmFtZWQgY29udGFpbnNP
bmx5QVNDSUkgdG8gaXNBbGxBU0NJSSBhbmQKKyAgICAgICAgY29udGFpbnNPbmx5TGF0aW4xIHRv
IGlzQWxsTGF0aW4xIHRvIG1hdGNoIHRoZSBuYW1pbmcgb2YgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cy4KKyAgICAgICAgTW92ZWQgdGhlIGlubGluZSBpbXBsZW1lbnRhdGlvbnMgb2YgZnVuY3Rpb25z
IHRoYXQgYXJlIGRlZmluZWQgYWJvdmUgZnVydGhlcgorICAgICAgICBkb3duLCBhZnRlciB0aGlu
Z3MgbGlrZSB0aGUgQVNDSUlMaXRlcmFsIGNsYXNzIGFuZCB2YXJpb3VzIGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogVXBkYXRlZCBu
YW1lIG9mIGNvcHlDaGFycy4KKwogMjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElO
RyBmZWF0dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTQyODZiNWZkNTJjNWRmODNiNDQxNTEwOGQy
OWNkNmY0NDJjMjYxLi4xNjhlM2NiZjQyZDYzZjYyYjNhMTE1MDFkM2Y2NzI4ZmNjMTU3N2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDE2IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0
aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBI
ZWFkZXJzKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VU
b09mZnNldEluUmFuZ2UpOiBVc2UgaXNIVE1MU3BhY2UgaW5zdGVhZCBvZgorICAgICAgICBpc1Nw
YWNlT3JOZXdsaW5lIHNpbmNlIHRoZSBjb2RlIGlzIHRyeWluZyB0byBza2lwIGNvbGxhcHNpYmxl
IEhUTUwgc3BhY2VzLCBub3QKKyAgICAgICAgYXJiaXRyYXJ5IFVuaWNvZGUgd2hpdGVzcGFjZS4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0OjpjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRl
bU1hcmtlcnMpOiBVc2UKKyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFj
ZT4gZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzU2VhcmNoRmllbGQgY29uc3QpOiBVc2UgY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3Np
YmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0IGNvbnN0KTogVXNlCisgICAgICAgIG5ldyBmaW5kUGxh
aW5UZXh0IGZ1bmN0aW9uIGV4cG9ydGVkIGZyb20gVGV4dEl0ZXJhdG9yIHNvIHRoaXMgY2FuIHNo
YXJlIHRoZQorICAgICAgICBzYW1lIHNlYXJjaCBtYXRjaGluZyBsb2dpYyB1c2VkIHRvIGZpbmQg
dGV4dCBpbiB3ZWJwYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNlbGVjdFRleHQpOiBVc2UgY2FwaXRhbGl6ZSBhbmQgaXRzIHJldHVybiB2YWx1ZQorICAgICAg
ICByYXRoZXIgdGhhbiBtYWtlQ2FwaXRhbGl6ZSBtb2RpZnlpbmcgYSBzdHJpbmcgaW4gcGxhY2Uu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOiBVc2UgaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4KKyAgICAgICAgZm9yIHRoZSBzYW1lIHJl
YXNvbiBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnN0cmluZ1RvQnl0ZVN0cmluZyk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnRhaW5zT25seUFTQ0lJV2l0aE5vVXBwZXJjYXNl
KTogVXNlCisgICAgICAgIFN0cmluZ1ZpZXc6OmNvZGVVbml0cyBpbnN0ZWFkIG9mIFN0cmluZzo6
YXQuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZCBjb25zdCk6CisgICAgICAgIFVz
ZSBpc0FsbEFTQ0lJLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFy
c2VyOjphZGRQYXR0ZXJuKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBv
cnRlZEZvcm1hdCBjb25zdCk6IFVzZSBwcm90b2NvbElzIGFuZAorICAgICAgICBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogY3NzL0RPTUNTU05hbWVzcGFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZVdpdGhvdXRJbXBvcnRhbnQpOiBVc2UgZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyk6IFVzZSBp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQ1NTU3BhY2U+LAorICAgICAgICBmb3IgdGhlIHByZWZs
aWdodCwgd2hpY2ggbWF0Y2hlcyB3aGF0IHRoZSBhY3R1YWwgcGFyc2luZyBjb2RlIHVzZXMuCisK
KyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFy
YWN0ZXJEYXRhOjpjb250YWluc09ubHlXaGl0ZXNwYWNlIGNvbnN0KTogRGVsZXRlZC4gQ2FsbGVy
cyBjYW4KKyAgICAgICAgZWZmaWNpZW50bHkgZ2V0IGF0IHRoZSBkYXRhIGFuZCBkbyB0aGlzIGtp
bmQgb2YgY2hlY2sgb24gdGhlIGRhdGEgZGlyZWN0bHkuCisgICAgICAgICogZG9tL0NoYXJhY3Rl
ckRhdGEuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVUeXBlKTogVXNlIHN0YXJ0c1dp
dGggc2luY2UgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGNvbnZlcnRlZAorICAgICAgICB0byBBU0NJ
SSBsb3dlcmNhc2UuCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24gY29uc3QpOiBVc2UgaXNI
VE1MU3BhY2Ugc2luY2UKKyAgICAgICAgc2luY2UgdGhlIGNvZGUgaXMgdHJ5aW5nIHRvIGNoZWNr
IGZvciBjb2xsYXBzaWJsZSBIVE1MIHNwYWNlcywgbm90IGdlbmVyYWwKKyAgICAgICAgVW5pY29k
ZSBzcGFjZXMuIE90aGVyIGNhbGwgc2l0ZXMgb2YgaXNTcGFjZU9yTmV3bGluZSBuZWVkIHRvIGJl
IGNoZWNrZWQgZm9yCisgICAgICAgIHRoaXMsIGJ1dCBJIGRpZCBub3QgZml4IHRoZW0gYWxsIGF0
IHRoaXMgdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbiBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpOiBV
c2Ugbm9CcmVha1NwYWNlLgorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlciBjb25zdCk6
IFVzZSB0ZXh0KCkubGVuZ3RoKCkgaW5zdGVhZAorICAgICAgICBvZiB0ZXh0TGVuZ3RoLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0IGNvbnN0
KTogVXNlIG5vQnJlYWtTcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3
b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0IGNv
bnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0ZXh0Tm9kZU9mZnNldEluRmxvdyk6IFVzZSB0ZXh0KCkubGVuZ3RoKCku
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpjb2xsYXBzZWRTcGFjZUxlbmd0aCk6IFVwZGF0ZWQgc2luY2Ug
UmVuZGVyVGV4dDo6dGV4dCBub3cgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIg
dGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxhaW5UZXh0KTogQWRkZWQu
IFVzZXMgU2VhcmNoQnVmZmVyIHRvIHNlYXJjaCBmb3Igb25lIHN0cmluZworICAgICAgICB3aXRo
aW4gYW5vdGhlci4gRXhwb3J0ZWQgc28gYWNjZXNzaWJpbGl0eSBjb2RlIGNhbiBkbyB0aGlzIG9w
ZXJhdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKTog
VXNlIG5vQnJlYWtTcGFjZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRTdGFydE9mUGFyYWdyYXBoKTogVXBkYXRlZCBzaW5jZSBS
ZW5kZXJUZXh0Ojp0ZXh0IG5vdyByZXR1cm5zCisgICAgICAgIGEgcmVmZXJlbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZEVuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc1RleHQpOiBVc2UgU3RyaW5nOjpjaGFyYWN0ZXJBdCBpbnN0ZWFkIG9mIFN0cmluZzo6YXQu
CisgICAgICAgIFVzZSBjYXBpdGFsaXplIGluc3RlYWQgb2YgbWFrZUNhcGl0YWxpemVkLgorCisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpzdHJpcE1pY3Jvc29mdFByZWZpeCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBVc2UKKyAgICAg
ICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwv
QmFzZVRleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5
cGU6OnBhdHRlcm5NaXNtYXRjaCBjb25zdCk6IFJlbW92ZWQgZXhwbGljaXQKKyAgICAgICAgVGV4
dENhc2VTZW5zaXRpdmUgc2luY2UgaXQgbm93IGlzIHRoZSBkZWZhdWx0LCBhbmQgbmVlZGVkIHRv
IHRvdWNoIHRoaXMgYW55d2F5CisgICAgICAgIGJlY2F1c2UgdGhlIGVudW1lcmF0aW9uIGlzIG5v
dyBpbiBhIGRpZmZlcmVudCBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRFbWFpbEFkZHJlc3MpOiBVcGRhdGVk
IHRvIHVzZSBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBodG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVt
ZW50OjpoYXNGYWxsYmFja0NvbnRlbnQgY29uc3QpOiBVc2UKKyAgICAgICAgaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0hUTUxTcGFjZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6c2hvdWxkQWxsb3dRdWlja1RpbWVDbGFzc0lkUXVpcmspOiBVc2UKKyAgICAgICAgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
YmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQpOiBVc2UgcHJvdG9jb2xJcy4KKyAgICAgICAg
KFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKTogVXNlIGlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OnNldENvbXBhdGliaWxpdHlNb2RlRnJvbURvY3R5cGUpOgorICAgICAgICBVc2Ugc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Q2hh
cnNldCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmlzQ29udGFp
bmVkSW5SZXF1ZXN0KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAg
KiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQ
YXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIpOiBEb24ndCBwYXNzIHRoZSBsZW5ndGgg
dG8KKyAgICAgICAgdGhlIFN0cmluZzo6c3RhcnRzV2l0aCBmdW5jdGlvbi4gVGhlcmUgaGFzIG5l
dmVyIGJlZW4gYSB2ZXJzaW9uIG9mIHRoYXQgZnVuY3Rpb24KKyAgICAgICAgdGhhdCB0YWtlcyB0
aGUgbGVuZ3RoLCB0aGVyZSBpcyBubyBuZWVkIHRvIHBhc3MgdGhlIGxlbmd0aCBzaW5jZSB0aGUg
ZnVuY3Rpb24KKyAgICAgICAgaGFuZGxlcyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncyBsaWtlIHRo
ZSBvbmUgaGVyZSwgYW5kIGluIHRoZSBwYXN0IHRoZSBsZW5ndGgKKyAgICAgICAgaGFzIGJlZW4g
Z2V0dGluZyBjb252ZXJ0ZWQgdG8gYSBib29sZWFuIG1ha2luZyB0aGUgY29tcGFyaXNvbiBiZSBj
YXNlIHNlbnNpdGl2ZS4KKyAgICAgICAgUmVtb3ZpbmcgdGhlIGFyZ3VtZW50IGVudGlyZWx5IGxl
YXZlcyBpdCBjYXNlIHNlbnNpdGl2ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6Om1h
dGNoZXNFbGVtZW50KTogVXNlIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZQorICAgICAgICBh
bmQgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3Vy
Y2UpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UpOiBNYWRlIHRoaXMgYSBub24tbWVtYmVyIGZ1bmN0aW9u
CisgICAgICAgIGFuZCByZWltcGxlbWVudGVkIHVzaW5nIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNIVE1MU3BhY2U+KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5u
ZXJGaXJzdENoaWxkKTogVXNlIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lclByZXZpb3VzU2libGluZyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGRO
b2RlQ291bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpk
aWRJbnNlcnRET01Ob2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6ZGlkUmVtb3ZlRE9NTm9kZSk6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNl
QXNGbGF0RmlsZSk6CisgICAgICAgIFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorCisgICAgICAgICogcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzZTY0VXRpbGl0aWVzOjpidG9hKTogVXNlIGlzQWxsTGF0aW4xLgorCisgICAgICAg
ICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJl
bHMpOiBSZW1vdmVkIFRleHRDYXNlU2Vuc2l0aXZlIGFyZ3VtZW50IHNpbmNlCisgICAgICAgIHRo
YXQgaXMgbm93IHRoZSBkZWZhdWx0IGFuZCBhbHNvIHVzZWQgSlNDOjpZYXJyOjpUZXh0Q2FzZUlu
c2Vuc2l0aXZlLgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKTog
TW9yZSBvZiB0aGUgc2FtZS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhy
ZXNob2xkKTogVXNlCisgICAgICAgIHRleHQoKS5sZW5ndGgoKS4KKworICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNGZWVkV2l0aE5lc3RlZFBy
b3RvY29sSW5IVFRQRmFtaWx5KTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0IGNv
bnN0KToKKyAgICAgICAgVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6aG9zdE1hdGNoZXMgY29uc3QpOiBEaXR0
by4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2VOb25jZVNvdXJjZSk6CisgICAgICAgIFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjp3b3Jkc0luQ3VycmVudFBhcmFncmFwaCBjb25zdCk6IFVzZSBub0JyZWFrU3BhY2Uu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6cGFyYW1ldGVyIGNvbnN0KTogVXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRGb250TUlNRVR5cGUpOiBVc2UK
KyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKTogVXNlCisg
ICAgICAgIG1pbWVUeXBlLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IFVzZQorICAgICAgICBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSk6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
LgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5
cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSk6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQWxs
QVNDSUkpOiBSZW5hbWVkIGZyb20gY29udGFpbnNPbmx5QVNDSUkuCisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRFbmNvZGVkSG9zdG5hbWUpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBs
YXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09ubHlBU0NJ
SSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkp
OiBVc2UgU3RyaW5nSW1wbDo6aXNBbGxBU0NJSS4gQ2hhbmdlZAorICAgICAgICB0byB0YWtlIFN0
cmluZ0ltcGwmIHRvIGd1YXJhbnRlZSB3ZSB3b24ndCBrZWVwIGRvaW5nIG51bGwgY2hlY2tzIHNp
bmNlCisgICAgICAgIHRoZSBjYWxsZXIgYWxyZWFkeSBjaGVja3MgZm9yIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQpOiBQYXNzIFN0cmluZ0ltcGwm
LgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZQorICAgICAgICBhbmQgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRLZXlTeXN0ZW1SRSk6
IFVzZSBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FjaGU6OnNpbWlsYXJGb250KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Ug
Zm9yCisgICAgICAgIHRoZSBHZWV6YSBmb250IHNwZWNpYWwgY2FzZXMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9M
b2cpOiBSZW1vdmVkCisgICAgICAgIFRleHRDYXNlU2Vuc2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0
aGUgZGVmYXVsdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTogVXNlIGlz
QWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKTog
VXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKTogVXNl
IEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YWRkU3RyaW5nVG9TSEExKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNh
Y2hlQ29udHJvbERpcmVjdGl2ZXMpOiBVc2UgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VIVFRQUmVmcmVzaCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ2hhcnNldEluTWVkaWFUeXBlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZVJhbmdlKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpUnVuOjpCaWRpUnVuKTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZVBERlVSTCBjb25zdCk6IFVzZQorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4
dE5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmNyZW1l
bnQpOiBEdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmlzTGluZUJyZWFrIGNvbnN0KTogVXBkYXRlZCBz
aW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCBjb25z
dCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojp0ZXh0IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5v
dyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKTog
VXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZVJlbmRlclRleHQpOiBVc2UgaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgor
ICAgICAgICBVc2UgdGhlIG5ldyB0cmltbWVkUHJlZmVycmVkV2lkdGhzIHRoYXQgcmV0dXJucyBh
IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHRoZQorICAgICAgICBvbGQgb25lIHdpdGggbG90cyBvZiBh
cmd1bWVudHMuIEFsc28gdXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZHNXaXRoSFRN
TFNwYWNlcyk6IFJlbmFtZWQgYW5kIGNoYW5nZWQgdG8gdXNlIGlzSFRNTFNwYWNlCisgICAgICAg
IGluc3RlYWQgb2YgaXNBU0NJSVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6cmVhY2hlZEVuZE9m
VGV4dFJlbmRlcmVyKTogVXNlIGVuZHNXaXRoSFRNTFNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21l
bnQpOgorICAgICAgICBVcGRhdGVkIGZvciBoY2FuZ2VzIHRvIFJlbmRlclRleHQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRp
b24pOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRl
ZCk6IFVzZQorICAgICAgICBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ym9sZGVyKTog
QWRkZWQuIEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6
OnVwZGF0ZUZyb21FbGVtZW50KTogUmV3cm90ZSB0bworICAgICAgICBvbmx5IGNvbXB1dGUgdGhl
IGJvbGRlciBmb250IG9uY2UgcmF0aGVyIHRoYW4gZm9yIGV2ZXJ5IGl0ZW0uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKTogVXBkYXRlZCBmb3IK
KyAgICAgICAgY2hhbmdlIHRvIGFwcGx5VGV4dFRyYW5zZm9ybS4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlz
dDo6YWRqdXN0SW5uZXJTdHlsZSk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBSZW5k
ZXJUZXh0Ojp0ZXh0LgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0
aCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0bworICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0uCisg
ICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQgY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxp
emUpOiBSZW5hbWVkIGZyb20gbWFrZUNhcGl0YWxpemVkLiBDaGFuZ2VkIHRvCisgICAgICAgIHRh
a2UgYW5kIHJldHVybiBhIFN0cmluZyBpbnN0ZWFkIG9mIHRha2luZyBhIFN0cmluZyouCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KTogVXNlIGlzQWxsQVNDSUkuIEFs
c28gbW92ZWQKKyAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgbW9zdCBub24tYml0ZmllbGQgbWVt
YmVycyB0byB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBVc2UgdGV4dCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdpZHRoIGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lk
dGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzSGFuZ2Fi
bGVTdG9wT3JDb21tYSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmly
c3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVy
cmVkV2lkdGhzKTogQ2hhbmdlZCB0byByZXR1cm4gdmFsdWVzCisgICAgICAgIGluIGEgc3RydWN0
dXJlIGluc3RlYWQgb2YgdGFraW5nIGxvdHMgb2YgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOiBVcGRhdGVkIHRv
IHVzZQorICAgICAgICB0aGUgdGV4dCgpIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6aXNB
bGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlIGNvbnN0KTogVXBkYXRlZCB0bworICAg
ICAgICB1c2UgYSB0aWdodGVyIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjppc0FsbFBvc3NpYmx5
Q29sbGFwc2libGVXaGl0ZXNwYWNlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojpjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSBjb25zdCk6IFVwZGF0ZWQgdG8KKyAgICAg
ICAgdXNlIGEgdGlnaHRlciBsb29wLiBSZW5hbWVkIGZyb20gY29udGFpbnNPbmx5V2hpdGVzcGFj
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KTogVXBk
YXRlZCB0byAgdXNlIHRleHQoKS4KKyAgICAgICAgKFdlYkNvcmU6OmlzSW5saW5lRmxvd09yRW1w
dHlUZXh0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OnByZXZpb3VzQ2hhcmFjdGVyIGNvbnN0KTogR290IHJpZCBvZiB1bm5lZWRl
ZAorICAgICAgICBudWxsIGNoZWNrIGFuZCBzaW1wbGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlUZXh0VHJhbnNmb3JtKTogQ2hhbmdlZCB0byByZXR1cm4gYSBTdHJpbmcgcmF0aGVyCisg
ICAgICAgIHRoYW4gbW9kaWZ5aW5nIG9uZSB0aGF0IGlzIHBhc3NlZCBpbi4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dCk6IFVwZGF0ZWQgdXNlIG9mIGFwcGx5
VGV4dFRyYW5zZm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlY3VyZVRleHQp
OiBNb3JlIG9mIHRoZSBzYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0
ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5
bWJvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGgg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxl
Y3Rpb25SZWN0c0ZvckxpbmVCb3hlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6cHJldmlvdXNPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbiBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNldCBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRD
b2RlUGF0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3Ry
aW5nVmlldyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
aDogTWFkZSBzb21lIG1vcmUgbWVtYmVycyBwcml2YXRlIGFuZCBmaW5hbC4KKyAgICAgICAgVXBk
YXRlZCBmb3IgYWJvdmUsIGluY2x1ZGluZyBhZGRpbmcgdGhlIFdpZHRocyBzdHJ1Y3R1cmUuIEdv
dCByaWQgb2YgdGhlCisgICAgICAgIHRleHRMZW5ndGggZnVuY3Rpb24sIHdoaWNoIGV4aXN0ZWQg
YXMgYSB3b3JrYXJvdW5kIGJlZm9yZSB3ZSBjb3VsZCBtYXJrCisgICAgICAgIGEgZnVuY3Rpb24g
bGlrZSBsZW5ndGggZmluYWwuIE1hZGUgdGhlIHRleHQgZnVuY3Rpb24gcmV0dXJuIGEgU3RyaW5n
SW1wbCYsCisgICAgICAgIHdoaWNoIGlzIGdvb2Qgc2luY2UgdGhlIG1fdGV4dCBzdHJpbmcgaXMg
bmV2ZXIgbnVsbCwgYW5kIHNvIGNhbGxlcnMgZW5kCisgICAgICAgIHVwIHVzaW5nIFN0cmluZ0lt
cGwgZGlyZWN0bHkgYW5kIHNhdmluZyBudWxsIGNoZWNrcy4gUmVtb3ZlZCBmdW5jdGlvbnMKKyAg
ICAgICAgdGhhdCBhcmUgbm90IG5lZWRlZCwgaW5jbHVkaW5nIGlzOEJpdCwgY2hhcmFjdGVyczgs
IGNoYXJhY3RlcnMxNiwKKyAgICAgICAgdW5jaGVja2VkQ2hhcmFjdGVyQXQsIG9wZXJhdG9yW10s
IGFuZCBpc0FsbEFTQ0lJLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQpOiBV
c2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJv
eGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4
T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJv
eGVzOjpwb3NpdGlvbkZvclBvaW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25TdGF0ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyBjb25zdCk6IERpdHRv
LgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29sbGVjdE5vbkVtcHR5TGVh
ZlJlbmRlckJsb2NrRmxvd3MpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZsb3dDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0Ojppbml0aWFsaXplU2VnbWVudHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6ZmluZENhcmV0TWF4aW11bU9mZnNldCk6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRk
Qm9yZGVyUGFkZGluZ01hcmdpbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU2tp
cFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpp
dGVyYXRvcklzQmV5b25kRW5kT2ZSZW5kZXJDb21iaW5lVGV4dCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6dGV4dFdpZHRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29u
dGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0
aW9uc0ZvclRyYWlsaW5nQm94ZXMpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQpOiBSZW1vdmVkIHN0cmF5IHVzZSBvZiAidW5zaWdu
ZWQgaW50Ii4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFy
dHNOZXdUZXh0Q2h1bmsgY29uc3QpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmU6OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0
cmlidXRlcyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlv
bnNSZXNwZWN0aW5nTGlnYXR1cmVzIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6dXBkYXRlUmVuZGVyVHJlZSk6IFVzZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJ
c05lZWRlZCk6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Rlc3RzOjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MpOiBVc2Ugc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBbGxv
d0V4dGVybmFsTG9hZCk6IERpdHRvLgorCiAyMDE3LTExLTIwICBNYXJpbyBTYW5jaGV6IFByYWRh
ICA8bWFyaW9AZW5kbGVzc20uY29tPgogCiAgICAgICAgIFtHVEtdIE5ldyBBUEkgdG8gYWRkLCBy
ZXRyaWV2ZSBhbmQgZGVsZXRlIGNvb2tpZXMgdmlhIFdlYktpdENvb2tpZU1hbmFnZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYjJiMjg2MDk5NDA4MDgyNjQwYTQxNDZhY2NjMjc0OGY1ZDExMGVlYi4uMWQ4NjJmNTA0
M2U5YTRlZWUwYWQxMzRlMWUwYzc2MWU2ODg5YWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2Rl
IG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmlzTWVkaWFNSU1FVHlwZSk6IFVz
ZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6aGFzaFN0cmluZyk6IFVzZSBpc0FsbEFTQ0lJLi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNp
ZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21IZWFkZXJGaWVs
ZHM6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cik6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNh
dmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFy
eUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbik6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRl
UGx1Z2luKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNv
bnN0KTogVXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorCiAyMDE3LTEx
LTIwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRk
IGRlY2xzcGVjIHdpdGhpbiBXZWJLaXQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggOWRlNGMxNzc1ZDM3MDQ4OGQ4MTg1OTkzYTJjNGMyNjk4NzEwNDBhMy4uYzE4NWM2Nzc3MDM1
ZTc1OTA1NjhiNDlkNzc2MTExMmI5YmNlNzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVu
bmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvQmluYXJ5UHJv
cGVydHlMaXN0LmNwcDoKKyAgICAgICAgKEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3Ry
aW5nT2JqZWN0KTogVXNlIGlzQWxsQVNDSUkuCisgICAgICAgIChCaW5hcnlQcm9wZXJ0eUxpc3RT
ZXJpYWxpemVyOjphcHBlbmRTdHJpbmdPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKHJlZ0V4cEZvckxhYmVscyk6IFJl
bW92ZWQgVGV4dENhc2VTZW5zaXRpdmUgc2luY2UgaXQgaXMgbm93IHRoZSBkZWZhdWx0LgorICAg
ICAgICAobWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKTogVXNlIEpTQzo6WWFycjo6VGV4dENhc2VJ
bnNlbnNpdGl2ZS4KKwogMjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElORyBmZWF0
dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZElkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElk
ZW50aWZpZXJzLmNwcAppbmRleCBiNGNlYzZiNGU5OTgwODg5OTJmYWYxNWI3NzhmODc4MWFjZTRi
NjI3Li43OTRlN2ZhNzNjYTJmOTNiN2NkOWU4NWE1ZWY5MjVhMzZmOTAwMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBA
IC04MSwxNCArODEsMTQgQEAgVW5pcXVlZFN0cmluZ0ltcGwqIERlc2lyZWRJZGVudGlmaWVyczo6
YXQodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCA9IG1fY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGluZGV4KS5pbXBsKCk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBtX2Fk
ZGVkSWRlbnRpZmllcnNbaW5kZXggLSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygp
XTsKLSAgICBBU1NFUlQocmVzdWx0LT5oYXNBdExlYXN0T25lUmVmKCkpOworICAgIEFTU0VSVChy
ZXN1bHQtPnJlZkNvdW50KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVzaXJl
ZElkZW50aWZpZXJzOjpyZWFsbHlBZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21tb25EYXRhKQog
ewogICAgIGZvciAoYXV0byByZXAgOiBtX2FkZGVkSWRlbnRpZmllcnMpIHsKLSAgICAgICAgQVNT
RVJUKHJlcC0+aGFzQXRMZWFzdE9uZVJlZigpKTsKKyAgICAgICAgQVNTRVJUKHJlcC0+cmVmQ291
bnQoKSk7CiAgICAgICAgIGNvbW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgcmVwKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCA4NDM3MGIxYWNkZWJlY2Y4M2NlZjRkOTY4MDNkYzEwOGJmYjZkMGQ4
Li4zYjM2N2ZmN2FlMjJkMDAwOGJlZTlkZWMzMzE2ODliNDVmMmZiZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBSZWY8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5n
JiB1cmwsIGluCiBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIHsKICAgICBpZiAoaXNSZWdleCkgewotICAg
ICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4sIFRleHRDYXNl
U2Vuc2l0aXZlKTsKKyAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChw
YXR0ZXJuKTsKICAgICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHVybCkgIT0gLTE7CiAgICAgfQog
ICAgIHJldHVybiB1cmwgPT0gcGF0dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAppbmRleCBmZGVkYTFkMTM4NTk4ZGIwZTAyOGQ2YjI1NWNhYjE3NTA2OTE2
YzQ4Li5jZmU1NmY2NTg5NGYwYTJhMmM5Y2U0MDMxZjc2YTJlMGM4YmYxNDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlID0gMjA0ODsK
IHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZUludGVybmFsOChMQ2hhciogYnVmZmVyKSBj
b25zdAogewogICAgIGlmIChpc1N1YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFycygKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAg
ICBidWZmZXIsIHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3Ry
aW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDhOb1N1YnN0
cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc19t
YXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgZmliZXIoaSk7ICsraSkgewogICAgICAgICBjb25zdCBT
dHJpbmdJbXBsJiBmaWJlclN0cmluZyA9ICpmaWJlcihpKS0+bV92YWx1ZS5pbXBsKCk7CiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpYmVyU3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBmaWJl
clN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBwb3NpdGlvbiArPSBsZW5n
dGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVuZ3RoKCkpID09IHBvc2l0aW9uKTsK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5h
bDhOb1N1YnN0cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogdm9pZCBKU1JvcGVTdHJpbmc6OnJl
c29sdmVSb3BlSW50ZXJuYWwxNihVQ2hhciogYnVmZmVyKSBjb25zdAogewogICAgIGlmIChpc1N1
YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycygKKyAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAgICBidWZmZXIsIHN1YnN0cmluZ0Jh
c2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5ndGgo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksOSArMTY5LDkgQEAgdm9pZCBKU1Jv
cGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNk5vU3Vic3RyaW5nKFVDaGFyKiBidWZmZXIp
IGNvbnN0CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwmIGZpYmVyU3RyaW5nID0gKmZpYmVyKGkp
LT5tX3ZhbHVlLmltcGwoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmliZXJTdHJpbmcu
bGVuZ3RoKCk7CiAgICAgICAgIGlmIChmaWJlclN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0
aW9uLCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBsZW5ndGgpOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogICAg
ICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVu
Z3RoKCkpID09IHBvc2l0aW9uKTsKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpTUm9wZVN0cmlu
Zzo6cmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqIGJ1ZmZlcikgY29uc3QKICAgICAgICAgCiAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlci0+bGVuZ3RoKCk7CiAgICAgICAg
IHBvc2l0aW9uIC09IGxlbmd0aDsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0
aW9uLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhwb3NpdGlvbiwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQo
YnVmZmVyID09IHBvc2l0aW9uKTsKQEAgLTM2Myw5ICszNjMsOSBAQCB2b2lkIEpTUm9wZVN0cmlu
Zzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciogYnVmZmVyKSBjb25zdAogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlckFzUm9wZS0+bGVuZ3RoKCk7CiAgICAg
ICAgICAgICAgICAgcG9zaXRpb24gLT0gbGVuZ3RoOwogICAgICAgICAgICAgICAgIGlmIChzdHJp
bmctPmlzOEJpdCgpKQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMo
cG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0cmlu
Zy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgc3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVy
czE2KCkgKyBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNfbWF4SW50ZXJu
YWxSb3BlTGVuZ3RoICYmIGN1cnJlbnRGaWJlckFzUm9wZS0+ZmliZXIoaSk7ICsraSkKQEAgLTM3
Nyw5ICszNzcsOSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hh
ciogYnVmZmVyKSBjb25zdAogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0
aCgpOwogICAgICAgICBwb3NpdGlvbiAtPSBsZW5ndGg7CiAgICAgICAgIGlmIChzdHJpbmctPmlz
OEJpdCgpKQotICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9uLCBzdHJp
bmctPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0
cmluZy0+Y2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsK
ICAgICB9CiAKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGFkYmZhZDIx
MTllMGM2OTQ3MTg1ZjIxYzljMmMzNDIxZDc0MzcxMTUuLjhlMmE2ZWJhNDVkMDE0ZmYxNzI2ZWFk
YWE5ODE2NTI5MmZiNGE3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJp
bmcqIHNvdXJjCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICAgICAgaWYgKGludCBzcmNMZW4g
PSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jh
bmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdS
YW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9
IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKICAgICAgICAgaWYgKGludCBzcmNMZW4g
PSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2Vz
W2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ld
LnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQxMywxMyArNDEzLDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVj
LCBKCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4Q291bnQ7IGkrKykgewogICAgICAg
ICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGludCBzcmNM
ZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJz
dHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSAr
IHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGludCBzZXBMZW4gPSBzZXBhcmF0b3JzW2ldLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRv
cnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0b3JzW2ldLmNo
YXJhY3RlcnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBz
ZXBMZW47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDQwLDE4ICs0NDAs
MTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaWYgKGkgPCByYW5nZUNvdW50
KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5n
dGgpIHsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzOEJpdCgpKQotICAgICAgICAgICAg
ICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2Uu
Y2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlv
biwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJz
MTYoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBz
b3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xl
bik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAg
ICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoc2VwYXJhdG9yc1tpXS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFy
YWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgo
KSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hh
cmFjdGVyczE2KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJz
MTYoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc2VwTGVuOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0
cmluZ1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3RyaW5nLCB0cnVlLCBzdGFydCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmZpbmQo
c2VhcmNoU3RyaW5nLCBzdGFydCkgIT0gbm90Rm91bmQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAppbmRleCAy
ODQyNzc0M2NkZjZhMzhhOWE3YTBkMmViNzEyMzYxZmMxMTdiODgzLi4yMDczOTBiNWU5ZTcxYWE2
NmE4MmVhNDUxNjMxYjFlYzQ0ODVjYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgKQEAgLTI5LDE1ICsyOSwxMyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCi1lbnVtIE11bHRpbGluZU1vZGUgewotICAgIE11bHRp
bGluZURpc2FibGVkLAotICAgIE11bHRpbGluZUVuYWJsZWQKLX07CitlbnVtIE11bHRpbGluZU1v
ZGUgeyBNdWx0aWxpbmVEaXNhYmxlZCwgTXVsdGlsaW5lRW5hYmxlZCB9OworZW51bSBUZXh0Q2Fz
ZVNlbnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsK
IAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVndWxhckV4cHJlc3Npb24gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0
IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIE11bHRpbGluZU1vZGUgPSBNdWx0aWxpbmVE
aXNhYmxlZCk7CisgICAgZXhwbGljaXQgUmVndWxhckV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiwg
VGV4dENhc2VTZW5zaXRpdml0eSA9IFRleHRDYXNlU2Vuc2l0aXZlLCBNdWx0aWxpbmVNb2RlID0g
TXVsdGlsaW5lRGlzYWJsZWQpOwogICAgIH5SZWd1bGFyRXhwcmVzc2lvbigpOwogCiAgICAgUmVn
dWxhckV4cHJlc3Npb24oY29uc3QgUmVndWxhckV4cHJlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9B
U0NJSUZhc3RQYXRoLmgKaW5kZXggZWI1NDgyOGEyOGVhZGE0MDk3NDVjODFkZWQzNzFkYjI2NjJm
YjU3Ni4uMjY0MmE1YmJlYjJkMGI2MzQ1NzU4ZjJmNDFiOGFjZGZmYjY4ZjUzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKQEAgLTE5NCw0ICsxOTQsNiBAQCBpbmxpbmUgdm9pZCBj
b3B5TENoYXJzRnJvbVVDaGFyU291cmNlKExDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgcwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjaGFyYWN0ZXJz
QXJlQWxsQVNDSUk7CisKICNlbmRpZiAvLyBBU0NJSUZhc3RQYXRoX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5oCmluZGV4IDc2NThlMDUxMjU1OTQwZjE5OTk5YTIyOWM2MjNkOThlYmVmMzJh
ODIuLmI4NjNhYjAzMzE2OGFkODUyMjU0OGVhNTFkNGJkZWQwNzk1NWJlODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAwNiwgMjAwOCwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzIsOCArNzIsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFM
V0FZU19JTkxJTkUgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKQorICAgIHRlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIEF0b21pY1N0cmluZyhjb25zdCBjaGFyICgm
Y2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykKICAg
ICAgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJhY3RlcnMs
IGNoYXJhY3RlckNvdW50IC0gMSkpCiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFy
YWN0ZXJDb3VudCA+IDEsIEF0b21pY1N0cmluZ0Zyb21MaXRlcmFsTm90RW1wdHkpOwpAQCAtMTEy
LDUxICsxMTEsMjcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
QXRvbWljU3RyaW5nIG51bWJlcihkb3VibGUpOwogICAgIC8vIElmIHdlIG5lZWQgbW9yZSBvdmVy
bG9hZHMgb2YgdGhlIG51bWJlciBmdW5jdGlvbiwgd2UgY2FuIGFkZCBhbGwgdGhlIG90aGVycyB0
aGF0IFN0cmluZyBoYXMsIGJ1dCB0aGVzZSBzZWVtIHRvIGRvIGZvciBub3cuCiAKLSAgICBib29s
IGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGMpOyB9
Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hhciogcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocywgY2FzZVNl
bnNpdGl2ZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocyk7IH0KLSAgICBib29sIGNvbnRhaW5z
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX3N0cmluZy5jb250YWlucyhzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLQotICAgIHNp
emVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZChjLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogcywg
dW5zaWduZWQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQot
ICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnQgPSAwLCBib29s
IGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5m
aW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmlu
Zy5maW5kSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzLCBzdGFydE9mZnNl
dCk7IH0KLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCk7IH0KLQotICAgIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dp
dGgocyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShzKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJv
b2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFy
YWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFj
dGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8
bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KLQotICAgIGJvb2wgZW5kc1dp
dGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRz
V2l0aChzKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2Uocyk7IH0KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBj
YXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChz
LCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0g
ICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25z
dCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihw
cmVmaXgsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGNoYXJhY3Rlcik7IH0KKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmNvbnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9CisgICAgYm9v
bCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKwor
ICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5maW5kKGNoYXJhY3Rlciwgc3RhcnQpOyB9CisgICAgc2l6ZV90
IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmQoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsgfQorICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0
KTsgfQorICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5j
dGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1h
dGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQorCisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0K
KyAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0
cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21h
dGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aDxtYXRjaExlbmd0
aD4ocHJlZml4KTsgfQorCisgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgYm9v
bCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNX
aXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9v
bCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpOyB9CiAKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgQXRvbWljU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIEF0b21pY1N0cmluZyBjb252ZXJ0VG9B
U0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpAQCAtMTcyLDEzICsxNDcsMTMgQEAgcHVibGljOgogI2lm
IFVTRShDRikKICAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCisKICNpZmRl
ZiBfX09CSkNfXwogICAgIEF0b21pY1N0cmluZyhOU1N0cmluZyopOwogICAgIG9wZXJhdG9yIE5T
U3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAotICAgIC8vIEF0
b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgotICAgIC8v
IHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgorICAgIC8v
IEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUg
aW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCkBAIC0yMjksNTMgKzIwNCw1MyBA
QCBpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoKQogewogfQogCi1pbmxpbmUgQXRv
bWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMpCi0gICAgOiBtX3N0cmluZyhB
dG9taWNTdHJpbmdJbXBsOjphZGQocykpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoY29uc3QgTENoYXIqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6
OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmco
Y29uc3QgY2hhciogcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkK
K2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5s
aW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBs
ZW5ndGgpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocywgbGVuZ3RoKSkK
K2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3Ry
aW5nLCBsZW5ndGgpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmco
Y29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0
cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCiB7CiB9CiAKLWlubGluZSBB
dG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykKLSAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1w
bDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmlu
ZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApCi0gICAgOiBtX3N0cmluZyhpbXApCitpbmxpbmUgQXRv
bWljU3RyaW5nOjpBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDog
bV9zdHJpbmcoc3RyaW5nKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgaW1wKQotICAgIDogbV9zdHJpbmcoV1RGTW92
ZShpbXApKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKIHsK
IH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkK
LSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChpbXApKQoraW5saW5lIEF0b21p
Y1N0cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogaW1wKQotICAgIDogbV9z
dHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJp
bmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNT
dHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpCi0gICAgOiBtX3N0cmluZyhBdG9t
aWNTdHJpbmdJbXBsOjphZGQocy5pbXBsKCkpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWlj
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5n
SW1wbDo6YWRkKHN0cmluZy5pbXBsKCkpKQogewogfQogCkBAIC0yOTAsMTcgKzI2NSwyMSBAQCBp
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
IH0KIAogI2lmIFVTRShDRikKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhDRlN0
cmluZ1JlZiBzKQotICAgIDogIG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKKwor
aW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKKyAg
ICA6ICBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KKwogI2Vu
ZGlmCiAKICNpZmRlZiBfX09CSkNfXwotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KE5TU3RyaW5nKiBzKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilzKSkKKworaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KE5TU3RyaW5nKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQo
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZykpCiB7CiB9CisKICNlbmRpZgogCiAvLyBEZWZp
bmUgZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWlj
IHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oCmluZGV4IDYxOTQyZTdmYzRiMjVjYTFiOTA1NjI0MDE3OWQ4MTdmYWFmNWI5YmYuLjlk
YjgzMDNjODMwMWI5N2M0MzA4MjA4MjZmYTQ2YTkyY2U5Y2U5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCkBAIC0yMiwxNCArMjIsMTMg
QEAKICNpZm5kZWYgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAjZGVmaW5lIEludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb25faAogCisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKwogbmFt
ZXNwYWNlIFdURiB7CiAKLWVudW0gUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsKLSAgICBQb3Np
dGl2ZU51bWJlciwKLSAgICBOZWdhdGl2ZU51bWJlcgotfTsKK2VudW0gUG9zaXRpdmVPck5lZ2F0
aXZlTnVtYmVyIHsgUG9zaXRpdmVOdW1iZXIsIE5lZ2F0aXZlTnVtYmVyIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ7Cit0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRp
dmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGUsIHR5cGVuYW1lIEFkZGl0aW9uYWxBcmd1bWVu
dFR5cGU+CiBzdGF0aWMgdHlwZW5hbWUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFQ+
OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJl
ciwgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSBhZGRpdGlvbmFsQXJndW1lbnQpCkBAIC02Myw3ICs2
Miw2IEBAIGlubGluZSB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46
OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpCiAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5n
SW1wbDxULCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBhZGRp
dGlvbmFsQXJndW1lbnQpOwogfQogCi0KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUs
IHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJlciBO
dW1iZXJUeXBlPgogc3RhdGljIHZvaWQgd3JpdGVOdW1iZXJUb0J1ZmZlckltcGwoVW5zaWduZWRJ
bnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQogewpAQCAtOTcs
NyArOTUsNiBAQCBpbmxpbmUgdm9pZCB3cml0ZU51bWJlclRvQnVmZmVyVW5zaWduZWQoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cAogICAgIHJldHVybiB3cml0ZU51bWJl
clRvQnVmZmVySW1wbDxDaGFyYWN0ZXJUeXBlLCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2
ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7CiB9CiAKLQogdGVtcGxhdGU8dHlwZW5hbWUg
VW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGU+
CiBzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGwoVW5zaWduZWRJbnRl
Z2VyVHlwZSBudW1iZXIpCiB7CkBAIC0xMjgsNyArMTI1LDYgQEAgaW5saW5lIHVuc2lnbmVkIGxl
bmd0aE9mTnVtYmVyQXNTdHJpbmdVbnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
ICAgICByZXR1cm4gbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGw8VW5zaWduZWRJbnRlZ2VyVHlw
ZSwgUG9zaXRpdmVOdW1iZXI+KG51bWJlcik7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
ICNlbmRpZiAvLyBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCmluZGV4IGQxN2YzOWI0YjY4OTRmZWViNWIyYzczMjMxOWQyY2U3ZDAyNWI1NDAu
LmZhZDUwNzUwZGFmY2NlZDRiMWI1YjEzNjhmYTkyMmUxMGFlOWUwOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcApAQCAtMTYyLDcgKzE2Miw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKLQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBDb25z
dHJ1Y3RXaXRob3V0Q29weWluZykpOwogfQogCkBAIC0xNzAsMTIgKzE2OSwxMCBAQCBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbgogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVt
cHR5KCk7Ci0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKGNoYXJhY3RlcnMs
IGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5ndGgsIENo
YXJhY3RlclR5cGUqJiBkYXRhKQogewogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIGRhdGEg
PSAwOwpAQCAtMTg0LDIwICsxODEsMTkgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLAogICAgIHJl
dHVybiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVk
IGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQog
ewogICAgIEFTU0VSVChsZW5ndGgpOwogCiAgICAgLy8gQWxsb2NhdGUgYSBzaW5nbGUgYnVmZmVy
IGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBTdHJpbmdJbXBsCiAgICAgLy8gc3RydWN0IGFz
IHdlbGwgYXMgdGhlIGRhdGEgd2hpY2ggaXQgY29udGFpbnMuIFRoaXMgcmVtb3ZlcyBvbmUKICAg
ICAvLyBoZWFwIGFsbG9jYXRpb24gZnJvbSB0aGlzIGNhbGwuCi0gICAgaWYgKGxlbmd0aCA+ICgo
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwp
KSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hh
cmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwotICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9
IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hh
clR5cGU+KGxlbmd0aCkpKTsKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPENoYXJhY3RlclR5cGU+KGxl
bmd0aCkpKTsKIAotICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJUeXBlPigpOwot
ICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwor
ICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJhY3RlclR5cGU+KCk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKIH0K
IAogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCkBAIC0yMTAsOCArMjA2LDcgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hh
ciomIGRhdGEpCiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbChsZW5ndGgs
IGRhdGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4m
JiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYgZGF0YSkKIHsKICAgICBBU1NFUlQo
b3JpZ2luYWxTdHJpbmctPmhhc09uZVJlZigpKTsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmct
PmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsKTsKQEAgLTIyMiwxNCArMjE3LDE0
IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFs
KFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsCiAgICAgfQogCiAgICAgLy8gU2FtZSBhcyBjcmVh
dGVVbmluaXRpYWxpemVkKCkgZXhjZXB0IGhlcmUgd2UgdXNlIHN0cmluZ1JlYWxsb2MuCi0gICAg
aWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6
ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAo
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBs
KSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgb3Jp
Z2luYWxTdHJpbmctPn5TdHJpbmdJbXBsKCk7Ci0gICAgYXV0byogc3RyaW5nID0gc3RhdGljX2Nh
c3Q8U3RyaW5nSW1wbCo+KHN0cmluZ1JlYWxsb2MoJm9yaWdpbmFsU3RyaW5nLmxlYWtSZWYoKSwg
YWxsb2NhdGlvblNpemU8Q2hhclR5cGU+KGxlbmd0aCkpKTsKKyAgICBhdXRvKiBzdHJpbmcgPSBz
dGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nUmVhbGxvYygmb3JpZ2luYWxTdHJpbmcubGVh
a1JlZigpLCBhbGxvY2F0aW9uU2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKSk7CiAKLSAgICBk
YXRhID0gc3RyaW5nLT50YWlsUG9pbnRlcjxDaGFyVHlwZT4oKTsKLSAgICByZXR1cm4gY29uc3Ry
dWN0SW50ZXJuYWw8Q2hhclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKKyAgICBkYXRhID0gc3RyaW5n
LT50YWlsUG9pbnRlcjxDaGFyYWN0ZXJUeXBlPigpOworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRl
cm5hbDxDaGFyYWN0ZXJUeXBlPihzdHJpbmcsIGxlbmd0aCk7CiB9CiAKIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTI0NCwxNSArMjM5LDEzIEBAIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9y
aWdpbmFsU3RyaW5nLCB1bnNpZ25lCiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChXVEZN
b3ZlKG9yaWdpbmFsU3RyaW5nKSwgbGVuZ3RoLCBkYXRhKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJ
bnRlcm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXJzIHx8ICFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiAqZW1wdHkoKTsKLQotICAgIENoYXJUeXBlKiBkYXRhOworICAgIENoYXJhY3Rl
clR5cGUqIGRhdGE7CiAgICAgYXV0byBzdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwotICAgIG1lbWNweShkYXRhLCBjaGFyYWN0ZXJzLCBs
ZW5ndGggKiBzaXplb2YoQ2hhclR5cGUpKTsKKyAgICBjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKQEAgLTI3NSw3ICsyNjgs
NyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbgogICAgIGF1dG8gc3RyaW5nID0gY3JlYXRlVW5p
bml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobGVuZ3RoLCBkYXRhKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0g
JiAweGZmMDApCisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldICYgMHhGRjAwKQogICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICBkYXRhW2ldID0g
c3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcnNbaV0pOwogICAgIH0KQEAgLTI5OCwyOSArMjkx
LDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogc3Ry
aW5nKQogICAgIHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1ib29sIFN0cmlu
Z0ltcGw6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQg
cmVuYW1lIHRoaXMgdG8gY29udGFpbnNPbmx5QVNDSUlXaGl0ZXNwYWNlLgotICAgIC8vIE1vc3Qg
V2ViS2l0IGNhbGxlcnMgaW5zdGVhZCB3YW50IGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlIHdo
aWNoLCB1bmxpa2UgdGhpcywKLSAgICAvLyB3b3VsZCAqbm90KiB0cmVhdCBVKzAwMEIgTElORSBU
QUJVTEFUSU9OIGFzIGEgc3BhY2UuCi0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIFVDaGFy
IGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2UoYykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7
Ci0gICAgICAgIFVDaGFyIGMgPSBtX2RhdGExNltpXTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJU3Bh
Y2UoYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKHN0YXJ0ID49IG1fbGVuZ3RoKQpAQCAt
MzgxLDExICszNTEsOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvTG93
ZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgaWYgKCEob3JlZCAmIH4weDdGKSkgewogICAgICAg
ICBVQ2hhciogZGF0YTE2OwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKLSAgICAgICAgCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBV
Q2hhciBjID0gbV9kYXRhMTZbaV07Ci0gICAgICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93
ZXIoYyk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIobV9kYXRhMTZb
aV0pOwogICAgICAgICByZXR1cm4gbmV3SW1wbDsKICAgICB9CiAKQEAgLTQ1Miw5ICs0MTksOSBA
QCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExv
Y2FsZSgpCiAgICAgICAgIC8vIERvIGEgZmFzdGVyIGxvb3AgZm9yIHRoZSBjYXNlIHdoZXJlIGFs
bCB0aGUgY2hhcmFjdGVycyBhcmUgQVNDSUkuCiAgICAgICAgIHVuc2lnbmVkIG9yZWQgPSAwOwog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBM
Q2hhciBjID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgIG9yZWQgfD0gYzsKLSAgICAgICAgICAg
IGRhdGE4W2ldID0gdG9BU0NJSVVwcGVyKGMpOworICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVy
ID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyOworICAgICAgICAg
ICAgZGF0YThbaV0gPSB0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIShvcmVkICYgfjB4N0YpKQogICAgICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC00
NjYsMTEgKzQzMywxMSBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBw
ZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIC8vICAxLiBTb21lIExhdGluLTEgY2hhcmFj
dGVycyB3aGVuIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIGFyZSAxNiBiaXQgY2hhcmFjdGVycy4K
ICAgICAgICAgLy8gIDIuIExvd2VyIGNhc2Ugc2hhcnAtUyBjb252ZXJ0cyB0byAiU1MiICh0d28g
Y2hhcmFjdGVycykKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGMgPT0gc21hbGxMZXR0ZXJTaGFycFMpKQorICAgICAgICAgICAgTENoYXIgY2hhcmFj
dGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0ZXIgPT0g
c21hbGxMZXR0ZXJTaGFycFMpKQogICAgICAgICAgICAgICAgICsrbnVtYmVyU2hhcnBTQ2hhcmFj
dGVyczsKLSAgICAgICAgICAgIEFTU0VSVCh1X3RvdXBwZXIoYykgPD0gMHhGRkZGKTsKLSAgICAg
ICAgICAgIFVDaGFyIHVwcGVyID0gdV90b3VwcGVyKGMpOworICAgICAgICAgICAgQVNTRVJUKHVf
dG91cHBlcihjaGFyYWN0ZXIpIDw9IDB4RkZGRik7CisgICAgICAgICAgICBVQ2hhciB1cHBlciA9
IHVfdG91cHBlcihjaGFyYWN0ZXIpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHVwcGVyID4g
MHhGRikpIHsKICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIHVwcGVyLWNhc2VkIGNoYXJh
Y3RlciBkb2VzIG5vdCBmaXQgaW4gYW4gOC1iaXQgc3RyaW5nLCB3ZSBuZWVkIHRvIHRha2UgdGhl
IDE2LWJpdCBwYXRoLgogICAgICAgICAgICAgICAgIGdvdG8gdXBjb252ZXJ0OwpAQCAtNDg3LDEz
ICs0NTQsMTMgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVyY2Fz
ZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICBMQ2hhciogZGVzdCA9IGRhdGE4OwogCiAgICAgICAg
IGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBMQ2hh
ciBjID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgIGlmIChjID09IHNtYWxsTGV0dGVyU2hhcnBT
KSB7CisgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSBzbWFsbExldHRlclNoYXJwUykgewogICAgICAgICAgICAgICAg
ICpkZXN0KysgPSAnUyc7CiAgICAgICAgICAgICAgICAgKmRlc3QrKyA9ICdTJzsKICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjKSA8PSAweEZG
KTsKLSAgICAgICAgICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVfdG91cHBl
cihjKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjaGFyYWN0ZXIpIDw9IDB4
RkYpOworICAgICAgICAgICAgICAgICpkZXN0KysgPSBzdGF0aWNfY2FzdDxMQ2hhcj4odV90b3Vw
cGVyKGNoYXJhY3RlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTUxMCw5ICs0
NzcsOSBAQCB1cGNvbnZlcnQ6CiAgICAgLy8gRG8gYSBmYXN0ZXIgbG9vcCBmb3IgdGhlIGNhc2Ug
d2hlcmUgYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KICAgICB1bnNpZ25lZCBvcmVkID0g
MDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFy
IGMgPSBzb3VyY2UxNltpXTsKLSAgICAgICAgb3JlZCB8PSBjOwotICAgICAgICBkYXRhMTZbaV0g
PSB0b0FTQ0lJVXBwZXIoYyk7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHNvdXJjZTE2W2ld
OworICAgICAgICBvcmVkIHw9IGNoYXJhY3RlcjsKKyAgICAgICAgZGF0YTE2W2ldID0gdG9BU0NJ
SVVwcGVyKGNoYXJhY3Rlcik7CiAgICAgfQogICAgIGlmICghKG9yZWQgJiB+MHg3RikpCiAgICAg
ICAgIHJldHVybiBuZXdJbXBsOwpAQCAtNjM0LDggKzYwMSw3IEBAIFNsb3dQYXRoOgogICAgICAg
ICBpZiAoIW5lZWQxNkJpdENoYXJhY3RlcnMpIHsKICAgICAgICAgICAgIExDaGFyKiBkYXRhODsK
ICAgICAgICAgICAgIGF1dG8gZm9sZGVkID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9u
RW1wdHkobV9sZW5ndGgsIGRhdGE4KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmYWlsaW5nSW5kZXg7ICsraSkKLSAgICAgICAgICAgICAgICBkYXRhOFtpXSA9IG1fZGF0
YThbaV07CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhOCwgbV9kYXRhOCwgZmFpbGlu
Z0luZGV4KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8
IG1fbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IG1fZGF0
YThbaV07CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUkoY2hhcmFjdGVyKSkKQEAgLTcwNyw4
ICs2NzMsNyBAQCBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252
ZXJ0QVNDSUlDYXNlKFN0cmluZ0ltcGwmIGltcGwsIGNvbgogU2xvd1BhdGg6CiAgICAgQ2hhcmFj
dGVyVHlwZSogbmV3RGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIG5ld0RhdGEpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmYWlsaW5nSW5kZXg7ICsraSkKLSAgICAgICAgbmV3RGF0YVtpXSA9IGRhdGFbaV07
CisgICAgY29weUNoYXJhY3RlcnMobmV3RGF0YSwgZGF0YSwgZmFpbGluZ0luZGV4KTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBmYWlsaW5nSW5kZXg7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAg
bmV3RGF0YVtpXSA9IHR5cGUgPT0gQ2FzZUNvbnZlcnRUeXBlOjpMb3dlciA/IHRvQVNDSUlMb3dl
cihkYXRhW2ldKSA6IHRvQVNDSUlVcHBlcihkYXRhW2ldKTsKICAgICByZXR1cm4gbmV3SW1wbDsK
QEAgLTc2MCw5ICs3MjUsOSBAQCBjbGFzcyBVQ2hhclByZWRpY2F0ZSB7CiBwdWJsaWM6CiAgICAg
aW5saW5lIFVDaGFyUHJlZGljYXRlKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZnVuY3Rpb24p
OiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKSB7IH0KIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yKCko
VUNoYXIgY2gpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihjaCk7CisgICAgICAg
IHJldHVybiBtX2Z1bmN0aW9uKGNoYXJhY3Rlcik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNzcx
LDkgKzczNiw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlIHsK
IHB1YmxpYzoKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKFVDaGFyIGNoKSBjb25zdAorICAg
IGlubGluZSBib29sIG9wZXJhdG9yKCkoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOworICAgICAgICByZXR1cm4gaXNTcGFj
ZU9yTmV3bGluZShjaGFyYWN0ZXIpOwogICAgIH0KIH07CiAKQEAgLTc4NywxMSArNzUyLDEwIEBA
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNl
RnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlCiAgICAgcmV0dXJuIHN0cmlwTWF0Y2hlZENoYXJhY3Rl
cnMoVUNoYXJQcmVkaWNhdGUoaXNXaGl0ZVNwYWNlKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLUFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIgZmluZE1hdGNoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
QUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVy
cyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9u
UHRyIGZpbmRNYXRjaCkKIHsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbSA9IGNoYXJhY3RlcnM7
Ci0gICAgY29uc3QgQ2hhclR5cGUqIGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CisgICAgYXV0
byogZnJvbSA9IGNoYXJhY3RlcnM7CisgICAgYXV0byogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0
aDsKICAgICAKICAgICAvLyBBc3N1bWUgdGhlIGNvbW1vbiBjYXNlIHdpbGwgbm90IHJlbW92ZSBh
bnkgY2hhcmFjdGVycwogICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgIWZpbmRNYXRjaCgq
ZnJvbSkpCkBAIC03OTksMTIgKzc2MywxMiBAQCBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYQogICAg
IGlmIChmcm9tID09IGZyb21lbmQpCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKLSAgICBT
dHJpbmdCdWZmZXI8Q2hhclR5cGU+IGRhdGEobV9sZW5ndGgpOwotICAgIENoYXJUeXBlKiB0byA9
IGRhdGEuY2hhcmFjdGVycygpOworICAgIFN0cmluZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBkYXRh
KG1fbGVuZ3RoKTsKKyAgICBhdXRvKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwogICAgIHVuc2ln
bmVkIG91dGMgPSBmcm9tIC0gY2hhcmFjdGVyczsKICAgICAKICAgICBpZiAob3V0YykKLSAgICAg
ICAgbWVtY3B5KHRvLCBjaGFyYWN0ZXJzLCBvdXRjICogc2l6ZW9mKENoYXJUeXBlKSk7CisgICAg
ICAgIGNvcHlDaGFyYWN0ZXJzKHRvLCBjaGFyYWN0ZXJzLCBvdXRjKTsKIAogICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgZmluZE1hdGNoKCpmcm9t
KSkKQEAgLTgyNywxNyArNzkxLDE2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1v
dmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoCiAgICAgcmV0
dXJuIHJlbW92ZUNoYXJhY3RlcnMoY2hhcmFjdGVyczE2KCksIGZpbmRNYXRjaCk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1Nw
YWNlKFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlIHBy
ZWRpY2F0ZSkKIHsKLSAgICBTdHJpbmdCdWZmZXI8Q2hhclR5cGU+IGRhdGEobV9sZW5ndGgpOwor
ICAgIFN0cmluZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKIAotICAgIGNv
bnN0IENoYXJUeXBlKiBmcm9tID0gY2hhcmFjdGVyczxDaGFyVHlwZT4oKTsKLSAgICBjb25zdCBD
aGFyVHlwZSogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0aDsKKyAgICBhdXRvKiBmcm9tID0gY2hh
cmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpOworICAgIGF1dG8qIGZyb21lbmQgPSBmcm9tICsgbV9s
ZW5ndGg7CiAgICAgaW50IG91dGMgPSAwOwogICAgIGJvb2wgY2hhbmdlZFRvU3BhY2UgPSBmYWxz
ZTsKICAgICAKLSAgICBDaGFyVHlwZSogdG8gPSBkYXRhLmNoYXJhY3RlcnMoKTsKKyAgICBhdXRv
KiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwogICAgIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgcHJlZGljYXRlKCpmcm9tKSkgewpAQCAtOTYy
LDU0ICs5MjUsNiBAQCBmbG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogICAgIHJl
dHVybiBjaGFyYWN0ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKIH0K
IAotLy8gVGFibGUgaXMgYmFzZWQgb24gZnRwOi8vZnRwLnVuaWNvZGUub3JnL1B1YmxpYy9VTklE
QVRBL0Nhc2VGb2xkaW5nLnR4dAotc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFi
bGVbMjU2XSA9IHsKLSAgICAweDAwMDAsIDB4MDAwMSwgMHgwMDAyLCAweDAwMDMsIDB4MDAwNCwg
MHgwMDA1LCAweDAwMDYsIDB4MDAwNywgMHgwMDA4LCAweDAwMDksIDB4MDAwYSwgMHgwMDBiLCAw
eDAwMGMsIDB4MDAwZCwgMHgwMDBlLCAweDAwMGYsCi0gICAgMHgwMDEwLCAweDAwMTEsIDB4MDAx
MiwgMHgwMDEzLCAweDAwMTQsIDB4MDAxNSwgMHgwMDE2LCAweDAwMTcsIDB4MDAxOCwgMHgwMDE5
LCAweDAwMWEsIDB4MDAxYiwgMHgwMDFjLCAweDAwMWQsIDB4MDAxZSwgMHgwMDFmLAotICAgIDB4
MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgw
MDI3LCAweDAwMjgsIDB4MDAyOSwgMHgwMDJhLCAweDAwMmIsIDB4MDAyYywgMHgwMDJkLCAweDAw
MmUsIDB4MDAyZiwKLSAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwg
MHgwMDM1LCAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDAzYSwgMHgwMDNiLCAw
eDAwM2MsIDB4MDAzZCwgMHgwMDNlLCAweDAwM2YsCi0gICAgMHgwMDQwLCAweDAwNjEsIDB4MDA2
MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5
LCAweDAwNmEsIDB4MDA2YiwgMHgwMDZjLCAweDAwNmQsIDB4MDA2ZSwgMHgwMDZmLAotICAgIDB4
MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwgMHgw
MDc3LCAweDAwNzgsIDB4MDA3OSwgMHgwMDdhLCAweDAwNWIsIDB4MDA1YywgMHgwMDVkLCAweDAw
NWUsIDB4MDA1ZiwKLSAgICAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwg
MHgwMDY1LCAweDAwNjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4MDA2YSwgMHgwMDZiLCAw
eDAwNmMsIDB4MDA2ZCwgMHgwMDZlLCAweDAwNmYsCi0gICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3
MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5
LCAweDAwN2EsIDB4MDA3YiwgMHgwMDdjLCAweDAwN2QsIDB4MDA3ZSwgMHgwMDdmLAotICAgIDB4
MDA4MCwgMHgwMDgxLCAweDAwODIsIDB4MDA4MywgMHgwMDg0LCAweDAwODUsIDB4MDA4NiwgMHgw
MDg3LCAweDAwODgsIDB4MDA4OSwgMHgwMDhhLCAweDAwOGIsIDB4MDA4YywgMHgwMDhkLCAweDAw
OGUsIDB4MDA4ZiwKLSAgICAweDAwOTAsIDB4MDA5MSwgMHgwMDkyLCAweDAwOTMsIDB4MDA5NCwg
MHgwMDk1LCAweDAwOTYsIDB4MDA5NywgMHgwMDk4LCAweDAwOTksIDB4MDA5YSwgMHgwMDliLCAw
eDAwOWMsIDB4MDA5ZCwgMHgwMDllLCAweDAwOWYsCi0gICAgMHgwMGEwLCAweDAwYTEsIDB4MDBh
MiwgMHgwMGEzLCAweDAwYTQsIDB4MDBhNSwgMHgwMGE2LCAweDAwYTcsIDB4MDBhOCwgMHgwMGE5
LCAweDAwYWEsIDB4MDBhYiwgMHgwMGFjLCAweDAwYWQsIDB4MDBhZSwgMHgwMGFmLAotICAgIDB4
MDBiMCwgMHgwMGIxLCAweDAwYjIsIDB4MDBiMywgMHgwMGI0LCAweDAzYmMsIDB4MDBiNiwgMHgw
MGI3LCAweDAwYjgsIDB4MDBiOSwgMHgwMGJhLCAweDAwYmIsIDB4MDBiYywgMHgwMGJkLCAweDAw
YmUsIDB4MDBiZiwKLSAgICAweDAwZTAsIDB4MDBlMSwgMHgwMGUyLCAweDAwZTMsIDB4MDBlNCwg
MHgwMGU1LCAweDAwZTYsIDB4MDBlNywgMHgwMGU4LCAweDAwZTksIDB4MDBlYSwgMHgwMGViLCAw
eDAwZWMsIDB4MDBlZCwgMHgwMGVlLCAweDAwZWYsCi0gICAgMHgwMGYwLCAweDAwZjEsIDB4MDBm
MiwgMHgwMGYzLCAweDAwZjQsIDB4MDBmNSwgMHgwMGY2LCAweDAwZDcsIDB4MDBmOCwgMHgwMGY5
LCAweDAwZmEsIDB4MDBmYiwgMHgwMGZjLCAweDAwZmQsIDB4MDBmZSwgMHgwMGRmLAotICAgIDB4
MDBlMCwgMHgwMGUxLCAweDAwZTIsIDB4MDBlMywgMHgwMGU0LCAweDAwZTUsIDB4MDBlNiwgMHgw
MGU3LCAweDAwZTgsIDB4MDBlOSwgMHgwMGVhLCAweDAwZWIsIDB4MDBlYywgMHgwMGVkLCAweDAw
ZWUsIDB4MDBlZiwKLSAgICAweDAwZjAsIDB4MDBmMSwgMHgwMGYyLCAweDAwZjMsIDB4MDBmNCwg
MHgwMGY1LCAweDAwZjYsIDB4MDBmNywgMHgwMGY4LCAweDAwZjksIDB4MDBmYSwgMHgwMGZiLCAw
eDAwZmMsIDB4MDBmZCwgMHgwMGZlLCAweDAwZmYsCi19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wg
ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBi
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgIGlm
IChsYXRpbjFDYXNlRm9sZFRhYmxlWyphKytdICE9IGxhdGluMUNhc2VGb2xkVGFibGVbKmIrK10p
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgd2hpbGUgKGxl
bmd0aC0tKSB7Ci0gICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9DQVNFX0RFRkFV
TFQpICE9IGxhdGluMUNhc2VGb2xkVGFibGVbKmIrK10pCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1
YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgTENoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNz
KGIsIGEsIGxlbmd0aCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxp
dHlDYXNlbGVzcyhjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gIXVfbWVtY2FzZWNtcChhLCBiLCBsZW5ndGgsIFVfRk9MRF9DQVNF
X0RFRkFVTFQpOwotfQotCiBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIGlmIChpczhC
aXQoKSkKQEAgLTEwODksNTAgKzEwMDQsNiBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChjb25z
dCBMQ2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBpbmRleCAr
IGk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFy
KiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwg
b3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKLSAgICBpZiAoIW1hdGNoU3RyaW5nKQot
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgc2l6ZV90IG1hdGNoU3RyaW5nTGVuZ3RoID0g
c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1hdGNoU3RyaW5nKSk7Ci0gICAg
aWYgKG1hdGNoU3RyaW5nTGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQotICAgICAgICBDUkFTSCgpOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmdMZW5ndGg7Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWluKGluZGV4LCBsZW5ndGgoKSk7Ci0KLSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3Ro
IGFyZSBpbiByYW5nZS4KLSAgICBpZiAoaW5kZXggPiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGxlbmd0aCgpIC0gaW5kZXg7
Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90
Rm91bmQ7Ci0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRv
IHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVs
dGEgPSBzZWFyY2hMZW5ndGggLSBtYXRjaExlbmd0aDsKLQotICAgIGlmIChpczhCaXQoKSkgewot
ICAgICAgICBjb25zdCBMQ2hhciogc2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnM4KCkgKyBp
bmRleDsKLQotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgd2hpbGUgKCFlcXVhbENv
bXBhdGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hTdHJpbmcsIG1h
dGNoTGVuZ3RoKSkgewotICAgICAgICAgICAgaWYgKGkgPT0gZGVsdGEpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBpbmRleCArIGk7Ci0gICAgfQotCi0gICAgY29uc3QgVUNoYXIqIHNlYXJjaENoYXJh
Y3RlcnMgPSBjaGFyYWN0ZXJzMTYoKSArIGluZGV4OwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0g
ICAgd2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsg
aSwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBpZiAoaSA9PSBkZWx0YSkK
LSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgKytpOwotICAgIH0KLSAgICBy
ZXR1cm4gaW5kZXggKyBpOwotfQotCiBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBs
KiBtYXRjaFN0cmluZykKIHsKICAgICAvLyBDaGVjayBmb3IgbnVsbCBzdHJpbmcgdG8gbWF0Y2gg
YWdhaW5zdApAQCAtMTE4MSw1MCArMTA1Miw2IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0
cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gZmluZENv
bW1vbigqdGhpcywgKm1hdGNoU3RyaW5nLCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+Ci1BTFdB
WVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgZmluZElnbm9yaW5nQ2FzZUlubmVyKGNvbnN0IFNlYXJj
aENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlw
ZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2VhcmNoTGVuZ3Ro
LCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKLXsKLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9m
IGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25j
ZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3RoOwotCi0g
ICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgLy8ga2VlcCBsb29waW5nIHVudGlsIHdlIG1hdGNoCi0g
ICAgd2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsg
aSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYgKGkgPT0gZGVs
dGEpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgICsraTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGluZGV4ICsgaTsKLX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmlu
Z0Nhc2UoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQotewotICAgIC8v
IENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0Ci0gICAgaWYg
KCFtYXRjaFN0cmluZykKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOwotICAgIGlmICghbWF0Y2hMZW5ndGgp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKCkpOwotCi0gICAgLy8gQ2hl
Y2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKGluZGV4ID4gbGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBzZWFyY2hMZW5n
dGggPSBsZW5ndGgoKSAtIGluZGV4OwotICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotCi0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmluZEln
bm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJh
Y3RlcnM4KCksIGluZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0
dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJzOCgpICsgaW5kZXgsIG1hdGNoU3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
ICAgIH0KLQotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBm
aW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmct
PmNoYXJhY3RlcnM4KCksIGluZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLQotICAg
IHJldHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2KCkgKyBpbmRleCwgbWF0
Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0
aCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDo6V1RGOjpmaW5k
SWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIG1hdGNoU3RyaW5nLCAwKTsKQEAgLTEyNDksMTEgKzEw
NzYsMTEgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQKICAgICByZXR1cm4gOjpXVEY6OmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCBzdGFydE9mZnNldCk7CiB9CiAK
LXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBjLCB1bnNpZ25lZCBpbmRleCkK
K3NpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVk
IGluZGV4KQogewogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGMsIGluZGV4KTsKLSAgICByZXR1cm4gV1RG
OjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGMsIGluZGV4KTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGNoYXJh
Y3RlciwgaW5kZXgpOworICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigp
LCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBpbmRleCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBT
ZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CkBAIC0xMzE2
LDEwMCArMTE0Myw0OCBAQCBzaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiByZXZlcnNlRmluZElu
bmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBv
dXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENo
YXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUg
c3RhdGljIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNvbnN0IFNlYXJjaENo
YXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSog
bWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBtYXRjaExlbmd0aCkKK0FMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJbm5lcihjb25z
dCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBjaGFyKiBt
YXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCiB7Ci0gICAgLy8gZGVsdGEgaXMgdGhl
IG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVz
dCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVsdGEgPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3Ro
IC0gbWF0Y2hMZW5ndGgpOworICAgIEFTU0VSVChtYXRjaExlbmd0aCA8PSBzdHJpbmcubGVuZ3Ro
KCkpOworICAgIEFTU0VSVChzdGFydE9mZnNldCArIG1hdGNoTGVuZ3RoIDw9IHN0cmluZy5sZW5n
dGgoKSk7CiAKLSAgICAvLyBrZWVwIGxvb3BpbmcgdW50aWwgd2UgbWF0Y2gKLSAgICB3aGlsZSAo
IWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENoYXJhY3RlcnMgKyBkZWx0YSwgbWF0
Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYgKCFkZWx0YSkKLSAgICAg
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgLS1kZWx0YTsKLSAgICB9Ci0gICAgcmV0
dXJuIGRlbHRhOworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVh
bChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGVxdWFs
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CiB9CiAKLXNpemVfdCBTdHJp
bmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywg
dW5zaWduZWQgaW5kZXgpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgU3RyaW5n
SW1wbCYgbWF0Y2hTdHJpbmcpCiB7Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3Ry
aW5nIHRvIG1hdGNoIGFnYWluc3QKLSAgICBpZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1
cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy0+bGVu
Z3RoKCk7Ci0gICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRj
aExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4LCBvdXJMZW5ndGgpOwotCi0g
ICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKG1h
dGNoTGVuZ3RoID4gb3VyTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBp
ZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCks
IG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0
aCk7Ci0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3Rl
cnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0
Y2hMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnMxNigpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgp
OwotCi0gICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2
KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hM
ZW5ndGgpOwotfQotCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3Qg
U3RyaW5nSW1wbCogc3RyaW5nSW1wbCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IGNoYXIq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKQot
ewotICAgIEFTU0VSVChzdHJpbmdJbXBsKTsKLSAgICBBU1NFUlQobWF0Y2hMZW5ndGggPD0gc3Ry
aW5nSW1wbC0+bGVuZ3RoKCkpOwotICAgIEFTU0VSVChzdGFydE9mZnNldCArIG1hdGNoTGVuZ3Ro
IDw9IHN0cmluZ0ltcGwtPmxlbmd0aCgpKTsKLQotICAgIGlmIChjYXNlU2Vuc2l0aXZlKSB7Ci0g
ICAgICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBlcXVh
bChzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0
dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAg
ICB9Ci0gICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxD
b21wYXRpYmlsaXR5Q2FzZWxlc3Moc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zm
c2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExl
bmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHN0cmluZ0ltcGwt
PmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykKLXsKLSAgICBpZiAo
c3RhcnRPZmZzZXQgPiBzdHJpbmdJbXBsLmxlbmd0aCgpKQorICAgIGlmIChzdGFydE9mZnNldCA+
IHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtYXRjaFN0
cmluZy5sZW5ndGgoKSA+IHN0cmluZ0ltcGwubGVuZ3RoKCkpCisgICAgaWYgKG1hdGNoU3RyaW5n
Lmxlbmd0aCgpID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpICsgc3RhcnRPZmZzZXQgPiBzdHJpbmdJbXBsLmxlbmd0
aCgpKQorICAgIGlmIChtYXRjaFN0cmluZy5sZW5ndGgoKSArIHN0YXJ0T2Zmc2V0ID4gc3RyaW5n
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RyaW5nSW1wbC5p
czhCaXQoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgaWYgKG1hdGNo
U3RyaW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwuY2hh
cmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBtYXRj
aFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNo
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFj
dGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBtYXRjaFN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcu
bGVuZ3RoKCkpOwogICAgIH0KICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1h
dGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1
cm4gZXF1YWwoc3RyaW5nSW1wbC5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZXF1YWwo
c3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6c3Rh
cnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHIpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OnN0
YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSBjb25zdAogewotICAgIGlmICghc3Ry
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0
aGlzLCAqc3RyKTsKKyAgICByZXR1cm4gc3RyaW5nICYmIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlz
LCAqc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmlu
Z0ltcGwmIHN0cikgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJp
bmdJbXBsJiBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0
aGlzLCBzdHIpOworICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywgc3RyaW5nKTsK
IH0KIAogYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCogcHJlZml4KSBjb25zdAogewotICAgIGlmICghcHJlZml4KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZSgqdGhpcywgKnByZWZpeCk7CisgICAgcmV0dXJuIHByZWZpeCAmJiA6OldURjo6c3RhcnRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKIH0KIAogYm9vbCBTdHJpbmdJ
bXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgcHJlZml4
KSBjb25zdApAQCAtMTQyMiwxMiArMTE5Nyw5IEBAIGJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0
aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylb
MF0gPT0gY2hhcmFjdGVyOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3Qg
Y2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRp
dmUpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgY2hhciogbWF0Y2hT
dHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdAogewotICAgIEFTU0VSVChtYXRjaExl
bmd0aCk7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gZXF1YWxJbm5lcih0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0Y2hM
ZW5ndGgsIGNhc2VTZW5zaXRpdmUpOworICAgIHJldHVybiBtYXRjaExlbmd0aCA8PSBsZW5ndGgo
KSAmJiBlcXVhbElubmVyKCp0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpOwogfQog
CiBib29sIFN0cmluZ0ltcGw6Omhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiBt
YXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CkBAIC0xNDM3LDEwICsxMjA5
LDcgQEAgYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1w
bCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXIKIAogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0
aChTdHJpbmdJbXBsKiBzdWZmaXgpCiB7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRoaXMsICpzdWZmaXgpOwor
ICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCAqc3VmZml4KTsKIH0K
IAogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBzdWZmaXgpCkBAIC0xNDQ4
LDIyICsxMjE3LDkgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBzdWZm
aXgpCiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKIH0KIAotYm9v
bCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgYm9vbCBjYXNl
U2Vuc2l0aXZlKQotewotICAgIEFTU0VSVChtYXRjaFN0cmluZyk7Ci0gICAgaWYgKG1fbGVuZ3Ro
ID49IG1hdGNoU3RyaW5nLT5tX2xlbmd0aCkgewotICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1f
bGVuZ3RoIC0gbWF0Y2hTdHJpbmctPm1fbGVuZ3RoOwotICAgICAgICByZXR1cm4gKGNhc2VTZW5z
aXRpdmUgPyBmaW5kKG1hdGNoU3RyaW5nLCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNlKG1hdGNo
U3RyaW5nLCBzdGFydCkpID09IHN0YXJ0OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJ
bXBsKiBzdWZmaXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhp
cywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0CkBAIC0x
NDc2LDY2ICsxMjMyLDU5IEBAIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoVUNoYXIgY2hhcmFj
dGVyKSBjb25zdAogICAgIHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0g
PT0gY2hhcmFjdGVyOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKGNvbnN0IGNoYXIq
IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBj
b25zdAorYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywg
dW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1hdGNoTGVuZ3RoKTsK
LSAgICBpZiAobWF0Y2hMZW5ndGggPiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbGVuZ3RoKCkgLSBtYXRjaExlbmd0aDsKLSAgICBy
ZXR1cm4gZXF1YWxJbm5lcih0aGlzLCBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVu
Z3RoLCBjYXNlU2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gbWF0Y2hMZW5ndGggPD0gbGVuZ3RoKCkg
JiYgZXF1YWxJbm5lcigqdGhpcywgbGVuZ3RoKCkgLSBtYXRjaExlbmd0aCwgbWF0Y2hTdHJpbmcs
IG1hdGNoTGVuZ3RoKTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeEVuZGluZ0F0KGNv
bnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0CiB7
Ci0gICAgaWYgKGVuZE9mZnNldCA8IG1hdGNoU3RyaW5nLmxlbmd0aCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNo
U3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZyk7CisgICAgcmV0dXJuIGVuZE9mZnNldCA+PSBt
YXRjaFN0cmluZy5sZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCBlbmRPZmZzZXQgLSBtYXRj
aFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQorUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkKIHsK
LSAgICBpZiAob2xkQyA9PSBuZXdDKQorICAgIGlmICh0YXJnZXQgPT0gcmVwbGFjZW1lbnQpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICB1bnNpZ25lZCBpOwogICAgIGZvciAoaSA9IDA7IGkg
IT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjID0gaXM4Qml0KCkgPyBtX2RhdGE4
W2ldIDogbV9kYXRhMTZbaV07Ci0gICAgICAgIGlmIChjID09IG9sZEMpCisgICAgICAgIFVDaGFy
IGNoYXJhY3RlciA9IGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOworICAgICAg
ICBpZiAoY2hhcmFjdGVyID09IHRhcmdldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBpZiAoaSA9PSBtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGlmIChvbGRDID4gMHhmZikKLSAgICAgICAgICAgIC8vIExvb2tp
bmcgZm9yIGEgMTYgYml0IGNoYXIgaW4gYW4gOCBiaXQgc3RyaW5nLCB3ZSdyZSBkb25lLgorICAg
ICAgICBpZiAodGFyZ2V0ID4gMHhGRikgeworICAgICAgICAgICAgLy8gTG9va2luZyBmb3IgYSAx
Ni1iaXQgY2hhcmFjdGVyIGluIGFuIDgtYml0IHN0cmluZywgc28gd2UncmUgZG9uZS4KICAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChuZXdDIDw9IDB4
ZmYpIHsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50IDw9IDB4RkYpIHsKICAgICAgICAgICAgIExD
aGFyKiBkYXRhOwotICAgICAgICAgICAgTENoYXIgb2xkQ2hhciA9IHN0YXRpY19jYXN0PExDaGFy
PihvbGRDKTsKLSAgICAgICAgICAgIExDaGFyIG5ld0NoYXIgPSBzdGF0aWNfY2FzdDxMQ2hhcj4o
bmV3Qyk7CisgICAgICAgICAgICBMQ2hhciBvbGRDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KHRh
cmdldCk7CisgICAgICAgICAgICBMQ2hhciBuZXdDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KHJl
cGxhY2VtZW50KTsKIAogICAgICAgICAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFs
aXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEpOwogCiAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpICE9IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBMQ2hhciBjaCA9
IG1fZGF0YThbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09IG9sZENoYXIpCi0gICAgICAg
ICAgICAgICAgICAgIGNoID0gbmV3Q2hhcjsKLSAgICAgICAgICAgICAgICBkYXRhW2ldID0gY2g7
CisgICAgICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyID09IG9sZENoYXIpCisgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlciA9IG5ld0NoYXI7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBuZXdJbXBsOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gVGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHdlIG5lZWQgdG8gdXAgY29udmVy
dCBmcm9tIDggdG8gMTYgYml0LAotICAgICAgICAvLyBjcmVhdGUgYSAxNiBiaXQgc3RyaW5nIGZv
ciB0aGUgcmVzdWx0LgogICAgICAgICBVQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBs
ID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEpOwog
CiAgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
VUNoYXIgY2ggPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKGNoID09IG9sZEMpCi0gICAg
ICAgICAgICAgICAgY2ggPSBuZXdDOwotICAgICAgICAgICAgZGF0YVtpXSA9IGNoOworICAgICAg
ICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChjaGFy
YWN0ZXIgPT0gdGFyZ2V0KQorICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2VtZW50
OworICAgICAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBuZXdJbXBsOwpAQCAtMTU0NSw1NiArMTI5NCw1MCBAQCBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQogICAgIGF1dG8gbmV3
SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRh
KTsKIAogICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hh
ciBjaCA9IG1fZGF0YTE2W2ldOwotICAgICAgICBpZiAoY2ggPT0gb2xkQykKLSAgICAgICAgICAg
IGNoID0gbmV3QzsKLSAgICAgICAgZGF0YVtpXSA9IGNoOworICAgICAgICBVQ2hhciBjaGFyYWN0
ZXIgPSBtX2RhdGExNltpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCisgICAg
ICAgICAgICBjaGFyYWN0ZXIgPSByZXBsYWNlbWVudDsKKyAgICAgICAgZGF0YVtpXSA9IGNoYXJh
Y3RlcjsKICAgICB9CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1Jl
cGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBs
YWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0lt
cGwqIHN0cmluZykKIHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgo
KSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5n
dGgoKSAtIHBvc2l0aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0ciA/IHN0
ci0+bGVuZ3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nID8g
c3RyaW5nLT5sZW5ndGgoKSA6IDA7CiAgICAgaWYgKCFsZW5ndGhUb1JlcGxhY2UgJiYgIWxlbmd0
aFRvSW5zZXJ0KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoKGxlbmd0aCgpIC0g
bGVuZ3RoVG9SZXBsYWNlKSA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gbGVuZ3RoVG9JbnNlcnQpKQogICAgICAgICBDUkFTSCgpOwogCi0gICAgaWYgKGlzOEJpdCgp
ICYmICghc3RyIHx8IHN0ci0+aXM4Qml0KCkpKSB7CisgICAgaWYgKGlzOEJpdCgpICYmICghc3Ry
aW5nIHx8IHN0cmluZy0+aXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAg
ICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0gbGVuZ3RoVG9S
ZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgICAgICBtZW1jcHkoZGF0YSwgbV9k
YXRhOCwgcG9zaXRpb24gKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgaWYgKHN0cikKLSAgICAg
ICAgICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0ci0+bV9kYXRhOCwgbGVuZ3RoVG9JbnNl
cnQgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiArIGxl
bmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsCi0gICAg
ICAgICAgICAgICAobGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSkgKiBzaXpl
b2YoTENoYXIpKTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhOCwgcG9zaXRp
b24pOworICAgICAgICBpZiAoc3RyaW5nKQorICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0KTsKKyAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTgg
KyBwb3NpdGlvbiArIGxlbmd0aFRvUmVwbGFjZSwgbGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0
aFRvUmVwbGFjZSk7CiAgICAgICAgIHJldHVybiBuZXdJbXBsOwogICAgIH0KICAgICBVQ2hhciog
ZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0g
bGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgIGlmIChpczhCaXQo
KSkKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvc2l0aW9uOyArK2kpCi0gICAg
ICAgICAgICBkYXRhW2ldID0gbV9kYXRhOFtpXTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSwgbV9kYXRhOCwgcG9zaXRpb24pOwogICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGRhdGEsIG1f
ZGF0YTE2LCBwb3NpdGlvbiAqIHNpemVvZihVQ2hhcikpOwotICAgIGlmIChzdHIpIHsKLSAgICAg
ICAgaWYgKHN0ci0+aXM4Qml0KCkpCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoVG9JbnNlcnQ7ICsraSkKLSAgICAgICAgICAgICAgICBkYXRhW2kgKyBwb3NpdGlv
bl0gPSBzdHItPm1fZGF0YThbaV07CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1fZGF0
YTE2LCBwb3NpdGlvbik7CisgICAgaWYgKHN0cmluZykgeworICAgICAgICBpZiAoc3RyaW5nLT5p
czhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3Ry
aW5nLT5tX2RhdGE4LCBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0ci0+bV9kYXRhMTYsIGxlbmd0aFRvSW5zZXJ0ICog
c2l6ZW9mKFVDaGFyKSk7Ci0gICAgfQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFj
ZTsgKytpKQotICAgICAgICAgICAgZGF0YVtpICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydF0g
PSBtX2RhdGE4W2kgKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVwbGFjZV07Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBjaGFyYWN0
ZXJzMTYoKSArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLAotICAgICAgICAgICAgKGxlbmd0
aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2UpICogc2l6ZW9mKFVDaGFyKSk7CisgICAg
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+bV9kYXRhMTYs
IGxlbmd0aFRvSW5zZXJ0KTsKICAgICB9CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9kYXRhOCArIHBv
c2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9S
ZXBsYWNlKTsKKyAgICBlbHNlCisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlv
biArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGExNiArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNl
LCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsKICAgICByZXR1cm4gbmV3
SW1wbDsKIH0KIApAQCAtMTYwMiwxMCArMTM0NSw4IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewog
ICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKLQogICAgIGlmIChy
ZXBsYWNlbWVudC0+aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotCiAgICAgcmV0dXJu
IHJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBsYWNlbWVudC0+bGVu
Z3RoKCkpOwogfQogCkBAIC0xNjQ4LDE1ICsxMzg5LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNlbWVudCwg
dW5zCiAKICAgICAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNT
ZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgc3JjU2VnbWVudExlbmd0
aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgICAgICBtZW1jcHko
ZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExl
bmd0aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSAr
IGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7
CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgICAg
IG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoICogc2l6
ZW9mKExDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0
LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBy
ZXBTdHJMZW5ndGg7CiAgICAgICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5k
ICsgMTsKICAgICAgICAgfQogCiAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAt
IHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0
YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGggKiBzaXplb2YoTENoYXIpKTsK
KyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1Nl
Z21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgQVNTRVJUKGRzdE9mZnNl
dCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE2
NjgsMTggKzE0MDksMTcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNo
YXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgIHdoaWxlICgo
c3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91
bmQpIHsKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdt
ZW50U3RhcnQ7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNy
Y1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRT
dGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21l
bnRMZW5ndGg7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXBTdHJMZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSByZXBsYWNlbWVudFtpXTsK
KyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJl
cFN0ckxlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAg
ICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAgICAgfQogCiAgICAgc3Jj
U2VnbWVudExlbmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgIG1lbWNweShk
YXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExl
bmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZz
ZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAg
IEFTU0VSVChkc3RPZmZzZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5ld0ltcGwuZ2V0KCkubGVu
Z3RoKCkpOwogCkBAIC0xNzI1LDE5ICsxNDY1LDE3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5z
CiAKICAgICAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNTZWdt
ZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9
IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc3JjU2VnbWVudExlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRh
dGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdtZW50U3RhcnRdOworICAgICAg
ICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21l
bnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBz
cmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgp
OwogCiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICAgICAg
c3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAgICAgICAgIH0KIAogICAgICAg
ICBzcmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsK
KyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1Nl
Z21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgQVNTRVJUKGRzdE9mZnNl
dCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE3
NDksMTcgKzE0ODcsMTcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNo
YXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgIHdoaWxlICgo
c3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91
bmQpIHsKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdt
ZW50U3RhcnQ7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNy
Y1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRT
dGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21l
bnRMZW5ndGg7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwg
cmVwU3RyTGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRh
dGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgpOwogCiAgICAgICAgIGRz
dE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1Nl
Z21lbnRFbmQgKyAxOwogICAgIH0KIAogICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAt
IHNyY1NlZ21lbnRTdGFydDsKLSAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhMTYg
KyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRT
dGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2Vn
bWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsKIApAQCAtMTgxOCwxNSArMTU1
NiwxNSBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBw
YXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAgICAgICBhdXRvIG5ld0ltcGwgPSBj
cmVhdGVVbmluaXRpYWxpemVkKG5ld1NpemUsIGRhdGEpOwogICAgICAgICB3aGlsZSAoKHNyY1Nl
Z21lbnRFbmQgPSBmaW5kKHBhdHRlcm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7
CiAgICAgICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21l
bnRTdGFydDsKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsg
c3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAg
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2Vn
bWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBz
cmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAg
ICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2Rh
dGE4LCByZXBTdHJMZW5ndGgpOwogICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0
aDsKICAgICAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyBwYXR0ZXJu
TGVuZ3RoOwogICAgICAgICB9CiAKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IG1fbGVuZ3Ro
IC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9k
YXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihMQ2hhcikp
OworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3Jj
U2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICBBU1NFUlQoZHN0T2Zm
c2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsKIApAQCAt
MTgzOSwyMCArMTU3NywxOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShT
dHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAgICAgICBzcmNT
ZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKICAgICAgICAg
aWYgKHNyY0lzOEJpdCkgewogICAgICAgICAgICAgLy8gQ2FzZSAzLgotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY1NlZ21lbnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAg
ICAgICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsK
KyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTggKyBz
cmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gQ2FzZSAyICYgNC4KLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zm
c2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVv
ZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
bV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogICAgICAgICB9
CiAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwogICAgICAgICBpZiAocmVw
bGFjZW1lbnRJczhCaXQpIHsKICAgICAgICAgICAgIC8vIENhc2VzIDIgJiAzLgotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlcFN0ckxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSByZXBsYWNlbWVudC0+bV9kYXRhOFtpXTsKKyAg
ICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5t
X2RhdGE4LCByZXBTdHJMZW5ndGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
Q2FzZSA0Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQt
Pm1fZGF0YTE2LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVw
U3RyTGVuZ3RoKTsKICAgICAgICAgfQogICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3Ro
OwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0
aDsKQEAgLTE4NjEsMTEgKzE1OTcsMTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
cGxhY2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICBz
cmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7CiAgICAgaWYgKHNy
Y0lzOEJpdCkgewogICAgICAgICAvLyBDYXNlIDMuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBkc3RP
ZmZzZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsKKyAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2Vn
bWVudExlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2FzZXMgMiAmIDQuCi0gICAg
ICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwg
c3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVu
dExlbmd0aCk7CiAgICAgfQogCiAgICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5n
dGggPT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CkBAIC0xODc4LDggKzE2MTMsNyBAQCBib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCiAgICAgcmV0
dXJuIGVxdWFsQ29tbW9uKGEsIGIpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
Ci1pbmxpbmUgYm9vbCBlcXVhbEludGVybmFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IENo
YXJUeXBlKiBiLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgYm9vbCBlcXVhbEludGVybmFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0
IENoYXJhY3RlclR5cGUqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWEpCiAgICAg
ICAgIHJldHVybiAhYjsKQEAgLTE5NTQsMTEgKzE2ODgsNyBAQCBib29sIGVxdWFsSWdub3JpbmdO
dWxsaXR5KFN0cmluZ0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCiAKIGJvb2wgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogewot
ICAgIGlmIChhID09IGIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghYSB8fCAhYikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
Q29tbW9uKCphLCAqYik7CisgICAgcmV0dXJuIGEgPT0gYiB8fCAoYSAmJiBiICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoKmEsICpiKSk7CiB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZU5vbk51bGwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKQEAgLTE5
NzEsNyArMTcwMSw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3Qg
U3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKIFVDaGFyRGlyZWN0aW9uIFN0cmlu
Z0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFs
aXR5KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oaXM4
Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOworICAgICAgICBhdXRvIGNoYXJEaXJl
Y3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZb
aV0pOwogICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAg
ICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAq
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVlOwpAQCAtMjAxMywxMyArMTc0MywxMyBAQCBz
aXplX3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsg
c2l6ZW9mKCp0aGlzKTsKIH0KIAotLy8gSGVscGVyIHRvIHdyaXRlIGEgdGhyZWUtYnl0ZSBVVEYt
OCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0IGNoZWNrIHJvb20gaXMgYXZh
aWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlwbGUoY2hhciomIGJ1ZmZlciwg
VUNoYXIgY2gpCisvLyBIZWxwZXIgdG8gd3JpdGUgYSB0aHJlZS1ieXRlIFVURi04IGNvZGUgcG9p
bnQgaW50byB0aGUgYnVmZmVyOyBjYWxsZXIgbXVzdCBlbnN1cmUgcm9vbSBpcyBhdmFpbGFibGUu
CitzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYgYnVmZmVyLCBVQ2hhciBj
aGFyYWN0ZXIpCiB7Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7Ci0gICAgKmJ1ZmZlcisrID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8IDB4RTApOwotICAgICpidWZm
ZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAweDNGKSB8IDB4ODApOwotICAg
ICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4M0YpIHwgMHg4MCk7CisgICAg
QVNTRVJUKGNoYXJhY3RlciA+PSAweDA4MDApOworICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0
PGNoYXI+KCgoY2hhcmFjdGVyID4+IDEyKSAmIDB4MEYpIHwgMHhFMCk7CisgICAgKmJ1ZmZlcisr
ID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaGFyYWN0ZXIgPj4gNikgJiAweDNGKSB8IDB4ODApOwor
ICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaGFyYWN0ZXIgJiAweDNGKSB8IDB4
ODApOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnV0ZjhJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNoYXIqJiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBD
b252ZXJzaW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAxMzA4NjZj
ZjJhMGQwZjRhMThkNjE4MjMyZjZlYTE1YTQyMWY3MmYwLi4zZmJlZTA0YmE1NDFkZTMyZWRiNGUw
OTM5OWE1ZmZhMGRkZWRhNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
U0NJSUZhc3RQYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdNYWxsb2MuaD4KQEAgLTU3LDcgKzU4LDYgQEAgY2xhc3MgU3ltYm9sSW1wbDsKIGNsYXNzIFN5
bWJvbFJlZ2lzdHJ5OwogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKIHN0cnVjdCBIYXNo
QW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKIHN0cnVjdCBTdHJpbmdIYXNoOwpAQCAtNjYsMjIgKzY2LDIxIEBAIHN0cnVjdCBVQ2hhckJ1
ZmZlclRyYW5zbGF0b3I7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9y
OwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7
CiAKLWVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7Ci0gICAgVGV4dENhc2VTZW5zaXRpdmUsCi0g
ICAgVGV4dENhc2VJbnNlbnNpdGl2ZQotfTsKKy8vIERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0
dXJuIG9uIHJ1bnRpbWUgc3RhdGlzdGljcyBmb3Igc3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNh
Z2UuCisjZGVmaW5lIFNUUklOR19TVEFUUyAwCiAKIHR5cGVkZWYgYm9vbCAoKkNoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpKFVDaGFyKTsKIHR5cGVkZWYgYm9vbCAoKklzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyKShVQ2hhcik7CiAKLS8vIERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0dXJuIG9uIHJ1
biB0aW1lIHN0YXRpc3RpY3Mgb2Ygc3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNhZ2UKLSNkZWZp
bmUgU1RSSU5HX1NUQVRTIDAKK3RlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNv
bnN0IENoYXJhY3RlclR5cGUqLCBzaXplX3QgbGVuZ3RoKTsKIAogI2lmIFNUUklOR19TVEFUUwor
CiBzdHJ1Y3QgU3RyaW5nU3RhdHMgewotICAgIGlubGluZSB2b2lkIGFkZDhCaXRTdHJpbmcodW5z
aWduZWQgbGVuZ3RoLCBib29sIGlzU3ViU3RyaW5nID0gZmFsc2UpCisgICAgdm9pZCBhZGQ4Qml0
U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAgICAgKyttX251bWJlcjhCaXRT
dHJpbmdzOwpAQCAtODksNyArODgsNyBAQCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogICAgICAgICAg
ICAgbV90b3RhbDhCaXREYXRhICs9IGxlbmd0aDsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBh
ZGQxNkJpdFN0cmluZyh1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNTdWJTdHJpbmcgPSBmYWxzZSkK
KyAgICB2b2lkIGFkZDE2Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmlu
ZyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAg
ICAgKyttX251bWJlcjE2Qml0U3RyaW5nczsKQEAgLTEyMCw3ICsxMTksOSBAQCBzdHJ1Y3QgU3Ry
aW5nU3RhdHMgewogI2RlZmluZSBTVFJJTkdfU1RBVFNfUkVNT1ZFX1NUUklORyhzdHJpbmcpIFN0
cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCkucmVtb3ZlU3RyaW5nKHN0cmluZykKICNkZWZpbmUgU1RS
SU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSArK1N0cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCku
bV9yZWZDYWxsczsKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORyhzdHJpbmcpICsr
U3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5tX2RlcmVmQ2FsbHM7CisKICNlbHNlCisKICNkZWZp
bmUgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhsZW5ndGgpICgodm9pZCkwKQogI2RlZmlu
ZSBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihsZW5ndGgsIGlzU3ViU3RyaW5nKSAoKHZv
aWQpMCkKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobGVuZ3RoKSAoKHZv
aWQpMCkKQEAgLTEyOSw0MiArMTMwLDE4IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAjZGVmaW5l
IFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNU
UklOR19TVEFUU19SRUZfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNUUklOR19T
VEFUU19ERVJFRl9TVFJJTkcoc3RyaW5nKSAoKHZvaWQpMCkKKwogI2VuZGlmCiAKIGNsYXNzIFN0
cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbFNoYXBl
KTsKIHByb3RlY3RlZDoKLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3Mp
Ci0gICAgICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgICAgICwgbV9kYXRhOChkYXRhOCkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyho
YXNoQW5kRmxhZ3MpCi0gICAgeyB9Ci0KLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIGRhdGExNiwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzKQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YTE2KGRhdGExNikKLSAgICAgICAgLCBtX2hh
c2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgU3RyaW5nSW1wbFNoYXBlKHVu
c2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
aGFzaEFuZEZsYWdzKTsKKyAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOwogCiAg
ICAgZW51bSBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnIHsgQ29uc3RydWN0V2l0aENvbnN0RXhw
ciB9OwotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIGNv
bnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKQotICAgICAgICA6IG1fcmVmQ291
bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0
YThDaGFyKGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdz
KQotICAgIHsgfQotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50Pgot
ICAgIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVu
c2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKLSAgICAgICAg
OiBtX3JlZkNvdW50KHJlZkNvdW50KQotICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAg
ICAgLCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyho
YXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWdu
ZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKKyAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNp
Z25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRo
Q29uc3RFeHByVGFnKTsKIAogICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9sZW5ndGg7CkBAIC0xODEsMjYgKzE1OCwyNSBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIFN0cmlu
Z0ltcGwgOiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyaW5nSW1wbCk7IFdURl9NQUtFX1NUUklOR19BTExPQ0FURUQ7CisKKyAgICBmcmllbmQg
Y2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludDo6RGF0
YTsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJp
ZW5kIGNsYXNzIFByaXZhdGVTeW1ib2xJbXBsOworICAgIGZyaWVuZCBjbGFzcyBSZWdpc3RlcmVk
U3ltYm9sSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKKwogICAgIGZyaWVuZCBz
dHJ1Y3QgV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFuZENoYXJhY3RlcnNUcmFuc2xhdG9y
OwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9y
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RG
OjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6
OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5n
VHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwotICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOwotICAgIGZyaWVuZCBjbGFzcyBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
SW1wbDsKLSAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgUHJp
dmF0ZVN5bWJvbEltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOwot
ICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpCdWZmZXJG
cm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBz
dHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CisKIHB1YmxpYzoKLSAgICBl
bnVtIEJ1ZmZlck93bmVyc2hpcCB7Ci0gICAgICAgIEJ1ZmZlckludGVybmFsLAotICAgICAgICBC
dWZmZXJPd25lZCwKLSAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAotICAgIH07CisgICAgZW51bSBC
dWZmZXJPd25lcnNoaXAgeyBCdWZmZXJJbnRlcm5hbCwgQnVmZmVyT3duZWQsIEJ1ZmZlclN1YnN0
cmluZyB9OwogCiAgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdz
LgogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2OwpA
QCAtMjIyLDk0ICsxOTgsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nU3ltYm9sID0gc19o
YXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24tYXRvbWljCiAgICAgfTsK
IAotICAgIC8vIEZJWE1FOiB0aGVyZSBoYXMgdG8gYmUgYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0
aGlzLgogICAgIGVudW0gRm9yY2U4Qml0IHsgRm9yY2U4Qml0Q29uc3RydWN0b3IgfTsKLSAgICAv
LyBDcmVhdGUgYSBub3JtYWwgOC1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVm
ZmVySW50ZXJuYWwpCi0gICAgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgsIEZvcmNlOEJpdCkK
LSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0
YWlsUG9pbnRlcjxMQ2hhcj4oKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJJbnRlcm5hbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAg
ICAgQVNTRVJUKG1fbGVuZ3RoKTsKIAotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RS
SU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDgtYml0IHN0cmlu
ZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQorICAgIFN0cmluZ0ltcGwo
dW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDE2
LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICBT
dHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19y
ZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVySW50ZXJuYWwpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwot
ICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZC
SVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgZXhwbGljaXQgU3RyaW5nSW1wbCh1bnNp
Z25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25l
cnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1w
bChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAg
OiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJz
LmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJP
d25lZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1f
bGVuZ3RoKTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3Ro
KTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCk7CiAKICAgICBlbnVtIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnIHsg
Q29uc3RydWN0V2l0aG91dENvcHlpbmcgfTsKLSAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQot
ICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNo
YXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLQotICAgICAgICBT
VFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORyhtX2xlbmd0aCk7Ci0gICAgfQotCi0gICAgU3Ry
aW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1
Y3RXaXRob3V0Q29weWluZ1RhZykKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0
YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19B
RERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CisgICAg
U3RyaW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91
dENvcHlpbmdUYWcpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25l
cnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1w
bChNYWxsb2NQdHI8VUNoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAg
OiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJz
LmxlYWtQdHIoKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNU
UklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgU3RyaW5n
SW1wbChNYWxsb2NQdHI8VUNoYXI+LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gVXNlZCB0
byBjcmVhdGUgbmV3IHN0cmluZ3MgdGhhdCBhcmUgYSBzdWJzdHJpbmcgb2YgYW4gZXhpc3Rpbmcg
OC1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0cmluZ0ltcGwoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFz
ZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3Ro
LCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZl
clN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJU
KGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAg
c3Vic3RyaW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NU
QVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJ
bXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJik7CiAK
ICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBv
ZiBhbiBleGlzdGluZyAxNi1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0
cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0
cmluZ0ltcGw+JiYgYmFzZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJp
bmcpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1f
ZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJUKGJhc2Ut
PmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgc3Vic3Ry
aW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYpOwogCiBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RyaW5n
SW1wbCopOwpAQCAtMzE3LDcxICsyMjgsMjYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJs
ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5PgotICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9z
c2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxV
Q2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqKTsKIAot
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hh
ciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyksIGxlbmd0aCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9Ci0KLSAgICBzdGF0aWMgQUxXQVlT
X0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5n
SW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLmxlbmd0aCgpKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4g
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpKTsgfQogCi0gICAg
ICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuICplbXB0eSgpOworICAgIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAgICAgICBhdXRvKiBvd25l
clJlcCA9ICgocmVwLmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAu
c3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBj
aGFyICgmKVtjaGFyYWN0ZXJDb3VudF0pOwogCi0gICAgICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVm
ZmVyIHRoYXQgY29udGFpbnMgYm90aCB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QgYXMgd2VsbCBhcyB0
aGUgcG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nLgotICAgICAgICBhdXRvKiBzdHJpbmdJbXBs
ID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxT
dHJpbmdJbXBsKj4oMSkpKTsKLSAgICAgICAgaWYgKHJlcC5pczhCaXQoKSkKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJl
cC5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRh
MTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBS
ZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0byBj
cmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKIAotICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyQ291bnRdKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQg
PiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7Ci0gICAgICAgIENPTVBJTEVfQVNT
RVJUKChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5n
SW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVy
Zmxvdyk7Ci0KLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyQ291bnQgLSAxKTsKLSAg
ICB9Ci0KLSAgICAvLyBGSVhNRTogVHJhbnNpdGlvbiBvZmYgb2YgdGhlc2UgZnVuY3Rpb25zIHRv
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGluc3RlYWQuCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVComIG91dHB1dCkKLSAgICB7Ci0g
ICAgICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGVuZ3Ro
ID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5n
SW1wbCkpIC8gc2l6ZW9mKFQpKSkgewotICAgICAgICAgICAgb3V0cHV0ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZ0ltcGwq
IHJlc3VsdEltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4odHJ5U3RyaW5nTWFsbG9jKGFs
bG9jYXRpb25TaXplPFQ+KGxlbmd0aCkpKTsKLSAgICAgICAgaWYgKCFyZXN1bHRJbXBsKSB7Ci0g
ICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8VD4o
KTsKLQotICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVu
Z3RoKTsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3RlclR5cGUqJik7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBs
LiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYsCiAgICAg
Ly8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3Qg
bGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0zOTYsODMgKzI2MiwzMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4g
c19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhclR5cGUsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYmIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIGlm
IChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCh2ZWN0
b3IuZGF0YSgpKTsKLSAgICAgICAgICAgIGlmIChzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNp
emUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKmVtcHR5KCk7Ci0gICAgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CisgICAgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYpOwogCiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVD
aGFyPiYmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiYpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE1l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2xlbmd0
aCk7IH0KLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYg
c19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9sZW5ndGg7IH0KIAorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNo
QW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyBBU1NFUlQoaXM4Qml0KCkpOyByZXR1cm4g
bV9kYXRhODsgfQogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigp
IGNvbnN0IHsgQVNTRVJUKCFpczhCaXQoKSk7IHJldHVybiBtX2RhdGExNjsgfQogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgY29uc3QgQ2hhclR5
cGUgKmNoYXJhY3RlcnMoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7CiAKLSAgICBzaXpl
X3QgY29zdCgpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBGb3Igc3Vic3RyaW5ncywgcmV0dXJu
IHRoZSBjb3N0IG9mIHRoZSBiYXNlIHN0cmluZy4KLSAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hp
cCgpID09IEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdCdWZm
ZXIoKS0+Y29zdCgpOwotCi0gICAgICAgIC8vIE5vdGU6IHdlIG11c3Qgbm90IGFsdGVyIHRoZSBt
X2hhc2hBbmRGbGFncyBmaWVsZCBpbiBpbnN0YW5jZXMgb2YgU3RhdGljU3RyaW5nSW1wbC4KLSAg
ICAgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRS
ZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCi0gICAgICAgIC8vIFN0YXRpY1N0cmlu
Z0ltcGwuIEFzIGEgcmVzdWx0LCBTdGF0aWNTdHJpbmdJbXBsIGluc3RhbmNlcyB3aWxsIGFsd2F5
cyByZXR1cm4gYSBjb3N0IG9mCi0gICAgICAgIC8vIDAgaGVyZSBhbmQgYXZvaWQgbW9kaWZ5aW5n
IG1faGFzaEFuZEZsYWdzLgotICAgICAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIG1faGFzaEFu
ZEZsYWdzIHw9IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0OwotICAgICAgICBzaXplX3QgcmVzdWx0
ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0gICAgICAgICAgICByZXN1bHQg
PDw9IDE7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBj
b3N0RHVyaW5nR0MoKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3RhdGljKCkpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSA9PSBC
dWZmZXJTdWJzdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7Ci0gICAgICAgIAotICAg
ICAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0g
ICAgICAgICAgICByZXN1bHQgPDw9IDE7Ci0gICAgICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAo
cmVzdWx0LCByZWZDb3VudCgpKTsKLSAgICB9CisgICAgc2l6ZV90IGNvc3QoKSBjb25zdDsKKyAg
ICBzaXplX3QgY29zdER1cmluZ0dDKCk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBTdHJpbmdLaW5kIHN0cmluZ0tpbmQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihtX2hhc2hBbmRGbGFncyAmIHNf
aGFzaE1hc2tTdHJpbmdLaW5kKTsgfQogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVy
biBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KICAgICBi
b29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
U3RyaW5nS2luZElzQXRvbWljOyB9Ci0KLSAgICB2b2lkIHNldElzQXRvbWljKGJvb2wgaXNBdG9t
aWMpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwotICAgICAgICBBU1NFUlQo
IWlzU3ltYm9sKCkpOwotICAgICAgICBpZiAoaXNBdG9taWMpIHsKLSAgICAgICAgICAgIG1faGFz
aEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7Ci0gICAgICAgICAgICBB
U1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21p
YzsKLSAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nTm9ybWFsKTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldElzQXRvbWljKGJvb2wpOwogCiAjaWYgU1RSSU5H
X1NUQVRTCiAgICAgYm9vbCBpc1N1YlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVy
c2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZzsgfQpAQCAtNDg5LDQ0ICszMDMsMTUgQEAgcHJpdmF0
ZToKICAgICAvLyBUaGUgaGlnaCBiaXRzIG9mICdoYXNoJyBhcmUgYWx3YXlzIGVtcHR5LCBidXQg
d2UgcHJlZmVyIHRvIHN0b3JlIG91ciBmbGFncwogICAgIC8vIGluIHRoZSBsb3cgYml0cyBiZWNh
dXNlIGl0IG1ha2VzIHRoZW0gc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQgdG8gYWNjZXNzLgogICAg
IC8vIFNvLCB3ZSBzaGlmdCBsZWZ0IGFuZCByaWdodCB3aGVuIHNldHRpbmcgYW5kIGdldHRpbmcg
b3VyIGhhc2ggY29kZS4KLSAgICB2b2lkIHNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghaGFzSGFzaCgpKTsKLSAgICAgICAgQVNTRVJUKCFpc1N0YXRp
YygpKTsKLSAgICAgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBhc3N1bWUgdGhhdCBTdHJpbmdIYXNo
ZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5jdGlvbi4KLSAgICAgICAgQVNTRVJU
KGhhc2ggPT0gKGlzOEJpdCgpID8gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhtX2RhdGE4LCBtX2xlbmd0aCkgOiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fZGF0YTE2LCBtX2xlbmd0aCkpKTsKLSAgICAgICAgQVNTRVJUKCEoaGFzaCAm
IChzX2ZsYWdNYXNrIDw8ICg4ICogc2l6ZW9mKGhhc2gpIC0gc19mbGFnQ291bnQpKSkpOyAvLyBW
ZXJpZnkgdGhhdCBlbm91Z2ggaGlnaCBiaXRzIGFyZSBlbXB0eS4KLSAgICAgICAgCi0gICAgICAg
IGhhc2ggPDw9IHNfZmxhZ0NvdW50OwotICAgICAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5k
RmxhZ3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBz
aGlmdC4KLSAgICAgICAgQVNTRVJUKGhhc2gpOyAvLyBWZXJpZnkgdGhhdCAwIGlzIGEgdmFsaWQg
c2VudGluZWwgaGFzaCB2YWx1ZS4KLQotICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBoYXNoOyAv
LyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93IGJpdHMuCi0gICAgfQorICAgIHZvaWQgc2V0
SGFzaCh1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2hBbmRGbGFncyA+PiBzX2ZsYWdDb3VudDsKLSAgICB9
CisgICAgdW5zaWduZWQgcmF3SGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzID4+
IHNfZmxhZ0NvdW50OyB9CiAKIHB1YmxpYzoKLSAgICBib29sIGhhc0hhc2goKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHJhd0hhc2goKSAhPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IGV4aXN0aW5nSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzSGFzaCgpKTsK
LSAgICAgICAgcmV0dXJuIHJhd0hhc2goKTsKLSAgICB9CisgICAgYm9vbCBoYXNIYXNoKCkgY29u
c3QgeyByZXR1cm4gISFyYXdIYXNoKCk7IH0KIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKGhhc0hhc2goKSkKLSAgICAgICAgICAgIHJldHVybiBleGlzdGlu
Z0hhc2goKTsKLSAgICAgICAgcmV0dXJuIGhhc2hTbG93Q2FzZSgpOwotICAgIH0KKyAgICB1bnNp
Z25lZCBleGlzdGluZ0hhc2goKSBjb25zdCB7IEFTU0VSVChoYXNIYXNoKCkpOyByZXR1cm4gcmF3
SGFzaCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGhhc0hhc2goKSA/
IHJhd0hhc2goKSA6IGhhc2hTbG93Q2FzZSgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY29uY3VycmVudEhhc2goKSBjb25zdDsKIApAQCAtNTM1LDQwICszMjAsMTEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQg
JiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IHJl
ZkNvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50IC8gc19yZWZD
b3VudEluY3JlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgaGFzT25lUmVmKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNy
ZW1lbnQ7Ci0gICAgfQorICAgIHNpemVfdCByZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVm
Q291bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OyB9CisgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25z
dCB7IHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KICAgICAKLSAg
ICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGFzc2VydGlvbnMuCi0gICAgaW5saW5lIGJv
b2wgaGFzQXRMZWFzdE9uZVJlZigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISFtX3Jl
ZkNvdW50OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHJlZigpCi0gICAgewotICAgICAgICBT
VFJJTkdfU1RBVFNfUkVGX1NUUklORygqdGhpcyk7Ci0KLSAgICAgICAgbV9yZWZDb3VudCArPSBz
X3JlZkNvdW50SW5jcmVtZW50OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIGRlcmVmKCkKLSAg
ICB7Ci0gICAgICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOwotCi0gICAgICAg
IHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9IG1fcmVmQ291bnQgLSBzX3JlZkNvdW50SW5jcmVtZW50
OwotICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkgewotICAgICAgICAgICAgU3RyaW5nSW1wbDo6
ZGVzdHJveSh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBt
X3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OwotICAgIH0KKyAgICB2b2lkIHJlZigpOworICAgIHZv
aWQgZGVyZWYoKTsKIAogICAgIGNsYXNzIFN0YXRpY1N0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmlu
Z0ltcGxTaGFwZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1N0cmluZ0lt
cGwpOwpAQCAtNjAwLDY0ICszNTYsMjkgQEAgcHVibGljOgogICAgICAgICAvLyAgICAgICBTdHJp
bmdJbXBsOjpoYXNoKCkgb25seSBzZXRzIGEgbmV3IGhhc2ggaWZmICFoYXNIYXNoKCkuCiAgICAg
ICAgIC8vICAgICAgIEFkZGl0aW9uYWxseSwgU3RyaW5nSW1wbDo6c2V0SGFzaCgpIGFzc2VydHMg
aGFzSGFzaCgpIGFuZCAhaXNTdGF0aWMoKS4KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5k
ID0gU3RyaW5nTm9ybWFsKQotICAgICAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAotICAg
ICAgICAgICAgICAgIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0RpZFJlcG9ydENv
c3QgfCBzdHJpbmdLaW5kIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRl
TGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBD
b25zdHJ1Y3RXaXRoQ29uc3RFeHByKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRp
Y1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0s
IFN0cmluZ0tpbmQgc3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCkKLSAgICAgICAgICAgIDogU3Ry
aW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50
IC0gMSwgY2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0Q29z
dCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVM
aXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENv
bnN0cnVjdFdpdGhDb25zdEV4cHIpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIG9w
ZXJhdG9yIFN0cmluZ0ltcGwmKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPih0aGlzKTsKLSAgICAgICAgfQorICAgICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwo
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0
cmluZ05vcm1hbCk7CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBj
b25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAgIG9wZXJh
dG9yIFN0cmluZ0ltcGwmKCk7CiAgICAgfTsKIAogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBT
dGF0aWNTdHJpbmdJbXBsIHNfYXRvbWljRW1wdHlTdHJpbmc7CiAgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFN0cmlu
Z0ltcGwqPigmc19hdG9taWNFbXB0eVN0cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBEb2VzIHRo
aXMgcmVhbGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVCogZGVzdGluYXRpb24sIGNvbnN0IFQqIHNvdXJjZSwg
dW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIGlmIChudW1DaGFyYWN0ZXJz
ID09IDEpIHsKLSAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2Us
IG51bUNoYXJhY3RlcnMgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgTENoYXIqIHNv
dXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlv
bltpXSA9IHNvdXJjZVtpXTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRp
b24sIGNvbnN0IENoYXJhY3RlclR5cGUqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7
CisgICAgc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25z
dCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsKIAogICAgIC8vIFNvbWUg
c3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5IGZsYWcs
IGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2FmZXR5IGJ5
IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5IG9mIHRo
ZSBzdHJpbmcuCiAgICAgUmVmPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKLSAgICBV
Q2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKLSAgICAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIG1fZGF0YThbaV07Ci0gICAgICAgIHJldHVybiBtX2RhdGExNltp
XTsKLSAgICB9CisgICAgVUNoYXIgYXQodW5zaWduZWQpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJh
dG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLQog
ICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVu
c2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIGlu
dDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNjky
LDQ5ICs0MTMsNDQgQEAgcHVibGljOgogICAgIFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRl
U3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwogCiAgICAgUmVmPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFJlZjxT
dHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBDaGFyYWN0
ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKworICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0OworICAg
IGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENo
YXJhY3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwogCiAg
ICAgc2l6ZV90IGZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAg
IHNpemVfdCBmaW5kKGNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNp
emVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwg
dW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGluZGV4ID0gMCk7Ci0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZChjb25zdCBjaGFy
KiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5k
KGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXgg
PSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNo
YXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZElnbm9yaW5nQ2FzZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfQotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQg
aW5kZXggPSAwKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0g
VUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQo
U3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXpl
X3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHJl
dmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCopIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlKSB7IHJldHVy
biBjYXNlU2Vuc2l0aXZlID8gc3RhcnRzV2l0aChzdHIpIDogKHJldmVyc2VGaW5kSWdub3JpbmdD
YXNlKHN0ciwgMCkgPT0gMCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFy
dHNXaXRoKFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0
aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hM
ZW5ndGggLSAxLCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChw
cmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKFN0
cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChTdHJp
bmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikg
Y29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1w
bCosIGJvb2wgY2FzZVNlbnNpdGl2ZSk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVu
ZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0
aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29s
IGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0
aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKKyAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIGVuZHNXaXRoKHByZWZpeCwgbWF0
Y2hMZW5ndGggLSAxKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGhhc0luZml4
RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIs
IFVDaGFyKTsKQEAgLTc0MywxMyArNDU5LDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVD
aGFyLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJl
cGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKIAogI2lmIFVTRShDRikKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JK
Q19fCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIG9wZXJhdG9yIE5TU3RyaW5nICooKTsKICNl
bmRpZgpAQCAtNzYwLDEyICs0NzcsNyBAQCBwdWJsaWM6CiAKICAgICBCdWZmZXJPd25lcnNoaXAg
YnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJz
aGlwPihtX2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAg
Ci0gICAgdm9pZCBhc3NlcnRDYWdlZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkKLSAgICAgICAgICAgIHJlbGVhc2VBc3NlcnRDYWdlZCgpOwotICAgIH0KLSAg
ICAKKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTc3NCw5
NiArNDg2LDM1IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0
ZVN5bWJvbCB9OwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRo
YXQgaG9sZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBhcyBhIHN1YnN0
cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCi0gICAgU3RyaW5nSW1wbChDcmVhdGVTeW1i
b2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAg
IDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVy
cywgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXM4Qml0KCkpOwotICAgICAgICBBU1NFUlQobV9kYXRh
OCk7Ci0gICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVl
KTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3Ry
aW5ncyB0aGF0IGhvbGRzIGV4aXN0aW5nIDE2LWJpdCBbW0Rlc2NyaXB0aW9uXV0gc3RyaW5nIGFz
IGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KLSAgICBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBj
aGFyYWN0ZXJzLCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAg
ICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9Cisg
ICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKIAogICAgIC8vIE51bGwgc3ltYm9sLgotICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9s
VGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBl
bXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJv
bCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NU
UklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJv
bFRhZyk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2Yo
VCkpLnVuc2FmZUdldCgpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0YWlsRWxlbWVudENvdW50KTsK
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHNpemVfdCB0YWlsT2Zmc2V0
KCkKLSAgICB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgLy8gTVNWQyBkb2Vzbid0IHN1
cHBvcnQgYWxpZ25vZiB5ZXQuCi0gICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihUKT4oc2l6ZW9mKFN0cmluZ0ltcGwpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiByb3Vu
ZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG9mZnNldG9mKFN0cmluZ0ltcGwsIG1faGFzaEFu
ZEZsYWdzKSArIHNpemVvZihTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFncykpOwotI2VuZGlmCi0g
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzaXplX3QgdGFpbE9mZnNldCgp
OwogCiBwcml2YXRlOgotICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2RhdGE4ID09IHRhaWxQb2ludGVyPExDaGFyPigpOwotICAgICAgICByZXR1cm4gbV9kYXRh
MTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBjb25zdCBUKiB0YWlsUG9pbnRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNldDxUPigpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIHRhaWxQb2ludGVyKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0X3B0cjxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
dGhpcykgKyB0YWlsT2Zmc2V0PFQ+KCkpOwotICAgIH0KLQotICAgIFN0cmluZ0ltcGwqIGNvbnN0
JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlck93
bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgcmV0dXJuICp0YWlsUG9p
bnRlcjxTdHJpbmdJbXBsKj4oKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5n
QnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZm
ZXJTdWJzdHJpbmcpOwotCi0gICAgICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+
KCk7Ci0gICAgfQorICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY29uc3QgVCogdGFpbFBvaW50ZXIoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUKiB0YWlsUG9pbnRlcigpOworICAgIFN0cmluZ0ltcGwqIGNvbnN0JiBzdWJz
dHJpbmdCdWZmZXIoKSBjb25zdDsKKyAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5nQnVmZmVyKCk7
CiAKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OwotICAg
IHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSB0eXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYsIGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCk7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQ
cmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJl
ZGljYXRlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJl
ZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2Uo
VUNoYXJQcmVkaWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJl
YWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiwgdW5zaWduZWQsIENoYXJUeXBlKiYp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0
ZTxDYXNlQ29udmVydFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY29udmVydEFTQ0lJQ2FzZShTdHJpbmdJbXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSosIHVuc2lnbmVkKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVDaGFyUHJlZGljYXRlPiBS
ZWY8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgVUNoYXJQcmVkaWNh
dGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hh
clByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBl
KiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQsIENo
YXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUmVmPFN0cmluZ0ltcGw+JiYs
IHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGJvdHRvbSBi
aXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFsKSBzdHJpbmcu
CkBAIC04NzUsMTMgKzUyNiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogcHVibGljOgotI2lmbmRl
ZiBOREVCVUcKLSAgICB2b2lkIGFzc2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGhhc0hhc2goKSk7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCks
IGxlbmd0aCgpKSk7Ci0gICAgfQotI2VuZGlmCisgICAgdm9pZCBhc3NlcnRIYXNoSXNDb3JyZWN0
KCkgY29uc3Q7CiB9OwogCiB1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6U3Rh
dGljU3RyaW5nSW1wbDsKQEAgLTkwMCwxNyArNTQ1LDYgQEAgVmFsdWVDaGVjazxTdHJpbmdJbXBs
Kj4gewogfTsKICNlbmRpZgogCi10ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGlt
cGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1w
bCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KLXRlbXBsYXRl
IDw+Ci1BTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJ
bnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9Ci0K
LXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpjaGFy
YWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KLQotdGVtcGxh
dGUgPD4KLUFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8
VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczE2KCk7IH0KLQogV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwq
KTsKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGIpKTsgfQpAQCAtOTM0LDcgKzU2OCwzMSBAQCBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiwgY29ucwog
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0ltcGwmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVu
Z3RoXSk7CiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0
ZXJzKVtsZW5ndGhdKTsKIAotaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5j
dGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKQorc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0g
MCk7CitzaXplX3QgZmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3Qg
Q2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25l
ZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3NpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVu
c2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3Np
emVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0
Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFs
SWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiwgU3Ry
aW5nSW1wbCopOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZTI+IGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IENoYXJhY3RlclR5cGUx
KiwgdW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIqLCB1bnNpZ25lZCBsZW5n
dGgyKTsKK2ludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJp
bmdJbXBsKik7CisKKy8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBp
dCB1c2VzIHRoZSBVbmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KKy8vIE1vc3QgV2Vi
S2l0IGNhbGxlcnMgZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNI
VE1MU3BhY2UgaW5zdGVhZC4KK2Jvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcik7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0
ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSopOworCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPExDaGFyPihT
dHJpbmdJbXBsKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0
b3IpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogc3RyaW5nLCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZykgU3RyaW5n
SW1wbChsZW5ndGgpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4
KCk7IH0KK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6
Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQorCitp
bmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRl
eCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVu
Y3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTQ0LDcgKzYwMiw3IEBAIGlubGluZSBzaXpl
X3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0
ZXJNYXRjaEZ1bmN0CiAgICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCi1pbmxpbmUgc2l6ZV90IGZp
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0
Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApCitpbmxpbmUg
c2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsK
ICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVuY3Rpb24o
Y2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTU0LDI0ICs2MTIsMjIgQEAgaW5saW5lIHNpemVfdCBm
aW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1h
dGNoRnVuY3QKICAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBp
bmRleCA9IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICBpZiAoaW5kZXggPj0gbGVuZ3Ro
KQogICAgICAgICBpbmRleCA9IGxlbmd0aCAtIDE7Ci0gICAgQ2hhcmFjdGVyVHlwZSBjID0gY2hh
cmFjdGVyc1tpbmRleF07Ci0gICAgd2hpbGUgKChjICE9ICdcbicpICYmIChjICE9ICdccicpKSB7
CisgICAgYXV0byBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICB3aGlsZSAoY2hh
cmFjdGVyICE9ICdcbicgJiYgY2hhcmFjdGVyICE9ICdccicpIHsKICAgICAgICAgaWYgKCFpbmRl
eC0tKQogICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICBjID0gY2hhcmFjdGVy
c1tpbmRleF07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOwogICAgIH0K
ICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlu
bGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBp
bmRleCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpAQCAt
OTg0LDEyICs2NDAsMTIgQEAgaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXIKICAgICByZXR1cm4gaW5k
ZXg7CiB9CiAKLUFMV0FZU19JTkxJTkUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25l
ZCBpbmRleCA9IFVJTlRfTUFYKQorQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0
ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJz
LCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0K
IAotaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCkKK2lubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQog
ewogICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CkBAIC0xMDIxLDQ1ICs2NzcsMzAgQEAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUMKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUy
PgotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKHVuc2lnbmVkIGwxLCB1bnNpZ25lZCBsMiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZTEqIGMxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogYzIpCi17Ci0g
ICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIHVuc2lnbmVk
IHBvcyA9IDA7Ci0gICAgd2hpbGUgKHBvcyA8IGxtaW4gJiYgKmMxID09ICpjMikgewotICAgICAg
ICArK2MxOwotICAgICAgICArK2MyOwotICAgICAgICArK3BvczsKK2lubGluZSBpbnQgY29kZVBv
aW50Q29tcGFyZShjb25zdCBDaGFyYWN0ZXJUeXBlMSogY2hhcmFjdGVyczEsIHVuc2lnbmVkIGxl
bmd0aDEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiBjaGFyYWN0ZXJzMiwgdW5zaWduZWQgbGVuZ3Ro
MikKK3sKKyAgICB1bnNpZ25lZCBjb21tb25MZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgxLCBsZW5n
dGgyKTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAocG9zaXRpb24g
PCBjb21tb25MZW5ndGggJiYgKmNoYXJhY3RlcnMxID09ICpjaGFyYWN0ZXJzMikgeworICAgICAg
ICArK2NoYXJhY3RlcnMxOworICAgICAgICArK2NoYXJhY3RlcnMyOworICAgICAgICArK3Bvc2l0
aW9uOwogICAgIH0KIAotICAgIGlmIChwb3MgPCBsbWluKQotICAgICAgICByZXR1cm4gKGMxWzBd
ID4gYzJbMF0pID8gMSA6IC0xOworICAgIGlmIChwb3NpdGlvbiA8IGNvbW1vbkxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIChjaGFyYWN0ZXJzMVswXSA+IGNoYXJhY3RlcnMyWzBdKSA/IDEgOiAtMTsK
IAotICAgIGlmIChsMSA9PSBsMikKKyAgICBpZiAobGVuZ3RoMSA9PSBsZW5ndGgyKQogICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Ci19Ci0KLWlubGlu
ZSBpbnQgY29kZVBvaW50Q29tcGFyZTgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3Qg
U3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJp
bmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCksIHN0cmluZzEtPmNoYXJhY3RlcnM4KCks
IHN0cmluZzItPmNoYXJhY3RlcnM4KCkpOwotfQotCi1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBh
cmUxNihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcy
KQotewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJp
bmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmNoYXJhY3Rl
cnMxNigpKTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlOFRvMTYoY29uc3QgU3Ry
aW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCks
IHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsKKyAgICBy
ZXR1cm4gKGxlbmd0aDEgPiBsZW5ndGgyKSA/IDEgOiAtMTsKIH0KIAogaW5saW5lIGludCBjb2Rl
UG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwq
IHN0cmluZzIpCiB7CisgICAgLy8gRklYTUU6IFNob3VsZCBudWxsIHN0cmluZ3MgY29tcGFyZSBh
cyBsZXNzIHRoYW4gZW1wdHkgc3RyaW5ncyByYXRoZXIgdGhhbiBlcXVhbCB0byB0aGVtPwogICAg
IGlmICghc3RyaW5nMSkKICAgICAgICAgcmV0dXJuIChzdHJpbmcyICYmIHN0cmluZzItPmxlbmd0
aCgpKSA/IC0xIDogMDsKLQogICAgIGlmICghc3RyaW5nMikKICAgICAgICAgcmV0dXJuIHN0cmlu
ZzEtPmxlbmd0aCgpID8gMSA6IDA7CiAKQEAgLTEwNjcsMjMgKzcwOCwyMiBAQCBpbmxpbmUgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5n
SW1wbCogc3RyaW5nMgogICAgIGJvb2wgc3RyaW5nMklzOEJpdCA9IHN0cmluZzItPmlzOEJpdCgp
OwogICAgIGlmIChzdHJpbmcxSXM4Qml0KSB7CiAgICAgICAgIGlmIChzdHJpbmcySXM4Qml0KQot
ICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmU4KHN0cmluZzEsIHN0cmluZzIpOwot
ICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZThUbzE2KHN0cmluZzEsIHN0cmluZzIpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFjdGVyczgo
KSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFj
dGVyczgoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcyLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIGlmIChzdHJpbmcySXM4Qml0KQotICAgICAgICBy
ZXR1cm4gLWNvZGVQb2ludENvbXBhcmU4VG8xNihzdHJpbmcyLCBzdHJpbmcxKTsKLSAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZTE2KHN0cmluZzEsIHN0cmluZzIpOworICAgICAgICByZXR1cm4g
Y29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVuZ3Ro
KCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxlbmd0aCgpKTsKKyAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVu
Z3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJpbmcyLT5sZW5ndGgoKSk7CiB9CiAK
LWlubGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKK2lubGluZSBib29sIGlzU3Bh
Y2VPck5ld2xpbmUoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2Uo
KSBmb3IgYmFzaWMgTGF0aW4tMS4KICAgICAvLyBUaGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywg
d2hpY2ggYXJlbid0IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1MuCi0gICAgcmV0dXJuIGMgPD0g
MHg3RiA/IGlzQVNDSUlTcGFjZShjKSA6IHVfY2hhckRpcmVjdGlvbihjKSA9PSBVX1dISVRFX1NQ
QUNFX05FVVRSQUw7CisgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFj
ZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFD
RV9ORVVUUkFMOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotaW5saW5l
IHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogc3RyaW5nKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHVuc2ln
bmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3Ry
aW5nKQogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAgIHNpemVfdCBsZW5ndGggPSAwOwpAQCAt
MTA5NCw2ICs3MzQsMzggQEAgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRT
dHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5n
SW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExDaGFy
KiBkYXRhOCwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQorICAgIDogbV9yZWZDb3VudChyZWZDb3Vu
dCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1fZGF0YTgoZGF0YTgpCisgICAgLCBt
X2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCit7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsU2hh
cGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBVQ2hhciogZGF0YTE2LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCisgICAgOiBtX3JlZkNv
dW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhMTYoZGF0
YTE2KQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQoreworfQorCit0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hh
cGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5k
RmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpCisgICAgOiBtX3JlZkNvdW50KHJlZkNv
dW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhOENoYXIoY2hhcmFjdGVy
cykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwordGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGlubGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbFNoYXBl
OjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hB
bmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKKyAgICA6IG1fcmVmQ291bnQocmVm
Q291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2RhdGExNkNoYXIoY2hhcmFj
dGVycykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwogaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAg
IGlmICghcmVxdWlyZXNDb3B5KCkpIHsKQEAgLTExMDcsNiArNzc5LDM4OSBAQCBpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJu
IGNyZWF0ZShtX2RhdGExNiwgbV9sZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBs
Ojppc0FsbEFTQ0lJKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOworICAgIHJl
dHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKK30K
KworaW5saW5lIGJvb2wgU3RyaW5nSW1wbDo6aXNBbGxMYXRpbjEoKSBjb25zdAoreworICAgIGlm
IChpczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byogY2hhcmFjdGVycyA9
IGNoYXJhY3RlcnMxNigpOworICAgIFVDaGFyIG9yZWQgPSAwOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkKKyAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwor
ICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOworfQorCit0ZW1wbGF0ZTxib29sIGlzU3BlY2lh
bENoYXJhY3RlcihVQ2hhciksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlz
QWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBpbmxpbmUgYm9vbCBTdHJpbmdJbXBs
Ojppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFj
dGVyPihjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3RlcnMxNigpLCBsZW5ndGgo
KSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCwg
Rm9yY2U4Qml0KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxl
bmd0aCwgdGFpbFBvaW50ZXI8TENoYXI+KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5n
Tm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFT
U0VSVChtX2xlbmd0aCk7CisKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVu
Z3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgdGFp
bFBvaW50ZXI8VUNoYXI+KCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAg
IEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19T
VEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwoTWFsbG9jUHRyPExDaGFyPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFy
YWN0ZXJzLmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBC
dWZmZXJPd25lZCkKK3sKKyAgICBBU1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitp
bmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykKKyAgICA6IFN0cmluZ0lt
cGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05v
cm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNT
RVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVu
Z3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpCisg
ICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0
ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFs
KQoreworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAg
U1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Cit9CisKK2lubGluZSBTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0
aCwgY2hhcmFjdGVycy5sZWFrUHRyKCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQorewor
ICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklO
R19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0lt
cGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
UmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50
SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7Cisg
ICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJh
c2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJp
bmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJ
VF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmlu
Z0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50
LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sK
KyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIEFTU0VS
VChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZl
clN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsK
KworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9
CisKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgdmVjdG9yKQoreworICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJs
ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKK30KKworQUxXQVlTX0lOTElORSBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5n
SW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoIDw9IHJlcC5sZW5ndGgoKSk7CisKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAg
cmV0dXJuICplbXB0eSgpOworCisgICAgYXV0byogb3duZXJSZXAgPSAoKHJlcC5idWZmZXJPd25l
cnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJl
cCk7CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIGJvdGggdGhl
IFN0cmluZ0ltcGwgc3RydWN0IGFzIHdlbGwgYXMgdGhlIHBvaW50ZXIgdG8gdGhlIG93bmVyIHN0
cmluZy4KKyAgICBhdXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0
cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMSkpKTsKKyAgICBpZiAocmVw
LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5n
SW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhOCArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXAp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5n
SW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Cit9CisKK3Rl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyQ291bnRdKQoreworICAgIENPTVBJTEVfQVNTRVJUKGNoYXJhY3RlckNvdW50
ID4gMSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsTm90RW1wdHkpOworICAgIENPTVBJTEVfQVNTRVJU
KChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5nSW1w
bCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVyZmxv
dyk7CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJDb3VudCAtIDEpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
Q2hhcmFjdGVyVHlwZSomIG91dHB1dCkKK3sKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICBv
dXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gZW1wdHkoKTsKKyAgICB9CisKKyAgICBp
ZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXpl
b2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkgeworICAgICAgICBvdXRw
dXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byog
cmVzdWx0SW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPih0cnlTdHJpbmdNYWxsb2MoYWxs
b2NhdGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkpOworICAgIGlmICghcmVzdWx0SW1w
bCkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8Q2hhcmFjdGVyVHlw
ZT4oKTsKKworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPihyZXN1
bHRJbXBsLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5PgoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJp
bmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+JiYgdmVjdG9yKQoreworICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5z
aXplKCkpIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOworICAgICAgICBpZiAoc2l6
ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJl
bGVhc2VCdWZmZXIoKSwgc2l6ZSkpOworICAgIH0KKyAgICByZXR1cm4gKmVtcHR5KCk7Cit9CisK
K2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdCgpIGNvbnN0Cit7CisgICAgLy8gRm9yIHN1
YnN0cmluZ3MsIHJldHVybiB0aGUgY29zdCBvZiB0aGUgYmFzZSBzdHJpbmcuCisgICAgaWYgKGJ1
ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKKyAgICAgICAgcmV0dXJuIHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0KCk7CisKKyAgICAvLyBOb3RlOiB3ZSBtdXN0IG5vdCBhbHRlciB0
aGUgbV9oYXNoQW5kRmxhZ3MgZmllbGQgaW4gaW5zdGFuY2VzIG9mIFN0YXRpY1N0cmluZ0ltcGwu
CisgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRS
ZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCisgICAgLy8gU3RhdGljU3RyaW5nSW1w
bC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2VzIHdpbGwgYWx3YXlzIHJl
dHVybiBhIGNvc3Qgb2YKKyAgICAvLyAwIGhlcmUgYW5kIGF2b2lkIG1vZGlmeWluZyBtX2hhc2hB
bmRGbGFncy4KKyAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29z
dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdDsKKyAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFp
czhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8PSAxOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdER1cmluZ0dDKCkKK3sKKyAgICBpZiAoaXNT
dGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkg
PT0gQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0
cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7CisKKyAgICBzaXplX3Qg
cmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFpczhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8
PSAxOworICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsKK30K
KworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKK3sK
KyAgICBBU1NFUlQoIWlzU3RhdGljKCkpOworICAgIEFTU0VSVCghaXNTeW1ib2woKSk7CisgICAg
aWYgKGlzQXRvbWljKSB7CisgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJp
bmdLaW5kSXNBdG9taWM7CisgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRv
bWljKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxh
Z1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJp
bmdOb3JtYWwpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SGFzaCh1
bnNpZ25lZCBoYXNoKSBjb25zdAoreworICAgIC8vIFRoZSBoaWdoIGJpdHMgb2YgJ2hhc2gnIGFy
ZSBhbHdheXMgZW1wdHksIGJ1dCB3ZSBwcmVmZXIgdG8gc3RvcmUgb3VyIGZsYWdzCisgICAgLy8g
aW4gdGhlIGxvdyBiaXRzIGJlY2F1c2UgaXQgbWFrZXMgdGhlbSBzbGlnaHRseSBtb3JlIGVmZmlj
aWVudCB0byBhY2Nlc3MuCisgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0IHdoZW4g
c2V0dGluZyBhbmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgorCisgICAgQVNTRVJUKCFoYXNIYXNo
KCkpOworICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CisgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBh
c3N1bWUgdGhhdCBTdHJpbmdIYXNoZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5j
dGlvbi4KKyAgICBBU1NFUlQoaGFzaCA9PSAoaXM4Qml0KCkgPyBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTgsIG1fbGVuZ3RoKSA6IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKSkpOworICAgIEFT
U0VSVCghKGhhc2ggJiAoc19mbGFnTWFzayA8PCAoOCAqIHNpemVvZihoYXNoKSAtIHNfZmxhZ0Nv
dW50KSkpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGhpZ2ggYml0cyBhcmUgZW1wdHkuCisKKyAg
ICBoYXNoIDw8PSBzX2ZsYWdDb3VudDsKKyAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5kRmxh
Z3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBzaGlm
dC4KKyAgICBBU1NFUlQoaGFzaCk7IC8vIFZlcmlmeSB0aGF0IDAgaXMgYSB2YWxpZCBzZW50aW5l
bCBoYXNoIHZhbHVlLgorCisgICAgbV9oYXNoQW5kRmxhZ3MgfD0gaGFzaDsgLy8gU3RvcmUgaGFz
aCB3aXRoIGZsYWdzIGluIGxvdyBiaXRzLgorfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpy
ZWYoKQoreworICAgIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKCp0aGlzKTsKKworICAgIG1fcmVm
Q291bnQgKz0gc19yZWZDb3VudEluY3JlbWVudDsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1w
bDo6ZGVyZWYoKQoreworICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOworCisg
ICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIHNfcmVmQ291bnRJbmNyZW1l
bnQ7CisgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsKKyAgICAgICAgU3RyaW5nSW1wbDo6ZGVzdHJv
eSh0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlZkNvdW50ID0gdGVtcFJl
ZkNvdW50OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdm9p
ZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQorewor
ICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNv
dXJjZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNv
dXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhVQ2hhciogZGVzdGluYXRp
b24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkKKyAgICAgICAgZGVz
dGluYXRpb25baV0gPSBzb3VyY2VbaV07Cit9CisKK2lubGluZSBVQ2hhciBTdHJpbmdJbXBsOjph
dCh1bnNpZ25lZCBpKSBjb25zdAoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGkgPCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1f
ZGF0YTE2W2ldOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjphc3NlcnRDYWdlZCgpIGNv
bnN0Cit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIHJlbGVhc2VBc3NlcnRD
YWdlZCgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xU
YWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJp
bmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAg
ICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdfU1RB
VFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGluZSBTdHJpbmdJ
bXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVt
ZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykK
K3sKKyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIFNU
UklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGlu
ZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZykKKyAgICA6IFN0cmluZ0lt
cGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBlbXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sK
KyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdf
U1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6YWxsb2NhdGlvblNpemUoQ2hlY2tl
ZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCit7CisgICAgcmV0dXJuICh0YWlsT2Zmc2V0PFQ+
KCkgKyB0YWlsRWxlbWVudENvdW50ICogc2l6ZW9mKFQpKS51bnNhZmVHZXQoKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjp0YWlsT2Zmc2V0KCkK
K3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIC8vIE1TVkMgZG9lc24ndCBzdXBwb3J0IGFsaWdu
b2YgeWV0LgorICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihUKT4oc2l6ZW9m
KFN0cmluZ0ltcGwpKTsKKyNlbHNlCisgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxp
Z25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9mKFN0
cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU3Ry
aW5nSW1wbDo6cmVxdWlyZXNDb3B5KCkgY29uc3QKK3sKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlw
KCkgIT0gQnVmZmVySW50ZXJuYWwpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gbV9kYXRhOCA9PSB0YWlsUG9pbnRlcjxMQ2hhcj4oKTsK
KyAgICByZXR1cm4gbV9kYXRhMTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdCBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFQqPihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRl
cigpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9CisKK2lubGluZSBTdHJp
bmdJbXBsKiBjb25zdCYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJl
dHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBs
KiYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkKK3sKKyAgICBBU1NFUlQoYnVmZmVyT3du
ZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJldHVybiAqdGFpbFBvaW50ZXI8
U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2VydEhhc2hJ
c0NvcnJlY3QoKSBjb25zdAoreworICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9PSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgp
KSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3Rl
eHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5k
KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNo
YXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5h
bCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFy
YWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCit7Cit9CisK
K3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3RleHByIFN0cmlu
Z0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3Qg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2luZCkKKyAg
ICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0
ZXJDb3VudCAtIDEsIGNoYXJhY3RlcnMsCisgICAgICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0
IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxp
dGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29u
c3RydWN0V2l0aENvbnN0RXhwcikKK3sKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0YXRpY1N0
cmluZ0ltcGw6Om9wZXJhdG9yIFN0cmluZ0ltcGwmKCkKK3sKKyAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworfQorCiAvLyBTdHJpbmdIYXNoIGlzIHRoZSBk
ZWZhdWx0IGhhc2ggZm9yIFN0cmluZ0ltcGwqIGFuZCBSZWZQdHI8U3RyaW5nSW1wbD4KIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiB7CkBAIC0xMTU2LDE0ICsxMjExLDEwIEBAIHRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiAmaW1wbDsgXAogICAgIH0oKSkKIAotCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpT
dGF0aWNTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjplcXVhbDsKLXVzaW5nIFdURjo6VGV4dENhc2VT
ZW5zaXRpdml0eTsKLXVzaW5nIFdURjo6VGV4dENhc2VTZW5zaXRpdmU7Ci11c2luZyBXVEY6OlRl
eHRDYXNlSW5zZW5zaXRpdmU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCAyYTIyNTVhNmM1MjlmNDFiNzQ3ZDBkNTE1ZDlmMTQ1ZTBmZjRlMmQyLi4xODEzZWMzMDg3ZDRk
ZjBjM2FhZjM4NGE1OWZhYzQ4ZmM2OWVhMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtNDUxLDE2ICs0NTEsMTYgQEAgaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdAogaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoTENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChp
czhCaXQoKSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3RpbmF0aW9uLCBjaGFyYWN0
ZXJzOCgpLCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGlu
YXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgU3RyaW5n
Vmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25z
dAogewogICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMo
ZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGlu
YXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CiB9CiAKIGlu
bGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRlZENoYXJhY3RlcnM6OlVwY29udmVydGVkQ2hhcmFj
dGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggMGU5OTUwMjFmOGVmZThiYWRlZGI3OGI5ODA5ZmMyZTBkMzFkNDY3YS4uZTMxNWRhYzM3
ZDFiMzRlNWQyMGEwYTAxNjFmMDI0NTJmODEyYjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ4LDEy
ICs0OCwxMCBAQCBTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogfQogCiAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwg
ZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1TdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hh
ciogc3RyKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5n
KQogewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ltcGwgPSBTdHJp
bmdJbXBsOjpjcmVhdGUoc3RyLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKHN0cikpOwor
ICAgIGlmIChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlKG51bGxUZXJtaW5hdGVkU3RyaW5nLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3Ry
aW5nKG51bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLgpAQCAtNjksMTcgKzY3LDE3IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgbV9pbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsKIH0KIAotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEs
IGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotU3RyaW5nOjpTdHJpbmcoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMpCisvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBMYXRpbi0xIGRhdGEs
IGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgorU3RyaW5nOjpTdHJpbmcoY29uc3QgTENo
YXIqIG51bGxUZXJtaW5hdGVkU3RyaW5nKQogewotICAgIGlmIChjaGFyYWN0ZXJzKQotICAgICAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycyk7CisgICAgaWYgKG51bGxU
ZXJtaW5hdGVkU3RyaW5nKQorICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUobnVs
bFRlcm1pbmF0ZWRTdHJpbmcpOwogfQogCi1TdHJpbmc6OlN0cmluZyhjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcp
CiB7Ci0gICAgaWYgKGNoYXJhY3RlcnMpCi0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpOworICAgIGlm
IChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihudWxsVGVybWluYXRlZFN0cmluZykp
OwogfQogCiBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKQEAgLTg3LDM1
ICs4NSwzNiBAQCBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKIHsKIH0K
IAotdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cikKK3ZvaWQgU3RyaW5nOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBvdGhlclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBleHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRv
IHRha2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgogCi0gICAgaWYgKHN0ci5pc0VtcHR5KCkp
Ci0gICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0ci5tX2ltcGwpIHsKLSAgICAgICAgaWYgKG1f
aW1wbCkgewotICAgICAgICAgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgc3RyLm1faW1wbC0+
aXM4Qml0KCkpIHsKLSAgICAgICAgICAgICAgICBMQ2hhciogZGF0YTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RyLmxlbmd0aCgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KG1faW1wbC0+bGVuZ3RoKCkgKyBzdHIubGVuZ3RoKCksIGRhdGEpOwotICAgICAgICAgICAgICAg
IG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkgKiBz
aXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVu
Z3RoKCksIHN0ci5jaGFyYWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsK
LSAgICAgICAgICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFVDaGFyKiBkYXRhOwotICAg
ICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSAtIG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwgZGF0YSk7Ci0gICAgICAgICAgICBTdHJp
bmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwotICAgICAg
ICAgICAgU3RyaW5nVmlldyhzdHIpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBt
X2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbXBsID0gc3RyLm1faW1wbDsKKyAgICBp
ZiAoIW1faW1wbCkgeworICAgICAgICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7CisgICAg
YXV0byBvdGhlckxlbmd0aCA9IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7CisgICAgaWYg
KG90aGVyTGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVu
Z3RoKQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgb3Ro
ZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgeworICAgICAgICBMQ2hhciogZGF0YTsKKyAgICAg
ICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgg
KyBvdGhlckxlbmd0aCwgZGF0YSk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJz
KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJTdHJpbmcubV9pbXBsLT5jaGFy
YWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7CisgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1w
bCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgVUNoYXIqIGRhdGE7CisgICAgYXV0byBu
ZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGggKyBvdGhlckxl
bmd0aCwgZGF0YSk7CisgICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRDaGFyYWN0ZXJzV2l0aFVw
Y29udmVydChkYXRhKTsKKyAgICBTdHJpbmdWaWV3KCpvdGhlclN0cmluZy5tX2ltcGwpLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOworICAgIG1faW1wbCA9IFdURk1v
dmUobmV3SW1wbCk7CiB9CiAKIHZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIgY2hhcmFjdGVyKQpA
QCAtMTM0LDcgKzEzMyw3IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoTENoYXIgY2hhcmFjdGVyKQog
ICAgICAgICBDUkFTSCgpOwogICAgIExDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRhdGEp
OwotICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3Ro
KCkpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFj
dGVyczgoKSwgbV9pbXBsLT5sZW5ndGgoKSk7CiAgICAgZGF0YVttX2ltcGwtPmxlbmd0aCgpXSA9
IGNoYXJhY3RlcjsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQpAQCAtMjI3LDgg
KzIyNiw4IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnNUb0Fw
cGVuZCwgdW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAg
ICAgICBMQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlVW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhUb0FwcGVuZCwgZGF0YSk7Ci0gICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIHN0
ckxlbmd0aCk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkYXRhICsgc3RyTGVuZ3Ro
LCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKKyAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBzdHJMZW5ndGgp
OworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBj
aGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKICAgICAgICAgbV9pbXBsID0gV1RG
TW92ZShuZXdJbXBsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNyw4ICsyMzYsOCBA
QCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVu
c2lnbmVkIGxlbmd0aFRvQXBwZW5kKQogICAgICAgICBDUkFTSCgpOwogICAgIFVDaGFyKiBkYXRh
OwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoKCkgKyBsZW5ndGhUb0FwcGVuZCwgZGF0YSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJz
KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7Ci0gICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3Ro
VG9BcHBlbmQpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+
Y2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7
CiAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIApAQCAtMjY0LDEwICsyNjMsMTAg
QEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1
bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRv
QXBwZW5kLCBkYXRhKTsKICAgICBpZiAobV9pbXBsLT5pczhCaXQoKSkKLSAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJzKGRhdGEsIGNoYXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7CisgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIGNoYXJhY3RlcnM4KCksIHN0ckxlbmd0
aCk7CiAgICAgZWxzZQotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgY2hhcmFj
dGVyczE2KCksIHN0ckxlbmd0aCk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEgKyBz
dHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOworICAgICAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3Ro
KTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFy
YWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5l
d0ltcGwpOwogfQogCkBAIC0yODUsNDEgKzI4NCwzMyBAQCB2b2lkIFN0cmluZzo6dHJ1bmNhdGUo
dW5zaWduZWQgcG9zaXRpb24pCiAgICAgICAgIG1faW1wbCA9IG1faW1wbC0+c3Vic3RyaW5nKDAs
IHBvc2l0aW9uKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1pbmxp
bmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQgbGVuZ3RoVG9SZW1vdmUpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFs
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNp
Z25lZCBsZW5ndGhUb1JlbW92ZSkKIHsKICAgICBDaGFyYWN0ZXJUeXBlKiBkYXRhOwogICAgIGF1
dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgLSBs
ZW5ndGhUb1JlbW92ZSwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIGNoYXJhY3RlcnMsIHBvc2l0
aW9uICogc2l6ZW9mKENoYXJhY3RlclR5cGUpKTsKLSAgICBtZW1jcHkoZGF0YSArIHBvc2l0aW9u
LCBjaGFyYWN0ZXJzICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlbW92ZSwKLSAgICAgICAgKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZW1vdmUgLSBwb3NpdGlvbikgKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkp
OwotCisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgY2hhcmFjdGVycywgcG9z
aXRpb24pOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwg
Y2hhcmFjdGVycyArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZW1vdmUsIGxlbmd0aCgpIC0gbGVuZ3Ro
VG9SZW1vdmUgLSBwb3NpdGlvbik7CiAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0K
IAotdm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgaW50IGxlbmd0aFRvUmVt
b3ZlKQordm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVu
Z3RoVG9SZW1vdmUpCiB7Ci0gICAgaWYgKGxlbmd0aFRvUmVtb3ZlIDw9IDApCisgICAgaWYgKCFs
ZW5ndGhUb1JlbW92ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChwb3NpdGlvbiA+PSBsZW5n
dGgoKSkKKyAgICBhdXRvIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIGlmIChwb3NpdGlv
biA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGxlbmd0aFRvUmVtb3ZlKSA+IGxlbmd0aCgpIC0gcG9zaXRpb24pCi0gICAgICAgIGxlbmd0
aFRvUmVtb3ZlID0gbGVuZ3RoKCkgLSBwb3NpdGlvbjsKLQotICAgIGlmIChpczhCaXQoKSkgewor
ICAgIGxlbmd0aFRvUmVtb3ZlID0gc3RkOjptaW4obGVuZ3RoVG9SZW1vdmUsIGxlbmd0aCAtIHBv
c2l0aW9uKTsKKyAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJlbW92ZUludGVybmFsKGNoYXJh
Y3RlcnM4KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7Ci0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHJlbW92ZUludGVybmFsKGNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVu
Z3RoVG9SZW1vdmUpOworICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlSW50ZXJuYWwoY2hhcmFjdGVy
czE2KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7CiB9CiAKLVN0cmluZyBTdHJpbmc6OnN1
YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbikgY29uc3QKK1N0cmluZyBTdHJpbmc6
OnN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewot
ICAgIGlmICghbV9pbXBsKSAKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBt
X2ltcGwtPnN1YnN0cmluZyhwb3MsIGxlbik7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1
bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+c3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5ndGgpIDogU3RyaW5n
IHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkBAIC0zMzIsMTAwICszMjMsOTUgQEAgU3Ry
aW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0CiAKICAgICBpZiAoIW9mZnNldCAmJiBsZW5ndGggPT0gc3RyaW5nTGVu
Z3RoKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJbXBs
OjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9pbXBsLCBvZmZzZXQsIGxlbmd0aCkpOwor
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9pbXBs
LCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFu
ZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRvQVND
SUlMb3dlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRU
b0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVu
Y3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAgICBpZiAo
IW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29u
dmVydFRvQVNDSUlVcHBlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6
OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25zdAogewotICAgIGlmICghbV9p
bXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVy
dFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBm
dW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSA6
IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhv
dXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCBmYWlsaW5nSW5kZXgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdB
dEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAg
ICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxl
U3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KSA6IFN0cmluZyB7IH07CiB9
CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25z
dAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8vIEZJ
WE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBi
ZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2Fz
ZVdpdGhvdXRMb2NhbGUoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZl
cnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShsb2NhbGVJ
ZGVudGlmaWVyKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUg
bWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpIDogU3Ry
aW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvVXBwZXJjYXNlV2l0aExvY2Fs
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5j
b252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpOworICAgIC8vIEZJ
WE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBi
ZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2Fz
ZVdpdGhMb2NhbGUobG9jYWxlSWRlbnRpZmllcikgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcg
U3RyaW5nOjpzdHJpcFdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNl
KCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3Ro
ZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVl
ZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2UiIGlzIGEgc2luZ2xlCisg
ICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2UuIEZvciBhbm90aGVyLCBp
dCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQgdGhlIGZ1bmN0aW9uIHVz
ZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBNb3N0IFdlYktpdCBjYWxs
ZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5IHdlIHNob3VsZCBjb25z
aWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0cmlwV2hp
dGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3RyaXBXaGl0ZVNw
YWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKIHsKLSAgICBp
ZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwt
PnN0cmlwV2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAg
IC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIG5lZWRzIGEgbmV3IG5hbWUuIEl0IHN0cmlwcyBsZWFk
aW5nIGFuZCB0cmFpbGluZworICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBtYXRjaCBhIHByZWRpY2F0
ZTsgbm90IG5lY2Vzc2FyaWx5ICJ3aGl0ZSBzcGFjZSIuCisgICAgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+c3RyaXBXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSkgOiBTdHJpbmcgeyB9OwogfQogCiBT
dHJpbmcgU3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlmICghbV9p
bXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c2ltcGxp
ZnlXaGl0ZVNwYWNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQg
dGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMg
ZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2UiIGlz
IGEgc2luZ2xlCisgICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2UuIEZv
ciBhbm90aGVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQgdGhl
IGZ1bmN0aW9uIHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBNb3N0
IFdlYktpdCBjYWxsZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5IHdl
IHNob3VsZCBjb25zaWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPnNpbXBsaWZ5V2hpdGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6c2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFj
ZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIHJldHVybiBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtl
IGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnNpbXBsaWZ5V2hp
dGVTcGFjZShpc1doaXRlU3BhY2UpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6
cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkgY29u
c3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBtX2ltcGwtPnJlbW92ZUNoYXJhY3RlcnMoZmluZE1hdGNoKTsKKyAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5s
aW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZW1vdmVDaGFyYWN0ZXJzKGZpbmRN
YXRjaCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpmb2xkQ2FzZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1
cm4gbV9pbXBsLT5mb2xkQ2FzZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlv
biwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmZvbGRDYXNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBib29sIFN0cmlu
Zzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKQEAgLTQ2NSw4ICs0NTEsNyBAQCBWZWN0
b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApCi1zdGF0
aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0
LCB2YV9saXN0IGFyZ3MpCitXVEZfQVRUUklCVVRFX1BSSU5URigxLCAwKSBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0
IGFyZ3MpCiB7CiAgICAgdmFfbGlzdCBhcmdzQ29weTsKICAgICB2YV9jb3B5KGFyZ3NDb3B5LCBh
cmdzKTsKQEAgLTQ3OCwxNCArNDYzLDEyIEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1h
dEFuZEFyZ3VtZW50cyhjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogI2lmIFVT
RShDRikgJiYgIU9TKFdJTkRPV1MpCiAgICAgaWYgKHN0cnN0cihmb3JtYXQsICIlQCIpKSB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGb3JtYXQgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9ybWF0LCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgpKTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7Ci0KKyAgICAgICAgYXV0
byBjZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmb3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7CiAgICAg
ICAgIHZhX2VuZChhcmdzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKICAgICB9Ci0j
ZW5kaWYgLy8gVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyNlbmRpZgogCiAgICAgLy8gRG8gdGhl
IGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC00
OTcsNyArNDgwLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgIHZhX2VuZChhcmdzKTsKIAog
ICAgIGlmIChyZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKQEAgLTUyNyw3ICs1MTAsNiBAQCBTdHJpbmcgU3RyaW5nOjpmb3JtYXQo
Y29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAgICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKICAg
ICBTdHJpbmcgcmVzdWx0ID0gY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhmb3JtYXQsIGFy
Z3MpOwogICAgIHZhX2VuZChhcmdzKTsKLSAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC03MDAsMTEgKzY4MiwxMSBAQCBmbG9hdCBTdHJpbmc6OnRvRmxvYXQoYm9vbCogb2spIGNvbnN0
CiB9CiAKICNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9GVU5D
VElPTlMpCisKIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICBp
ZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwt
Pmlzb2xhdGVkQ29weSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5k
IHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6aXNvbGF0ZWRDb3B5KCkgJiYKQEAgLTcxMiwzNiArNjk0LDI3IEBAIFN0cmluZyBTdHJpbmc6
Omlzb2xhdGVkQ29weSgpICYmCiAgICAgaWYgKGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
KSB7CiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhhdCBvdXIgc3RyaW5nIGlzIGEgdGVtcG9y
YXJ5IHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQKICAgICAgICAgLy8gd2UgY2FuIGp1c3Qgc3RlYWwg
dGhlIG1faW1wbCBmcm9tIGl0LCB0aHVzIGF2b2lkaW5nIGEgY29weS4KLSAgICAgICAgcmV0dXJu
IFN0cmluZyhXVEZNb3ZlKCp0aGlzKSk7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKnRoaXMp
IH07CiAgICAgfQogCi0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2Vsc2UKKwogU3Ry
aW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVy
cyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xh
dGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgU3RyaW5nOjppc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogewotICAgIGlmICghaW1wbCgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAvLyBBdG9taWNTdHJpbmdzIGFyZSBub3Qgc2FmZSB0byBzZW5kIGJldHdlZW4gdGhy
ZWFkcyBhcyB+U3RyaW5nSW1wbCgpCiAgICAgLy8gd2lsbCB0cnkgdG8gcmVtb3ZlIHRoZW0gZnJv
bSB0aGUgd3JvbmcgQXRvbWljU3RyaW5nVGFibGUuCi0gICAgaWYgKGltcGwoKS0+aXNBdG9taWMo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbXBsKCktPmhhc09uZVJlZigpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzRW1w
dHkoKSB8fCAobV9pbXBsLT5oYXNPbmVSZWYoKSAmJiAhbV9pbXBsLT5pc0F0b21pYygpKTsKIH0K
IAogdm9pZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93
RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdApAQCAtODQ4LDEwICs4
MjEsNyBAQCBDU3RyaW5nIFN0cmluZzo6bGF0aW4xKCkgY29uc3QKIAogQ1N0cmluZyBTdHJpbmc6
OnV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAg
ICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwotICAgIAotICAgIHJldHVybiBtX2ltcGwtPnV0
ZjgobW9kZSk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+dXRmOChtb2RlKSA6IENTdHJp
bmcgeyAiIiwgMCB9OwogfQogCiBDU3RyaW5nIFN0cmluZzo6dXRmOCgpIGNvbnN0CkBAIC04ODAs
NyArODUwLDcgQEAgU3RyaW5nIFN0cmluZzo6bWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3Qg
TENoYXIqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKICAgICBVQ2hhciogZGVzdGluYXRpb247CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRl
c3RpbmF0aW9uKTsKICAgICAKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRpb24s
IHNvdXJjZSwgbGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5h
dGlvbiwgc291cmNlLCBsZW5ndGgpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
NDksOCArOTE5LDggQEAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNlKFVDaGFy
IGMsIGludCBiYXNlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1l
IEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMgaW5saW5lIEludGVncmFs
VHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
Ym9vbCogb2ssIGludCBiYXNlKQordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3Jh
bFR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ss
IGludCBiYXNlKQogewogICAgIHN0YXRpYyBjb25zdCBJbnRlZ3JhbFR5cGUgaW50ZWdyYWxNYXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPEludGVncmFsVHlwZT46Om1heCgpOwogICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRlZ3JhbFR5cGU+Ojpp
c19zaWduZWQ7CkBAIC05ODQsNyArOTU0LDcgQEAgc3RhdGljIGlubGluZSBJbnRlZ3JhbFR5cGUg
dG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGIKICAg
ICB3aGlsZSAobGVuZ3RoICYmIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFzZSgqZGF0YSwgYmFzZSkp
IHsKICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAgIEludGVncmFsVHlwZSBkaWdpdFZhbHVlOwot
ICAgICAgICBDaGFyVHlwZSBjID0gKmRhdGE7CisgICAgICAgIGF1dG8gYyA9ICpkYXRhOwogICAg
ICAgICBpZiAoaXNBU0NJSURpZ2l0KGMpKQogICAgICAgICAgICAgZGlnaXRWYWx1ZSA9IGMgLSAn
MCc7CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnKQpAQCAtMTAyNSw4ICs5OTUsOCBAQCBieWU6
CiAgICAgcmV0dXJuIGlzT2sgPyB2YWx1ZSA6IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KLXN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoY29u
c3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIHNpemVfdCBp
ID0gMDsKIApAQCAtMTE1MSw4ICsxMTIxLDggQEAgaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRy
KGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKIAogZW51bSBUcmFp
bGluZ0p1bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywgQWxsb3dUcmFpbGluZ0p1bmsg
fTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9s
aWN5Pgotc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJUeXBlKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgor
c3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKIHsKICAg
ICBzaXplX3QgbGVhZGluZ1NwYWNlc0xlbmd0aCA9IDA7CiAgICAgd2hpbGUgKGxlYWRpbmdTcGFj
ZXNMZW5ndGggPCBsZW5ndGggJiYgaXNBU0NJSVNwYWNlKGRhdGFbbGVhZGluZ1NwYWNlc0xlbmd0
aF0pKQpAQCAtMTIxOSw3ICsxMTg5LDggQEAgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmbmRlZiBOREVCVUcKLS8vIEZvciB1c2UgaW4gdGhlIGRl
YnVnZ2VyCisKKy8vIEZvciB1c2UgaW4gdGhlIGRlYnVnZ2VyLgogU3RyaW5nKiBzdHJpbmcoY29u
c3QgY2hhciopOwogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCogaW1wbCk7CiBW
ZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZyk7CkBAIC0xMjMxLDcgKzEyMDIs
NyBAQCB2b2lkIFN0cmluZzo6c2hvdygpIGNvbnN0CiAKIFN0cmluZyogc3RyaW5nKGNvbnN0IGNo
YXIqIHMpCiB7Ci0gICAgLy8gbGVha3MgbWVtb3J5IQorICAgIC8vIEludGVudGlvbmFsbHkgbGVh
a3MgbWVtb3J5IQogICAgIHJldHVybiBuZXcgU3RyaW5nKHMpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCAzYTk3YjE2Nzg3OTMwNTkwNmQ2NWI3MGY5YTFkNTE1ZmI2MjgxY2NhLi4y
ZjI5YWE1MWM4NzEwZmM1NWFiMjM0YjIzYzE1YzBiNmVmMTFiZTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC04MCw3ICs3OSw3IEBAIGVudW0gVHJhaWxp
bmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgeyBLZWVwVHJhaWxpbmdaZXJvcywgVHJ1bmNhdGVUcmFp
bGluZ1plcm9zIH07CiBjbGFzcyBTdHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBh
IG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0gICAg
U3RyaW5nKCkgeyB9CisgICAgU3RyaW5nKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gQ29uc3RydWN0
IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0
cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTEyNSwy
MiArMTI0LDE2IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNv
bnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgdGhlICJi
aWciIHZlcnNpb24sIGFzIGl0IHB1dCB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFu
ZCBnZW5lcmF0ZSBiaWdnZXIgY29kZS4KICAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFn
IHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4KLSAgICBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNv
dW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9Ci0KLSAgICAvLyBX
ZSBoYXZlIHRvIGRlY2xhcmUgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5kIGNvcHkgYXNzaWdubWVu
dCBvcGVyYXRvciBhcyB3ZWxsLCBvdGhlcndpc2UKLSAgICAvLyB0aGV5J2xsIGJlIGltcGxpY2l0
bHkgZGVsZXRlZCBieSBhZGRpbmcgdGhlIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvci4KLSAgICBTdHJpbmcoY29uc3QgU3RyaW5nJiBvdGhlcikKLSAgICAgICAg
OiBtX2ltcGwob3RoZXIubV9pbXBsKQotICAgIHsgfQotICAgIFN0cmluZyhTdHJpbmcmJiBvdGhl
cikKLSAgICAgICAgOiBtX2ltcGwoV1RGTW92ZShvdGhlci5tX2ltcGwpKQotICAgIHsgfQotICAg
IFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZyYgb3RoZXIpIHsgbV9pbXBsID0gb3RoZXIu
bV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KLSAgICBTdHJpbmcmIG9wZXJhdG9yPShTdHJpbmcmJiBv
dGhlcikgeyBtX2ltcGwgPSBXVEZNb3ZlKG90aGVyLm1faW1wbCk7IHJldHVybiAqdGhpczsgfQot
Ci0gICAgLy8gSW5saW5lIHRoZSBkZXN0cnVjdG9yLgotICAgIEFMV0FZU19JTkxJTkUgflN0cmlu
ZygpIHsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcoY29u
c3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVy
YWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNv
dW50PihjaGFyYWN0ZXJzKSkgeyB9CisKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGhhdmUgdG8g
ZGVmaW5lIHRoZXNlIGV4cGxpY2l0bHkgZ2l2ZW4gdGhhdCB3ZSBqdXN0IHdhbnQgdGhlIGRlZmF1
bHQgdmVyc2lvbnM/CisgICAgLy8gV2UgaGF2ZSB2ZXJpZmllZCBlbXBpcmljYWxseSB0aGF0IHdl
IGRvLgorICAgIFN0cmluZyhjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nKFN0
cmluZyYmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJikg
PSBkZWZhdWx0OworICAgIFN0cmluZyYgb3BlcmF0b3I9KFN0cmluZyYmKSA9IGRlZmF1bHQ7CisK
KyAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN3YXAo
U3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQogCkBAIC0xNTAsNDYgKzE0Mywy
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFj
dGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYg
dmVjdG9yKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKHZlY3RvcikpOyB9CiAK
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzRW1w
dHkoKTsgfQogCiAgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5n
ZXQoKTsgfQogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZWxlYXNlSW1wbCgpIHsgcmV0dXJuIFdU
Rk1vdmUobV9pbXBsKTsgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biBtX2ltcGwtPmxlbmd0aCgpOwotICAgIH0KLQotICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
OCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICBBU1NFUlQobV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJldHVybiBt
X2ltcGwtPmNoYXJhY3RlcnM4KCk7Ci0gICAgfQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMxNigpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICBBU1NFUlQoIW1faW1wbC0+aXM4Qml0KCkpOwotICAgICAgICByZXR1
cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7IH0KKyAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNo
YXJhY3RlcnM4KCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y2hhcmFjdGVyczE2KCkgOiBudWxscHRy
OyB9CiAKICAgICAvLyBSZXR1cm4gY2hhcmFjdGVyczgoKSBvciBjaGFyYWN0ZXJzMTYoKSBkZXBl
bmRpbmcgb24gQ2hhcmFjdGVyVHlwZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KLSAgICBpbmxpbmUgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCi0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENoYXIp
IDogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgfQorICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVv
ZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKSA6IDA7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENT
dHJpbmcgbGF0aW4xKCkgY29uc3Q7CkBAIC0xOTcsMTYgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSkgY29uc3Q7
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0gICAg
VUNoYXIgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1w
bCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwotICAgIH0KLSAgICBVQ2hhciBvcGVyYXRv
cltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBVQ2hh
ciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyQXQoaW5kZXgpOyB9CiAK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgaW50
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
KTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGxvbmcgbG9uZyk7CkBAIC0yMTksMTE5ICsxODIsNjQgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRXaWR0aChkb3Vi
bGUsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBjaGFy
YWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9ybXMu
Ci0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7
IH0KLQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQot
ICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
LSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5k
SWdub3JpbmdBU0NJSUNhc2Uoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHIuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQotCi0gICAg
c2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5k
KGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAg
ICBzaXplX3QgZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91
bmQ7IH0KKworICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdB
U0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShz
dHJpbmcuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQorCisgICAgc2l6ZV90IGZp
bmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFy
dCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9u
LCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KLSAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAg
ICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjLCBzdGFydCkgOiBub3RG
b3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWdu
ZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAg
Ly8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgbWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZpbmRJZ25v
cmluZ0Nhc2UoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3Vu
ZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0
ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkg
OiBub3RGb3VuZDsgfQotCi0gICAgLy8gV3JhcHBlcnMgZm9yIGZpbmQgJiByZXZlcnNlRmluZCBh
ZGRpbmcgZHluYW1pYyBzZW5zaXRpdml0eSBjaGVjay4KLSAgICBzaXplX3QgZmluZChjb25zdCBM
Q2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIsIHN0YXJ0KSA6IGZpbmRJZ25v
cmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0
ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IGZpbmQoc3RyLCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNl
KHN0ciwgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3Ry
LCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmlu
ZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQorICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hh
ciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKGNo
YXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VG
aW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
IGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIgY2hhcmFjdGVyU3Rh
cnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgotCi0gICAgYm9vbCBjb250YWlucyhV
Q2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBj
b250YWlucyhjb25zdCBMQ2hhciogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlLCB1bnNp
Z25lZCBzdGFydE9mZnNldCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGZpbmQoc3RyLCBz
dGFydE9mZnNldCwgY2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRh
aW5zKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kKHN0cikg
IT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyLCBib29s
IGNhc2VTZW5zaXRpdmUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3Vu
ZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0
cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cikgIT0g
bm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBm
aW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7IH0KLQot
ICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsg
fQotICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uocy5pbXBsKCkpIDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2
ZSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChjaGFy
YWN0ZXIpIDogZmFsc2U7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29s
IGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAh
bWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcm
IHByZWZpeCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCAmJiBwcmVmaXguaW1wbCgpID8gbV9pbXBsLT5oYXNJbmZpeFN0YXJ0aW5nQXQoKnByZWZp
eC5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IGZhbHNlOyB9Ci0KLSAgICBib29sIGVuZHNXaXRoKGNv
bnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5l
bmRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzLmltcGwoKSkgOiBzLmlz
RW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VT
ZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dp
dGgocy5pbXBsKCksIGNhc2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVu
ZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5lbmRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsKKwor
ICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5kKGNo
YXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJv
b2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3Ry
aW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZykgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJl
dHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90Rm91
bmQ7IH0KKworICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoKHN0cmluZy5pbXBsKCkpIDogc3Ry
aW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7
IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBt
X2ltcGwgJiYgbV9pbXBsLT5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgp
W21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRo
PG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1hdGNoTGVuZ3RoOyB9CisgICAgYm9vbCBoYXNJbmZp
eFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nJiBwcmVmaXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBj
b25zdCB7IHJldHVybiBtX2ltcGwgJiYgcHJlZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0luZml4
U3RhcnRpbmdBdCgqcHJlZml4LmltcGwoKSwgc3RhcnRPZmZzZXQpOyB9CisKKyAgICBib29sIGVu
ZHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmVuZHNXaXRoKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJv
b2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
Zy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIg
Y2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5lbmRzV2l0aChjaGFy
YWN0ZXIpOyB9CiAgICAgYm9vbCBlbmRzV2l0aChjaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1
cm4gZW5kc1dpdGgoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJhY3RlcikpOyB9Ci0gICAgdGVtcGxh
dGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHBy
ZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4
RW5kaW5nQXQoY29uc3QgU3RyaW5nJiBzdWZmaXgsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3QK
LSAgICAgICAgeyByZXR1cm4gbV9pbXBsICYmIHN1ZmZpeC5pbXBsKCkgPyBtX2ltcGwtPmhhc0lu
Zml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCkgOiBmYWxzZTsgfQorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZw
cmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRz
V2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQorICAgIGJvb2wgaGFz
SW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBj
b25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0luZml4
RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KIAogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgdm9pZCBhcHBlbmQoTENoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIgYykgeyBh
cHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsgfTsKKyAgICB2b2lkIGFwcGVuZChjaGFyIGNo
YXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9OwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChVQ2hhcik7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGluc2VydChjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lk
IGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKLSAgICBTdHJpbmcm
IHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwt
PnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQotICAgIFN0cmluZyYgcmVwbGFjZShVQ2hh
ciBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBs
YWNlKGEsIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiByZXBsYWNlKGNv
bnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1f
aW1wbC0+cmVwbGFjZShhLmltcGwoKSwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBT
dHJpbmcmIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgY29uc3QgU3RyaW5n
JiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShpbmRleCwgbGVuLCBi
LmltcGwoKSk7IHJldHVybiAqdGhpczsgfQorICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYg
cmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50KTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5n
JiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1l
bnQpW2NoYXJhY3RlckNvdW50XSk7CiAKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFy
IGEsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCi0gICAgewotICAg
ICAgICBpZiAobV9pbXBsKQotICAgICAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEs
IGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IDEp
OwogCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKLQotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
bGVuID0gVUlOVF9NQVgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcg
c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBz
dWJzdHJpbmcoMCwgbGVuKTsgfQotICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25l
ZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5z
aWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkgY29uc3Q7CisgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuZ3RoKSBj
b25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQorICAgIFN0cmluZyByaWdodCh1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAt
IGxlbmd0aCwgbGVuZ3RoKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKQEAgLTM0Nyw3ICsyNTUs
NiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdo
aXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rp
b25QdHIpIGNvbnN0OwotICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJp
c29uLgogICAgIC8vIFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBpbnN0ZWFkIGlmIEFTQ0lJ
IGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBpcyBkZXNpcmVkLgpAQCAtMzU4LDM1ICsyNjUs
MTggQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmluZy4g
VGhlIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgogICAgIC8vIGludG8gdGhlIGJ1ZmZl
ciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIHVzZWQuCi0g
ICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1bnByZWRpY3RhYmxlIHJlc3VsdHMu
CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoY29uc3Qg
U3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Ci0gICAgewot
ICAgICAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwotICAgIH0KKyAgICB2b2lk
IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBj
b25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KIAogICAgIHVzaW5nIFNw
bGl0RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmdWaWV3Jik+OwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0
KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAgfQotICAgIFZlY3Rv
cjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3QKLSAgICB7Ci0gICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVz
dWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgVmVjdG9yPFN0cmluZz4g
c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3Vs
dCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIHZvaWQgc3BsaXQoVUNoYXIg
c2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBh
cmF0b3IpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0cmluZyYgc2Vw
YXJhdG9yKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgdG9JbnRTdHJp
Y3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CkBAIC00MzksMTEgKzMyOSw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KLSAgICBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNl
KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBidWZmZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7Ci0gICAgfQorICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3Rh
dGljIFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5PiYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJp
bmcgbWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3QgTENoYXIqLCBzaXplX3QpOwogCkBAIC00
NTEsMjggKzMzNywyMSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMg
aW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqLCBzaXplX3QpOwogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7Ci0gICAgc3Rh
dGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVy
biBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07
Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBmcm9t
VVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9OworICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkgeyBy
ZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMp
LCBsZW5ndGgpOyB9OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogc3Ry
aW5nKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3Ry
aW5nKSk7IH07CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVU
RjgoY29uc3QgQ1N0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgVmVj
dG9yPExDaGFyPiYgY2hhcmFjdGVycyk7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBw
YXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBp
ZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhcios
IHNpemVfdCk7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhj
b25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07Cisg
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7
IH07CiAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUg
VW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0gICAgVUNoYXJEaXJlY3Rp
b24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkg
PSBudWxscHRyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgICAg
IHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5KTsKLSAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQotICAgICAgICAg
ICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBVX0xF
RlRfVE9fUklHSFQ7Ci0gICAgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVsbHB0cikgY29uc3Q7CiAK
LSAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWluc09u
bHlMYXRpbjEoKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25z
dCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOyB9
CisgICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwt
PmlzQWxsQVNDSUkoKTsgfQorICAgIGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdCB7IHJldHVybiAh
bV9pbXBsIHx8IG1faW1wbC0+aXNBbGxMYXRpbjEoKTsgfQorICAgIHRlbXBsYXRlPGJvb2wgaXNT
cGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29u
c3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNT
cGVjaWFsQ2hhcmFjdGVyPigpOyB9CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVz
LCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3ll
ZC4KICAgICBTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkBAIC00ODQsNDAgKzM2MywxNiBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlm
CiAKLSAgICAvLyBXb3JrYXJvdW5kIGZvciBhIGNvbXBpbGVyIGJ1Zy4gVXNlIG9wZXJhdG9yW10g
aW5zdGVhZC4KLSAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07Ci0g
ICAgfQotCiAgICAgLy8gVHVybnMgdGhpcyBTdHJpbmcgZW1wdHkgaWYgdGhlIFN0cmluZ0ltcGwg
aXMgbm90IHJlZmVyZW5jZWQgYnkgYW55b25lIGVsc2UuCiAgICAgLy8gVGhpcyBpcyB1c2VmdWwg
Zm9yIGNsZWFyaW5nIFN0cmluZy1iYXNlZCBjYWNoZXMuCi0gICAgdm9pZCBjbGVhckltcGxJZk5v
dFNoYXJlZCgpCi0gICAgewotICAgICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+aGFzT25lUmVm
KCkpCi0gICAgICAgICAgICBtX2ltcGwgPSBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICB2b2lk
IGFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAg
ICAgICBtX2ltcGwtPmFzc2VydENhZ2VkKCk7Ci0gICAgfQorICAgIHZvaWQgY2xlYXJJbXBsSWZO
b3RTaGFyZWQoKTsKIAotICAgIHZvaWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwtPnJlbGVhc2VBc3NlcnRD
YWdlZCgpOwotICAgIH0KKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CisgICAgdm9pZCBy
ZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IENoYXJh
Y3RlclR5cGUqLCB1bnNpZ25lZCwgaW50KTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotICAgIHZvaWQgYXBwZW5kSW50ZXJuYWwoQ2hhcmFjdGVyVHlwZSk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRlcm5hbChjb25z
dCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZEludGVybmFsKENoYXJhY3RlclR5cGUpOwog
CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKIH07CkBAIC01MzIsNyArMzg3LDYgQEAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuIGVxdWFsKHJlaW50ZXJwcmUKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+
JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwg
YS5zaXplKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiBiKSB7IHJldHVybiBiID09IGE7IH0KIAotCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBs
KCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEs
IGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4g
IWVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CkBA
IC01NTAsNyArNDA0LDcgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwKIGlubGluZSBib29sIGVx
dWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5
KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEsIGIuaW1wbCgpKTsgfQogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHIpIHsgcmV0dXJuIHN0ci5pc051bGwoKTsg
fQoraW5saW5lIGJvb2wgb3BlcmF0b3IhKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBz
dHJpbmcuaXNOdWxsKCk7IH0KIAogaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYg
YikgeyBhLnN3YXAoYik7IH0KIApAQCAtNTYxLDgxICs0MTUsMTc2IEBAIE5TU3RyaW5nICogbnNT
dHJpbmdOaWxJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiAjZW5kaWYKIAorV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOworYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5k
TnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKTsKKwor
Ly8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCitXVEZfRVhQT1JUX1NUUklOR19BUEkgY29u
c3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERl
ZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7IHVzaW5n
IEhhc2ggPSBTdHJpbmdIYXNoOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0
cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisKK2NsYXNzIEFTQ0lJTGl0ZXJh
bCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0
IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
Y2hhciogbV9jaGFyYWN0ZXJzOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvblRyYWl0PFN0cmluZz4geworICAgIHVzaW5nIFJldHVyblR5cGUgPSBTdHJp
bmc7CisgICAgdXNpbmcgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSA9IHZvaWQ7CisgICAgc3RhdGlj
IFN0cmluZyBmbHVzaChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKikg
eyByZXR1cm4geyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsgfQorfTsKKwogLy8gRGVmaW5pdGlvbnMg
b2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0ltcGwm
IGltcGwpCi0gICAgOiBtX2ltcGwoJmltcGwpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5n
SW1wbCYgc3RyaW5nKQorICAgIDogbV9pbXBsKCZzdHJpbmcpCiB7CiB9CiAKLWlubGluZSBTdHJp
bmc6OlN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKQotICAgIDogbV9pbXBsKGltcGwpCitpbmxpbmUg
U3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9pbXBsKHN0cmluZykK
IHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxTdHJpbmdJbXBsPiYmIGltcGwpCi0g
ICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8U3Ry
aW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewogfQog
Ci1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW1wbCkKLSAgICA6
IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxTdHJp
bmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1wbChXVEZNb3ZlKHN0cmluZykpCiB7CiB9CiAK
LWlubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8QXRvbWljU3RyaW5nSW1wbD4mJiBpbXBsKQotICAg
IDogbV9pbXBsKFdURk1vdmUoaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmPEF0b21p
Y1N0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9pbXBsKFdURk1vdmUoc3RyaW5nKSkKIHsK
IH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIGlt
cGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShz
dHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYg
aW1wbCkKLSAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigmaW1wbCkp
CitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIDog
bV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpKQogewogfQogCi1p
bmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCogaW1wbCkKLSAgICA6IG1faW1w
bChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPihpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0
cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX2ltcGwocmVpbnRlcnByZXRf
Y2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSkKIHsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1TdHJpbmc6OlN0cmluZyhjb25z
dCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3Ip
Ci0gICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3Iu
ZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPigqU3RyaW5nSW1wbDo6ZW1w
dHkoKSkpCit0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlcj4gU3RyaW5nOjpTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXplKCkg
PyBTdHJpbmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBSZWY8
U3RyaW5nSW1wbD4geyAqU3RyaW5nSW1wbDo6ZW1wdHkoKSB9KQogewogfQogCi10ZW1wbGF0ZTw+
Ci1pbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdAor
dGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4o
KSBjb25zdAogewotICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnM4
KCk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0
ZXJzPFVDaGFyPigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5n
OjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpczhCaXQoKSk7CiAg
ICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRh
aW5zT25seUxhdGluMSgpIGNvbnN0CitpbmxpbmUgVUNoYXIgU3RyaW5nOjpjaGFyYWN0ZXJBdCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2lt
cGwtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKCptX2ltcGwpW2lu
ZGV4XTsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
VUNoYXIgcmVwbGFjZW1lbnQpCiB7Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNl
KHRhcmdldCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0
cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxh
Y2UodGFyZ2V0LCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
aW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1w
bCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkpOwor
ICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQp
Cit7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0
YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50LmltcGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQog
Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKK3RlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
V2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyQ291bnRdKQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+
cmVwbGFjZSh0YXJnZXQsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgcmV0
dXJuICp0aGlzOworfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJz
MTYoKTsKLSAgICBVQ2hhciBvcmVkID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
aW1wbC0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwotICAg
IHJldHVybiAhKG9yZWQgJiAweEZGMDApOworaW5saW5lIFZlY3RvcjxTdHJpbmc+IFN0cmluZzo6
c3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Vs
dDsKKyAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmlu
ZyYgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBz
cGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIFN0cmluZyBTdHJpbmc6Om1h
a2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+
JiBidWZmZXIpCit7CisgICAgcmV0dXJuIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorCitpbmxpbmUgVUNoYXJEaXJlY3Rpb24gU3RyaW5n
OjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkg
Y29uc3QKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0
V3JpdGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgaWYgKGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBm
YWxzZTsKKyAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOworfQorCitpbmxpbmUgdm9pZCBTdHJp
bmc6OmNsZWFySW1wbElmTm90U2hhcmVkKCkKK3sKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+
aGFzT25lUmVmKCkpCisgICAgICAgIG1faW1wbCA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2b2lk
IFN0cmluZzo6YXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAgICAg
IG1faW1wbC0+YXNzZXJ0Q2FnZWQoKTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nOjpyZWxlYXNl
QXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+
cmVsZWFzZUFzc2VydENhZ2VkKCk7CiB9CiAKICNpZmRlZiBfX09CSkNfXwpAQCAtNjU2LDE5ICs2
MDUsNiBAQCBpbmxpbmUgTlNTdHJpbmcgKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAKICNlbmRpZgogCi1pbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25seUFT
Q0lJKCkgY29uc3QKLXsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShjaGFyYWN0ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotfQotCi1X
VEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7Ci0KIGlubGluZSBib29sIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKIHsKICAgICByZXR1cm4gY29kZVBvaW50
Q29tcGFyZShhLmltcGwoKSwgYi5pbXBsKCkpIDwgMDsKQEAgLTY5Nyw0OSArNjMzLDYgQEAgaW5s
aW5lIHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYgdmVjdG9yLCB1bnNp
Z25lZCBjaGFyIG51bWJlcikKICAgICB9CiB9CiAKLXRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hh
cmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBib29sIGlzQWxs
U3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8
Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPgotaW5saW5lIGJvb2wgU3RyaW5nOjppc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKLXsKLSAgICBzaXplX3QgbGVuID0gbGVuZ3RoKCk7
Ci0KLSAgICBpZiAoIWxlbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFs
Q2hhcmFjdGVyLCBMQ2hhcj4oY2hhcmFjdGVyczgoKSwgbGVuKTsKLSAgICByZXR1cm4gV1RGOjpp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3RlciwgVUNoYXI+KGNoYXJhY3Rl
cnMxNigpLCBsZW4pOwotfQotCi0vLyBTdHJpbmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9y
IFN0cmluZwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7Ci0gICAgdHlwZWRlZiBTdHJpbmdIYXNo
IEhhc2g7Ci19OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4gOiBT
aW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Ci0KLWNsYXNzIEFTQ0lJTGl0ZXJhbCB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDog
bV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQotICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkg
eyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9j
aGFyYWN0ZXJzOwotfTsKLQotLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCi1XVEZfRVhQ
T1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOwotCiBpbmxpbmUgU3Ry
aW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykKIHsK
ICAgICBpZiAoY2hhcmFjdGVycy5pc0VtcHR5KCkpCkBAIC03NjcsMzggKzY2MCwzMCBAQCB0ZW1w
bGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgUwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCi10ZW1wbGF0
ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7Ci0gICAg
dXNpbmcgUmV0dXJuVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRU
eXBlID0gdm9pZDsKLSAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9
Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpDU3RyaW5nOwordXNpbmcg
V1RGOjpBU0NJSUxpdGVyYWw7CiB1c2luZyBXVEY6OktlZXBUcmFpbGluZ1plcm9zOwogdXNpbmcg
V1RGOjpTdHJpbmc7Ci11c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmRO
dW1iZXI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKLXVzaW5nIFdURjo6Y2hh
cmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50U3RyaWN0Owor
dXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3VibGU7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0Zs
b2F0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NDsKIHVzaW5nIFdURjo6Y2hhcmFjdGVy
c1RvSW50NjRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0OwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9JbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7CiB1c2luZyBXVEY6OmNo
YXJhY3RlcnNUb0ludFB0cjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwotdXNpbmcg
V1RGOjpjaGFyYWN0ZXJzVG9GbG9hdDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3Ry
aWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJh
Y3RlcnNUb1VJbnQ2NDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0OwordXNp
bmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50U3Ry
aWN0OwordXNpbmcgV1RGOjplbXB0eVN0cmluZzsKIHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBX
VEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM7CiB1c2luZyBXVEY6
OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6OnJldmVyc2VGaW5kOwotdXNpbmcgV1RGOjpB
U0NJSUxpdGVyYWw7CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAppbmRleCAy
NWEwZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlLi5iODEwOWQ3NjE5YTU0MmJl
MmQyOTZjZWQwYzI2YmYzNTVmMGNhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBVQm9v
bCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdVRleHQsIGludDY0X3QgaW5kZXgsIFVCb29sIGZv
cndhcmQpCiAgICAgfQogICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwog
Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+Y2h1
bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsg
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih1VGV4dC0+Y2h1
bmtMZW5ndGgpKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhjb25zdF9jYXN0PFVD
aGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVU
ZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7CiAKICAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdM
aW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBp
bnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgbGltaXQsIFVDCiAgICAgICAgIGlmICh0cmltbWVkTGVuZ3RoID4gZGVzdENhcGFjaXR5
KQogICAgICAgICAgICAgdHJpbW1lZExlbmd0aCA9IGRlc3RDYXBhY2l0eTsKIAotICAgICAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1VGV4
dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyaW1tZWRMZW5ndGgp
KTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdCwgc3RhdGljX2Nhc3Q8
Y29uc3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRyaW1tZWRMZW5ndGgpKTsKICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgZGVzdENhcGFj
aXR5KSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGkKICAgICB0
ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CiAgICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwogICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNf
Y2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0
ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7CisgICAg
U3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5r
Q29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNo
dW5rTGVuZ3RoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0
Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5k
ZXggYjQ5N2FkYzc3YWQ4OTM0YWFmYTc1MzM1M2Y4ZGZiNDMxNDRkZmY0My4uYzkxNzFkYzJhM2I0
NjQyODQwOTQyZTllOTUxNDZmNTc5OTEwYTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAg
LTE3NCwxMSArMTc0LDYgQEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFs
dWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICByZXR1cm4gcXVl
cnlEaWN0aW9uYXJ5OwogfQogICAgIAotc3RhdGljIGJvb2wgaGFzQ2FzZUluc2Vuc2l0aXZlUHJl
Zml4KGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFN0cmluZyYgcHJlZml4KQotewotICAgIHJl
dHVybiBpbnB1dC5zdGFydHNXaXRoKHByZWZpeCwgZmFsc2UpOwotfQotICAgIAogc3RhdGljIGJv
b2wgaXNZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBob3N0TmFtZSA9
IHVybC5ob3N0KCk7CkBAIC0yNjQsNyArMjU5LDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3Jl
YXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2Ug
aWYgKGhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChwYXRoLCAiL3YvIikgfHwgaGFzQ2FzZUluc2Vu
c2l0aXZlUHJlZml4KHBhdGgsICIvZS8iKSkgeworICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKICAgICAgICAgU3RyaW5nIGxhc3RQYXRo
Q29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIFN0cmluZyB2aWRl
b0lEOwogICAgICAgICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCmluZGV4IDBlYTkwZjU4OWIyYWJjYTIyYTI5YmJmOGEyNTViOGU5N2U5ZTgwMjEuLjdlYzI3
ODYzODBkNmEwYTgzYjdjMzBlY2I0NjAzMjkxYjVhMjhjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC01MjUsNyArNTI1LDcgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRU
UEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgaWYgKCho
ZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRFeHRlbnNpb25zCiAgICAg
ICAgICAgICB8fCBoZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRBY2Nl
cHQKICAgICAgICAgICAgIHx8IGhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNv
Y2tldFByb3RvY29sKQotICAgICAgICAgICAgJiYgIXZhbHVlLmNvbnRhaW5zT25seUFTQ0lJKCkp
IHsKKyAgICAgICAgICAgICYmICF2YWx1ZS5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgICAgIG1f
ZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcobmFtZSwgIiBoZWFkZXIgdmFsdWUgc2hvdWxkIG9u
bHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggMjk5MmEwOTIxZTUyMzY0MThjNzEyN2RkNjY1YjZkNzNhNTVhYjdiZi4u
MWRmMWYwNTEyZjEyNjdkMGViMzBjZjJkY2JiMDdiZTJiMWM3MmY2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03Niw2ICs3Niw3IEBA
CiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpAQCAtMTYxNSwx
NCArMTYxNiwxNCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09m
ZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlLCBuZXcgbGluZSwgdGFnIG5vZGUuCiAgICAgICAg
ICAgICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3Bh
Y2VPck5ld2xpbmUoaXRlcmF0b3IudGV4dCgpWzBdKSkgeworICAgICAgICAgICAgICAgIGlmIChp
c0hUTUxTcGFjZShpdGVyYXRvci50ZXh0KClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoZSBub2RlIGhhcyBCUiB0YWcsIHdlIHdhbnQgdG8gc2V0IHRoZSBjdXJyZW50Tm9kZSB0
byBpdC4KICAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9yLnJhbmdl
KCktPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9
IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5yZW5k
ZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0g
Y2hpbGROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoRWxlbWVudCAqc2hhZG93SG9z
dCA9IGN1cnJlbnROb2RlLT5zaGFkb3dIb3N0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gY3VycmVudE5vZGUtPnNoYWRvd0hvc3QoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGVudGVyaW5nIHRleHQgY29u
dHJvbHMsIHdlIHNob3VsZCBzZXQgdGhlIGN1cnJlbnROb2RlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0byBiZSB0aGUgc2hhZG93IGhvc3Qgd2hlbiB0aGVyZSdzIG5vIGNvbnRlbnQuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZUlzVGV4dENvbnRyb2woc2hhZG93SG9zdCkg
JiYgY3VycmVudE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCmluZGV4IDZlMzAxYjBjMjVjMzlj
M2EzNGI3OWYxOGUzNzhiNTUzNmQ2MjIxMWMuLmQ1ZGI5ZTI0NWQwZGQ0MDUwYzRhZjhlOWM2NmJh
NmM4OTRjOTE5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3QuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJzKFJlbmRlck9iamVjdCog
bGlzdEkKICAgICAvLyB0aG9zZSByZW5kZXJlcnMgYXMgImlnbm9yZWQiIG9iamVjdHMuCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0ZXh0ID0gYXhPYmotPnRleHRVbmRlckVsZW1lbnQo
KTsKLSAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmNvbnRhaW5zT25seVdoaXRl
c3BhY2UoKTsKKyAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA1N2QwZWFjNzM1MzYwZDc1YzIxM2U4YmU1NWUxZTU5
MGFkOTljZGNmLi5lOTRhYTk0NmRjZjczNTQ3MjgwZjkzYzQ5MTI3ZTEyZWQ3NTUxMjEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtNDgxLDEyICs0ODEsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNTZWFyY2hGaWVsZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayB0aGUgbm9kZSBu
YW1lIG9mIHRoZSBpbnB1dCB0eXBlLCBzb21ldGltZXMgaXQncyAic2VhcmNoIi4KICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwot
ICAgIGlmIChuYW1lQXR0cmlidXRlLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpCisgICAgaWYg
KG5hbWVBdHRyaWJ1dGUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGhlIGZvcm0gYWN0aW9uIGFuZCB0aGUg
bmFtZSwgd2hpY2ggd2lsbCBzb21ldGltZXMgYmUgInNlYXJjaCIuCiAgICAgYXV0byogZm9ybSA9
IGlucHV0RWxlbWVudC5mb3JtKCk7Ci0gICAgaWYgKGZvcm0gJiYgKGZvcm0tPm5hbWUoKS5jb250
YWlucygic2VhcmNoIiwgZmFsc2UpIHx8IGZvcm0tPmFjdGlvbigpLmNvbnRhaW5zKCJzZWFyY2gi
LCBmYWxzZSkpKQorICAgIGlmIChmb3JtICYmIChmb3JtLT5uYW1lKCkuY29udGFpbnNJZ25vcmlu
Z0FTQ0lJQ2FzZSgic2VhcmNoIikgfHwgZm9ybS0+YWN0aW9uKCkuY29udGFpbnNJZ25vcmluZ0FT
Q0lJQ2FzZSgic2VhcmNoIikpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCmluZGV4IDI5MTkxNDIwNzc3N2M1OWU0ODkyZTA0NTE2NTY0YjMxZjU2NjQ5
MDIuLmJkNGViODE5OTkyZTExODhjMjYwZjg0ZTJmMzBiODg2MTJkN2I1MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApA
QCAtMjg5LDkgKzI4OSw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcqIHRleHQpIGNvbnN0CiAgICAgLy8gSWYgdGV4dCBp
cyBudWxsIG9yIGVtcHR5IHdlIHJldHVybiB0cnVlLgogICAgIHJldHVybiAhdGV4dAogICAgICAg
ICB8fCB0ZXh0LT5pc0VtcHR5KCkKLSAgICAgICAgfHwgdGl0bGUoKS5jb250YWlucygqdGV4dCwg
ZmFsc2UpCi0gICAgICAgIHx8IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0
ZXh0LCBmYWxzZSkKLSAgICAgICAgfHwgc3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwgZmFs
c2UpOworICAgICAgICB8fCBmaW5kUGxhaW5UZXh0KHRpdGxlKCksICp0ZXh0LCBDYXNlSW5zZW5z
aXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQoYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
KCksICp0ZXh0LCBDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQoc3Ry
aW5nVmFsdWUoKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAKIC8vIEFSSUEgbWFya3Mg
ZWxlbWVudHMgYXMgaGF2aW5nIHRoZWlyIGFjY2Vzc2libGUgbmFtZSBkZXJpdmUgZnJvbSBlaXRo
ZXIgdGhlaXIgY29udGVudHMsIG9yIHRoZWlyIGF1dGhvciBwcm92aWRlIG5hbWUuCkBAIC04Mzgs
OCArODM4LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNjZXNz
aWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEKICAgICAgICAgaWYgKGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNsb3Nlc3RTdHJpbmdSYW5nZS5nZXQoKSwgRE9X
TlNUUkVBTSwgdHJ1ZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKICAgICAg
ICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0
YWxpemU6Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjbG9zZXN0U3RyaW5n
OwotICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDAp
OworICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gY2FwaXRhbGl6ZShjbG9zZXN0
U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50
IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kVXBwZXJjYXNlOgpAQCAtODU2LDcgKzg1NSw3
IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEFjY2Vzc2liaWxpdHlT
ZWxlY3RUZXh0Q3JpdGVyaWEqIGNyaXRlcmlhCiAgICAgICAgICAgICAgICAgLy8gKHVubGVzcyB3
ZSdyZSByZXBsYWNpbmcgd2l0aCBhbiBhYmJyZXZpYXRpb24uKQogICAgICAgICAgICAgICAgIGlm
IChjbG9zZXN0U3RyaW5nLmxlbmd0aCgpID4gMCAmJiByZXBsYWNlbWVudFN0cmluZy5sZW5ndGgo
KSA+IDIgJiYgcmVwbGFjZW1lbnRTdHJpbmcgIT0gcmVwbGFjZW1lbnRTdHJpbmcuY29udmVydFRv
VXBwZXJjYXNlV2l0aG91dExvY2FsZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjbG9z
ZXN0U3RyaW5nWzBdID09IHVfdG91cHBlcihjbG9zZXN0U3RyaW5nWzBdKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFsaXplKHJlcGxh
Y2VtZW50U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBh
Y2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5n
LmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5lZWRzIGxvY2Fs
ZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCAxMTNmZmY1YzIzYTUxNWYyYzk2Nzc5NGE4N2ZiZTFmMjIzM2IzOWZjLi42ZGI5Zjc3
MTE1NmNjZTkxYzI5NTBhYzJjOTg3YWEyODRhMGI0NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNB
bGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdAogc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoY29uc3QgU3RyaW5nJiBhbHRUZXh0KQog
ewogICAgIC8vIERvbid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgotICAg
IGlmICghYWx0VGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKCFhbHRUZXh0
LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogICAgIAogICAgIC8v
IFRoZSBpbmZvcm1hbCBzdGFuZGFyZCBpcyB0byBpZ25vcmUgaW1hZ2VzIHdpdGggemVyby1sZW5n
dGggYWx0IHN0cmluZ3MuCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIHRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBlbXB0eSB3aGl0
ZXNwYWNlIHNob3VsZCBub3QgYmUgcmV0dXJuZWQKLSAgICAgICAgcmV0dXJuIHJlbmRlclRleHQu
dGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZW5kZXJU
ZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIH0K
ICAgICAKICAgICBpZiAoaXNIZWFkaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCmluZGV4IDY5ZGQ0YmY4MjA0YTE5OTU3Zjhj
OGE3MWNhMDk2ZTBkNmMxMGNmMzAuLmI1NDM4ZjdlMWUwYTU1YWE5ZjA0ZTIwNzYyMWQ3NDFiMzQ2
YmZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFN0cmluZ3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1RvQnl0ZVN0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlLCBTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHJp
bmcuY29udGFpbnNPbmx5TGF0aW4xKCkpIHsKKyAgICBpZiAoIXN0cmluZy5pc0FsbExhdGluMSgp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMzdjMmNhOGY5OTU2MWRl
M2U4MDA4ZDQ3NjBkMTAxM2Q2OWZmZjMxNS4uMTY2MTRjNWNiZjQ2MDUxZmU3NDBlZTI1ZmRjMWYz
YzgzMWFkMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTUxLDkgKzUxLDggQEAgbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKICAgICAKIHN0YXRpYyBib29sIGNvbnRhaW5zT25s
eUFTQ0lJV2l0aE5vVXBwZXJjYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkb21haW4ubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBVQ2hh
ciBjID0gZG9tYWluLmF0KGkpOwotICAgICAgICBpZiAoIWlzQVNDSUkoYykgfHwgaXNBU0NJSVVw
cGVyKGMpKQorICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBTdHJpbmdWaWV3IHsgZG9tYWluIH0u
Y29kZVVuaXRzKCkpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgaXNBU0NJ
SVVwcGVyKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMzA3MjEwMWYzZmEw
MWNkMWNmODJiZTdjODlhYWYyMTI4MTZlNTIxNi4uYzBkYjFiMTJkYTczYWMwYzUyNzk3M2QwMWI1
OTNhZTA2NzhmOTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHN0ZDo6cGFpcjxWZWN0b3I8QWN0aW9uPiwgVmVjdG9yPFN0cmluZz4+IENvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBj
b25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHJlc291cmNlTG9hZEluZm8ucmVzb3VyY2VVUkwuc3Ry
aW5nKCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh1cmxTdHJpbmcuY29udGFpbnNPbmx5QVND
SUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJz
LiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2Rl
ZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcg
YWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwogICAgIGNvbnN0IENTdHJp
bmcmIHVybENTdHJpbmcgPSB1cmxTdHJpbmcudXRmOCgpOwogCiAgICAgVmVjdG9yPEFjdGlvbj4g
ZmluYWxBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggMjJkZmMxM2E4NDZmNDZhODJiZmY2YzA0Nzg3NDk0
NWVlZjNkZTk3Ny4uZTM1MWUxN2Q5ZWE3NjRiNDY4ZGRmZjY1M2E4ZWQwNmM1MTI1ZWE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgVVJMRmlsdGVyUGFyc2VyOjp+VVJMRmlsdGVyUGFy
c2VyKCkgPSBkZWZhdWx0OwogCiBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRl
clBhcnNlcjo6YWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklz
Q2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewotICAgIGlmICghcGF0dGVybi5j
b250YWluc09ubHlBU0NJSSgpKQorICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAg
ICAgIHJldHVybiBOb25BU0NJSTsKICAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBFbXB0eVBhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHAKaW5kZXggNjM1NzJjNTE1YmVhNjY1ZjU2Mjc0MTI1YmZmODNjYmE4MjRjMTYxZC4u
OGFjZDlhZjFiMDFmMDBiYTBhMDIzZTdjMzQzOTA0NDA3ZDE4MTRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OmlzU3VwcG9ydGVkRm9ybWF0KCkgY29uc3QKICAgICAvLyB3ZSB3
aWxsIGFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBVUkwgZW5kcyB3aXRoIC5lb3QuIElmIHNvLCB3
ZSdsbCBhc3N1bWUgdGhhdCB3ZSBzaG91bGRuJ3QgbG9hZCBpdC4KICAgICBpZiAobV9mb3JtYXQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENoZWNrIGZvciAuZW90LgotICAgICAgICBpZiAoIW1f
cmVzb3VyY2Uuc3RhcnRzV2l0aCgiZGF0YToiLCBmYWxzZSkgJiYgbV9yZXNvdXJjZS5lbmRzV2l0
aCgiLmVvdCIsIGZhbHNlKSkKKyAgICAgICAgaWYgKCFwcm90b2NvbElzKG1fcmVzb3VyY2UsICJk
YXRhIikgJiYgbV9yZXNvdXJjZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuZW90IikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKaW5kZXggYzZhYTc4NmVkODIwMjMzMWM4
OTAwYzFmY2RkNmM3NmE1MjAwNmE4OS4uOTEzNTIzNzc2OTY1OTQyZjJmNTA4NjIzZjY1NjcwYThh
MGFhZTBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHZhbHVlV2l0aG91
dEltcG9ydGFudChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghdmFsdWUuZW5kc1dp
dGgoImltcG9ydGFudCIsIGZhbHNlKSkKKyAgICBpZiAoIXZhbHVlLmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoImltcG9ydGFudCIpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBTdHJp
bmcgbmV3VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYzE2Nzg3OWJkOTE0MGMwMTRiZjZlYmYzOGFmMTI5N2Ri
ZWJiMTIwMS4uOTljZWVkNDg0Mjc5MDc5M2U2NGZhMmFjNDM1MzQzYmYxNmY0ZGI2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTMy
NTQsNyArMzI1NCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUdyaWRUZW1wbGF0ZUFy
ZWFzQ29sdW1uTmFtZXMoY29uc3QgU3RyaW5nJiBncmlkUm93TmFtCiAKIHN0YXRpYyBib29sIHBh
cnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMsIE5hbWVk
R3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBjb25zdCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCYg
Y29sdW1uQ291bnQpCiB7Ci0gICAgaWYgKGdyaWRSb3dOYW1lcy5pc0VtcHR5KCkgfHwgZ3JpZFJv
d05hbWVzLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDU1NTcGFjZT4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uTmFtZXMgPSBwYXJzZUdyaWRUZW1wbGF0ZUFy
ZWFzQ29sdW1uTmFtZXMoZ3JpZFJvd05hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAppbmRleCBlNmVlMmFjMjRmMWQ1MzkxMGYxYjI4NTZlOGE4ZTA1ODlhN2U0YzhlLi5jM2Y0
YjA5ZmYyMWRhZjQxMDVjMGI3NzYxYTRmYjcyNjk5MjJjN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCkBAIC0xNzQsMTEgKzE3NCw2IEBAIFN0cmluZyBDaGFyYWN0ZXJEYXRh
Ojpub2RlVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLWJvb2wgQ2hhcmFj
dGVyRGF0YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZGF0YS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IENo
YXJhY3RlckRhdGE6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIHsKICAg
ICBzZXREYXRhKG5vZGVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCBl
NGFkMjIxZWQwZmZlMWEzZmUyZDJjNTM0MmExNDZmNGMzZDZiNGEyLi4xYmIxYmJlZGRiMTVlZmEz
M2FkNGRjZGZjMGI3MGI3NzU5ZWQ5Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zOSw4ICszOSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBkZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VEYXRhKHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCBj
b250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29uc3Q7Ci0KICAgICAvLyBMaWtlIGFwcGVuZERhdGEs
IGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBwYXJzZXIgKGUuZy4sIG5vIG11dGF0aW9uIGV2ZW50cyku
CiAgICAgLy8gUmV0dXJucyBob3cgbXVjaCBjb3VsZCBiZSBhZGRlZCBiZWZvcmUgbGVuZ3RoIGxp
bWl0IHdhcyBtZXQuCiAgICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGVmYTFlOWE3NzgyZTVmMWQxZjEyZGZhN2ZkYjZl
Njk3NTI3OTliNGYuLjZmMzMzMjY0MWQzODYyN2NlN2Q3ZWRiZTRmNWFjYzQxMzc3N2M1Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBzdGF0
aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1
cm4gdHlwZTsKIAogICAgIFN0cmluZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgaWYg
KGxvd2VyY2FzZVR5cGUgPT0gInRleHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKCJ0ZXh0L3BsYWluOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0
ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxhaW47IikpCiAgICAgICAg
IHJldHVybiAidGV4dC9wbGFpbiI7Ci0gICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwg
bG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInRleHQvdXJpLWxpc3Q7
IikpCisgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFy
dHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3Qi
OwotICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgidGV4
dC9odG1sOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvaHRtbDsi
KSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgcmV0dXJuIGxvd2VyY2FzZVR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAwYzZiYzI1ZjRmYTRmZjE0YzI4NTJjYzVm
Y2Q2Y2RlOGQ3OGJlZmY4Li44OWE1MDZmZjUwMTdhMzZmZThhZTY5ODExYjUxNWQ0ZTRjNWJiZjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJI
VE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvci5oIgpAQCAtMTE0MSwxMSArMTE0MiwxMSBAQCBQb3NpdGlvbiBQ
b3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJv
b2wgY29uc2lkZXJObwogCiAgICAgUG9zaXRpb24gcHJldiA9IHByZXZpb3VzQ2hhcmFjdGVyUG9z
aXRpb24oYWZmaW5pdHkpOwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xvc2lu
Z0Jsb2NrRmxvd0VsZW1lbnQoZGVwcmVjYXRlZE5vZGUoKSwgcHJldi5kZXByZWNhdGVkTm9kZSgp
KSAmJiBpczxUZXh0PigqcHJldi5kZXByZWNhdGVkTm9kZSgpKSkgewotICAgICAgICBTdHJpbmcg
c3RyaW5nID0gZG93bmNhc3Q8VGV4dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkuZGF0YSgpOwot
ICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07
Ci0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1NwYWNl
T3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNp
YmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgVUNoYXIgYyA9IGRvd25jYXN0PFRleHQ+KCpwcmV2
LmRlcHJlY2F0ZWROb2RlKCkpLmRhdGEoKVtwcmV2LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCld
OworICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNIVE1M
U3BhY2UoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIDogZGVwcmVjYXRlZElzQ29sbGFwc2libGVX
aGl0ZXNwYWNlKGMpKSB7CiAgICAgICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHByZXYp
KQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OworICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNjIsNyArMTE2Myw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0cmFp
bGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBz
CiAgICAgVUNoYXIgYyA9IHYuY2hhcmFjdGVyQWZ0ZXIoKTsKICAgICAvLyBUaGUgc3BhY2UgbXVz
dCBub3QgYmUgaW4gYW5vdGhlciBwYXJhZ3JhcGggYW5kIGl0IG11c3QgYmUgZWRpdGFibGUuCiAg
ICAgaWYgKCFpc0VuZE9mUGFyYWdyYXBoKHYpICYmIHYubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSkuaXNOb3ROdWxsKCkpCi0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxl
V2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6
IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgaWYgKGNvbnNp
ZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzSFRNTFNwYWNlKGMpIHx8IGMgPT0gbm9C
cmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKICAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGJhMDZmNzljYjBkM2U0MTgyNDkwYzA4NjczODgyZTVjZTI1ZWE0
MjkuLjhhOTk3ZTRkOWM2MWY0NDRlNjlkNDFiYmZlOWQ3MzNkMTU0MDNkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM1NTksNyArMzU1OSw3IEBAIHZvaWQgRWRpdG9yOjplZGl0
b3JVSVVwZGF0ZVRpbWVyRmlyZWQoKQogICAgICAgICAgICAgVUNoYXIzMiBjID0gbmV3U3RhcnQu
Y2hhcmFjdGVyQmVmb3JlKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9u
OjpjaGFyYWN0ZXJBZnRlcigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXds
aW5lcyB0aGUgc2FtZQogICAgICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRvciwgc28gd2Ug
ZG8gYW4gaXNTdGFydE9mUGFyYWdyYXBoIGNoZWNrIGhlcmUuCi0gICAgICAgICAgICBpZiAoaXNT
cGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0
YXJ0KSkgeworICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0Jy
ZWFrU3BhY2UgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0YXJ0KSkgewogICAgICAgICAgICAg
ICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBuZXdBZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9m
V29yZChuZXdTdGFydCwgc3RhcnRXb3JkU2lkZSksIGVuZE9mV29yZChuZXdTdGFydCwgUmlnaHRX
b3JkSWZPbkJvdW5kYXJ5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IGIyMDczYWM0YzU3OTczMTE2ZTJkMDYwZjgyOGIxOWFhNTFhZjZkMGUuLmYzNmUw
NWVhZGU3MjRiYmZjN2RhOTYwMWUyZWYwOWJlZGEzM2QwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lkIEZyYW1l
U2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2Vs
ZWN0ZWQpIGNvbnN0CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0ZWQg
PyAiPT0+ICIgOiAiICAgICIsIGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAgICAg
ICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5k
ZXJlcik7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSB8fCAhdGV4dFJl
bmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CisgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgp
LmlzRW1wdHkoKSB8fCAhdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzI3RleHQgKGVtcHR5KVxuIiwgc2VsZWN0ZWQgPyAiPT0+ICIg
OiAiICAgICIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjQxLDcgKzI2
NDEsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNvbnN0
CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7CiAgICAg
ICAgIGlmIChjKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gMHhBMCB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYmIGMg
IT0gJ1wnJyk7CisgICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMg
PT0gbm9CcmVha1NwYWNlIHx8ICh1X2lzcHVuY3QoYykgJiYgYyAhPSAnLCcgJiYgYyAhPSAnLScg
JiYgYyAhPSAnXCcnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjY4Niw3ICsyNjg2LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNl
bGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKIAogICAgIGlmIChpc0Vu
ZE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKSB7CiAgICAgICAgIFVD
aGFyIGMoZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbi5jaGFyYWN0ZXJCZWZvcmUoKSk7Ci0g
ICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICBp
ZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAg
ICAgLy8gRW5kIG9mIHBhcmFncmFwaCB3aXRoIHNwYWNlLgogICAgICAgICAgICAgcmV0dXJuIFZp
c2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjcyOSw3ICsyNzI5LDcgQEAgVmlzaWJs
ZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7
CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsK
LSAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAg
IGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAg
ICAgICAvLyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVT
ZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjc0NCw3ICsyNzQ0LDcgQEAgVmlzaWJsZVNlbGVj
dGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlv
bihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAg
ICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAg
ICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgIGlmIChp
c1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAv
LyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24oKTsKICAgICAgICAgfQpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBG
cmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25z
dCBWaXMKICAgICB3aGlsZSAoZW5kVmlzaWJsZVBvcyAhPSBzdGFydFZpc2libGVQb3MpIHsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzKGVuZFZpc2libGVQb3MucHJldmlvdXMoKSk7
CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlm
ICghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBlbmRWaXNpYmxlUG9zID0gcHJldmlvdXM7CiAgICAgfQpAQCAtMjgwMiw3ICsyODAy
LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbCkKICAgICAgICAgfQogICAgICAgICBVQ2hhciBj
KHBvcy5jaGFyYWN0ZXJBZnRlcigpKTsKICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIGlm
IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgaWYgKGlz
U3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgICAg
ICBzYXdTcGFjZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1YzlmMzYwNTc3NzFmNGU2
MmRmYmYwYWFlNzExMGFiOGY5MmIwZjZjLi4zYWYxYWNmYjMxYWY1MTc1ZWRjNWEyMjkzNzNlNzI4
YWI1ZGViOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1
cnlha292LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB1bnNp
Z25lZCB0ZXh0Tm9kZU9mZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5SYW5n
ZSkKICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gMDsKICAgICBmb3IgKHJlbmRlcmVyID0gcmVu
ZGVyZXItPnByZXZpb3VzU2libGluZygpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVy
KSkKLSAgICAgICAgICAgIHRleHRPZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpLT50ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0PFJl
bmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dCgpLmxlbmd0aCgpOwogICAgIH0KICAgICByZXR1cm4g
dGV4dE9mZnNldDsKIH0KQEAgLTY0MCw3ICs2NDAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dE5vZGUoKQogICAgICAgICBib29sIGlzTmV3VGV4dE5vZGUgPSBtX3ByZXZpb3VzU2lt
cGxlVGV4dE5vZGVJbkZsb3cgJiYgbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICE9ICZ0
ZXh0Tm9kZTsKICAgICAgICAgLy8gU2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBwb3NpdGlvbnMgYXJl
IGFsbCBhYnNvbHV0ZSB0byB0aGUgcGFyZW50IGZsb3cuCiAgICAgICAgIC8vIE9mZnNldHRpbmcg
aXMgcmVxdWlyZWQgd2hlbiBtdWx0aXBsZSByZW5kZXJlcnMgYXJlIHByZXNlbnQuCi0gICAgICAg
IG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ICs9IGlzTmV3VGV4dE5vZGUgPyBt
X3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3ctPnJlbmRlcmVyKCktPnRleHQoKS0+bGVuZ3Ro
KCkgOiAwOworICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBp
c05ld1RleHROb2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigp
LT50ZXh0KCkubGVuZ3RoKCkgOiAwOwogICAgICAgICBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJ
bkZsb3cgPSAmdGV4dE5vZGU7CiAKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9u
b2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNl
dCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRFbWl0RXh0cmFOZXdsaW5lRm9yTm9kZShOb2RlJiBub2RlKQogCiBzdGF0aWMg
aW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dEVu
ZCkKIHsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKnJlbmRlcmVyLnRleHQoKTsKKyAgICBTdHJp
bmdJbXBsJiB0ZXh0ID0gcmVuZGVyZXIudGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRl
eHQubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gdGV4dEVuZDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVT
cGFjZSh0ZXh0W2ldKSkKQEAgLTI3NjMsNCArMjc2MywyMCBAQCBSZWY8UmFuZ2U+IGZpbmRQbGFp
blRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlv
bnMgbwogICAgIHJldHVybiByYW5nZUZvck1hdGNoKHJhbmdlLCBvcHRpb25zLCBtYXRjaFN0YXJ0
LCBtYXRjaExlbmd0aCwgc2VhcmNoRm9yd2FyZCk7CiB9CiAKK2Jvb2wgZmluZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW9ucykKK3sKKyAgICBTZWFyY2hCdWZmZXIgYnVmZmVyIHsgdGFyZ2V0LCBvcHRpb25zIH07
CisgICAgU3RyaW5nVmlldyByZW1haW5pbmdUZXh0IHsgZG9jdW1lbnQgfTsKKyAgICB3aGlsZSAo
IXJlbWFpbmluZ1RleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBjaGFyYWN0ZXJzQXBw
ZW5kZWQgPSBidWZmZXIuYXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgcmVtYWluaW5nVGV4dCA9
IHJlbWFpbmluZ1RleHQuc3Vic3RyaW5nKGNoYXJhY3RlcnNBcHBlbmRlZCk7CisgICAgICAgIGlm
IChyZW1haW5pbmdUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFjaGVkQnJl
YWsoKTsKKyAgICAgICAgc2l6ZV90IG1hdGNoU3RhcnRPZmZzZXQ7CisgICAgICAgIGlmIChidWZm
ZXIuc2VhcmNoKG1hdGNoU3RhcnRPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKaW5kZXggMjNjMGI1ZWM3NWIzNzA2M2FmYzIxY2I4M2RlYWQzYmI1YTc4MGIwZC4u
ODYwZTc0Y2Y2YTUyMTE5ZmQ4NGY2ZDFjMjZjMTgyOTNhODMzMTI3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRleHQ7
CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CisKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0
IHsKIGNsYXNzIFJ1blJlc29sdmVyOwogfQpAQCAtNDcsNiArNDgsNyBAQCBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFJhbmdlKiwgVGV4
dEl0ZXJhdG9yQgogUmVmPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29uc3Qg
U3RyaW5nJiwgRmluZE9wdGlvbnMpOwogV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBmaW5kQ2xv
c2VzdFBsYWluVGV4dChjb25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBSYW5n
ZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsK
K2Jvb2wgZmluZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucyk7IC8vIExldHMgdXMgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9uIGEg
c3RyaW5nLgogCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0
aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJl
cGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCmluZGV4IDk2MjBiZmI3MTI3MGNjZGMzNjM1YWRmZGRhZmVmMzIxYTYwODk0
MGYuLmZkNzkwNjZmYmZhZTQ2YjhhYzkyMmVkMzZkY2IyMzBkNmZmZTkyYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5k
IGNvbW1hbmRUeXBlKQogICAgICAgICBVQ2hhcjMyIGMgPSBwcmV2aW91cy5jaGFyYWN0ZXJBZnRl
cigpOwogICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigp
IGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQogICAg
ICAgICAvLyB3YXkgYXMgVGV4dEl0ZXJhdG9yLCBzbyB3ZSBkbyBhbiBpc0VuZE9mUGFyYWdyYXBo
IGNoZWNrIGhlcmUuCi0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhB
MCB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZpb3VzKSkgeworICAgICAgICBpZiAoaXNTcGFjZU9y
TmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZp
b3VzKSkgewogICAgICAgICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eTsKICAgICAgICAgfQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChw
cmV2aW91cywgc3RhcnRXb3JkU2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKaW5kZXggNmFiY2Q0Zjk0Y2U1YmFhOWJiYjI2ZjQzNWM4M2E0ZjQyYmRiNzQ3Yy4uY2Mx
N2RkNjNlZmNkMDY3MzdhNjBkZTgwOTYzZGMxNDMzNzg2NjFhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgTm9kZSogZmluZFN0
YXJ0T2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBoaWdoZXN0Um9vdCwgTm9kZSog
c3RhcnRCbG9jaywKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkg
ewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQgaSA9IHRleHQu
bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgaWYgKG4gPT0gc3RhcnROb2RlICYmIG8gPCBpKQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgTm9k
ZSogZmluZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJvb3Qs
IE5vZGUqIHN0YXlJbnNpZGVCbG8KICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5l
d2xpbmUoKSkgewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQg
byA9IG4gPT0gc3RhcnROb2RlID8gb2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbzsgaSA8
IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggMzBhZDZkYmI2NDdjOTg2MzJiOWY5MTA0YWU3ZjdjZDcwOWU0ZGNlZS4u
NmIxMzk3ZWJmNzM3YzFlZjE3NDkwNDhmZTIxNzY4NTBkNDI2NTk5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjIyNCw3ICsyMjI0LDcg
QEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFj
dGVyRGF0YSkKICAgICBib29sIHdhc1NwYWNlID0gZmFsc2U7CiAgICAgaWYgKF9jYWNoZXMtPnBy
b3BlcnR5VmFsdWVGb3JOb2RlKGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSku
c3RhcnRzV2l0aCgicHJlIikpIHsKICAgICAgICAgaWYgKHRleHRMZW5ndGggJiYgb3JpZ2luYWxT
dHJpbmcubGVuZ3RoKCkgJiYgX2ZsYWdzLmlzU29mdCkgewotICAgICAgICAgICAgdW5pY2hhciBj
ID0gb3JpZ2luYWxTdHJpbmcuYXQoMCk7CisgICAgICAgICAgICB1bmljaGFyIGMgPSBvcmlnaW5h
bFN0cmluZy5jaGFyYWN0ZXJBdCgwKTsKICAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9
PSAnXHInIHx8IGMgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0xp
bmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0Zvcm1GZWVkQ2hhcmFjdGVyIHx8IGMgPT0g
V2ViTmV4dExpbmVDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgcmFuZ2VUb1JlcGxhY2UgPSBO
U01ha2VSYW5nZSh0ZXh0TGVuZ3RoIC0gMSwgMSk7CiAgICAgICAgIH0KQEAgLTIyMzQsNyArMjIz
NCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNo
YXJhY3RlckRhdGEpCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgTENo
YXIgbm9CcmVha1NwYWNlUmVwcmVzZW50YXRpb24gPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFs
U3RyaW5nLmF0KGkpOworICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmNoYXJh
Y3RlckF0KGkpOwogICAgICAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UgPSBjID09ICcgJyB8fCBj
ID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0JyB8fCBjID09IDB4YyB8fCBjID09IDB4
MjAwYjsKICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UpCiAgICAgICAgICAgICAgICAgd2Fz
U3BhY2UgPSAoIXdhc0xlYWRpbmcgfHwgIXN1cHByZXNzTGVhZGluZ1NwYWNlKTsKQEAgLTIyNjAs
NyArMjI2MCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRh
dGEmIGNoYXJhY3RlckRhdGEpCiAgICAgaWYgKG91dHB1dFN0cmluZy5sZW5ndGgoKSkgewogICAg
ICAgICBTdHJpbmcgdGV4dFRyYW5zZm9ybSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2Rl
KGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0
ZXh0VHJhbnNmb3JtID09ICJjYXBpdGFsaXplIikKLSAgICAgICAgICAgIG1ha2VDYXBpdGFsaXpl
ZCgmb3V0cHV0U3RyaW5nLCAwKTsgLy8gRklYTUU6IE5lZWRzIHRvIHRha2UgbG9jYWxlIGludG8g
YWNjb3VudCB0byB3b3JrIGNvcnJlY3RseS4KKyAgICAgICAgICAgIG91dHB1dFN0cmluZyA9IGNh
cGl0YWxpemUob3V0cHV0U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2Nh
bGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICBlbHNlIGlmICh0ZXh0
VHJhbnNmb3JtID09ICJ1cHBlcmNhc2UiKQogICAgICAgICAgICAgb3V0cHV0U3RyaW5nID0gb3V0
cHV0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5l
ZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxzZSBpZiAodGV4dFRyYW5z
Zm9ybSA9PSAibG93ZXJjYXNlIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggZWIyODY2NmU4NTMzODlkNmI2Y2E1
NjFlNzE0N2M1NTNhM2UyMTJiYy4uNmEzZmU0NjA2ZDY2MGQ3MjE3ODliMmEzNmEwNjk2ODhjYmQ3
MGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlw
TWljcm9zb2Z0UHJlZml4KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8vIEl0J3MgYSBzaW1w
bGUtbWluZGVkIHdheSB0byBpZ25vcmUgdGhlIENGX0hUTUwgY2xpcGJvYXJkIGZvcm1hdCwganVz
dCBza2lwcGluZyBvdmVyIHRoZQogICAgIC8vIGRlc2NyaXB0aW9uIHBhcnQgYW5kIHBhcnNpbmcg
dGhlIGVudGlyZSBjb250ZXh0IHBsdXMgZnJhZ21lbnQuCiAgICAgaWYgKHN0cmluZy5zdGFydHNX
aXRoKCJWZXJzaW9uOiIpKSB7Ci0gICAgICAgIHNpemVfdCBsb2NhdGlvbiA9IHN0cmluZy5maW5k
SWdub3JpbmdDYXNlKCI8aHRtbCIpOworICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJpbmcu
ZmluZElnbm9yaW5nQVNDSUlDYXNlKCI8aHRtbCIpOwogICAgICAgICBpZiAobG9jYXRpb24gIT0g
bm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCBlMzEzNDE5ODQ4MGVkYmZmMTg5
OGNiMTY2OWRiZmIyZjViYzI4ODAzLi4yZjFkZTliY2VjZWY1MjBjYTExZTgwZDM2MzhmNzAwMWM3
Yjg2M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIEF1
dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgLy8gMTcuIElmIHRoZSBmaXJzdCBlaWdodCBjaGFy
YWN0ZXJzIG9mIHRoZSBpbmRleHRoIHRva2VuIGluIHRva2VucyBhcmUgbm90IGFuIEFTQ0lJIGNh
c2UtaW5zZW5zaXRpdmUKICAgICAvLyBtYXRjaCBmb3IgdGhlIHN0cmluZyAic2VjdGlvbi0iLCB0
aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgogICAgIGNvbnN0IGF1dG8mIHNl
Y3Rpb25Ub2tlbiA9IHRva2Vuc1tpbmRleF07Ci0gICAgaWYgKCFzZWN0aW9uVG9rZW4uc3RhcnRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzZWN0aW9uLSIpKQorICAgIGlmICghc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzZWN0aW9uVG9rZW4sICJzZWN0aW9uLSIpKQogICAgICAg
ICByZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAKICAgICAvLyAxOC4gTGV0IHNlY3Rpb24gYmUgdGhl
IGluZGV4dGggdG9rZW4gaW4gdG9rZW5zLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAppbmRleCA1NmQ2NzA5NzMw
NzJmYWFkYzQzNjU1ZDFjMDVjYzFhY2FmZDllZmRjLi4yYmI0MzMxNTkyNGVjY2EwZmYxY2U1M2Zj
ZWNiOGEwYjRiYWVmNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBl
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OmlzVGV4dFR5
cGUoKSBjb25zdAogYm9vbCBCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByYXdQYXR0
ZXJuID0gZWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGF0dGVybkF0
dHIpOwotICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8fCAh
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2
ZSkuaXNWYWxpZCgpKQorICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1w
dHkoKSB8fCAhSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuKS5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcgcGF0dGVybiA9ICJeKD86IiAr
IHJhd1BhdHRlcm4gKyAiKSQiOwogICAgIGludCBtYXRjaExlbmd0aCA9IDA7CiAgICAgaW50IHZh
bHVlTGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Ci0gICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSkubWF0Y2go
dmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CisgICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuKS5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3Ro
KTsKICAgICByZXR1cm4gbWF0Y2hPZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggMzFmOGFhNTVi
NmZlZDA0ODBlMjU2OGQ1NDk4ODBiYjA3ZWUyOGRjMS4uMWMyN2Y4OGI0MTBlZDE0ZTRjZWEwMmRk
N2YzYzg5N2I0YjMxOTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCiAgICAgaWYgKCFhZGRyZXNzTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24+IHJlZ0V4cChlbWFpbFBhdHRlcm4sIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZSk7CiAKICAgICBpbnQgbWF0Y2hMZW5ndGg7CiAgICAgaW50IG1hdGNoT2Zmc2V0ID0gcmVnRXhw
LmdldCgpLm1hdGNoKGFkZHJlc3MsIDAsICZtYXRjaExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGM1MjMyMjkyYTExYmNlN2NkZjI3NzkyNjdk
ZWNiNmIwZTExOTk0MTcuLjFiYzBlZTQ2YmUyYjJlMWNiY2E1MTdlNmMyZTg2OGVlN2U1MzAzNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0yMTQsNyAr
MjE0LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50KCkgY29u
c3QKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3Bh
Y2Utb25seSB0ZXh0LCBhbmQgPHBhcmFtPiB0YWdzLCBhbnkgb3RoZXIgY29udGVudCBpcyBmYWxs
YmFjayBjb250ZW50LgogICAgICAgICBpZiAoaXM8VGV4dD4oKmNoaWxkKSkgewotICAgICAgICAg
ICAgaWYgKCFkb3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkK
KyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5kYXRhKCkuaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmICghaXM8SFRNTFBhcmFtRWxlbWVudD4oKmNoaWxkKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxNZXRhRWxlbWVudD4oZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYm
IG1ldGFFbGVtZW50LmNvbnRlbnQoKS5zdGFydHNXaXRoKCJNYWMgT1MgWCBTZXJ2ZXIgV2ViIFNl
cnZpY2VzIFNlcnZlciIsIGZhbHNlKSkKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0YUVsZW1lbnQuY29udGVudCgpLCAibWFjIG9zIHgg
c2VydmVyIHdlYiBzZXJ2aWNlcyBzZXJ2ZXIiKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNob3Vs
ZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAKIGJvb2wgSFRNTE9iamVjdEVsZW1l
bnQ6Omhhc1ZhbGlkQ2xhc3NJZCgpCiB7Ci0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2
YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKCkpICYmIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY2xhc3NpZEF0dHIpLnN0YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQorICAgIGlm
IChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSgpKSAm
JiBwcm90b2NvbElzKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NpZEF0dHIp
LCAiamF2YSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoc2hvdWxkQWxs
b3dRdWlja1RpbWVDbGFzc0lkUXVpcmsoKSkKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgTm9kZSYgY2hp
bGQpCiAgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgcmV0dXJuIHByZXZlbnRz
UGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKSk7CiAgICAg
aWYgKGlzPFRleHQ+KGNoaWxkKSkKLSAgICAgICAgcmV0dXJuICFkb3duY2FzdDxUZXh0PihjaGls
ZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gIWRvd25jYXN0PFRl
eHQ+KGNoaWxkKS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
eXBlQWhlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDc3
NGFkNTQ3Y2VjNmIzYzRhYzkxNDJkYWFjZGE0YTJjNTM4YjNmZjguLjc2NGU1MDIyMzBhN2RjOWEz
NGQ4N2NiYTY5M2FjZDY2NTQ5MDFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VHlwZUFoZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAg
LTQ2LDEzICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyB0eXBlQWhlYWRUaW1lb3V0IHsg
MV9zIH07CiBzdGF0aWMgU3RyaW5nIHN0cmlwTGVhZGluZ1doaXRlU3BhY2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCiAg
ICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKHN0cmluZ1tpXSAhPSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8PSAweDdGID8g
IWlzQVNDSUlTcGFjZShzdHJpbmdbaV0pIDogKHVfY2hhckRpcmVjdGlvbihzdHJpbmdbaV0pICE9
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTCkpKQorICAgICAgICBpZiAoc3RyaW5nW2ldICE9IG5vQnJl
YWtTcGFjZSAmJiAhaXNTcGFjZU9yTmV3bGluZShzdHJpbmdbaV0pKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgfQotCiAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoaSwgbGVuZ3RoIC0gaSk7
CiB9CiAKQEAgLTk1LDEwICs5Myw2IEBAIGludCBUeXBlQWhlYWQ6OmhhbmRsZUV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50LCBNYXRjaE1vZGVGbGFncyBtYXRjaE1vZGUpCiAgICAgICAgIGludCBp
bmRleCA9IChzZWxlY3RlZCA8IDAgPyAwIDogc2VsZWN0ZWQpICsgc2VhcmNoU3RhcnRPZmZzZXQ7
CiAgICAgICAgIGluZGV4ICU9IG9wdGlvbkNvdW50OwogCi0gICAgICAgIC8vIENvbXB1dGUgYSBj
YXNlLWZvbGRlZCBjb3B5IG9mIHRoZSBwcmVmaXggc3RyaW5nIGJlZm9yZSBiZWdpbm5pbmcgdGhl
IHNlYXJjaCBmb3IKLSAgICAgICAgLy8gYSBtYXRjaGluZyBlbGVtZW50LiBUaGlzIGNvZGUgdXNl
cyBmb2xkQ2FzZSB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0Ci0gICAgICAgIC8vIFN0cmlu
Zzo6c3RhcnRXaXRoIGRvZXMgbm90IGZvbGQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFRoaXMgY29k
ZSBjYW4gYmUgY2hhbmdlZAotICAgICAgICAvLyB0byB1c2Ugc3RhcnRXaXRoIG9uY2UgdGhhdCBp
cyBmaXhlZC4KICAgICAgICAgU3RyaW5nIHByZWZpeFdpdGhDYXNlRm9sZGVkKHByZWZpeC5mb2xk
Q2FzZSgpKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHRpb25Db3VudDsgKytpLCBp
bmRleCA9IChpbmRleCArIDEpICUgb3B0aW9uQ291bnQpIHsKICAgICAgICAgICAgIC8vIEZvbGQg
dGhlIG9wdGlvbiBzdHJpbmcgYW5kIGNoZWNrIGlmIGl0cyBwcmVmaXggaXMgZXF1YWwgdG8gdGhl
IGZvbGRlZCBwcmVmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggMTIxN2Q5YjU0ZjU4YjNjMzQ4NDI0OWFmNWJhMDQw
YjcyN2RjMDUzMC4uMDIzYzhmZDdmMzU0MGYxYWQ4YzcyYTZkMDU4MjlhMDMzZTE2MmJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcApAQCAtMzM2LDc2ICszMzYsNzYgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0
Q29tcGF0aWJpbGl0eU1vZGVGcm9tRG9jdHlwZShjb25zdCBTdHJpbmcmIG5hbWUsIGMKIAogICAg
IC8vIENoZWNrIGZvciBRdWlya3MgTW9kZS4KICAgICBpZiAobmFtZSAhPSAiaHRtbCIKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiKy8vU2lsbWFyaWwvL2R0ZCBodG1sIFBybyB2MHIx
MSAxOTk3MDEwMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0v
L0FkdmFTb2Z0IEx0ZC8vRFREIEhUTUwgMy4wIGFzV2VkaXQgKyBleHRlbnNpb25zLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vQVMvL0RURCBIVE1MIDMuMCBh
c1dlZGl0ICsgZXh0ZW5zaW9ucy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIExldmVsIDIvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRN
TCAyLjAgU3RyaWN0IExldmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3RyaWN0IExldmVsIDIvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3Ry
aWN0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgMi4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vSUVURi8vRFREIEhUTUwgMi4xRS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0
YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMiBGaW5hbC8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMi8v
IiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBI
VE1MIDMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRG
Ly9EVEQgSFRNTCBMZXZlbCAwLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRz
V2l0aCgiLS8vSUVURi8vRFREIEhUTUwgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDIvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZlbCAz
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFRE
IEhUTUwgU3RyaWN0IExldmVsIDAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIFN0cmljdCBMZXZl
bCAyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgU3RyaWN0IExldmVsIDMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5z
dGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTC8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01ldHJpdXMvL0RURCBNZXRyaXVzIFByZXNl
bnRhdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
TWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMi4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50
ZXJuZXQgRXhwbG9yZXIgMi4wIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5z
dGFydHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAyLjAgVGFibGVz
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0
Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMy4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhw
bG9yZXIgMy4wIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRo
KCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAzLjAgVGFibGVzLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTmV0c2NhcGUgQ29tbS4gQ29y
cC4vL0RURCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vTmV0c2NhcGUgQ29tbS4gQ29ycC4vL0RURCBTdHJpY3QgSFRNTC8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5IGFuZCBBc3NvY2lhdGVzLy9E
VEQgSFRNTCAyLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCIt
Ly9PJ1JlaWxseSBhbmQgQXNzb2NpYXRlcy8vRFREIEhUTUwgRXh0ZW5kZWQgMS4wLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTydSZWlsbHkgYW5kIEFzc29j
aWF0ZXMvL0RURCBIVE1MIEV4dGVuZGVkIFJlbGF4ZWQgMS4wLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU29mdFF1YWQgU29mdHdhcmUvL0RURCBIb1RNZXRh
TCBQUk8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBIVE1MIDQuMC8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1NvZnRRdWFkLy9EVEQgSG9UTWV0YUwg
UFJPIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gSFRNTCA0LjAvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TcHlnbGFzcy8vRFREIEhUTUwgMi4wIEV4
dGVuZGVkLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU1Ev
L0RURCBIVE1MIDIuMCBIb1RNZXRhTCArIGV4dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TdW4gTWljcm9zeXN0ZW1zIENvcnAuLy9EVEQgSG90
SmF2YSBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
U3VuIE1pY3Jvc3lzdGVtcyBDb3JwLi8vRFREIEhvdEphdmEgU3RyaWN0IEhUTUwvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMgMTk5
NS0wMy0yNC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1cz
Qy8vRFREIEhUTUwgMy4yIERyYWZ0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMuMi8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMy4yUyBEcmFm
dC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFRE
IEhUTUwgNC4wIEZyYW1lc2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRz
V2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCBFeHBlcmltZW50YWwg
MTk5NjA3MTIvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9X
M0MvL0RURCBIVE1MIEV4cGVyaW1lbnRhbCA5NzA0MjEvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBXMyBIVE1MLy8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNPLy9EVEQgVzMgSFRNTCAzLjAvLyIsIGZh
bHNlKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiKy8vc2lsbWFyaWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2Fk
dmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8iKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vYXMv
L2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1s
IDIuMCBsZXZlbCAxLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9p
ZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAy
LjAgc3RyaWN0IGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vaWV0Zi8vZHRkIGh0bWwgMi4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vIikKKyAg
ICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0v
L2lldGYvL2R0ZCBodG1sIDMuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL2lldGYvL2R0ZCBodG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9p
ZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAz
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QgbGV2ZWwgMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAy
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21ldHJpdXMvL2R0ZCBt
ZXRyaXVzIHByZXNlbnRhdGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhw
bG9yZXIgMi4wIGh0bWwgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhw
bG9yZXIgMi4wIGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAy
LjAgdGFibGVzLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0
bWwgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0
bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBodG1sLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbmV0c2NhcGUgY29t
bS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVz
Ly9kdGQgaHRtbCAyLjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwg
ZXh0ZW5kZWQgMS4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4
dGVuZGVkIHJlbGF4ZWQgMS4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRh
bCBwcm8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vIikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NvZnRx
dWFkLy9kdGQgaG90bWV0YWwgcHJvIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gaHRtbCA0
LjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9zcHlnbGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3EvL2R0
ZCBodG1sIDIuMCBob3RtZXRhbCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zdW4gbWljcm9zeXN0ZW1z
IGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8v
ZHRkIGhvdGphdmEgc3RyaWN0IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMgMTk5NS0wMy0y
NC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly8iKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAz
LjIgZmluYWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwg
My4ycyBkcmFmdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8iKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNj
Ly9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCBleHBlcmlt
ZW50YWwgMTk5NjA3MTIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy93M2MvL2R0ZCB3MyBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLyIp
CiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
dzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vIikKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vV2ViVGVjaHMvL0RURCBNb3ppbGxhIEhUTUwgMi4wLy8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vV2ViVGVjaHMvL0RURCBNb3ppbGxh
IEhUTUwvLyIsIGZhbHNlKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwgMi4wLy8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvLyIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRp
b25hbC9lbiIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiaHRtbCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN5
c3RlbUlkLCAiaHR0cDovL3d3dy5pYm0uY29tL2RhdGEvZHRkL3YxMS9pYm14aHRtbDEtdHJhbnNp
dGlvbmFsLmR0ZCIpCi0gICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly8iLCBmYWxzZSkpCi0g
ICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpKSkgeworICAgICAgICB8
fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLyIpKQorICAgICAg
ICB8fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8iKSkp
IHsKICAgICAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9k
ZTo6UXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBDaGVjayBm
b3IgTGltaXRlZCBRdWlya3MgTW9kZS4KLSAgICBpZiAocHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgWEhUTUwgMS4wIEZyYW1lc2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGlj
SWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8ICghc3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vIiwgZmFsc2UpKQotICAgICAgICB8
fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RU
RCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkpKSB7CisgICAgaWYgKHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCB4aHRtbCAx
LjAgZnJhbWVzZXQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8iKQor
ICAgICAgICB8fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8i
KSkKKyAgICAgICAgfHwgKCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0
aW9uYWwvLyIpKSkgewogICAgICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBh
dGliaWxpdHlNb2RlOjpMaW1pdGVkUXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcAppbmRleCA4YTg0Njg5MTVmZTkzMjZjOWU3MzZhN2FhNTM1YWU4ZGQzZWI0ZDI0Li44
ZDMzZWU2NjNmYjMzMDcwNGE5ODhhMjExNWMwNDMwY2IxOWUzNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXQoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKICAgICBm
b3IgKHNpemVfdCBwb3MgPSAwOyBwb3MgPCBsZW5ndGg7ICkgewotICAgICAgICBwb3MgPSB2YWx1
ZS5maW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7CisgICAgICAgIHBvcyA9IHZhbHVlLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgiY2hhcnNldCIsIHBvcyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcAppbmRleCA5M2ZmYTViYTY0OGVjODhhODhkMzVlZTYwMDMxOTVjNzYzMDM4
ZjM0Li5hNzNlZDkzYjk5N2ZiN2I1ZGExODI4MTgyYjE0ZjdhZTJiYWFlZTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtNzE1LDExICs3MTUsMTEgQEAg
Ym9vbCBYU1NBdWRpdG9yOjppc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIGRlY29k
ZWRTbmlwcGV0KQogewogICAgIGlmIChkZWNvZGVkU25pcHBldC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9kZWNvZGVkVVJMLmZpbmQoZGVjb2RlZFNuaXBwZXQs
IDAsIGZhbHNlKSAhPSBub3RGb3VuZCkKKyAgICBpZiAobV9kZWNvZGVkVVJMLmNvbnRhaW5zSWdu
b3JpbmdBU0NJSUNhc2UoZGVjb2RlZFNuaXBwZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBpZiAobV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmICFtX2RlY29kZWRIVFRQQm9keVN1
ZmZpeFRyZWUtPm1pZ2h0Q29udGFpbihkZWNvZGVkU25pcHBldCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHkuZmluZChkZWNvZGVkU25pcHBldCwg
MCwgZmFsc2UpICE9IG5vdEZvdW5kOworICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKGRlY29kZWRTbmlwcGV0KTsKIH0KIAogYm9vbCBYU1NBdWRp
dG9yOjppc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCBhY2U2NmU1NDFjMGI4OTMwYmRl
ZmQzYmQ1OWNiMWM4N2VhMjQyMTczLi41MThlZDhiMzA2MGQwNjg5ZTI3NDQ4OTNiNDZkOWFjNDc3
NzNlOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgYm9vbCBXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogICAgIC8vIEEgV2ViVlRUIGZpbGUgaWRlbnRpZmll
ciBjb25zaXN0cyBvZiBhbiBvcHRpb25hbCBCT00gY2hhcmFjdGVyLAogICAgIC8vIHRoZSBzdHJp
bmcgIldFQlZUVCIgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgc3BhY2Ugb3IgdGFiIGNoYXJhY3Rl
ciwKICAgICAvLyBhbmQgYW55IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsaW5l
IHRlcm1pbmF0b3JzIC4uLgotICAgIGlmICghbGluZS5zdGFydHNXaXRoKGZpbGVJZGVudGlmaWVy
LCBmaWxlSWRlbnRpZmllckxlbmd0aCkpCisgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoZmlsZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGxpbmUubGVuZ3RoKCkg
PiBmaWxlSWRlbnRpZmllckxlbmd0aCAmJiAhaXNIVE1MU3BhY2UobGluZVtmaWxlSWRlbnRpZmll
ckxlbmd0aF0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKaW5kZXggNTk1ODNhOTAyODU0NGJiOTFi
MmM0NzVlM2E4NmU1ZTllOWNmMTE3OC4uZjkyYTVkODkyN2U3NjBiZjRiN2I1ZjA4ODg4ZjZhMDVk
M2U1YWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5v
ZGVGaW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2Rl
RmluZGVyLmNwcApAQCAtMTEwLDggKzExMCw4IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6
bWF0Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBTdHJpbmcgbm9kZU5h
bWUgPSBlbGVtZW50Lm5vZGVOYW1lKCk7CiAgICAgaWYgKCghbV9zdGFydFRhZ0ZvdW5kICYmICFt
X2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UobV90YWdO
YW1lUXVlcnkpKQogICAgICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmIG1fZW5kVGFnRm91bmQg
JiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShub2RlTmFtZSwgbV90YWdOYW1lUXVlcnkpKQotICAg
ICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLnN0
YXJ0c1dpdGgobV90YWdOYW1lUXVlcnksIGZhbHNlKSkKLSAgICAgICAgfHwgKCFtX3N0YXJ0VGFn
Rm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5lbmRzV2l0aChtX3RhZ05hbWVRdWVy
eSwgZmFsc2UpKSkKKyAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3Vu
ZCAmJiBub2RlTmFtZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkp
KQorICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIG5vZGVO
YW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQ3
ZTJlOTNkM2Q4MWM3Yzk2MjcwNWI0MWFkYTRlNWE3N2VmOTc2MWEuLmQyY2Q4NWE3ZjI0OTk5OTli
OTM0NmY2NWQyNjdmNjQyNTAzMDkzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRPYmplY3RGb3JT
ZWxlY3RvckhlbHBlcihjCiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3Vy
Y2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hl
ZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxl
bWVudCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6
OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZ
YXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAog
ICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlNDcw
MDE2MjlhYWJkNmYzOTgxYzU5MGQ5OGYxNGVmYjIyMzU1MjljLi5kMDg2OWVmYWIxZDVjYmI0NmNm
OGVmZGExOTU3NDhjMzNhYWJhMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKQEAgLTE5NzMsMTAgKzE5NzQs
MTYgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICByZXR1cm4gV1RGTW92ZSh2YWx1ZSk7
CiB9CiAKK3N0YXRpYyBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKE5vZGUqIG5vZGUp
Cit7CisgICAgLy8gRklYTUU6IFJlc3BlY3QgaWdub3JlV2hpdGVzcGFjZSBzZXR0aW5nIGZyb20g
aW5zcGVjdG9yIGZyb250IGVuZD8KKyAgICByZXR1cm4gaXM8VGV4dD4obm9kZSkgJiYgZG93bmNh
c3Q8VGV4dD4oKm5vZGUpLmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNl
PigpOworfQorCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKE5vZGUq
IG5vZGUpCiB7CiAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAoaXNX
aGl0ZXNwYWNlKG5vZGUpKQorICAgIHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShu
b2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIG5v
ZGU7CiB9CkBAIC0xOTg1LDcgKzE5OTIsNyBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5u
ZXJOZXh0U2libGluZyhOb2RlKiBub2RlKQogewogICAgIGRvIHsKICAgICAgICAgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNwYWNlKG5vZGUpKTsKKyAg
ICB9IHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2RlKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKQEAgLTE5OTMsMTggKzIwMDAsMTUgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVyUHJldmlvdXNTaWJsaW5nKE5vZGUqIG5vZGUpCiB7CiAgICAgZG8gewogICAgICAg
ICBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNw
YWNlKG5vZGUpKTsKKyAgICB9IHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2Rl
KSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lckNoaWxkTm9kZUNvdW50KE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAw
OwotICAgIE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOwotICAgIHdoaWxlIChj
aGlsZCkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBjaGlsZCA9IGlubmVyTmV4dFNpYmxp
bmcoY2hpbGQpOwotICAgIH0KKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxk
KG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAg
Kytjb3VudDsKICAgICByZXR1cm4gY291bnQ7CiB9CiAKQEAgLTIwMTgsMTMgKzIwMjIsNiBAQCBO
b2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpCiAgICAg
cmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6
aXNXaGl0ZXNwYWNlKE5vZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBjb250
YWluc09ubHlIVE1MU3BhY2VzPwotICAgIC8vIEZJWE1FOiBSZXNwZWN0IGlnbm9yZVdoaXRlc3Bh
Y2Ugc2V0dGluZyBmcm9tIGluc3BlY3RvciBmcm9udCBlbmQ/Ci0gICAgcmV0dXJuIGlzPFRleHQ+
KG5vZGUpICYmIGRvd25jYXN0PFRleHQ+KCpub2RlKS5kYXRhKCkuY29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpOwotfQotCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjptYWluRnJhbWVET01Db250ZW50
TG9hZGVkKCkKIHsKICAgICAvLyBSZS1wdXNoIGRvY3VtZW50IG9uY2UgaXQgaXMgbG9hZGVkLgpA
QCAtMjA1Niw3ICsyMDUzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9h
ZChEb2N1bWVudCogZG9jdW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNXaGl0ZXNwYWNlKCZub2RlKSkKKyAg
ICBpZiAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoJm5vZGUpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0
IHRoZSBiaW5kaW5ncy4KQEAgLTIwODUsNyArMjA4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSYgbm9kZSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogewotICAgIGlmIChpc1doaXRlc3BhY2Uo
Jm5vZGUpKQorICAgIGlmIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSgmbm9kZSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUucGFyZW50Tm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IDYwZWI2YzdhYjM5NWQ2YmY5NDZkMDM4MTkyMmRhYjhmZTcyY2JhM2Yu
LjBhZmIyODUwZDJmY2Q3NDI2ZDA1MWFmYmEzM2FhOTA2NjM0MDdjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTIw
Myw3ICsyMDMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNTaWJs
aW5nKE5vZGUqKTsKICAgICBzdGF0aWMgdW5zaWduZWQgaW5uZXJDaGlsZE5vZGVDb3VudChOb2Rl
Kik7CiAgICAgc3RhdGljIE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKik7Ci0gICAgc3RhdGlj
IGJvb2wgaXNXaGl0ZXNwYWNlKE5vZGUqKTsKIAogICAgIE5vZGUqIGFzc2VydE5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA3YmU5MWJlNTUzZmRm
ZjkzZTc3ZDcwMmNhODE0MTk4OGUyODg5MzE5Li4xNTNlODg0MDIxYmQ3ODMyODU4ODZmYTcyZmM4
MmM0ZTU0NjEyNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyODUsOCArMTI4NSw4IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZVRhYmxlcygpCiAgICAgCiBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlKQogewotICAgIHJldHVybiByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLnN0YXJ0c1dpdGgoImF1ZGlvLyIsIGZhbHNlKSAKLSAg
ICAgICAgfHwgcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKS5zdGFydHNXaXRoKCJ2aWRl
by8iLCBmYWxzZSk7CisgICAgYXV0byYgdHlwZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InZpZGVvLyIpOwogfQogICAgIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAKaW5kZXggZTA4YTE2YjQwNWY0
YTIyYWE4Y2ZjZjU4MTc0OWIxNGNhMDRkOGRjNS4uMGM2MTNmYTQzMDkwYjc5NjBkMGRlN2I5YWYz
Nzg3OGY0OTNkOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEJhc2U2NFV0aWxpdGllczo6YnRv
YShjb25zdCBTdHJpbmcmIHN0cmluZ1RvRW5jb2RlKQogICAgIGlmIChzdHJpbmdUb0VuY29kZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzdHJpbmdUb0Vu
Y29kZS5jb250YWluc09ubHlMYXRpbjEoKSkKKyAgICBpZiAoIXN0cmluZ1RvRW5jb2RlLmlzQWxs
TGF0aW4xKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJy
b3IgfTsKIAogICAgIHJldHVybiBiYXNlNjRFbmNvZGUoc3RyaW5nVG9FbmNvZGUubGF0aW4xKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzYzRkMDA3NzJmYTE3NzkxMDE4Mzg4ODRlN2E2MWMw
NjIwN2I0Mjc5Li5lMmUxMzEwNzVjNDU2NDViZGFkMGYxYzJlZWNkNjgxNThiNTUxMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNh
Y2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNy
b3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2Fz
ZVNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVy
bjsKICAgICBwYXR0ZXJuLmFwcGVuZCgnKCcpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJlbHMg
PSBsYWJlbHMuc2l6ZSgpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYKICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgfQogICAg
IHBhdHRlcm4uYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24ocGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICByZXR1
cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6
WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAKIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9y
TGFiZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4
cCwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9t
U3RhcnRPZkNlbGwpCkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVs
c0FnYWluc3RTdHJpbmcoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgY29uc3QgU3RyaW4K
ICAgICBTdHJpbmcgbXV0YWJsZVN0cmluZ1RvTWF0Y2ggPSBzdHJpbmdUb01hdGNoOwogCiAgICAg
Ly8gTWFrZSBudW1iZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBi
b3VuZGFyaWVzLCBlLmcuLCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9N
YXRjaCwgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRp
dmUpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24oIlxcZCIpLCAiICIpOwogICAgIG11dGFibGVTdHJpbmdUb01hdGNo
LnJlcGxhY2UoJ18nLCAnICcpOwogICAgIAogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24gcmVnRXhwID0gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggYzBjNjk3N2JkNzZkYmJlYWIxODAzY2MyNDM0ZWE0OGFlMWQwMThh
MC4uZTRlMzUyNTM2NWQxY2JkMWJmNzA1YjU2YWVhNzRiYmNlN2MxZWQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjQ4OCw3ICsyNDg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhyZXNob2xkKGNvbnN0IFJl
bmRlckUKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmpl
Y3QqIGRlc2NlbmRhbnQgPSAmcmVuZGVyZXI7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNj
ZW5kYW50LT5uZXh0SW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0Pigq
ZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGNvdW50ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+
KCpkZXNjZW5kYW50KS50ZXh0KCktPmxlbmd0aCgpOworICAgICAgICAgICAgY291bnQgKz0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKmRlc2NlbmRhbnQpLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGlmIChjb3VudCA+PSB0aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNTNjOTljNTc0
NzkyNmY0ZjBhZWM0OWYwY2VkZWZkMjQyYjhiNWM4NC4uOWQyZTVjY2Q0ZWIxMWQwMmQ5YjQ1N2M1
ZDAyNTU4ODQxMWFlYzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTMzMSwxNCArMzMxLDE2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlY2VpdmVEcmFn
RGF0YShjb25zdCBTZWN1cml0eU9yaWdpbiYgZHJhZ0luaXRpYXRvcikgY29uCiAvLyBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGFzIGFuIG91dGNvbWUgb2YgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTk2CiBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVz
dGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7Ci0gICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRz
V2l0aCgiZmVlZCIsIGZhbHNlKSkKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZyA9IHVybC5zdHJp
bmcoKTsKKyAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmVlZCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdXJsU3RyaW5n
LnN0YXJ0c1dpdGgoImZlZWQ6Ly8iLCBmYWxzZSkgCi0gICAgICAgIHx8IHVybFN0cmluZy5zdGFy
dHNXaXRoKCJmZWVkOmh0dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVk
Omh0dHBzOiIsIGZhbHNlKQotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHM6
aHR0cDoiLCBmYWxzZSkgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzOmh0dHBzOiIsIGZh
bHNlKQotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwOiIs
IGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoiLCBmYWxz
ZSk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmVlZDovLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nLCAiZmVlZDpodHRwOiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZDpodHRwczoiKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzOmh0dHA6IikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkczpo
dHRwczoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0
cmluZywgImZlZWRzZWFyY2g6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzZWFyY2g6aHR0cHM6Iik7CiB9CiAKIGJvb2wg
U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNGRhYjU0Nzk0
YjY3NzNiYzVkOTYzNWE1OGYwZjM0NDhjNzM2OGUxOS4uZTFmZGM5Yjc1MzlmOWY3NGI3OTJlNGFh
ZTJmODJhZWFjYmFlYzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGRvbWFpbiBpcyBhIHN1YmRvbWFpbiBvZiBvdXIg
aG9zdC4KLSAgICBpZiAoIWhvc3QuZW5kc1dpdGgobV9ob3N0LCBmYWxzZSkpCisgICAgaWYgKCFo
b3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV9ob3N0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQVNTRVJUKGhvc3QubGVuZ3RoKCkgPiBtX2hvc3QubGVuZ3RoKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5jcHAKaW5kZXggNTk2MDRjNjdhY2U3N2EzNTRkNGRlYThhYWRiNTdmOTk2YmVkYTJjNi4u
N2E0MzMzZDVkNmFmODg5NjI4OGIyMDc5NTY1MDRiNmMzZjc3OWJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3Bw
CkBAIC02NCw5ICs2NCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpzY2hl
bWVNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2U6Omhvc3RNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGNvbnN0
IFN0cmluZyYgaG9zdCA9IHVybC5ob3N0KCk7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoaG9zdCwgbV9ob3N0KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9z
dEhhc1dpbGRjYXJkICYmIGhvc3QuZW5kc1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9ob3N0KSB8fCAobV9ob3N0SGFz
V2lsZGNhcmQgJiYgaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuIiArIG1faG9zdCkp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggOTIwYWQxMmQ5OGFhYTY5ZmI2MDMx
OGEzNWNkNWM4YWY2NzIzY2Q2Yi4uYzM2MDgxNWIxNGZmNGE1ODZhY2RhOGY5YjU0Yjg2MzgxZmFj
ODY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTQzNywxMCArNDM3LDEwIEBAIHN0YXRp
YyBib29sIGlzTm9uY2VDaGFyYWN0ZXIoVUNoYXIgYykKIC8vIG5vbmNlLXZhbHVlICAgICA9IGJh
c2U2NC12YWx1ZQogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZU5v
bmNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBub25jZVByZWZpeCgiJ25vbmNlLSIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICghU3RyaW5nVmlldyhiZWdpbiwgZW5k
IC0gYmVnaW4pLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShub25jZVByZWZpeC5nZXQoKSkp
CisgICAgY29uc3QgdW5zaWduZWQgbm9uY2VQcmVmaXhMZW5ndGggPSA2OworICAgIGlmICghU3Ry
aW5nVmlldyhiZWdpbiwgZW5kIC0gYmVnaW4pLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
bm9uY2UtIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBVQ2hhciogcG9zaXRp
b24gPSBiZWdpbiArIG5vbmNlUHJlZml4LmdldCgpLmxlbmd0aCgpOworICAgIGNvbnN0IFVDaGFy
KiBwb3NpdGlvbiA9IGJlZ2luICsgbm9uY2VQcmVmaXhMZW5ndGg7CiAgICAgY29uc3QgVUNoYXIq
IGJlZ2luTm9uY2VWYWx1ZSA9IHBvc2l0aW9uOwogICAgIHNraXBXaGlsZTxVQ2hhciwgaXNOb25j
ZUNoYXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7CiAgICAgaWYgKHBvc2l0aW9uID49IGVuZCB8fCBw
b3NpdGlvbiA9PSBiZWdpbk5vbmNlVmFsdWUgfHwgKnBvc2l0aW9uICE9ICdcJycpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGIzM2U4Njk3ZTI5NWI4N2U5YTkwNDcxMTk5Yzdm
NjBjOTQ1NGY0ZTMuLjU4NGY3NGJiNTQxMDEyZmY3YzllNGY0NDk5MTJmNTEyOWRkMTZkNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgTlNBcnJh
eSAqRnJhbWU6OndvcmRzSW5DdXJyZW50UGFyYWdyYXBoKCkgY29uc3QKICAgICBpZiAoIWlzU3Rh
cnRPZlBhcmFncmFwaChlbmQpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9
IGVuZC5wcmV2aW91cygpOwogICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVy
KCkpOwotICAgICAgICBpZiAoIWlzd3B1bmN0KGMpICYmICFpc1NwYWNlT3JOZXdsaW5lKGMpICYm
IGMgIT0gMHhBMCkKKyAgICAgICAgaWYgKCFpc3dwdW5jdChjKSAmJiAhaXNTcGFjZU9yTmV3bGlu
ZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGVuZCA9IHN0YXJ0T2ZXb3Jk
KGVuZCk7CiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChzdGFydE9mUGFyYWdyYXBo
KGVuZCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jkc0luQ3VycmVu
dFBhcmFncmFwaCgpIGNvbnN0CiAgICAgICAgIGlmIChsZW5ndGggPiAxIHx8ICFpc1NwYWNlT3JO
ZXdsaW5lKHRleHRbMF0pKSB7CiAgICAgICAgICAgICBpbnQgc3RhcnRPZldvcmRCb3VuZGFyeSA9
IDA7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUodGV4dFtpXSkgfHwgdGV4dFtpXSA9PSAw
eEEwKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUodGV4dFtpXSkgfHwg
dGV4dFtpXSA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmRM
ZW5ndGggPSBpIC0gc3RhcnRPZldvcmRCb3VuZGFyeTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHdvcmRMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGNodW5rID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRPZldvcmRCb3VuZGFyeSwgd29yZExl
bmd0aCkuY3JlYXRlTlNTdHJpbmcoKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBOU0FycmF5ICpGcmFt
ZTo6d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBjb25zdAogICAgIGlmIChbd29yZHMgY291bnRd
ID4gMCAmJiBpc0VuZE9mUGFyYWdyYXBoKHBvc2l0aW9uKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBo
KHBvc2l0aW9uKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlv
bi5wcmV2aW91cygpOwogICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCkp
OwotICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSAweEEwKQorICAgICAg
ICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UpCiAgICAgICAg
ICAgICBbd29yZHMgcmVtb3ZlTGFzdE9iamVjdF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50VHlwZS5jcHAKaW5kZXggOTk2MWNkZGQ1MGZmNzdiNDdmN2MwMzczMmY5MmUw
OWVlOWUyM2IwMS4uYWM3NWU2Zjk1MTFmMWYxYjdkZTEwNDk4MTAzNTA2NWI0ZDViYmIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBT
dHJpbmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUp
IGNvbnN0CiAgICAgLy8gYSBNSU1FIHR5cGUgY2FuIGhhdmUgb25lIG9yIG1vcmUgInBhcmFtPXZh
bHVlIiBhZnRlciBhIHNlbWktY29sb24sIGFuZCBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIGJ5
IHNlbWktY29sb25zCiAgICAgc2l6ZV90IHNlbWkgPSBzdHJpcHBlZFR5cGUuZmluZCgnOycpOwog
ICAgIGlmIChzZW1pICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHNpemVfdCBzdGFydCA9IHN0cmlw
cGVkVHlwZS5maW5kKHBhcmFtZXRlck5hbWUsIHNlbWkgKyAxLCBmYWxzZSk7CisgICAgICAgIHNp
emVfdCBzdGFydCA9IHN0cmlwcGVkVHlwZS5maW5kSWdub3JpbmdBU0NJSUNhc2UocGFyYW1ldGVy
TmFtZSwgc2VtaSArIDEpOwogICAgICAgICBpZiAoc3RhcnQgIT0gbm90Rm91bmQpIHsKICAgICAg
ICAgICAgIHN0YXJ0ID0gc3RyaXBwZWRUeXBlLmZpbmQoJz0nLCBzdGFydCArIHBhcmFtZXRlck5h
bWUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IG5vdEZvdW5kKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDViYWIxYmJl
Njc0MGUzMjgyNTJlYjEwMWM5NTczYzczYTI5MDFlYTYuLmE3OTllODcxYzBlMzVmMjk1MGM1MzY5
YjI3Yjg1ZGE3ZDA5ZjU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCkBAIC00OTEsMTUgKzQ5MSwxNSBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAK
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRGb250TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZm9udExlbiA9IDU7
Ci0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoImZvbnQvIikp
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZvbnRMZW5ndGggPSA1OworICAgIGlmICghc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImZvbnQvIikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgc3ViVHlwZSA9IG1pbWVUeXBlLnN1YnN0cmlu
Zyhmb250TGVuKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3Vi
VHlwZSwgIndvZmYiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
dWJUeXBlLCAid29mZjIiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdWJUeXBlLCAib3RmIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3ViVHlwZSwgInR0ZiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN1YlR5cGUsICJzZm50Iik7CisgICAgYXV0byBzdWJ0eXBlID0gU3RyaW5nVmlldyB7IG1p
bWVUeXBlIH0uc3Vic3RyaW5nKGZvbnRMZW5ndGgpOworICAgIHJldHVybiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAid29mZiIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHN1YnR5cGUsICJ3b2ZmMiIpCisgICAgICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YnR5cGUsICJvdGYiKQorICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAidHRmIikKKyAgICAgICAgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3VidHlwZSwgInNmbnQiKTsKIH0KIAogYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQpAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKU09OTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBXaGVuIGRldGVjdGluZyAranNvbiBlbnN1cmUgdGhlcmUgaXMgYSBub24t
ZW1wdHkgdHlwZSAvIHN1YnR5cGUgcHJlY2VlZGluZyB0aGUgc3VmZml4LgotICAgIGlmIChtaW1l
VHlwZS5lbmRzV2l0aCgiK2pzb24iLCBmYWxzZSkgJiYgbWltZVR5cGUubGVuZ3RoKCkgPj0gOCkg
eworICAgIGlmIChtaW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIranNvbiIpICYm
IG1pbWVUeXBlLmxlbmd0aCgpID49IDgpIHsKICAgICAgICAgc2l6ZV90IHNsYXNoUG9zaXRpb24g
PSBtaW1lVHlwZS5maW5kKCcvJyk7CiAgICAgICAgIGlmIChzbGFzaFBvc2l0aW9uICE9IG5vdEZv
dW5kICYmIHNsYXNoUG9zaXRpb24gPiAwICYmIHNsYXNoUG9zaXRpb24gPD0gbWltZVR5cGUubGVu
Z3RoKCkgLSA2KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NTYsMTMgKzU1NiwxMiBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVU
eXBlKQogICAgICAgICB8fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZShtaW1lVHlwZSkgLy8gUmVu
ZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KLSAgICAgICAgfHwgKG1pbWVUeXBlLnN0YXJ0c1dpdGgo
InRleHQvIiwgZmFsc2UpCisgICAgICAgIHx8IChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAidGV4dC8iKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikKICAgICAgICAgICAgICYmICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikKICAgICAg
ICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpOwogfQogCi0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFy
KFVDaGFyIGMpCiB7CiAgICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAy
MDQ1OiAwLTlhLXpBLVpfLSt+ISRee318LiUnYCMmKgpAQCAtNTc1LDcgKzU3NCw3IEBAIGJvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1s
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0
aCgiK3htbCIsIGZhbHNlKSkKKyAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoIit4bWwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2l6ZV90IHNsYXNo
UG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7CkBAIC01OTksOSArNTk4LDkgQEAgYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogICAgIC8vIG9mIHVzaW5nIGEgaGFzaCBzZXQuCiAgICAgLy8gQW55IG9mIHRoZSBNSU1F
IHR5cGVzIGJlbG93IG1heSBiZSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIHNwZWNpZmljIHZl
cnNpb25zIG9mIHRoZSBKVk0sCiAgICAgLy8gd2hpY2ggaXMgd2h5IHdlIHVzZSBzdGFydHNXaXRo
KCkKLSAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1qYXZhLWFw
cGxldCIsIGZhbHNlKQotICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlv
bi94LWphdmEtYmVhbiIsIGZhbHNlKQotICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJh
cHBsaWNhdGlvbi94LWphdmEtdm0iLCBmYWxzZSk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImFwcGxpY2F0aW9uL3gtamF2YS1iZWFuIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtamF2YS12bSIpOwog
fQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyNiw3ICs2MjUsNyBAQCBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIGlmIChp
c1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNTdXBwb3J0ZWRKU09O
TUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtaW1l
VHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKSkKKyAgICBpZiAoc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikpCiAgICAgICAgIHJldHVybiAh
aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmNwcAppbmRleCAyZWQ0NGIwMmQ5YTRkZDMyZWNlNTk5ZTExMzYy
NWJiOWNkY2M0ODhlLi4yZjM1NWE5N2VkZDZlYTIxYzY0NGFiNzBiOTEwM2RlMmRlOTM5N2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIFVSTDo6c2V0
UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
Ym9vbCBjb250YWluc09ubHlBU0NJSShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBib29sIGlz
QWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
ICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nLmxlbmd0aCgpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgYm9vbCBhcHBl
bmRFbmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcp
CiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgogICAgIGNvbnN0IHVuc2ln
bmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKICAgICAKLSAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgY29udGFpbnNPbmx5QVNDSUkoc3RyaW5n
KSkgeworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBp
c0FsbEFTQ0lJKHN0cmluZykpIHsKICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5j
cHAKaW5kZXggZWQ1NjA0NTFhY2IxZjM1NWViOTQ0YzU0MzlhYmFjYzQzMDc5MjYxZi4uNjcyODYx
MmVkMDMyNDlmZjk3NjI4ODIxNWRjOWI0NTEzY2E5N2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCkBAIC0yNTM4LDE5ICsyNTM4LDEwIEBAIFZlY3RvcjxMQ2hhciwgVVJM
UGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4gVVJMUGFyc2VyOjpwZXJjZW50RGVjb2Rl
KGNvbnN0CiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBjb250YWluc09ubHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBBU1NFUlQo
IXN0cmluZy5pc051bGwoKSk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwmIGRvbWFpbiwg
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pCiB7CiAgICAgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVm
ZmVyU2l6ZT4gYXNjaWk7Ci0gICAgaWYgKGNvbnRhaW5zT25seUFTQ0lJKGRvbWFpbikpIHsKKyAg
ICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9t
YWluLmxlbmd0aCgpOwogICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwpAQCAtMjc2
Nyw3ICsyNzU4LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpKQogICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsK
LSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSShkb21haW4sIGhvc3RCZWdpbik7
CisgICAgYXV0byBhc2NpaURvbWFpbiA9IGRvbWFpblRvQVNDSUkoKmRvbWFpbi5pbXBsKCksIGhv
c3RCZWdpbik7CiAgICAgaWYgKCFhc2NpaURvbWFpbiB8fCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBv
aW50KGFzY2lpRG9tYWluLnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVmVj
dG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGFzY2lpRG9tYWluVmFsdWUgPSBh
c2NpaURvbWFpbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAppbmRleCAx
YTUzYzhjN2UwNmIyNzU3NDQ5MDE0OTMxYTE3MWU3NTY1ZGI5NDMyLi4wNmQwMWMxY2YyMjUyYjc2
YWNlMTE0MzU5NWNmNjUxNDBjNWI3ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
aApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZElu
dGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFp
blRvQVNDSUkoY29uc3QgU3RyaW5nJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZh
dWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBWZWN0b3I8
TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFy
Kiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAgICAgc3RhdGljIFZlY3RvcjxMQ2hhciwg
ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXpl
X3QpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJp
bmdWaWV3IGlucHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCA3ODg5ZDhhMTRkYmM4NmE5MjUyNGU1MWU5ZWVlOWZhZGY2MTk2
NmMxLi41ZmZlM2QyOTU0ZmVlOGJjOWE2OTUzNWQ3NThiZDVhMTc4ZDIxMmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05MzMs
OCArOTMzLDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICAvLyBzbG93IGNvbm5lY3Rp
b25zLiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDA5PgogICAg
IGlmIChjbGllbnQgJiYgY2xpZW50LT5tZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNpZmljSGFja3Mo
KSkgewogICAgICAgICBTdHJpbmcgaG9zdCA9IGNsaWVudC0+bWVkaWFQbGF5ZXJEb2N1bWVudEhv
c3QoKTsKLSAgICAgICAgaWYgKChob3N0LmVuZHNXaXRoKCIueW91dHViZS5jb20iLCBmYWxzZSkg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgInlvdXR1YmUuY29tIikpCi0g
ICAgICAgICAgICAmJiAoY29udGFpbmVyVHlwZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFs
c2UpIHx8IGNvbnRhaW5lclR5cGUuc3RhcnRzV2l0aCgidmlkZW8veC1mbHYiLCBmYWxzZSkpKQor
ICAgICAgICBpZiAoKGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnlvdXR1YmUuY29t
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgInlvdXR1YmUuY29tIikp
CisgICAgICAgICAgICAmJiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250
YWluZXJUeXBlLCAidmlkZW8vd2VibSIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29udGFpbmVyVHlwZSwgInZpZGVvL3gtZmx2IikpKQogICAgICAgICAgICAgcmV0dXJu
IElzTm90U3VwcG9ydGVkOwogICAgIH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZiZTExM2NmYjk1MjljZjNiOTIy
N2EyNmQ3NWM5MjY1ZDc5YzIyNjMuLmQyNzgwYzk4ZmNmMjQ0NmZhZjkyMDdlZDU1MjdmYmZlZGUz
MzFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IFJlZ3VsYXJFeHByZXNzaW9uJiB2YWxpZEtleVN5c3RlbVJFKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29tXFwuYXBwbGVc
XC5mcHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4ga2V5U3lzdGVtUkUoIl5j
b21cXC5hcHBsZVxcLmZwc1xcLlsyM11fXFxkKyg/OixcXGQrKSokIiwgSlNDOjpZYXJyOjpUZXh0
Q2FzZUluc2Vuc2l0aXZlKTsKICAgICByZXR1cm4ga2V5U3lzdGVtUkU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAppbmRleCBmYjBlY2UzYzc0YTY5YmM1ZWMyYWQ3NTdlMmU1NDk5YmRkYmFh
MWFhLi4xZjJiNWY1ZDBiYTg1MWIyMTM5NTRmODQ4NDdkOTNhNDJiMGE1OWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCkBAIC02ODUsNyArNjg1LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNo
ZTo6c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3Qg
QXQKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBnZWV6YVBsYWluKCJH
ZWV6YVBybyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGdlZXphQm9sZCgiR2VlemFQcm8tQm9sZCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGZvciAoU3RyaW5nKiBt
YXRjaFdvcmQgOiBtYXRjaFdvcmRzKSB7Ci0gICAgICAgIGlmIChmYW1pbHkuY29udGFpbnMoKm1h
dGNoV29yZCwgZmFsc2UpKQorICAgICAgICBpZiAoZmFtaWx5LmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoKm1hdGNoV29yZCkpCiAgICAgICAgICAgICByZXR1cm4gZm9udEZvckZhbWlseShkZXNj
cmlwdGlvbiwgaXNGb250V2VpZ2h0Qm9sZChkZXNjcmlwdGlvbi53ZWlnaHQoKSkgPyBnZWV6YUJv
bGQgOiBnZWV6YVBsYWluKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBkZjI1ZjU5M2RlYzgz
Mzk4MDk1NGYyNmJiYjBiYmRmYzZlMDU5YzEzLi4wZTRhYzRiYmUxYzQ5NWNjMWRlZGY3ZGUyMzUz
NWQ3YTY3ZjBkODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKQEAgLTE2NTUsNyArMTY1NSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0sIEdDM0RzCiB7
CiAgICAgTE9HKFdlYkdMLCAiT3JpZ2luYWwgU2hhZGVySW5mb0xvZzpcbiVzIiwgbG9nLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAoIndl
YmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVGXSsiLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CisgICAg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAoIndlYmdsX1swMTIzNDU2Nzg5YWJj
ZGVmQUJDREVGXSsiKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcHJvY2Vzc2VkTG9nOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KaW5kZXgg
M2Y0MzE3MjM4ZWRlMzM3NmRlYWI2Y2EwOWNhOGFhYWJmODQxODBkNC4uODEzODBjY2EzNDcxNGRk
NDM3ZWMwNmYxZDE4ZDViMjhjN2YyZWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQogICAgIGlmIChbZG9t
YWluIF93ZWJfbG9va3NMaWtlSVBBZGRyZXNzXSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKIAot
ICAgIGlmICghZG9tYWluLmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgaWYgKCFkb21haW4uaXNB
bGxBU0NJSSgpKQogICAgICAgICByZXR1cm4gZG9tYWluOwogICAgIAogICAgIGNvbnN0IGF1dG8m
IGxvd2VyY2FzZURvbWFpbiA9IGRvbWFpbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KaW5k
ZXggYTgyYzU2YmQxMzYwNWU2MzYzNTgwOWNjNTE0MDIwYmFiMGY1NzU2Yy4uM2YxNGY0Mjk3YmM5
YmY2YTBiNjU1OWFkNTMwMDlhYzBjZGQ2MDZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCkBAIC0yMzgsNyArMjM4LDcgQEAgU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAot
ICAgIGF1dG8gY2hhbGxlbmdlID0gY2hhbGxlbmdlU3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkg
PyBjaGFsbGVuZ2VTdHJpbmcuYXNjaWkoKSA6ICIiOworICAgIGF1dG8gY2hhbGxlbmdlID0gY2hh
bGxlbmdlU3RyaW5nLmlzQWxsQVNDSUkoKSA/IGNoYWxsZW5nZVN0cmluZy5hc2NpaSgpIDogIiI7
CiAKICAgICByZXR1cm4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUs
IGNoYWxsZW5nZSwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCBiODlm
YzZlNDFlZjU2YmI4MmY3YmJmYTkwNjY2ZGY2MzhkODdhZDVmLi5iZjA0OGNlZGFlNzZmYTAwZGRm
ZjljZTk0ZTQ5ZDlhNGEzOTNjOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIFN0cmluZyB3aWxk
Y2FyZFJlZ2V4UGF0dGVyblN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAKIGJvb2wg
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBT
dHJpbmcmIHdpbGRjYXJkU3RyaW5nKQogewotICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5nKSwgVGV4
dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2goc3RyaW5nKSAhPSAtMTsKKyAgICByZXR1cm4gSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3aWxkY2Fy
ZFN0cmluZyksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2goc3RyaW5nKSAh
PSAtMTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA0MGE2
MTc3Mjg4ODgzZTM4OTc1ZGQyYTFjNDgxMzYxNzk3ZWIwNTdmLi5iZDBhYTc5YTgzNjQzOWIwMzJi
MTdjYzE1NzA1NTBjNDQwZWQyZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hBMShTSEExJiBz
aGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuY29udGFp
bnNPbmx5QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxs
QVNDSUkoKSkgewogICAgICAgICBjb25zdCB1aW50OF90IG51bGxCeXRlID0gMDsKICAgICAgICAg
c2hhMS5hZGRCeXRlcyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgc2hhMS5hZGRCeXRlcygmbnVsbEJ5dGUsIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDdiMjIzZTc4ODU5
YjY0Y2UzZDZlOTdmYTdmN2Q0MjhhNTM2N2Y2NmQuLmM5MTMwMTk3NDAwYzkxODY5MjZlYTg2MzYx
ZDg5YzJmODE1N2U1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTMzMCwxMCArMzMwLDggQEAgQ2FjaGVDb250cm9s
RGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKICAgICBpZiAoIXJlc3VsdC5ub0NhY2hlKSB7CiAgICAgICAgIC8vIEhhbmRs
ZSBQcmFnbWE6IG5vLWNhY2hlCiAgICAgICAgIC8vIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgZXF1
aXZhbGVudCB0byBDYWNoZS1jb250cm9sOiBuby1jYWNoZQotICAgICAgICAvLyBEb24ndCBib3Ro
ZXIgdG9rZW5pemluZyB0aGUgdmFsdWUsIGl0IGlzIG5vdCBpbXBvcnRhbnQKLSAgICAgICAgU3Ry
aW5nIHByYWdtYVZhbHVlID0gaGVhZGVycy5nZXQoSFRUUEhlYWRlck5hbWU6OlByYWdtYSk7Ci0K
LSAgICAgICAgcmVzdWx0Lm5vQ2FjaGUgPSBwcmFnbWFWYWx1ZS5jb250YWlucygibm8tY2FjaGUi
LCBmYWxzZSk7CisgICAgICAgIC8vIERvbid0IGJvdGhlciB0b2tlbml6aW5nIHRoZSB2YWx1ZTsg
aGFuZGxpbmcgdGhhdCBleGFjdGx5IHJpZ2h0IGlzIG5vdCBpbXBvcnRhbnQuCisgICAgICAgIHJl
c3VsdC5ub0NhY2hlID0gaGVhZGVycy5nZXQoSFRUUEhlYWRlck5hbWU6OlByYWdtYSkuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSgibm8tY2FjaGUiKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAppbmRleCBmNjM5YjgyMjkxYWMyMzUwYmFmOGM4NmMxYzljYjkzNGYyMjU3ODk5Li4wN2ZiNzE4
YTMxMTU5ZjQ0ZmY2OWQyMjliMGYyNzc4NTQyZGM2NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGJv
b2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGRvdWJsZSYgZGVsYXks
IFN0cmluZyYgdXJsKQogICAgICAgICArK3BvczsKICAgICAgICAgc2tpcFdoaXRlU3BhY2UocmVm
cmVzaCwgcG9zKTsKICAgICAgICAgdW5zaWduZWQgdXJsU3RhcnRQb3MgPSBwb3M7Ci0gICAgICAg
IGlmIChyZWZyZXNoLmZpbmQoInVybCIsIHVybFN0YXJ0UG9zLCBmYWxzZSkgPT0gdXJsU3RhcnRQ
b3MpIHsKKyAgICAgICAgaWYgKHJlZnJlc2guZmluZElnbm9yaW5nQVNDSUlDYXNlKCJ1cmwiLCB1
cmxTdGFydFBvcykgPT0gdXJsU3RhcnRQb3MpIHsKICAgICAgICAgICAgIHVybFN0YXJ0UG9zICs9
IDM7CiAgICAgICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCB1cmxTdGFydFBvcyk7CiAg
ICAgICAgICAgICBpZiAocmVmcmVzaFt1cmxTdGFydFBvc10gPT0gJz0nKSB7CkBAIC0zNDcsNyAr
MzQ3LDcgQEAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHUKICAgICB1bnNpZ25lZCBsZW5ndGggPSBt
ZWRpYVR5cGUubGVuZ3RoKCk7CiAgICAgCiAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgewotICAg
ICAgICBwb3MgPSBtZWRpYVR5cGUuZmluZCgiY2hhcnNldCIsIHBvcywgZmFsc2UpOworICAgICAg
ICBwb3MgPSBtZWRpYVR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJjaGFyc2V0IiwgcG9zKTsK
ICAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCB8fCBwb3MgPT0gMCkgewogICAgICAgICAgICAg
Y2hhcnNldExlbiA9IDA7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MzIsMTAgKzUzMiwxMSBA
QCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5nZU9m
ZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJhbmdlT2Zmc2V0ID0gcmFuZ2VFbmQgPSBy
YW5nZVN1ZmZpeExlbmd0aCA9IC0xOwogCiAgICAgLy8gVGhlICJieXRlcyIgdW5pdCBpZGVudGlm
aWVyIHNob3VsZCBiZSBwcmVzZW50LgotICAgIHN0YXRpYyBjb25zdCBjaGFyIGJ5dGVzU3RhcnRb
XSA9ICJieXRlcz0iOyAKLSAgICBpZiAoIXJhbmdlLnN0YXJ0c1dpdGgoYnl0ZXNTdGFydCwgZmFs
c2UpKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBieXRlc0xlbmd0aCA9IDY7CisgICAgaWYg
KCFzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJhbmdlLCAiYnl0ZXM9IikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgYnl0ZVJhbmdlID0gcmFuZ2Uuc3Vic3Ry
aW5nKHNpemVvZihieXRlc1N0YXJ0KSAtIDEpOworICAgIC8vIEZJWE1FOiBUaGUgcmVzdCBvZiB0
aGlzIHNob3VsZCB1c2UgU3RyaW5nVmlldy4KKyAgICBTdHJpbmcgYnl0ZVJhbmdlID0gcmFuZ2Uu
c3Vic3RyaW5nKGJ5dGVzTGVuZ3RoKTsKIAogICAgIC8vIFRoZSAnLScgY2hhcmFjdGVyIG5lZWRz
IHRvIGJlIHByZXNlbnQuCiAgICAgaW50IGluZGV4ID0gYnl0ZVJhbmdlLmZpbmQoJy0nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmNwcAppbmRleCBiYTgzZjljMTJiN2Y1YzM2YmI5ZjM1
Njc4NjZlMjUzMTFhN2VkM2Q1Li40YWVjZDE5OTgxMzI5MDIwZWM1OTJkZWQxNmE2ODU4NDVmMWNh
ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwCkBAIC00MSw3ICs0MSw3IEBA
IEJpZGlSdW46OkJpZGlSdW4odW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIHN0b3AsIFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIEJpZGlDb250CiAjaWZuZGVmIE5ERUJVRwogICAgIGJpZGlSdW5Db3Vu
dGVyLmluY3JlbWVudCgpOwogI2VuZGlmCi0gICAgQVNTRVJUKCFpczxSZW5kZXJUZXh0PihtX3Jl
bmRlcmVyKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RvcCkgPD0gZG93bmNhc3Q8UmVuZGVy
VGV4dD4obV9yZW5kZXJlcikudGV4dExlbmd0aCgpKTsKKyAgICBBU1NFUlQoIWlzPFJlbmRlclRl
eHQ+KG1fcmVuZGVyZXIpIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdG9wKSA8PSBkb3duY2Fz
dDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpOwogICAgIC8vIFN0b3Jl
ZCBpbiBiYXNlIGNsYXNzIHRvIHNhdmUgc3BhY2UuCiAgICAgbV9oYXNIeXBoZW4gPSBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBhY2I5
ZWRjYzIyZWFhMDk4MTlkZWY2MTQ3M2RkNDgxZDFhNjg5YTg1Li5kZWRlZjhlNWU4YzhkMDhiNzZk
NzQ0NDhkNDllZTc1ZTY5NTE0ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29s
dXRlUERGVVJMKCkgY29uc3QKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBVUkwoKTsKIAotICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlKCkgPT0gImFwcGxpY2F0aW9u
L3BkZiIgfHwgKGVsZW1lbnQuc2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5l
bmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkpCisgICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUoKSA9
PSAiYXBwbGljYXRpb24vcGRmIiB8fCAoZWxlbWVudC5zZXJ2aWNlVHlwZSgpLmlzRW1wdHkoKSAm
JiB1cmwucGF0aCgpLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkpCiAgICAgICAg
IHJldHVybiB1cmw7CiAgICAgcmV0dXJuIFVSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDU4ZWI0ZGQ5NGY4NTE2NzZlZDEyNTUzZGRhMjM4
ZTNhZWE5NTI2M2YuLjY4Mjk2ZDRjNGQ4ZTZlZmNmMzgzOTUwNzYwODIxN2Q2NDhiMTczZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTM3OSw3ICsz
NzksNyBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rp
b24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbgogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4oY2hpbGQtPnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93
bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIFJlbmRlclRleHQmIHJl
bmRlclRleHQgPSB0ZXh0Qm94LnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyVGV4
dC50ZXh0TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKSkgewogICAgICAgICAgICAgICAgIGlmIChuZWVkc1dvcmRTcGFjaW5nICYmIGlzU3BhY2VP
ck5ld2xpbmUocmVuZGVyVGV4dC5jaGFyYWN0ZXJBdCh0ZXh0Qm94LnN0YXJ0KCkpKSkKICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbExlZnQgKz0gdGV4dEJveC5saW5lU3R5bGUoKS5mb250Q2Fz
Y2FkZSgpLndvcmRTcGFjaW5nKCk7CiAgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9
ICFpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQodGV4dEJveC5lbmQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCAwOGViMmFi
OGE0YWE5ZmRhYjcyN2IzNzJlYTU1YThmMjk0NGUzZWNlLi43Zjc5MzRkN2NjNzQ2YWQ2OTliNjVl
ZThmZDIzYzFiZTI0NGE3NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRl
cmF0b3IuaApAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBi
aWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXMoUmVuZGVyRWxlbWVudCYgcm9vdCkKIGlubGlu
ZSB2b2lkIElubGluZUl0ZXJhdG9yOjpmYXN0SW5jcmVtZW50SW5UZXh0Tm9kZSgpCiB7CiAgICAg
QVNTRVJUKG1fcmVuZGVyZXIpOwotICAgIEFTU0VSVChtX3BvcyA8PSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqbV9yZW5kZXJlcikudGV4dExlbmd0aCgpKTsKKyAgICBBU1NFUlQobV9wb3MgPD0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpLnRleHQoKS5sZW5ndGgoKSk7CiAgICAgKytt
X3BvczsKIH0KIApAQCAtMzk2LDcgKzM5Niw3IEBAIGlubGluZSB2b2lkIElubGluZUl0ZXJhdG9y
OjppbmNyZW1lbnQoSW5saW5lQmlkaVJlc29sdmVyKiByZXNvbHZlcikKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpIHsKICAgICAgICAgZmFzdElu
Y3JlbWVudEluVGV4dE5vZGUoKTsKLSAgICAgICAgaWYgKG1fcG9zIDwgZG93bmNhc3Q8UmVuZGVy
VGV4dD4oKm1fcmVuZGVyZXIpLnRleHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKG1fcG9zIDwgZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gYmlkaU5leHQgY2FuIHJldHVybiBudWxscHRyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMmExNzBhOTgz
YjgxZmQ1ZDk1NDNlZTc5ODY4OWQ1ODk0YTAwMGQ3ZC4uOWQxMzQ4MDlkNDE2NGQ1YjM4ODQ5NmJj
ODBiMjRiY2Q1M2RkZjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBsYWNlRWxs
aXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvCiAKIGJv
b2wgSW5saW5lVGV4dEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAogewotICAgIHJldHVybiByZW5k
ZXJlcigpLnN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiAoKnJlbmRl
cmVyKCkudGV4dCgpKVtzdGFydCgpXSA9PSAnXG4nOworICAgIHJldHVybiByZW5kZXJlcigpLnN0
eWxlKCkucHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiByZW5kZXJlcigpLnRleHQo
KVtzdGFydCgpXSA9PSAnXG4nOwogfQogCiBib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxpbmVUb3AgKi8sIExheW91dFVu
aXQgLypsaW5lQm90dG9tKi8sCkBAIC02MTcsNyArNjE3LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQoKSBjb25zdAogICAg
IGF1dG8gc3RhcnQgPSByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0aW9u
KCk7CiAgICAgYXV0byBlbmQgPSByZW5kZXJlcigpLnZpZXcoKS5zZWxlY3Rpb24oKS5lbmRQb3Np
dGlvbigpOwogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
blN0YXJ0KQotICAgICAgICBlbmQgPSByZW5kZXJlcigpLnRleHRMZW5ndGgoKTsKKyAgICAgICAg
ZW5kID0gcmVuZGVyZXIoKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0aW9u
U3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCiAgICAgICAgIHN0YXJ0ID0gMDsK
ICAgICByZXR1cm4geyBjbGFtcGVkT2Zmc2V0KHN0YXJ0KSwgY2xhbXBlZE9mZnNldChlbmQpIH07
CkBAIC0xMDgyLDE1ICsxMDgyLDE1IEBAIFN0cmluZyBJbmxpbmVUZXh0Qm94Ojp0ZXh0KGJvb2wg
aWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKIHsKICAgICBpZiAo
YXV0byogY29tYmluZWRUZXh0ID0gdGhpcy0+Y29tYmluZWRUZXh0KCkpIHsKICAgICAgICAgaWYg
KGlnbm9yZUNvbWJpbmVkVGV4dCkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlcigpLnRleHQo
KS0+c3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJl
cigpLnRleHQoKS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4pOwogICAgICAgICByZXR1cm4gY29t
YmluZWRUZXh0LT5jb21iaW5lZFN0cmluZ0ZvclJlbmRlcmluZygpOwogICAgIH0KICAgICBpZiAo
aGFzSHlwaGVuKCkpIHsKICAgICAgICAgaWYgKGlnbm9yZUh5cGhlbikKLSAgICAgICAgICAgIHJl
dHVybiByZW5kZXJlcigpLnRleHQoKS0+c3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKKyAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcigpLnRleHQoKS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4p
OwogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgp
KS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW4pLCBsaW5lU3R5bGUoKS5oeXBoZW5TdHJpbmcoKSk7
CiAgICAgfQotICAgIHJldHVybiByZW5kZXJlcigpLnRleHQoKS0+c3Vic3RyaW5nKG1fc3RhcnQs
IG1fbGVuKTsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQs
IG1fbGVuKTsKIH0KIAogaW5saW5lIGNvbnN0IFJlbmRlckNvbWJpbmVUZXh0KiBJbmxpbmVUZXh0
Qm94Ojpjb21iaW5lZFRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggYjk1NTg2OTE5ZTczMzIyZTE4ODgwYzMwMjgzNzc3OGY4MzgxZjRlOS4u
ZjQ5MmYxODAxYmNlNjExNzUxNThjMGY1ZTkzZmU5NTcwM2NkMjlmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zNTQ4LDcgKzM1NDgsNyBAQCBUZXh0UnVu
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQsIGNv
bnN0IFJlbmRlclN0eWxlJgogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihj
b25zdCBSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7
CiAgICAgdW5zaWduZWQgc3RvcCA9IG9mZnNldCArIGxlbmd0aDsKLSAgICBBU1NFUlQoc3RvcCA8
PSB0ZXh0LnRleHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKHN0b3AgPD0gdGV4dC50ZXh0KCkubGVu
Z3RoKCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKHRleHQuc3RyaW5nVmlldyhvZmZz
ZXQsIHN0b3ApLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA3OTc1N2U3NGM2OTdmODYyZmEwZjg2NDA4
Yjc5MmIyYTZjY2JkZWI2Li5iMjZkNjcyYmEwOGM2OWJlZjkyMmM3MmFjOGVhZGRiZWMwYjVkZjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIaXRUZXN0TG9jYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCkBAIC0z
NjcxLDEzICszNjcyLDE0IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVC
bG9ja0Zsb3dEYXRhKCkKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCisKIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1Zpc2libGVSZW5kZXJUZXh0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIpCiB7CiAgICAgaWYgKCFpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcik7Ci0gICAgcmV0dXJuICFyZW5kZXJUZXh0LmxpbmVzQm91bmRpbmdCb3goKS5p
c0VtcHR5KCkgJiYgIXJlbmRlclRleHQudGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7
CisgICAgcmV0dXJuICFyZW5kZXJUZXh0LmxpbmVzQm91bmRpbmdCb3goKS5pc0VtcHR5KCkgJiYg
IXJlbmRlclRleHQudGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCByZXNpemVUZXh0UGVybWl0dGVkKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIpCkBAIC0zNzg3LDYgKzM3ODksNyBAQCB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0Q29tcHV0ZWRGb250U2l6ZXMoZmxvYXQgc2l6ZSwgZmxvYXQgdmlzaWJsZVdp
ZHRoKQogICAgICAgICBkZXNjZW5kYW50ID0gUmVuZGVyT2JqZWN0VHJhdmVyc2FsOjpuZXh0U2tp
cHBpbmdDaGlsZHJlbih0ZXh0LCB0aGlzKTsKICAgICB9CiB9CisKICNlbmRpZiAvLyBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0RXhjbHVkZWRD
aGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCkBAIC00MjY0LDE4ICs0MjY3LDE1IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHN0cmluZy4g
SWYgdGhvc2UgYXJlIGdvaW5nIHRvIGJlIHN0cmlwcGVkIG91dCwKICAgICAgICAgICAgICAgICAv
LyB0aGVuIHRoZXkgc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQgaW4gdGhlIGJyZWFrYWJsZSBjaGFy
CiAgICAgICAgICAgICAgICAgLy8gY2hlY2suCi0gICAgICAgICAgICAgICAgYm9vbCBoYXNCcmVh
a2FibGVDaGFyLCBoYXNCcmVhazsKLSAgICAgICAgICAgICAgICBmbG9hdCBiZWdpbk1pbiwgZW5k
TWluOwotICAgICAgICAgICAgICAgIGJvb2wgYmVnaW5XUywgZW5kV1M7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgYmVnaW5NYXgsIGVuZE1heDsKICAgICAgICAgICAgICAgICBib29sIHN0cmlwcGlu
Z0JlZ2luV1MgPSBzdHJpcEZyb250U3BhY2VzOwotICAgICAgICAgICAgICAgIHJlbmRlclRleHQu
dHJpbW1lZFByZWZXaWR0aHMoaW5saW5lTWF4LCBiZWdpbk1pbiwgYmVnaW5XUywgZW5kTWluLCBl
bmRXUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNCcmVha2FibGVD
aGFyLCBoYXNCcmVhaywgYmVnaW5NYXgsIGVuZE1heCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZE1pbiwgY2hpbGRNYXgsIHN0cmlwRnJvbnRTcGFjZXMpOworICAg
ICAgICAgICAgICAgIGF1dG8gd2lkdGhzID0gcmVuZGVyVGV4dC50cmltbWVkUHJlZmVycmVkV2lk
dGhzKGlubGluZU1heCwgc3RyaXBGcm9udFNwYWNlcyk7CisKKyAgICAgICAgICAgICAgICBjaGls
ZE1pbiA9IHdpZHRocy5taW47CisgICAgICAgICAgICAgICAgY2hpbGRNYXggPSB3aWR0aHMubWF4
OwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyB0ZXh0IG9iamVjdCB3aWxsIG5vdCBiZSByZW5k
ZXJlZCwgYnV0IGl0IG1heSBzdGlsbCBwcm92aWRlIGEgYnJlYWtpbmcgb3Bwb3J0dW5pdHkuCi0g
ICAgICAgICAgICAgICAgaWYgKCFoYXNCcmVhayAmJiAhY2hpbGRNYXgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG9XcmFwICYmIChiZWdpbldTIHx8IGVuZFdTKSkgeworICAgICAgICAg
ICAgICAgIGlmICghd2lkdGhzLmhhc0JyZWFrICYmICFjaGlsZE1heCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0b1dyYXAgJiYgKHdpZHRocy5iZWdpbldTIHx8IHdpZHRocy5lbmRXUykp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdp
ZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlubGluZU1pbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQyOTQsMTQgKzQyOTQs
MTQgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKICAgICAgICAgICAgICAgICBpZiAoIWFkZGVk
VGV4dEluZGVudCB8fCBoYXNSZW1haW5pbmdOZWdhdGl2ZVRleHRJbmRlbnQpIHsKICAgICAgICAg
ICAgICAgICAgICAgdGkgPSB0ZXh0SW5kZW50LmNlaWxUb0Zsb2F0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkTWluICs9IHRpOwotICAgICAgICAgICAgICAgICAgICBiZWdpbk1pbiArPSB0
aTsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWluICs9IHRpOwogCiAgICAgICAg
ICAgICAgICAgICAgIC8vIEl0IHRoZSB0ZXh0IGluZGVudCBuZWdhdGl2ZSBhbmQgbGFyZ2VyIHRo
YW4gdGhlIGNoaWxkIG1pbmltdW0sIHdlIHJlLXVzZSB0aGUgcmVtYWluZGVyCiAgICAgICAgICAg
ICAgICAgICAgIC8vIGluIGZ1dHVyZSBtaW5pbXVtIGNhbGN1bGF0aW9ucywgYnV0IHVzaW5nIHRo
ZSBuZWdhdGl2ZSB2YWx1ZSBhZ2FpbiBvbiB0aGUgbWF4aW11bQogICAgICAgICAgICAgICAgICAg
ICAvLyB3aWxsIGxlYWQgdG8gdW5kZXItY291bnRpbmcgdGhlIG1heCBwcmVmIHdpZHRoLgogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRNYXggKz0gdGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbk1h
eCArPSB0aTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1heCArPSB0aTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkVGV4dEluZGVudCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIApAQCAtNDMxNiw0OCArNDMxNiw0OCBAQCB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gc3RyaXBw
aW5nQmVnaW5XUyA/IHJlbmRlclRleHQuZmlyc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNl
cygpIDogMDsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgaGFuZ1N0YXJ0V2lkdGggPSByZW5k
ZXJUZXh0LmhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdpZHRoKHN0YXJ0SW5kZXgpOwogICAgICAg
ICAgICAgICAgICAgICBjaGlsZE1pbiAtPSBoYW5nU3RhcnRXaWR0aDsKLSAgICAgICAgICAgICAg
ICAgICAgYmVnaW5NaW4gLT0gaGFuZ1N0YXJ0V2lkdGg7CisgICAgICAgICAgICAgICAgICAgIHdp
ZHRocy5iZWdpbk1pbiAtPSBoYW5nU3RhcnRXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGRNYXggLT0gaGFuZ1N0YXJ0V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luTWF4IC09
IGhhbmdTdGFydFdpZHRoOworICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NYXggLT0g
aGFuZ1N0YXJ0V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGFkZGVkU3RhcnRQdW5jdHVhdGlv
bkhhbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGJyZWFrYWJsZSBjaGFyYWN0ZXJzIGF0IGFsbCwK
ICAgICAgICAgICAgICAgICAvLyB0aGVuIHRoaXMgaXMgdGhlIGVhc3kgY2FzZS4gV2UgYWRkIG91
cnNlbHZlcyB0byB0aGUgY3VycmVudAogICAgICAgICAgICAgICAgIC8vIG1pbiBhbmQgbWF4IGFu
ZCBjb250aW51ZS4KLSAgICAgICAgICAgICAgICBpZiAoIWhhc0JyZWFrYWJsZUNoYXIpCisgICAg
ICAgICAgICAgICAgaWYgKCF3aWR0aHMuaGFzQnJlYWthYmxlQ2hhcikKICAgICAgICAgICAgICAg
ICAgICAgaW5saW5lTWluICs9IGNoaWxkTWluOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnJlYWthYmxlIGNoYXJhY3Rlci4gTm93IHdl
IG5lZWQgdG8ga25vdyBpZgogICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzdGFydCBhbmQgZW5k
IHdpdGggd2hpdGVzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGJlZ2luV1MpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHdpZHRocy5iZWdpbldTKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBFbmQgdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAg
IG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5l
TWluKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlubGluZU1pbiArPSBiZWdpbk1pbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubGlu
ZU1pbiArPSB3aWR0aHMuYmVnaW5NaW47CiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dp
Y2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbiAtPSB0aTsKICAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IGNoaWxkTWluOwogCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChlbmRXUykgeworICAgICAgICAgICAgICAgICAgICBpZiAod2lk
dGhzLmVuZFdTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBlbmQgaW4gd2hpdGVz
cGFjZSwgd2hpY2ggbWVhbnMgd2UgY2FuIGVuZCBvdXIgY3VycmVudCBsaW5lLgogICAgICAgICAg
ICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNh
bFdpZHRoLCBpbmxpbmVNaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrTGluZUFmdGVyVGV4dCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBpbmxp
bmVNaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0gZW5kTWluOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5saW5lTWluID0gd2lkdGhzLmVuZE1pbjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJyZWFrTGluZUFmdGVyVGV4dCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAo
aGFzQnJlYWspIHsKLSAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ICs9IGJlZ2luTWF4Owor
ICAgICAgICAgICAgICAgIGlmICh3aWR0aHMuaGFzQnJlYWspIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW5saW5lTWF4ICs9IHdpZHRocy5iZWdpbk1heDsKICAgICAgICAgICAgICAgICAgICAgbWF4
TG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBpbmxpbmVNYXgp
OwogICAgICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aCht
YXhMb2dpY2FsV2lkdGgsIGNoaWxkTWF4KTsKLSAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4
ID0gZW5kTWF4OworICAgICAgICAgICAgICAgICAgICBpbmxpbmVNYXggPSB3aWR0aHMuZW5kTWF4
OwogICAgICAgICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKQEAgLTQzODgsOCArNDM4OCw4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpj
b21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
CiAgICAgaWYgKHN0eWxlVG9Vc2UuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCiAgICAgICAgIHN0cmlw
VHJhaWxpbmdTcGFjZShpbmxpbmVNYXgsIGlubGluZU1pbiwgdHJhaWxpbmdTcGFjZUNoaWxkKTsK
ICAgICAKLSAgICBpZiAoY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgJiYgbGFzdFRleHQgJiYgbGFz
dFRleHQtPnRleHRMZW5ndGgoKSA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgZW5kSW5kZXggPSB0
cmFpbGluZ1NwYWNlQ2hpbGQgPT0gbGFzdFRleHQgPyBsYXN0VGV4dC0+bGFzdENoYXJhY3Rlcklu
ZGV4U3RyaXBwaW5nU3BhY2VzKCkgOiBsYXN0VGV4dC0+dGV4dExlbmd0aCgpIC0gMTsKKyAgICBp
ZiAoY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgJiYgbGFzdFRleHQgJiYgbGFzdFRleHQtPnRleHQo
KS5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgdW5zaWduZWQgZW5kSW5kZXggPSB0cmFpbGluZ1Nw
YWNlQ2hpbGQgPT0gbGFzdFRleHQgPyBsYXN0VGV4dC0+bGFzdENoYXJhY3RlckluZGV4U3RyaXBw
aW5nU3BhY2VzKCkgOiBsYXN0VGV4dC0+dGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICAgICAgZmxv
YXQgZW5kSGFuZ1dpZHRoID0gbGFzdFRleHQtPmhhbmdhYmxlUHVuY3R1YXRpb25FbmRXaWR0aChl
bmRJbmRleCk7CiAgICAgICAgIGlubGluZU1pbiAtPSBlbmRIYW5nV2lkdGg7CiAgICAgICAgIGlu
bGluZU1heCAtPSBlbmRIYW5nV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGI3MzZkNGMxZGIyN2NmZGUwZjk1YzIx
ZGUwMjlkNjhlZDFlNmViMDYuLjExMDBiNmZlMmZmY2QxZTJjYTgxMzQwMzk1OWQ0MTQxMTc3MzMw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCkBAIC0yNDQsMTUgKzI0NCwxMyBAQCBJbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9j
a0Zsb3c6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotc3RhdGljIGlubGluZSBib29sIGVuZHNXaXRoQVNDSUlTcGFjZXMoY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgcG9zLCB1bnNpZ25lZCBlbmQpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIGJvb2wgZW5kc1dpdGhIVE1MU3Bh
Y2VzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBlbmQpCiB7Ci0gICAgd2hpbGUgKGlzQVNDSUlTcGFjZShjaGFyYWN0ZXJzW3Bvc10p
KSB7Ci0gICAgICAgIHBvcysrOwotICAgICAgICBpZiAocG9zID49IGVuZCkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IHBvc2l0aW9uOyBpIDwgZW5kOyAr
K2kpIHsKKyAgICAgICAgaWYgKCFpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCByZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIoY29uc3QgQmlk
aVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zKQpAQCAtMjYwLDE4ICsyNTgsMTQgQEAgc3RhdGlj
IGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0IEJpZGlSdW5MaXN0PEJpZGlSdW4+
JiBiaWRpUnVucykKICAgICBCaWRpUnVuKiBydW4gPSBiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVu
KCk7CiAgICAgaWYgKCFydW4pCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHVuc2lnbmVkIHBv
cyA9IHJ1bi0+c3RvcCgpOwotICAgIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIgPSBydW4t
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCisgICAgaWYg
KCFpczxSZW5kZXJUZXh0PihydW4tPnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KHJlbmRlcmVyKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRleHRMZW5ndGgo
KTsKLSAgICBpZiAocG9zID49IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAocmVuZGVyVGV4dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVuZHNXaXRoQVNDSUlTcGFj
ZXMocmVuZGVyVGV4dC5jaGFyYWN0ZXJzOCgpLCBwb3MsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIGVu
ZHNXaXRoQVNDSUlTcGFjZXMocmVuZGVyVGV4dC5jaGFyYWN0ZXJzMTYoKSwgcG9zLCBsZW5ndGgp
OworICAgIGF1dG8mIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihydW4tPnJlbmRlcmVyKCkp
LnRleHQoKTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IHJ1bi0+c3RvcCgpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CisgICAgaWYgKHRleHQuaXM4Qml0KCkpCisgICAg
ICAgIHJldHVybiBlbmRzV2l0aEhUTUxTcGFjZXModGV4dC5jaGFyYWN0ZXJzOCgpLCBwb3NpdGlv
biwgbGVuZ3RoKTsKKyAgICByZXR1cm4gZW5kc1dpdGhIVE1MU3BhY2VzKHRleHQuY2hhcmFjdGVy
czE2KCksIHBvc2l0aW9uLCBsZW5ndGgpOwogfQogCiBSb290SW5saW5lQm94KiBSZW5kZXJCbG9j
a0Zsb3c6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25z
dCBMaW5lSW5mbyYgbGluZUluZm8pCkBAIC04ODksNyArODgzLDcgQEAgQmlkaVJ1biogUmVuZGVy
QmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290
SW5saW5lQm8KICAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT0gSlVTVElGWSAmJiBydW4gIT0g
dHJhaWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgICAgICBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0
dW5pdGllcygqdGhpcywgdGV4dEJveCwgcHJldmlvdXNSdW4sIHJ1bi0+bmV4dCgpLCByZW5kZXJU
ZXh0LnN0cmluZ1ZpZXcocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCksIHJ1bi0+Ym94KCktPmRp
cmVjdGlvbigpKTsKIAotICAgICAgICAgICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IHJlbmRlclRl
eHQudGV4dExlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAodW5zaWduZWQgbGVuZ3RoID0gcmVu
ZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJ1bi0+bV9z
dGFydCAmJiBuZWVkc1dvcmRTcGFjaW5nICYmIGlzU3BhY2VPck5ld2xpbmUocmVuZGVyVGV4dC5j
aGFyYWN0ZXJBdChydW4tPm1fc3RhcnQpKSkKICAgICAgICAgICAgICAgICAgICAgdG90YWxMb2dp
Y2FsV2lkdGggKz0gbGluZVN0eWxlKCpyZW5kZXJUZXh0LnBhcmVudCgpLCBsaW5lSW5mbykuZm9u
dENhc2NhZGUoKS53b3JkU3BhY2luZygpOwogICAgICAgICAgICAgICAgIC8vIHJ1bi0+bV9zdGFy
dCA9PSBydW4tPm1fc3RvcCBzaG91bGQgb25seSBiZSB0cnVlIGlmZiB0aGUgcnVuIGlzIGEgcmVw
bGFjZWQgcnVuIGZvciBiaWRpOiBpc29sYXRlLgpAQCAtMTA1NiwxMCArMTA1MCwxMCBAQCBpbmxp
bmUgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVu
TGlzdDxCaWRpUnVuPiYgYmlkaQogCiAgICAgY29uc3QgUmVuZGVyVGV4dCYgbGFzdFRleHQgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihsYXN0T2JqZWN0KTsKICAgICB1bnNpZ25lZCBmaXJzdFNwYWNl
OwotICAgIGlmIChsYXN0VGV4dC5pczhCaXQoKSkKLSAgICAgICAgZmlyc3RTcGFjZSA9IGZpbmRG
aXJzdFRyYWlsaW5nU3BhY2UobGFzdFRleHQsIGxhc3RUZXh0LmNoYXJhY3RlcnM4KCksIHRyYWls
aW5nU3BhY2VSdW4tPnN0YXJ0KCksIHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSk7CisgICAgaWYg
KGxhc3RUZXh0LnRleHQoKS5pczhCaXQoKSkKKyAgICAgICAgZmlyc3RTcGFjZSA9IGZpbmRGaXJz
dFRyYWlsaW5nU3BhY2UobGFzdFRleHQsIGxhc3RUZXh0LnRleHQoKS5jaGFyYWN0ZXJzOCgpLCB0
cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpOwogICAg
IGVsc2UKLSAgICAgICAgZmlyc3RTcGFjZSA9IGZpbmRGaXJzdFRyYWlsaW5nU3BhY2UobGFzdFRl
eHQsIGxhc3RUZXh0LmNoYXJhY3RlcnMxNigpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgpLCB0
cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpOworICAgICAgICBmaXJzdFNwYWNlID0gZmluZEZpcnN0
VHJhaWxpbmdTcGFjZShsYXN0VGV4dCwgbGFzdFRleHQudGV4dCgpLmNoYXJhY3RlcnMxNigpLCB0
cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpOwogCiAg
ICAgaWYgKGZpcnN0U3BhY2UgPT0gdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE4NTQsNyArMTg0OCw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRl
ckJsb2NrRmxvdzo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbihMaW5lTGF5b3V0U3RhdGUmIGxheW91
dFN0CiAgICAgICAgICAgICAgICAgaWYgKCFkaXJ0aWVkQnlGbG9hdCAmJiAoIXByZXZSb290Qm94
LT5lbmRzV2l0aEJyZWFrKCkKICAgICAgICAgICAgICAgICAgICAgfHwgIXByZXZSb290Qm94LT5s
aW5lQnJlYWtPYmooKQogICAgICAgICAgICAgICAgICAgICB8fCAoaXM8UmVuZGVyVGV4dD4oKnBy
ZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgcHJldlJv
b3RCb3gtPmxpbmVCcmVha1BvcygpID49IGRvd25jYXN0PFJlbmRlclRleHQ+KCpwcmV2Um9vdEJv
eC0+bGluZUJyZWFrT2JqKCkpLnRleHRMZW5ndGgoKSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICYmIHByZXZSb290Qm94LT5saW5lQnJlYWtQb3MoKSA+PSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
cHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpKS50ZXh0KCkubGVuZ3RoKCkpKSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgbGluZSBkaWRuJ3QgYnJlYWsgY2xlYW5seSBv
ciBicm9rZSBhdCBhIG5ld2xpbmUKICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgYmVl
biBkZWxldGVkLCBzbyB0cmVhdCBpdCBhcyBkaXJ0eSB0b28uCiAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRMaW5lID0gcHJldlJvb3RCb3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvbWJpbmVUZXh0LmNwcAppbmRleCA4Mzg2ZWFmMjg2MzViMzkzZjQzMDI0ZDYxZWM5
M2FmNjc0NGRlMjRlLi45Y2Y0ZmI4ZWRjMmEyNTg3MzdkNDMwMDYxN2Y4ZTliMzYyMTg2ZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dElmTmVl
ZGVkKCkKICAgICAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZsb3c7CiAgICAgZ2x5cGhP
dmVyZmxvdy5jb21wdXRlQm91bmRzID0gdHJ1ZTsKLSAgICBmbG9hdCBjb21iaW5lZFRleHRXaWR0
aCA9IHdpZHRoKDAsIHRleHRMZW5ndGgoKSwgaG9yaXpvbnRhbEZvbnQsIDAsIG51bGxwdHIsICZn
bHlwaE92ZXJmbG93KTsKKyAgICBmbG9hdCBjb21iaW5lZFRleHRXaWR0aCA9IHdpZHRoKDAsIHRl
eHQoKS5sZW5ndGgoKSwgaG9yaXpvbnRhbEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93
KTsKIAogICAgIGZsb2F0IGJlc3RGaXREZWx0YSA9IGNvbWJpbmVkVGV4dFdpZHRoIC0gZW1XaWR0
aDsKICAgICBhdXRvIGJlc3RGaXREZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0SWZOZWVkZWQoKQog
ICAgICAgICAgICAgY29tcHJlc3NlZEZvbnQudXBkYXRlKGZvbnRTZWxlY3Rvcik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGdseXBoT3ZlcmZsb3cudG9w
ID0gZ2x5cGhPdmVyZmxvdy5yaWdodCA9IGdseXBoT3ZlcmZsb3cuYm90dG9tID0gMDsKLSAgICAg
ICAgICAgIGZsb2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dExlbmd0aCgp
LCBjb21wcmVzc2VkRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOworICAgICAgICAg
ICAgZmxvYXQgcnVuV2lkdGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0KCkubGVuZ3RoKCks
IGNvbXByZXNzZWRGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CiAgICAgICAgICAg
ICBpZiAocnVuV2lkdGggPD0gZW1XaWR0aCkgewogICAgICAgICAgICAgICAgIGNvbWJpbmVkVGV4
dFdpZHRoID0gcnVuV2lkdGg7CiAgICAgICAgICAgICAgICAgbV9pc0NvbWJpbmVkID0gdHJ1ZTsK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dElm
TmVlZGVkKCkKICAgICAgICAgICAgIGNvbXByZXNzZWRGb250LnVwZGF0ZShmb250U2VsZWN0b3Ip
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBnbHlwaE92
ZXJmbG93LnRvcCA9IGdseXBoT3ZlcmZsb3cucmlnaHQgPSBnbHlwaE92ZXJmbG93LmJvdHRvbSA9
IDA7Ci0gICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRl
eHRMZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsK
KyAgICAgICAgICAgIGZsb2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dCgp
Lmxlbmd0aCgpLCBjb21wcmVzc2VkRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOwog
ICAgICAgICAgICAgaWYgKHJ1bldpZHRoIDw9IGVtV2lkdGgpIHsKICAgICAgICAgICAgICAgICBj
b21iaW5lZFRleHRXaWR0aCA9IHJ1bldpZHRoOwogICAgICAgICAgICAgICAgIG1faXNDb21iaW5l
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1
OThmYWU5YzMzNDU1MGU1YmE5ODQzNzg1MjlhZDQ1ZDZmOGIwODc5Li4yNDA3N2YyMDRhYmRkMDhl
Nzc2YmJiMGVlOWUwMWQ3YTcyYjc3MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJIaXRUZXN0
aW5nVHJhbnNmb3JtU3RhdGUuaCIKQEAgLTY0NDcsNyArNjQ0OCw3IEBAIHN0YXRpYyB2b2lkIGRl
dGVybWluZU5vbkxheWVyRGVzY2VuZGFudHNQYWludGVkQ29udGVudChjb25zdCBSZW5kZXJFbGVt
ZW50JiByZW5kCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS51c2VyU2VsZWN0KCkg
IT0gU0VMRUNUX05PTkUpCiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIYXNQYWludGVkQ29u
dGVudCgpOwogCi0gICAgICAgICAgICBpZiAoIXJlbmRlclRleHQudGV4dCgpLT5jb250YWluc09u
bHlXaGl0ZXNwYWNlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyVGV4dC50ZXh0KCkuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkgewogICAgICAgICAgICAgICAgIHJl
cXVlc3Quc2V0SGFzUGFpbnRlZENvbnRlbnQoKTsKIAogICAgICAgICAgICAgICAgIGlmIChyZXF1
ZXN0Lm5lZWRUb0RldGVybWluZVN1YnBpeGVsQW50aWFsaWFzZWRUZXh0U3RhdGUoKSAmJiBzdHls
ZUhhc1Ntb290aGluZ1RleHRNb2RlKGNoaWxkLnN0eWxlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDAzNjBjZDdlNmNmZTY1ZTg1OTVlYTFlYjEx
YjgyZmMwYjI3OWE5YWEuLjRjNGQ5YWJjYjUzYTMyNjZhY2FiOTYwMzI5MzMzYTYxNzk2ZWE4OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTExNiwz
OCArMTE2LDQ2IEBAIEhUTUxTZWxlY3RFbGVtZW50JiBSZW5kZXJMaXN0Qm94OjpzZWxlY3RFbGVt
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KG5vZGVG
b3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKK3N0YXRpYyBGb250Q2FzY2FkZSBib2xkZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKK3sKKyAgICBhdXRvIGRlc2Ny
aXB0aW9uID0gZm9udC5mb250RGVzY3JpcHRpb24oKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRXZWln
aHQoZGVzY3JpcHRpb24uYm9sZGVyV2VpZ2h0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gRm9udENh
c2NhZGUgeyBkZXNjcmlwdGlvbiwgZm9udC5sZXR0ZXJTcGFjaW5nKCksIGZvbnQud29yZFNwYWNp
bmcoKSB9OworICAgIHJlc3VsdC51cGRhdGUoJmRvY3VtZW50LmZvbnRTZWxlY3RvcigpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKIHsKICAgICBpZiAobV9vcHRpb25zQ2hhbmdlZCkgewotICAgICAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygp
OwotICAgICAgICBpbnQgc2l6ZSA9IG51bUl0ZW1zKCk7Ci0gICAgICAgIAogICAgICAgICBmbG9h
dCB3aWR0aCA9IDA7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKKyAgICAgICAg
YXV0byYgbm9ybWFsRm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxGb250Q2FzY2FkZT4gYm9sZEZvbnQ7CisgICAgICAgIGZvciAoYXV0byogZWxlbWVu
dCA6IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRl
eHQ7Ci0gICAgICAgICAgICBGb250Q2FzY2FkZSBpdGVtRm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKTsKKyAgICAgICAgICAgIFdURjo6RnVuY3Rpb248Y29uc3QgRm9udENhc2NhZGUmKCk+IHNl
bGVjdEZvbnQgPSBbJm5vcm1hbEZvbnRdICgpIC0+IGNvbnN0IEZvbnRDYXNjYWRlJiB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vcm1hbEZvbnQ7CisgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkpCiAgICAgICAgICAgICAgICAg
dGV4dCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVk
VG9SZXNwZWN0R3JvdXBMYWJlbCgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwotICAgICAg
ICAgICAgICAgIGF1dG8gZGVzY3JpcHRpb24gPSBpdGVtRm9udC5mb250RGVzY3JpcHRpb24oKTsK
LSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoZGVzY3JpcHRpb24uYm9sZGVy
V2VpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGl0ZW1Gb250ID0gRm9udENhc2NhZGUoZGVzY3Jp
cHRpb24sIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZvbnQud29yZFNwYWNpbmcoKSk7
Ci0gICAgICAgICAgICAgICAgaXRlbUZvbnQudXBkYXRlKCZkb2N1bWVudCgpLmZvbnRTZWxlY3Rv
cigpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCB0ZXh0LCAnICcp
OwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBDYW4n
dCB0ZXh0IGRpcmVjdGlvbiBhZmZlY3QgdGhlIHdpZHRoPwotICAgICAgICAgICAgICAgIFRleHRS
dW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSwgQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbik7Ci0gICAgICAgICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQu
d2lkdGgodGV4dFJ1bik7Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwg
dGV4dFdpZHRoKTsKKyAgICAgICAgICAgICAgICBzZWxlY3RGb250ID0gW3RoaXMsICZub3JtYWxG
b250LCAmYm9sZEZvbnRdICgpIC0+IGNvbnN0IEZvbnRDYXNjYWRlJiB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghYm9sZEZvbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBib2xkRm9udCA9
IGJvbGRlcihkb2N1bWVudCgpLCBub3JtYWxGb250KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJvbGRGb250LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwg
JyAnKTsKKyAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4odGV4dCwg
c3R5bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAgICAgICB3aWR0aCA9IHN0
ZDo6bWF4KHdpZHRoLCBzZWxlY3RGb250KCkud2lkdGgodGV4dFJ1bikpOwogICAgICAgICB9Ci0g
ICAgICAgIG1fb3B0aW9uc1dpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihjZWlsZih3aWR0aCkpOwor
ICAgICAgICAvLyBGSVhNRTogSXMgY2VpbGluZyByaWdodCBoZXJlLCBvciBzaG91bGQgd2UgYmUg
ZG9pbmcgc29tZSBraW5kIG9mIHJvdW5kaW5nIGluc3RlYWQ/CisgICAgICAgIG1fb3B0aW9uc1dp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmNlaWwod2lkdGgpKTsKICAgICAgICAgbV9vcHRp
b25zQ2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKKwogICAgICAgICBzZXRIYXNWZXJ0aWNhbFNj
cm9sbGJhcih0cnVlKTsKIAogICAgICAgICBjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFk
ZGluZ1RvcEJvdHRvbUFyZWFzKCk7CkBAIC00MTIsNyArNDIwLDcgQEAgdm9pZCBSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYKICAgICAgICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4o
Kmxpc3RJdGVtRWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwogICAg
IGVsc2UgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpKQogICAg
ICAgICBpdGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCpsaXN0SXRlbUVs
ZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7Ci0gICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCks
IGl0ZW1UZXh0LCAnICcpOworICAgIGl0ZW1UZXh0ID0gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxl
KCksIGl0ZW1UZXh0LCAnICcpOwogCiAgICAgQ29sb3IgdGV4dENvbG9yID0gaXRlbVN0eWxlLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBpZiAoaXNPcHRpb25F
bGVtZW50ICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5z
ZWxlY3RlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAppbmRleCA4YWVhNzMzZWJmYTY3YTI2ZGQwYWZjOTdkYTAzZDlmMDQ3YWU3MTBkLi4yMzRhN2M4
OTI5YmYwMWUwNmQ5Y2Q0YjMzZDZjMWI1ZTJmNTNlM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBv
cHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJv
cGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBt
YXRjaC4KICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oTEVGVCk7Ci0gICAgICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRl
eHQoKS0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRM
IDogTFRSOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQg
JiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJ
R0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOwogICAgICAgICBpbm5lclN0eWxlLnNldERpcmVjdGlv
bihkaXJlY3Rpb24pOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50
KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5n
RGlyZWN0aW9uKCkpIHsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1
cGRhdGVPcHRpb25zV2lkdGgoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3Ry
aW5nIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRl
bnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKLSAgICAgICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0
eWxlKCksIHRleHQsICcgJyk7CisgICAgICAgIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5
bGUoKSwgdGV4dCwgJyAnKTsKICAgICAgICAgaWYgKHRoZW1lKCkucG9wdXBPcHRpb25TdXBwb3J0
c1RleHRJbmRlbnQoKSkgewogICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBvcHRpb24ncyB0ZXh0
IGluZGVudC4gIFdlIGNhbid0IGNhbGN1bGF0ZSBwZXJjZW50YWdlIHZhbHVlcyBmb3Igbm93Lgog
ICAgICAgICAgICAgZmxvYXQgb3B0aW9uV2lkdGggPSAwOwpAQCAtNDQ2LDE5ICs0NDYsMTggQEAg
dm9pZCBSZW5kZXJNZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRl
eCkKIAogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgp
IGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNl
bGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKKyAgICBhdXRvJiBsaXN0SXRlbXMgPSBzZWxlY3RF
bGVtZW50KCkubGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmcgaXRlbVN0cmluZzsK
LSAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07Ci0gICAgaWYgKGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgaXRlbVN0cmluZyA9IGRv
d25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwot
ICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIGl0
ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRl
bnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKLQotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHls
ZSgpLCBpdGVtU3RyaW5nLCAnICcpOwotICAgIHJldHVybiBpdGVtU3RyaW5nOworICAgIGF1dG8m
IGVsZW1lbnQgPSAqbGlzdEl0ZW1zW2xpc3RJbmRleF07CisgICAgaWYgKGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9w
dEdyb3VwRWxlbWVudD4oZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKKyAgICBlbHNlIGlmIChp
czxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3du
Y2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3Jv
dXBMYWJlbCgpOworCisgICAgcmV0dXJuIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVt
U3RyaW5nLCAnICcpOwogfQogCiBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1MYWJlbCh1bnNp
Z25lZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBk
MmNkZjQyNGQwNzYyZGZmMDJmOTJmZTA5YTQwMjkwNmQwOTkyMjFjLi41NjNkMmNhMzgyZWNkZWU2
Y2JmMjJiZWYxYTEyNTdkYjM2ZmFjYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTQ2LDEzICs0NywxMyBAQAogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9z
aXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNDEsMzIgKzE0MiwzMiBAQCBzdGF0aWMgSGFz
aE1hcDxjb25zdCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+PiYgaW5saW5lV3Jh
cHBlckZvckRpc3BsYQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgbWFrZUNhcGl0YWxpemVk
KFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKK1N0cmluZyBjYXBpdGFsaXplKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcikKIHsKICAgICAvLyBGSVhN
RTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2YgdV90
b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCiAKLSAgICBpZiAoc3RyaW5nLT5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBzdHJpbmc7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwot
ICAgIGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwgPSAqc3RyaW5nLT5pbXBsKCk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8mIHN0cmluZ0ltcGwg
PSAqc3RyaW5nLmltcGwoKTsKIAogICAgIGlmIChsZW5ndGggPj0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgU3RyaW5nQnVmZmVy
PFVDaGFyPiBzdHJpbmdXaXRoUHJldmlvdXMobGVuZ3RoICsgMSk7Ci0gICAgc3RyaW5nV2l0aFBy
ZXZpb3VzWzBdID0gcHJldmlvdXMgPT0gbm9CcmVha1NwYWNlID8gJyAnIDogcHJldmlvdXM7Cisg
ICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0gcHJldmlvdXNDaGFyYWN0ZXIgPT0gbm9CcmVha1Nw
YWNlID8gJyAnIDogcHJldmlvdXNDaGFyYWN0ZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IGxlbmd0aCArIDE7IGkrKykgewotICAgICAgICAvLyBSZXBsYWNlICZuYnNwIHdpdGggYSBy
ZWFsIHNwYWNlIHNpbmNlIElDVSBubyBsb25nZXIgdHJlYXRzICZuYnNwIGFzIGEgd29yZCBzZXBh
cmF0b3IuCisgICAgICAgIC8vIFJlcGxhY2UgTk8gQlJFQUsgU1BBQ0Ugd2l0aCBhIHJlYWwgc3Bh
Y2Ugc2luY2UgSUNVIGRvZXMgbm90IHRyZWF0IGl0IGFzIGEgd29yZCBzZXBhcmF0b3IuCiAgICAg
ICAgIGlmIChzdHJpbmdJbXBsW2kgLSAxXSA9PSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBz
dHJpbmdXaXRoUHJldmlvdXNbaV0gPSAnICc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0
cmluZ1dpdGhQcmV2aW91c1tpXSA9IHN0cmluZ0ltcGxbaSAtIDFdOwogICAgIH0KIAotICAgIFVC
cmVha0l0ZXJhdG9yKiBib3VuZGFyeSA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3Ry
aW5nV2l0aFByZXZpb3VzLmNoYXJhY3RlcnMoKSwgbGVuZ3RoICsgMSkpOworICAgIGF1dG8qIGJv
dW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmdXaXRoUHJldmlvdXMu
Y2hhcmFjdGVycygpLCBsZW5ndGggKyAxKSk7CiAgICAgaWYgKCFib3VuZGFyeSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gc3RyaW5nOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwpAQCAtMTgwLDcgKzE4MSw3
IEBAIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtpIC0gMV0pOwogICAgIH0KIAot
ICAgICpzdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7CiB9CiAKIGlubGluZSBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNv
bnN0IFN0cmluZyYgdGV4dCkKQEAgLTE4OCwyNCArMTg5LDE3IEBAIGlubGluZSBSZW5kZXJUZXh0
OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAsIG1faGFz
VGFiKGZhbHNlKQogICAgICwgbV9saW5lc0RpcnR5KGZhbHNlKQogICAgICwgbV9jb250YWluc1Jl
dmVyc2VkVGV4dChmYWxzZSkKLSAgICAsIG1faXNBbGxBU0NJSSh0ZXh0LmNvbnRhaW5zT25seUFT
Q0lJKCkpCisgICAgLCBtX2lzQWxsQVNDSUkodGV4dC5pbXBsKCktPmlzQWxsQVNDSUkoKSkKICAg
ICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRzKGZhbHNlKQogICAg
ICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fb3JpZ2luYWxUZXh0
RGlmZmVyc0Zyb21SZW5kZXJlZChmYWxzZSkKICAgICAsIG1faGFzSW5saW5lV3JhcHBlckZvckRp
c3BsYXlDb250ZW50cyhmYWxzZSkKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICwg
bV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKDApCi0jZW5kaWYKLSAgICAsIG1fbWluV2lkdGgo
LTEpCi0gICAgLCBtX21heFdpZHRoKC0xKQotICAgICwgbV9iZWdpbk1pbldpZHRoKDApCi0gICAg
LCBtX2VuZE1pbldpZHRoKDApCiAgICAgLCBtX3RleHQodGV4dCkKIHsKICAgICBBU1NFUlQoIW1f
dGV4dC5pc051bGwoKSk7CiAgICAgc2V0SXNUZXh0KCk7CiAgICAgbV9jYW5Vc2VTaW1wbGVGb250
Q29kZVBhdGggPSBjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCk7Ci0gICAgdmlldygp
LmZyYW1lVmlldygpLmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlDaGFyYWN0ZXJDb3VudCh0ZXh0
TGVuZ3RoKCkpOworICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5pbmNyZW1lbnRWaXN1YWxseU5vbkVt
cHR5Q2hhcmFjdGVyQ291bnQodGV4dC5pbXBsKCktPmxlbmd0aCgpKTsKIH0KIAogUmVuZGVyVGV4
dDo6UmVuZGVyVGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtNDYw
LDcgKzQ1NCw3IEBAIFBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGlmIChzaW1wbGVMaW5lTGF5b3V0KCkgJiYgcGFyZW50
KCktPmZpcnN0Q2hpbGQoKSA9PSBwYXJlbnQoKS0+bGFzdENoaWxkKCkpIHsKICAgICAgICAgYXV0
byBvZmZzZXQgPSBTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQocG9pbnQsICp0
aGlzLCAqc2ltcGxlTGluZUxheW91dCgpKTsKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGEgdmFs
aWQgb2Zmc2V0LiBGYWxsIGJhY2sgdG8gdGhlIG5vcm1hbCBsaW5lIGxheW91dCBiYXNlZCBQb3Np
dGlvbi4KLSAgICAgICAgaWYgKG9mZnNldCA9PSB0ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmIChv
ZmZzZXQgPT0gdGV4dCgpLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9y
UG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBQb3NpdGlvbih0ZXh0Tm9kZSgpLCBvZmZzZXQpOwogICAgICAgICBBU1NFUlQocG9z
aXRpb24gPT0gcG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0cikuZGVlcEVxdWl2YWxlbnQo
KSk7CkBAIC00OTcsMTAgKzQ5MSw4IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6
d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgICAg
IGZsb2F0IG1vbm9zcGFjZUNoYXJhY3RlcldpZHRoID0gZi5zcGFjZVdpZHRoKCk7CiAgICAgICAg
IGZsb2F0IHcgPSAwOwogICAgICAgICBib29sIGlzU3BhY2U7Ci0gICAgICAgIEFTU0VSVChtX3Rl
eHQpOwotICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHN0YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkrKykgewotICAgICAg
ICAgICAgY2hhciBjID0gdGV4dFtpXTsKKyAgICAgICAgICAgIGNoYXIgYyA9IHRleHQoKVtpXTsK
ICAgICAgICAgICAgIGlmIChjIDw9ICcgJykgewogICAgICAgICAgICAgICAgIGlmIChjID09ICcg
JyB8fCBjID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgdyArPSBtb25vc3BhY2VDaGFy
YWN0ZXJXaWR0aDsKQEAgLTU0NCw0MSArNTM2LDMxIEBAIGlubGluZSBib29sIGlzSGFuZ2FibGVQ
dW5jdHVhdGlvbkF0TGluZUVuZChVQ2hhciBjKQogCiBmbG9hdCBSZW5kZXJUZXh0OjpoYW5nYWJs
ZVB1bmN0dWF0aW9uU3RhcnRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0g
bGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0
cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKLSAgICAKLSAgICBpZiAoIWlzSGFuZ2Fi
bGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRleHRbaW5kZXhdKSkKKyAgICBpZiAoIWlzSGFuZ2Fi
bGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRleHQoKVtpbmRleF0pKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICAK
LSAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxl
KTsKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CisgICAgcmV0dXJuIHdpZHRoRnJv
bUNhY2hlKHN0eWxlLmZvbnRDYXNjYWRlKCksIGluZGV4LCAxLCAwLCAwLCAwLCBzdHlsZSk7CiB9
CiAKIGZsb2F0IFJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25FbmRXaWR0aCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0gICAg
aWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5s
ZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5p
bXBsKCk7CiAKLSAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZUVuZCh0ZXh0W2lu
ZGV4XSkpCisgICAgaWYgKCFpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVFbmQodGV4dCgpW2lu
ZGV4XSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHls
ZS5mb250Q2FzY2FkZSgpOwotICAgIAotICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShmb250LCBp
bmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOworCisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHls
ZSgpOworICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShzdHlsZS5mb250Q2FzY2FkZSgpLCBpbmRl
eCwgMSwgMCwgMCwgMCwgc3R5bGUpOwogfQogCi1ib29sIFJlbmRlclRleHQ6OmlzSGFuZ2FibGVT
dG9wT3JDb21tYShVQ2hhciBjKSBjb25zdAorYm9vbCBSZW5kZXJUZXh0Ojppc0hhbmdhYmxlU3Rv
cE9yQ29tbWEoVUNoYXIgYykKIHsKICAgICByZXR1cm4gYyA9PSAweDAwMkMgfHwgYyA9PSAweDAw
MkUgfHwgYyA9PSAweDA2MEMgfHwgYyA9PSAweDA2RDQgfHwgYyA9PSAweDMwMDEKICAgICAgICAg
fHwgYyA9PSAweDMwMDIgfHwgYyA9PSAweEZGMEMgfHwgYyA9PSAweEZGMEUgfHwgYyA9PSAweEZF
NTAgfHwgYyA9PSAweEZFNTEKQEAgLTU4OSwxMyArNTcxLDEwIEBAIHVuc2lnbmVkIFJlbmRlclRl
eHQ6OmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25zdAogewogICAgIGlm
ICghc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
Ci0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1w
bCgpOwotICAgIAorCiAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgZm9yICggOyBpIDwgdGV4dExl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRbaV0gIT0gJyAnICYmICh0ZXh0W2ldICE9
ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkgJiYgdGV4dFtpXSAhPSAnXHQnKQor
ICAgIGZvciAodW5zaWduZWQgbGVuZ3RoID0gdGV4dCgpLmxlbmd0aCgpIDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmICh0ZXh0KClbaV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xu
JyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gaTsKQEAgLTYwMywxMTAgKzU4Miw5
NyBAQCB1bnNpZ25lZCBSZW5kZXJUZXh0OjpmaXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3Bh
Y2VzKCkgY29uc3QKIAogdW5zaWduZWQgUmVuZGVyVGV4dDo6bGFzdENoYXJhY3RlckluZGV4U3Ry
aXBwaW5nU3BhY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIXRleHRMZW5ndGgoKSkKKyAgICBpZiAo
IXRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXN0eWxlKCku
Y29sbGFwc2VXaGl0ZVNwYWNlKCkpCi0gICAgICAgIHJldHVybiB0ZXh0TGVuZ3RoKCkgLSAxOwot
ICAgIAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0
LmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHRleHQoKS5sZW5ndGgoKSAtIDE7CiAgICAgCi0gICAg
aW50IGkgPSB0ZXh0TGVuZ3RoKCkgLSAxOworICAgIGludCBpID0gdGV4dCgpLmxlbmd0aCgpIC0g
MTsKICAgICBmb3IgKCA7IGkgID49IDA7IC0taSkgewotICAgICAgICBpZiAodGV4dFtpXSAhPSAn
ICcgJiYgKHRleHRbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0
ZXh0W2ldICE9ICdcdCcpCisgICAgICAgIGlmICh0ZXh0KClbaV0gIT0gJyAnICYmICh0ZXh0KClb
aV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0KClbaV0gIT0g
J1x0JykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gaTsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZldpZHRocyhmbG9hdCBsZWFkV2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1pblcsIGJvb2wmIGJlZ2lu
V1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBlbmRNaW5XLCBi
b29sJiBlbmRXUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgaGFz
QnJlYWthYmxlQ2hhciwgYm9vbCYgaGFzQnJlYWssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0JiBiZWdpbk1heFcsIGZsb2F0JiBlbmRNYXhXLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgbWluVywgZmxvYXQmIG1heFcsIGJvb2wmIHN0
cmlwRnJvbnRTcGFjZXMpCitSZW5kZXJUZXh0OjpXaWR0aHMgUmVuZGVyVGV4dDo6dHJpbW1lZFBy
ZWZlcnJlZFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpCiB7
Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBhdXRv
JiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UgPSBz
dHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKKwogICAgIGlmICghY29sbGFwc2VXaGl0ZVNwYWNl
KQogICAgICAgICBzdHJpcEZyb250U3BhY2VzID0gZmFsc2U7CiAKICAgICBpZiAobV9oYXNUYWIg
fHwgcHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpCiAgICAgICAgIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGxlYWRXaWR0aCk7CiAKLSAgICBiZWdpbldTID0gIXN0cmlwRnJvbnRT
cGFjZXMgJiYgbV9oYXNCZWdpbldTOwotICAgIGVuZFdTID0gbV9oYXNFbmRXUzsKKyAgICBXaWR0
aHMgd2lkdGhzOwogCi0gICAgdW5zaWduZWQgbGVuID0gdGV4dExlbmd0aCgpOworICAgIHdpZHRo
cy5iZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOworICAgIHdpZHRo
cy5lbmRXUyA9IG1faGFzRW5kV1M7CiAKLSAgICBpZiAoIWxlbiB8fCAoc3RyaXBGcm9udFNwYWNl
cyAmJiB0ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkpIHsKLSAgICAgICAgYmVnaW5N
aW5XID0gMDsKLSAgICAgICAgZW5kTWluVyA9IDA7Ci0gICAgICAgIGJlZ2luTWF4VyA9IDA7Ci0g
ICAgICAgIGVuZE1heFcgPSAwOwotICAgICAgICBtaW5XID0gMDsKLSAgICAgICAgbWF4VyA9IDA7
Ci0gICAgICAgIGhhc0JyZWFrID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAKLSAgICBtaW5XID0gbV9taW5XaWR0
aDsKLSAgICBtYXhXID0gbV9tYXhXaWR0aDsKKyAgICBpZiAoIWxlbmd0aCB8fCAoc3RyaXBGcm9u
dFNwYWNlcyAmJiB0ZXh0KCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkp
CisgICAgICAgIHJldHVybiB3aWR0aHM7CiAKLSAgICBiZWdpbk1pblcgPSBtX2JlZ2luTWluV2lk
dGg7Ci0gICAgZW5kTWluVyA9IG1fZW5kTWluV2lkdGg7CisgICAgd2lkdGhzLm1pbiA9IG1fbWlu
V2lkdGg7CisgICAgd2lkdGhzLm1heCA9IG1fbWF4V2lkdGg7CiAKLSAgICBoYXNCcmVha2FibGVD
aGFyID0gbV9oYXNCcmVha2FibGVDaGFyOwotICAgIGhhc0JyZWFrID0gbV9oYXNCcmVhazsKKyAg
ICB3aWR0aHMuYmVnaW5NaW4gPSBtX2JlZ2luTWluV2lkdGg7CisgICAgd2lkdGhzLmVuZE1pbiA9
IG1fZW5kTWluV2lkdGg7CiAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0
ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgaWYgKHRleHRbMF0gPT0gc3BhY2UgfHwgKHRleHRb
MF0gPT0gbmV3bGluZUNoYXJhY3RlciAmJiAhc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRl
eHRbMF0gPT0gJ1x0JykgewotICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxl
LmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KLSAgICAg
ICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsKLSAgICAgICAgICAgIGZsb2F0IHNwYWNlV2lkdGgg
PSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgc3R5
bGUpKTsKLSAgICAgICAgICAgIG1heFcgLT0gc3BhY2VXaWR0aDsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtYXhXICs9IGZvbnQud29yZFNwYWNpbmcoKTsKKyAgICB3aWR0aHMuaGFzQnJl
YWthYmxlQ2hhciA9IG1faGFzQnJlYWthYmxlQ2hhcjsKKyAgICB3aWR0aHMuaGFzQnJlYWsgPSBt
X2hhc0JyZWFrOworCisgICAgaWYgKHRleHQoKVswXSA9PSAnICcgfHwgKHRleHQoKVswXSA9PSAn
XG4nICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgdGV4dCgpWzBdID09ICdcdCcpIHsK
KyAgICAgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlz
IGlnbm9yZXMgZmlyc3QtbGluZS4KKyAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpCisgICAg
ICAgICAgICB3aWR0aHMubWF4IC09IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRl
eHRSdW4oJnNwYWNlLCAxLCBzdHlsZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3aWR0
aHMubWF4ICs9IGZvbnQud29yZFNwYWNpbmcoKTsKICAgICB9CiAKICAgICBzdHJpcEZyb250U3Bh
Y2VzID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIG1faGFzRW5kV1M7CiAKLSAgICBpZiAoIXN0eWxl
LmF1dG9XcmFwKCkgfHwgbWluVyA+IG1heFcpCi0gICAgICAgIG1pblcgPSBtYXhXOworICAgIGlm
ICghc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAgICAgd2lkdGhzLm1pbiA9IHN0ZDo6bWluKHdpZHRo
cy5taW4sIHdpZHRocy5tYXgpOwogCiAgICAgLy8gQ29tcHV0ZSBvdXIgbWF4IHdpZHRocyBieSBz
Y2FubmluZyB0aGUgc3RyaW5nIGZvciBuZXdsaW5lcy4KLSAgICBpZiAoaGFzQnJlYWspIHsKLSAg
ICAgICAgY29uc3QgRm9udENhc2NhZGUmIGYgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhN
RTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUuCisgICAgaWYgKHdpZHRocy5oYXNCcmVhaykgewor
ICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8gRklYTUU6IFRoaXMg
aWdub3JlcyBmaXJzdC1saW5lLgogICAgICAgICBib29sIGZpcnN0TGluZSA9IHRydWU7Ci0gICAg
ICAgIGJlZ2luTWF4VyA9IG1heFc7Ci0gICAgICAgIGVuZE1heFcgPSBtYXhXOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGxpbmVsZW4gPSAwOwotICAgICAgICAgICAgd2hpbGUgKGkgKyBsaW5lbGVuIDwgbGVuICYmIHRl
eHRbaSArIGxpbmVsZW5dICE9ICdcbicpCi0gICAgICAgICAgICAgICAgbGluZWxlbisrOwotCi0g
ICAgICAgICAgICBpZiAobGluZWxlbikgewotICAgICAgICAgICAgICAgIGVuZE1heFcgPSB3aWR0
aEZyb21DYWNoZShmLCBpLCBsaW5lbGVuLCBsZWFkV2lkdGggKyBlbmRNYXhXLCAwLCAwLCBzdHls
ZSk7CisgICAgICAgIHdpZHRocy5iZWdpbk1heCA9IHdpZHRocy5tYXg7CisgICAgICAgIHdpZHRo
cy5lbmRNYXggPSB3aWR0aHMubWF4OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmVMZW5ndGggPSAwOworICAg
ICAgICAgICAgd2hpbGUgKGkgKyBsaW5lTGVuZ3RoIDwgbGVuZ3RoICYmIHRleHQoKVtpICsgbGlu
ZUxlbmd0aF0gIT0gJ1xuJykKKyAgICAgICAgICAgICAgICBsaW5lTGVuZ3RoKys7CisKKyAgICAg
ICAgICAgIGlmIChsaW5lTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgd2lkdGhzLmVuZE1heCA9
IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIGxpbmVMZW5ndGgsIGxlYWRXaWR0aCArIHdpZHRocy5l
bmRNYXgsIDAsIDAsIHN0eWxlKTsKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RMaW5lKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICBsZWFkV2lkdGggPSAwOwotICAgICAgICAgICAgICAgICAgICBiZWdpbk1heFcgPSBlbmRNYXhX
OworICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NYXggPSB3aWR0aHMuZW5kTWF4Owog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpICs9IGxpbmVsZW47CisgICAgICAg
ICAgICAgICAgaSArPSBsaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdExp
bmUpIHsKLSAgICAgICAgICAgICAgICBiZWdpbk1heFcgPSAwOworICAgICAgICAgICAgICAgIHdp
ZHRocy5iZWdpbk1heCA9IDA7CiAgICAgICAgICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgbGVhZFdpZHRoID0gMDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKGkgPT0gbGVuIC0gMSkKKyAgICAgICAgICAgIGlmIChpID09IGxlbmd0aCAtIDEpIHsK
ICAgICAgICAgICAgICAgICAvLyBBIDxwcmU+IHJ1biB0aGF0IGVuZHMgd2l0aCBhIG5ld2xpbmUs
IGFzIGluLCBlLmcuLAogICAgICAgICAgICAgICAgIC8vIDxwcmU+U29tZSB0ZXh0XG5cbjxzcGFu
Pk1vcmUgdGV4dDwvcHJlPgotICAgICAgICAgICAgICAgIGVuZE1heFcgPSAwOworICAgICAgICAg
ICAgICAgIHdpZHRocy5lbmRNYXggPSAwOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQorCisgICAgcmV0dXJuIHdpZHRoczsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzU3BhY2VB
Y2NvcmRpbmdUb1N0eWxlKFVDaGFyIGMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTgy
MCwxMiArNzg2LDEzIEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgbV9oYXNCZWdpbldT
ID0gZmFsc2U7CiAgICAgbV9oYXNFbmRXUyA9IGZhbHNlOwogCi0gICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9
IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4K
KyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CisgICAgYXV0byYgZm9udCA9IHN0eWxl
LmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICBm
bG9hdCB3b3JkU3BhY2luZyA9IGZvbnQud29yZFNwYWNpbmcoKTsKLSAgICB1bnNpZ25lZCBsZW4g
PSB0ZXh0TGVuZ3RoKCk7CisgICAgYXV0byYgc3RyaW5nID0gdGV4dCgpOworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBhdXRvIGl0ZXJhdG9yTW9kZSA9IG1hcExp
bmVCcmVha1RvSXRlcmF0b3JNb2RlKHN0eWxlLmxpbmVCcmVhaygpKTsKLSAgICBMYXp5TGluZUJy
ZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRvcihtX3RleHQsIHN0eWxlLmxvY2FsZSgpLCBpdGVyYXRv
ck1vZGUpOworICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0ZXJhdG9yKHN0cmluZywg
c3R5bGUubG9jYWxlKCksIGl0ZXJhdG9yTW9kZSk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5n
ID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmluZ1NwYWNlcyA9IGZhbHNlOwogICAgIGJvb2wgaXNT
cGFjZSA9IGZhbHNlOwpAQCAtODYyLDggKzgyOSw4IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZv
CiAgICAgYm9vbCBrZWVwQWxsV29yZHMgPSBzdHlsZS53b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29y
ZEJyZWFrOwogICAgIGJvb2wgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQgPSBpdGVyYXRvck1vZGUg
PT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZhdWx0OwogCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIFVDaGFyIGMgPSB1bmNoZWNrZWRDaGFyYWN0
ZXJBdChpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgVUNoYXIgYyA9IHN0cmluZ1tpXTsKIAogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFj
dGVySXNTcGFjZSA9IGlzU3BhY2U7CiAKQEAgLTg4Niw3ICs4NTMsNyBAQCB2b2lkIFJlbmRlclRl
eHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNl
dDxjb25zdCBGbwogCiAgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc05ld2xpbmUpICYmICFpKQog
ICAgICAgICAgICAgbV9oYXNCZWdpbldTID0gdHJ1ZTsKLSAgICAgICAgaWYgKChpc1NwYWNlIHx8
IGlzTmV3bGluZSkgJiYgaSA9PSBsZW4gLSAxKQorICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNO
ZXdsaW5lKSAmJiBpID09IGxlbmd0aCAtIDEpCiAgICAgICAgICAgICBtX2hhc0VuZFdTID0gdHJ1
ZTsKIAogICAgICAgICBpZ25vcmluZ1NwYWNlcyB8PSBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSAmJiBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgJiYgaXNTcGFjZTsKQEAgLTkxMSw5ICs4Nzgs
OSBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAg
ICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5
bGUpICYmIGMgIT0gJ1x0JyAmJiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9
PSBIeXBoZW5zTm9uZSkpIHsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmIChqID09
IGxlbikKKyAgICAgICAgICAgIGlmIChqID09IGxlbmd0aCkKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGMgPSB1bmNoZWNrZWRDaGFyYWN0ZXJBdChqKTsKKyAgICAgICAgICAg
IGMgPSBzdHJpbmdbal07CiAgICAgICAgICAgICBpZiAoaXNCcmVha2FibGUoYnJlYWtJdGVyYXRv
ciwgaiwgbmV4dEJyZWFrYWJsZSwgYnJlYWtOQlNQLCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCwg
a2VlcEFsbFdvcmRzKSAmJiBjaGFyYWN0ZXJBdChqIC0gMSkgIT0gc29mdEh5cGhlbikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChicmVha0FsbCkgewpAQCAtOTI1LDcg
Kzg5Miw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
ZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIHVuc2lnbmVkIHdvcmRM
ZW4gPSBqIC0gaTsKICAgICAgICAgaWYgKHdvcmRMZW4pIHsKICAgICAgICAgICAgIGZsb2F0IGN1
cnJNaW5XaWR0aCA9IDA7Ci0gICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbikgJiYg
aXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOworICAgICAgICAgICAgYm9vbCBpc1Nw
YWNlID0gKGogPCBsZW5ndGgpICYmIGlzU3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsK
ICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3
b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAgaWYgKGlzU3BhY2UpCkBAIC05NDAs
NyArOTA3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgICAgICAgICAgaWYgKHcg
PiBtYXhXb3JkV2lkdGgpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdWZmaXhTdGFydDsK
LSAgICAgICAgICAgICAgICBmbG9hdCBtYXhGcmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50
V2lkdGgoKnRoaXMsIHN0eWxlLCBmb250LCBTdHJpbmdWaWV3KG1fdGV4dCkuc3Vic3RyaW5nKGks
IHdvcmRMZW4pLCBtaW5pbXVtUHJlZml4TGVuZ3RoLCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBzdWZm
aXhTdGFydCwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICAgICAg
ZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IG1heFdvcmRGcmFnbWVudFdpZHRoKCp0aGlzLCBzdHls
ZSwgZm9udCwgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11
bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZpeExlbmd0aCwgc3VmZml4U3RhcnQsIGZhbGxiYWNr
Rm9udHMsIGdseXBoT3ZlcmZsb3cpOwogCiAgICAgICAgICAgICAgICAgaWYgKHN1ZmZpeFN0YXJ0
KSB7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFdpZHRoOwpAQCAtOTczLDEzICs5
NDAsMTMgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhm
bG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgICAgICAgICBsYXN0V29y
ZEJvdW5kYXJ5ID0gajsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBpc0NvbGxh
cHNpYmxlV2hpdGVTcGFjZSA9IChqIDwgbGVuKSAmJiBzdHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVT
cGFjZShjKTsKLSAgICAgICAgICAgIGlmIChqIDwgbGVuICYmIHN0eWxlLmF1dG9XcmFwKCkpCisg
ICAgICAgICAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlID0gKGogPCBsZW5ndGgpICYm
IHN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGMpOworICAgICAgICAgICAgaWYgKGogPCBs
ZW5ndGggJiYgc3R5bGUuYXV0b1dyYXAoKSkKICAgICAgICAgICAgICAgICBtX2hhc0JyZWFrYWJs
ZUNoYXIgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBBZGQgaW4gd29yZFNwYWNpbmcgdG8gb3Vy
IGN1cnJNYXhXaWR0aCwgYnV0IG5vdCBpZiB0aGlzIGlzIHRoZSBsYXN0IHdvcmQgb24gYSBsaW5l
IG9yIHRoZQogICAgICAgICAgICAgLy8gbGFzdCB3b3JkIGluIHRoZSBydW4uCi0gICAgICAgICAg
ICBpZiAoKGlzU3BhY2UgfHwgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UpICYmICFjb250YWluc09u
bHlXaGl0ZXNwYWNlKGosIGxlbi1qKSkKKyAgICAgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc0Nv
bGxhcHNpYmxlV2hpdGVTcGFjZSkgJiYgIWNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKGosIGxl
bmd0aCAtIGopKQogICAgICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsK
IAogICAgICAgICAgICAgaWYgKGZpcnN0V29yZCkgewpAQCAtMTAyMCw3ICs5ODcsNyBAQCB2b2lk
IFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0
aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IGZv
bnQud2lkdGgocnVuLCAmZmFsbGJhY2tGb250cyk7CiAgICAgICAgICAgICAgICAgZ2x5cGhPdmVy
Zmxvdy5yaWdodCA9IDA7Ci0gICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGlzU3Bh
Y2UgJiYgIXByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSAmJiBpID09IGxlbiAtIDE7CisgICAgICAg
ICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGlzU3BhY2UgJiYgIXByZXZpb3VzQ2hhcmFjdGVy
SXNTcGFjZSAmJiBpID09IGxlbmd0aCAtIDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
U1NFUlQobGFzdFdvcmRCb3VuZGFyeSA9PSBpKTsKICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRh
cnkrKzsKQEAgLTEwMjksNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAg
IGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVfb3IoZ2x5
cGhPdmVyZmxvdy5sZWZ0KTsKIAotICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAmJiBsZW4gPiAx
KSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCisgICAgaWYgKChuZWVkc1dvcmRT
cGFjaW5nICYmIGxlbmd0aCA+IDEpIHx8IChpZ25vcmluZ1NwYWNlcyAmJiAhZmlyc3RXb3JkKSkK
ICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwogCiAgICAgbV9tYXhXaWR0aCA9
IHN0ZDo6bWF4KGN1cnJNYXhXaWR0aCwgbV9tYXhXaWR0aCk7CkBAIC0xMDQ2LDMzICsxMDEzLDM5
IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KGZhbHNlKTsKIH0KIAotYm9vbCBSZW5kZXJUZXh0Ojppc0FsbENvbGxhcHNpYmxlV2hp
dGVzcGFjZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
aWYgKCFzdHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShjaGFyYWN0ZXJzOCgpW2ldKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
IGlmICghc3R5bGUuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKCkgY29uc3QKK3sKKyAgICBp
ZiAodGV4dCgpLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6aXNBbGxDb2xsYXBz
aWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnM4KCksIHRleHQoKS5sZW5ndGgoKSwgc3R5
bGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKHRl
eHQoKS5jaGFyYWN0ZXJzMTYoKSwgdGV4dCgpLmxlbmd0aCgpLCBzdHlsZSgpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGlubGluZSBib29sIGlzQWxsUG9z
c2libHlDb2xsYXBzaWJsZVdoaXRlc3BhY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQorewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBpZiAoIXN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGNo
YXJhY3RlcnMxNigpW2ldKSkKKyAgICAgICAgaWYgKCEoY2hhcmFjdGVyc1tpXSA9PSAnXG4nIHx8
IGNoYXJhY3RlcnNbaV0gPT0gJyAnIHx8IGNoYXJhY3RlcnNbaV0gPT0gJ1x0JykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQotICAgIAotYm9v
bCBSZW5kZXJUZXh0Ojpjb250YWluc09ubHlXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIGxlbikgY29uc3QKKworYm9vbCBSZW5kZXJUZXh0Ojpjb250YWluc09ubHlIVE1MV2hpdGVz
cGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIHVu
c2lnbmVkIGN1cnJQb3M7Ci0gICAgZm9yIChjdXJyUG9zID0gZnJvbTsKLSAgICAgICAgIGN1cnJQ
b3MgPCBmcm9tICsgbGVuICYmICh0ZXh0W2N1cnJQb3NdID09ICdcbicgfHwgdGV4dFtjdXJyUG9z
XSA9PSAnICcgfHwgdGV4dFtjdXJyUG9zXSA9PSAnXHQnKTsKLSAgICAgICAgIGN1cnJQb3MrKykg
eyB9Ci0gICAgcmV0dXJuIGN1cnJQb3MgPj0gKGZyb20gKyBsZW4pOworICAgIEFTU0VSVChmcm9t
IDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8PSB0ZXh0KCkubGVuZ3Ro
KCkpOworICAgIEFTU0VSVChmcm9tICsgbGVuZ3RoIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAg
aWYgKHRleHQoKS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGlzQWxsUG9zc2libHlDb2xsYXBz
aWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnM4KCkgKyBmcm9tLCBsZW5ndGgpOworICAg
IHJldHVybiBpc0FsbFBvc3NpYmx5Q29sbGFwc2libGVXaGl0ZXNwYWNlKHRleHQoKS5jaGFyYWN0
ZXJzMTYoKSArIGZyb20sIGxlbmd0aCk7CiB9CiAKIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPj4gUmVuZGVyVGV4dDo6ZHJhZ2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2Zmc2V0
cyh1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdApAQCAtMTEy
Myw0NCArMTA5NiwzNiBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVj
dGlvblN0YXRlIHN0YXRlKQogICAgICAgICBjb250YWluaW5nQmxvY2stPnNldFNlbGVjdGlvblN0
YXRlKHN0YXRlKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0OjpzZXRUZXh0V2l0aE9mZnNldChjb25z
dCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuLCBib29sIGZvcmNl
KQordm9pZCBSZW5kZXJUZXh0OjpzZXRUZXh0V2l0aE9mZnNldChjb25zdCBTdHJpbmcmIG5ld1Rl
eHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBib29sIGZvcmNlKQogewotICAg
IGlmICghZm9yY2UgJiYgbV90ZXh0ID09IHRleHQpCisgICAgaWYgKCFmb3JjZSAmJiB0ZXh0KCkg
PT0gbmV3VGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGRlbHRhID0gdGV4dC5sZW5n
dGgoKSAtIHRleHRMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBlbmQgPSBsZW4gPyBvZmZzZXQgKyBs
ZW4gLSAxIDogb2Zmc2V0OworICAgIGludCBkZWx0YSA9IG5ld1RleHQubGVuZ3RoKCkgLSB0ZXh0
KCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgZW5kID0gbGVuZ3RoID8gb2Zmc2V0ICsgbGVuZ3Ro
IC0gMSA6IG9mZnNldDsKIAogICAgIG1fbGluZXNEaXJ0eSA9IHNpbXBsZUxpbmVMYXlvdXQoKSB8
fCBtX2xpbmVCb3hlcy5kaXJ0eVJhbmdlKCp0aGlzLCBvZmZzZXQsIGVuZCwgZGVsdGEpOwogCi0g
ICAgc2V0VGV4dCh0ZXh0LCBmb3JjZSB8fCBtX2xpbmVzRGlydHkpOworICAgIHNldFRleHQobmV3
VGV4dCwgZm9yY2UgfHwgbV9saW5lc0RpcnR5KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlz
SW5saW5lRmxvd09yRW1wdHlUZXh0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7Ci0g
ICAgaWYgKGlzPFJlbmRlcklubGluZT4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAoIWlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN0cmluZ0ltcGwqIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlciku
dGV4dCgpOwotICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
ICF0ZXh0LT5sZW5ndGgoKTsKKyAgICByZXR1cm4gaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikg
fHwgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5k
ZXJlcikudGV4dCgpLmlzRW1wdHkoKSk7CiB9CiAKIFVDaGFyIFJlbmRlclRleHQ6OnByZXZpb3Vz
Q2hhcmFjdGVyKCkgY29uc3QKIHsKICAgICAvLyBmaW5kIHByZXZpb3VzIHRleHQgcmVuZGVyZXIg
aWYgb25lIGV4aXN0cwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHJldmlvdXNUZXh0ID0gdGhp
czsKLSAgICB3aGlsZSAoKHByZXZpb3VzVGV4dCA9IHByZXZpb3VzVGV4dC0+cHJldmlvdXNJblBy
ZU9yZGVyKCkpKQorICAgIHdoaWxlICgocHJldmlvdXNUZXh0ID0gcHJldmlvdXNUZXh0LT5wcmV2
aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAgICAgaWYgKCFpc0lubGluZUZsb3dPckVtcHR5VGV4
dCgqcHJldmlvdXNUZXh0KSkKICAgICAgICAgICAgIGJyZWFrOwotICAgIFVDaGFyIHByZXYgPSAn
ICc7Ci0gICAgaWYgKGlzPFJlbmRlclRleHQ+KHByZXZpb3VzVGV4dCkpIHsKLSAgICAgICAgaWYg
KFN0cmluZ0ltcGwqIHByZXZpb3VzU3RyaW5nID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZp
b3VzVGV4dCkudGV4dCgpKQotICAgICAgICAgICAgcHJldiA9ICgqcHJldmlvdXNTdHJpbmcpW3By
ZXZpb3VzU3RyaW5nLT5sZW5ndGgoKSAtIDFdOwogICAgIH0KLSAgICByZXR1cm4gcHJldjsKKyAg
ICBpZiAoIWlzPFJlbmRlclRleHQ+KHByZXZpb3VzVGV4dCkpCisgICAgICAgIHJldHVybiAnICc7
CisgICAgYXV0byYgcHJldmlvdXNTdHJpbmcgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldmlv
dXNUZXh0KS50ZXh0KCk7CisgICAgcmV0dXJuIHByZXZpb3VzU3RyaW5nW3ByZXZpb3VzU3RyaW5n
Lmxlbmd0aCgpIC0gMV07CiB9CiAKIExheW91dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZGaXJzdFRl
eHQoKSBjb25zdApAQCAtMTE2OCwzNyArMTEzMywzNCBAQCBMYXlvdXRVbml0IFJlbmRlclRleHQ6
OnRvcE9mRmlyc3RUZXh0KCkgY29uc3QKICAgICByZXR1cm4gZmlyc3RUZXh0Qm94KCktPnJvb3Qo
KS5saW5lVG9wKCk7CiB9CiAKLXZvaWQgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgU3RyaW5nJiB0ZXh0LCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcikKK1N0cmlu
ZyBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTdHJp
bmcmIHRleHQsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKQogewogICAgIHN3aXRjaCAoc3R5bGUu
dGV4dFRyYW5zZm9ybSgpKSB7CiAgICAgY2FzZSBUVE5PTkU6Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICByZXR1cm4gdGV4dDsKICAgICBjYXNlIENBUElUQUxJWkU6Ci0gICAgICAgIG1ha2VDYXBp
dGFsaXplZCgmdGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIGNhcGl0YWxpemUodGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIpOyAvLyBGSVhNRTog
TmVlZCB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQuCiAgICAgY2FzZSBVUFBFUkNBU0U6Ci0g
ICAgICAgIHRleHQgPSB0ZXh0LmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9j
YWxlKCkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRleHQuY29udmVydFRvVXBw
ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7CiAgICAgY2FzZSBMT1dFUkNBU0U6Ci0g
ICAgICAgIHRleHQgPSB0ZXh0LmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9j
YWxlKCkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHRleHQuY29udmVydFRvTG93
ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7CiAgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiB0ZXh0OwogfQogCi12b2lkIFJlbmRlclRleHQ6OnNldFJl
bmRlcmVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFJlbmRlclRleHQ6OnNldFJlbmRl
cmVkVGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpCiB7Ci0gICAgQVNTRVJUKCF0ZXh0LmlzTnVs
bCgpKTsKKyAgICBBU1NFUlQoIW5ld1RleHQuaXNOdWxsKCkpOwogCiAgICAgU3RyaW5nIG9yaWdp
bmFsVGV4dCA9IHRoaXMtPm9yaWdpbmFsVGV4dCgpOwogCi0gICAgbV90ZXh0ID0gdGV4dDsKKyAg
ICBtX3RleHQgPSBuZXdUZXh0OwogCiAgICAgaWYgKG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wp
CiAgICAgICAgIG1fdGV4dC5yZXBsYWNlKCdcXCcsIHllblNpZ24pOwogCi0gICAgQVNTRVJUKG1f
dGV4dCk7Ci0KLSAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgbV90ZXh0LCBwcmV2aW91
c0NoYXJhY3RlcigpKTsKKyAgICBtX3RleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwg
bV90ZXh0LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKIAogICAgIHN3aXRjaCAoc3R5bGUoKS50ZXh0
U2VjdXJpdHkoKSkgewogICAgIGNhc2UgVFNOT05FOgpAQCAtMTIyNSw5ICsxMTg3LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0OjpzZXRSZW5kZXJlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogI2VuZGlm
CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX3RleHQuaXNOdWxsKCkpOwotCi0gICAgbV9pc0FsbEFT
Q0lJID0gbV90ZXh0LmNvbnRhaW5zT25seUFTQ0lJKCk7CisgICAgbV9pc0FsbEFTQ0lJID0gdGV4
dCgpLmlzQWxsQVNDSUkoKTsKICAgICBtX2NhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1
dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKTsKICAgICBtX2NhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nID0gY29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCk7CiAgICAg
CkBAIC0xMjQ4LDcgKzEyMDgsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNlY3VyZVRleHQoVUNoYXIg
bWFza2luZ0NoYXJhY3RlcikKICAgICAvLyBvZiB0aGUgY2hhcmFjdGVycyBhcmUgc3Vycm9nYXRl
IHBhaXJzIG9yIGNvbWJpbmluZyBtYXJrcy4gVGh1cywgdGhpcyBmdW5jdGlvbgogICAgIC8vIGRv
ZXMgbm90IGF0dGVtcHQgdG8gaGFuZGxlIGVpdGhlciBvZiB0aG9zZS4KIAotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRleHRMZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0KCkubGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI2MCw3ICsx
MjIwLDcgQEAgdm9pZCBSZW5kZXJUZXh0OjpzZWN1cmVUZXh0KFVDaGFyIG1hc2tpbmdDaGFyYWN0
ZXIpCiAgICAgICAgIC8vIElmIGl0J3MgY2FsbGVkIGEgc2Vjb25kIHRpbWUgd2UgYXNzdW1lIHRo
ZSB0ZXh0IGlzIGRpZmZlcmVudCBhbmQgYSBjaGFyYWN0ZXIgc2hvdWxkIG5vdCBiZSByZXZlYWxl
ZC4KICAgICAgICAgcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0ID0gdGltZXItPnRha2VPZmZzZXRB
ZnRlckxhc3RUeXBlZENoYXJhY3RlcigpOwogICAgICAgICBpZiAocmV2ZWFsZWRDaGFyYWN0ZXJz
T2Zmc2V0ICYmIHJldmVhbGVkQ2hhcmFjdGVyc09mZnNldCA8PSBsZW5ndGgpCi0gICAgICAgICAg
ICBjaGFyYWN0ZXJUb1JldmVhbCA9IG1fdGV4dFstLXJldmVhbGVkQ2hhcmFjdGVyc09mZnNldF07
CisgICAgICAgICAgICBjaGFyYWN0ZXJUb1JldmVhbCA9IHRleHQoKVstLXJldmVhbGVkQ2hhcmFj
dGVyc09mZnNldF07CiAgICAgfQogCiAgICAgVUNoYXIqIGNoYXJhY3RlcnM7CkBAIC0xMjgyLDE0
ICsxMjQyLDE0IEBAIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQWRkaXRp
b25hbCBjaGVjayBvbiB0aGUgZm9udCBjb2RlcGF0aC4KLSAgICBUZXh0UnVuIHJ1bihtX3RleHQp
OworICAgIFRleHRSdW4gcnVuKHRleHQoKSk7CiAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JD
b2RlUGF0aChmYWxzZSk7CiAgICAgaWYgKGZvbnQuY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2Fk
ZTo6U2ltcGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIHdoaXRlc3BhY2VJ
c0NvbGxhcHNlZCA9IHN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fdGV4dC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICgoIXdo
aXRlc3BhY2VJc0NvbGxhcHNlZCAmJiBtX3RleHRbaV0gPT0gJ1x0JykgfHwgbV90ZXh0W2ldID09
IG5vQnJlYWtTcGFjZSB8fCBtX3RleHRbaV0gPj0gSGlyYWdhbmFMZXR0ZXJTbWFsbEEpCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRleHQoKS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IGlmICgoIXdoaXRlc3BhY2VJc0NvbGxhcHNlZCAmJiB0ZXh0KClbaV0gPT0gJ1x0JykgfHwgdGV4
dCgpW2ldID09IG5vQnJlYWtTcGFjZSB8fCB0ZXh0KClbaV0gPj0gSGlyYWdhbmFMZXR0ZXJTbWFs
bEEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpA
QCAtMTMyNCwxMCArMTI4NCw3IEBAIFN0cmluZyBSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENvbnZl
cnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3VzZUJhY2tz
bGFzaEFzWWVuU3ltYm9sIHx8IHN0eWxlKCkudGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FKQogICAg
ICAgICByZXR1cm4gdGV4dCgpOwotCi0gICAgU3RyaW5nIHRleHQgPSBvcmlnaW5hbFRleHQoKTsK
LSAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIo
KSk7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIGFwcGx5VGV4dFRyYW5zZm9ybShzdHls
ZSgpLCBvcmlnaW5hbFRleHQoKSwgcHJldmlvdXNDaGFyYWN0ZXIoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpAQCAtMTM2NywxMSArMTMy
NCwxMSBAQCBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIFJlbmRlclRleHQ6OnNpbXBs
ZUxpbmVMYXlvdXQoKSBjb25zdAogCiBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lLCBIYXNoU2V0PGNv
bnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykg
Y29uc3QKIHsKLSAgICBpZiAoZnJvbSA+PSB0ZXh0TGVuZ3RoKCkpCisgICAgaWYgKGZyb20gPj0g
dGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChmcm9tICsgbGVu
ID4gdGV4dExlbmd0aCgpKQotICAgICAgICBsZW4gPSB0ZXh0TGVuZ3RoKCkgLSBmcm9tOworICAg
IGlmIChmcm9tICsgbGVuID4gdGV4dCgpLmxlbmd0aCgpKQorICAgICAgICBsZW4gPSB0ZXh0KCku
bGVuZ3RoKCkgLSBmcm9tOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IGZp
cnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgIHJldHVybiB3aWR0aChm
cm9tLCBsZW4sIGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLCB4UG9zLCBmYWxsYmFja0ZvbnRzLCBn
bHlwaE92ZXJmbG93KTsKQEAgLTEzNzksMTQgKzEzMzYsMTQgQEAgZmxvYXQgUmVuZGVyVGV4dDo6
d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0
TGluZSwKIAogZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bGVuLCBjb25zdCBGb250Q2FzY2FkZSYgZiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250
Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGZyb20gKyBsZW4gPD0gdGV4dExlbmd0aCgpKTsKLSAgICBpZiAoIXRleHRM
ZW5ndGgoKSkKKyAgICBBU1NFUlQoZnJvbSArIGxlbiA8PSB0ZXh0KCkubGVuZ3RoKCkpOworICAg
IGlmICghdGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgZmxvYXQgdzsKICAgICBpZiAo
JmYgPT0gJnN0eWxlLmZvbnRDYXNjYWRlKCkpIHsKLSAgICAgICAgaWYgKCFzdHlsZS5wcmVzZXJ2
ZU5ld2xpbmUoKSAmJiAhZnJvbSAmJiBsZW4gPT0gdGV4dExlbmd0aCgpICYmICghZ2x5cGhPdmVy
ZmxvdyB8fCAhZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpIHsKKyAgICAgICAgaWYgKCFz
dHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiAhZnJvbSAmJiBsZW4gPT0gdGV4dCgpLmxlbmd0aCgp
ICYmICghZ2x5cGhPdmVyZmxvdyB8fCAhZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpIHsK
ICAgICAgICAgICAgIGlmIChmYWxsYmFja0ZvbnRzKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGdseXBoT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRMb2dpY2FsV2lk
dGhzRGlydHkoKSB8fCAhbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMp
IHsKQEAgLTE0NTgsMTIgKzE0MTUsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0
U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICBp
ZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25JbnNpZGUpIHsKICAgICAgICAgLy8gV2Ug
YXJlIGZ1bGx5IHNlbGVjdGVkLgogICAgICAgICBzdGFydFBvcyA9IDA7Ci0gICAgICAgIGVuZFBv
cyA9IHRleHRMZW5ndGgoKTsKKyAgICAgICAgZW5kUG9zID0gdGV4dCgpLmxlbmd0aCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHN0YXJ0UG9zID0gdmlldygpLnNlbGVjdGlvbigpLnN0YXJ0UG9z
aXRpb24oKTsKICAgICAgICAgZW5kUG9zID0gdmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9u
KCk7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvblN0YXJ0KQotICAg
ICAgICAgICAgZW5kUG9zID0gdGV4dExlbmd0aCgpOworICAgICAgICAgICAgZW5kUG9zID0gdGV4
dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVj
dGlvbkVuZCkKICAgICAgICAgICAgIHN0YXJ0UG9zID0gMDsKICAgICB9CkBAIC0xNTM5LDM1ICsx
NDk2LDMzIEBAIGJvb2wgUmVuZGVyVGV4dDo6aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIAogaW50
IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogewotICAgIGlm
IChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVNDSUkg
fHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gY3VycmVudCAtIDE7CiAKLSAgICBD
YWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcihtX3RleHQsIFRleHRCcmVha0l0ZXJhdG9y
OjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3Ig
aXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9t
KCkpOwogICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVfb3IoY3Vy
cmVudCAtIDEpOwogfQogCiBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2Fy
ZERlbGV0aW9uKGludCBjdXJyZW50KSBjb25zdAogewotICAgIEFTU0VSVCghbV90ZXh0LmlzTnVs
bCgpKTsKLQotICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yKG1fdGV4dCwgVGV4
dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkRlbGV0ZSwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4
dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6
RGVsZXRlLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJl
bnQpLnZhbHVlX29yKDApOwogfQogCiBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3Vy
cmVudCkgY29uc3QKIHsKLSAgICBpZiAoaXNBbGxBU0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkK
KyAgICBpZiAobV9pc0FsbEFTQ0lJIHx8IHRleHQoKS5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IGN1cnJlbnQgKyAxOwogCi0gICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IobV90
ZXh0LCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOworICAgIENh
Y2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yKHRleHQoKSwgVGV4dEJyZWFrSXRlcmF0b3I6
Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gaXRlcmF0b3IuZm9sbG93aW5n
KGN1cnJlbnQpLnZhbHVlX29yKGN1cnJlbnQgKyAxKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Ojpj
b21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3QKIHsKLSAgICBpZiAoaXNBbGxB
U0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkKKyAgICBpZiAobV9pc0FsbEFTQ0lJIHx8IHRleHQo
KS5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRl
OjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSkgPT0gRm9u
dENhc2NhZGU6OlNpbXBsZTsKKyAgICByZXR1cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdl
Q29kZVBhdGgodGV4dCgpLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6
OlNpbXBsZTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBl
ZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3RlcikKQEAgLTE1
ODIsMTMgKzE1MzcsMTMgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RU
eXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKIAogU3RyaW5nVmlldyBS
ZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzdG9wKSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1
ZV9vcih0ZXh0TGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1
ZV9vcih0ZXh0KCkubGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CiAg
ICAgQVNTRVJUKGRlc3RpbmF0aW9uIDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0g
ZGVzdGluYXRpb24pOwotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcoY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBkZXN0aW5hdGlvbiAtIHN0YXJ0KTsKLSAgICByZXR1
cm4gU3RyaW5nVmlldyhjaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBkZXN0aW5hdGlvbiAtIHN0YXJ0
KTsKKyAgICBpZiAodGV4dCgpLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4geyB0ZXh0KCkuY2hh
cmFjdGVyczgoKSArIHN0YXJ0LCBkZXN0aW5hdGlvbiAtIHN0YXJ0IH07CisgICAgcmV0dXJuIHsg
dGV4dCgpLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQgfTsKIH0K
IAogUmVuZGVySW5saW5lKiBSZW5kZXJUZXh0OjppbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRl
bnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGQ4NmYwYjRiODRm
NGIxNDc0OWE1ZGNiNjhjODM3NGZlZGM1Y2VhZWYuLmY0NjI5MGY1ZGVhYjBhZWJlOWM3YzgyNDBk
MGQ2ZjM5NDU2NjgwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQog
ICogKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw4ICs0Myw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflJlbmRlclRleHQoKTsKIAotICAgIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFRl
eHQqIHRleHROb2RlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQo
KSBjb25zdDsKQEAgLTYzLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNoVGV4dEJv
eChJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMuYXR0YWNoKGJveCk7IH0KICAgICB2
b2lkIHJlbW92ZVRleHRCb3goSW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLnJlbW92
ZShib3gpOyB9CiAKLSAgICBTdHJpbmdJbXBsKiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
LmltcGwoKTsgfQorICAgIFN0cmluZ0ltcGwmIHRleHQoKSBjb25zdCB7IHJldHVybiAqbV90ZXh0
LmltcGwoKTsgfSAvLyBTaW5jZSBtX3RleHQgY2FuIG5ldmVyIGJlIG51bGwsIHJldHVybmluZyB0
aGlzIHR5cGUgbWVhbnMgY2FsbGVycyB3b24ndCBudWxsIGNoZWNrLgogICAgIFN0cmluZyB0ZXh0
V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCgpIGNvbnN0OwogCiAgICAgSW5s
aW5lVGV4dEJveCogY3JlYXRlSW5saW5lVGV4dEJveCgpIHsgcmV0dXJuIG1fbGluZUJveGVzLmNy
ZWF0ZUFuZEFwcGVuZExpbmVCb3goKnRoaXMpOyB9CkBAIC03Miw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBmaW5hbDsKICAgICBWZWN0b3I8SW50UmVjdD4g
YWJzb2x1dGVSZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQg
ZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJv
b2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTZWxlY3Rpb25S
ZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkg
ZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKQEAgLTgwLDM1ICs3OCwzOCBAQCBwdWJs
aWM6CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1YWRzQ2xpcHBlZFRvRWxsaXBz
aXMoKSBjb25zdDsKIAotICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJp
ZGU7CisgICAgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIGZp
bmFsOwogCi0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5p
czhCaXQoKTsgfQotICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dC5pbXBsKCktPmNoYXJhY3RlcnM4KCk7IH0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVyczE2KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7IH0K
ICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgVUNoYXIgdW5jaGVj
a2VkQ2hhcmFjdGVyQXQodW5zaWduZWQpIGNvbnN0OwotICAgIFVDaGFyIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gdW5jaGVja2VkQ2hhcmFjdGVyQXQoaSk7IH0KLSAgICB1
bnNpZ25lZCB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+bGVuZ3Ro
KCk7IH0gLy8gbm9uIHZpcnR1YWwgaW1wbGVtZW50YXRpb24gb2YgbGVuZ3RoKCkKKyAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KKwog
ICAgIHZvaWQgcG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmKTsKIAotICAgIHZpcnR1YWwg
ZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwg
R2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgZmxvYXQgeFBvcywgYm9vbCBmaXJzdExpbmUgPSBmYWxz
ZSwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93
KiA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gbnVsbHB0ciwgR2x5cGhPdmVyZmxvdyogPSBudWxs
cHRyKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIGxlbmd0aCwgZmxvYXQgeFBvcywgYm9vbCBmaXJzdExpbmUgPSBmYWxzZSwgSGFzaFNldDxj
b25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxscHRyLCBHbHlwaE92ZXJmbG93KiA9IG51
bGxwdHIpIGNvbnN0OwogCiAgICAgZmxvYXQgbWluTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAgICAg
ZmxvYXQgbWF4TG9naWNhbFdpZHRoKCkgY29uc3Q7CiAKLSAgICB2b2lkIHRyaW1tZWRQcmVmV2lk
dGhzKGZsb2F0IGxlYWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBi
ZWdpbk1pblcsIGJvb2wmIGJlZ2luV1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCYgZW5kTWluVywgYm9vbCYgZW5kV1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
JiBoYXNCcmVha2FibGVDaGFyLCBib29sJiBoYXNCcmVhaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0JiBiZWdpbk1heFcsIGZsb2F0JiBlbmRNYXhXLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQmIG1pblcsIGZsb2F0JiBtYXhXLCBib29sJiBzdHJpcEZyb250U3Bh
Y2VzKTsKKyAgICBzdHJ1Y3QgV2lkdGhzIHsKKyAgICAgICAgZmxvYXQgbWluIHsgMCB9OworICAg
ICAgICBmbG9hdCBtYXggeyAwIH07CisgICAgICAgIGZsb2F0IGJlZ2luTWluIHsgMCB9OworICAg
ICAgICBmbG9hdCBlbmRNaW4geyAwIH07CisgICAgICAgIGZsb2F0IGJlZ2luTWF4IHsgMCB9Owor
ICAgICAgICBmbG9hdCBlbmRNYXggeyAwIH07CisgICAgICAgIGJvb2wgYmVnaW5XUyB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wgZW5kV1MgeyBmYWxzZSB9OworICAgICAgICBib29sIGhhc0JyZWFr
YWJsZUNoYXIgeyBmYWxzZSB9OworICAgICAgICBib29sIGhhc0JyZWFrIHsgZmFsc2UgfTsKKyAg
ICB9OworICAgIFdpZHRocyB0cmltbWVkUHJlZmVycmVkV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwg
Ym9vbCYgc3RyaXBGcm9udFNwYWNlcyk7CisKICAgICBmbG9hdCBoYW5nYWJsZVB1bmN0dWF0aW9u
U3RhcnRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgZmxvYXQgaGFuZ2FibGVQdW5j
dHVhdGlvbkVuZFdpZHRoKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB1bnNpZ25lZCBmaXJz
dENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbGFz
dENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hhbmdh
YmxlU3RvcE9yQ29tbWEoVUNoYXIpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGlzSGFuZ2FibGVT
dG9wT3JDb21tYShVQ2hhcik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRS
ZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGxpbmVzVmlzdWFs
T3ZlcmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0OwpAQCAtMTE5LDIyICsxMjAsMTcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VGV4dFdpdGhPZmZzZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9yY2UgPSBmYWxzZSk7CiAKICAgICBib29sIGNhbkJl
U2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBmaW5hbDsKLSAgICBMYXlvdXRSZWN0
IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBvdmVycmlk
ZTsKLSAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIHVuc2lnbmVkIGNh
cmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKSBvdmVycmlk
ZTsKIAotICAgIExheW91dFJlY3QgY29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpOworICAgIExheW91dFJl
Y3QgY29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIFZl
Y3RvcjxMYXlvdXRSZWN0PiYpOwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCAwKTsg
fQogICAgIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5SaWdodCgpLCAwKTsgfQogCi0gICAgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBmaW5hbDsKLQogICAgIElubGluZVRleHRCb3gq
IGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmZpcnN0KCk7IH0KICAg
ICBJbmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVz
Lmxhc3QoKTsgfQogCi0gICAgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGNhcmV0TWlu
T2Zmc2V0KCkgY29uc3QgZmluYWw7CisgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgZmlu
YWw7CiAgICAgdW5zaWduZWQgY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1bnNp
Z25lZCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0KHVu
c2lnbmVkKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ2FyZXRPZmZzZXQodW5zaWduZWQpIGNv
bnN0OwpAQCAtMTU5LDExICsxNTUsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IGNyZWF0ZVRl
eHRCb3goKTsgLy8gU3ViY2xhc3NlZCBieSBSZW5kZXJTVkdJbmxpbmVUZXh0LgorICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IGNyZWF0ZVRleHRCb3goKTsKIAogI2lm
IEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgZmxvYXQgY2FuZGlkYXRlQ29tcHV0ZWRUZXh0
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZTsgfQotICAg
IHZvaWQgc2V0Q2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZShmbG9hdCBzKSB7IG1fY2FuZGlkYXRl
Q29tcHV0ZWRUZXh0U2l6ZSA9IHM7IH0KKyAgICB2b2lkIHNldENhbmRpZGF0ZUNvbXB1dGVkVGV4
dFNpemUoZmxvYXQgc2l6ZSkgeyBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUgPSBzaXplOyB9
CiAjZW5kaWYKIAogICAgIHZvaWQgZW5zdXJlTGluZUJveGVzKCk7CkBAIC0xNzQsNyArMTcwLDcg
QEAgcHVibGljOgogCiAgICAgTGF5b3V0VW5pdCB0b3BPZkZpcnN0VGV4dCgpIGNvbnN0OwogICAg
IAotICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBsZW4pIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICAKICAgICBib29sIGNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VTaW1wbGlmaWVk
VGV4dE1lYXN1cmluZzsgfQogCkBAIC0xOTcsMjEgKzE5MywyNCBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIFJlbmRlclRleHQoTm9kZSYsIGNvbnN0IFN0cmluZyYpOwogCisgICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFn
bWVudENvbnRhaW5lciopIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShT
ZWxlY3Rpb25TdGF0ZSkgZmluYWw7CisgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2Nh
bENhcmV0UmVjdChJbmxpbmVCb3gqLCB1bnNpZ25lZCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCog
ZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVj
dCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpOwogCiAgICAgYm9vbCBjb21wdXRlQ2Fu
VXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3Q7CiAgICAgCi0gICAgLy8gTWFrZSBsZW5ndGgo
KSBwcml2YXRlIHNvIHRoYXQgY2FsbGVycyB0aGF0IGhhdmUgYSBSZW5kZXJUZXh0KgotICAgIC8v
IHdpbGwgdXNlIHRoZSBtb3JlIGVmZmljaWVudCB0ZXh0TGVuZ3RoKCkgaW5zdGVhZCwgd2hpbGUK
LSAgICAvLyBjYWxsZXJzIHdpdGggYSBSZW5kZXJPYmplY3QqIGNhbiBjb250aW51ZSB0byB1c2Ug
bGVuZ3RoKCkuCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdGV4
dExlbmd0aCgpOyB9Ci0KICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBv
aW50JiwgSGl0VGVzdEFjdGlvbikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICBmbG9hdCB3aWR0aEZyb21DYWNoZShjb25zdCBGb250Q2FzY2FkZSYs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKLSAgICBib29sIGlzQWxsQVNDSUkoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsQVND
SUk7IH0KICAgICBib29sIGNvbXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZWN1cmVUZXh0KFVDaGFyIG1hc2spOwpAQCAtMjQ0LDI4ICsyNDMsMjMgQEAg
cHJpdmF0ZToKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIHBhcnQgb2YgdGhlIHRleHQgc2l6aW5nIHN0cnVjdHVyZXMg
aW4gRG9jdW1lbnQgaW5zdGVhZC4gVGhhdCB3b3VsZCBzYXZlIHNvbWUgbWVtb3J5LgotICAgIGZs
b2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZTsKKyAgICBmbG9hdCBtX2NhbmRpZGF0ZUNv
bXB1dGVkVGV4dFNpemUgeyAwIH07CiAjZW5kaWYKLSAgICBmbG9hdCBtX21pbldpZHRoOwotICAg
IGZsb2F0IG1fbWF4V2lkdGg7Ci0gICAgZmxvYXQgbV9iZWdpbk1pbldpZHRoOwotICAgIGZsb2F0
IG1fZW5kTWluV2lkdGg7CisgICAgZmxvYXQgbV9taW5XaWR0aCB7IC0xIH07CisgICAgZmxvYXQg
bV9tYXhXaWR0aCB7IC0xIH07CisgICAgZmxvYXQgbV9iZWdpbk1pbldpZHRoIHsgMCB9OworICAg
IGZsb2F0IG1fZW5kTWluV2lkdGggeyAwIH07CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKIAot
aW5saW5lIFVDaGFyIFJlbmRlclRleHQ6OnVuY2hlY2tlZENoYXJhY3RlckF0KHVuc2lnbmVkIGkp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IHRleHRM
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGlzOEJpdCgpID8gY2hhcmFjdGVyczgoKVtpXSA6IGNoYXJh
Y3RlcnMxNigpW2ldOwotfQorU3RyaW5nIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFN0cmluZyYsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKTsKK1N0cmluZyBj
YXBpdGFsaXplKGNvbnN0IFN0cmluZyYsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKTsKK0xpbmVC
cmVha0l0ZXJhdG9yTW9kZSBtYXBMaW5lQnJlYWtUb0l0ZXJhdG9yTW9kZShMaW5lQnJlYWspOwog
CiBpbmxpbmUgVUNoYXIgUmVuZGVyVGV4dDo6Y2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QK
IHsKLSAgICBpZiAoaSA+PSB0ZXh0TGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
cmV0dXJuIHVuY2hlY2tlZENoYXJhY3RlckF0KGkpOworICAgIHJldHVybiBpID49IGxlbmd0aCgp
ID8gMCA6IHRleHQoKVtpXTsKIH0KIAogaW5saW5lIGNvbnN0IFJlbmRlclN0eWxlJiBSZW5kZXJU
ZXh0OjpzdHlsZSgpIGNvbnN0CkBAIC0yOTgsMTAgKzI5Miw2IEBAIGlubGluZSBDb2xvciBSZW5k
ZXJUZXh0OjpzZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIHBh
cmVudCgpLT5zZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpOwogfQogCi12b2lkIGFwcGx5VGV4
dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYsIFN0cmluZyYsIFVDaGFyKTsKLXZvaWQgbWFr
ZUNhcGl0YWxpemVkKFN0cmluZyosIFVDaGFyIHByZXZpb3VzKTsKLUxpbmVCcmVha0l0ZXJhdG9y
TW9kZSBtYXBMaW5lQnJlYWtUb0l0ZXJhdG9yTW9kZShMaW5lQnJlYWspOwotICAgIAogaW5saW5l
IFJlbmRlclRleHQqIFRleHQ6OnJlbmRlcmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oTm9kZTo6cmVuZGVyZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmluZGV4IGYxNWJlZWM3ZGMwZGUzZGFjYjBl
NzZlYjllNTQxNzE1OTNiODg0ZTUuLmRkOWFjYzdkMTAzMjc3NDY4ZDhjOGU1YzI2N2VjMGRkMGIx
ZWQ1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJh
Z21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21l
bnQuY3BwCkBAIC04MCwxMiArODAsMTEgQEAgdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OndpbGxC
ZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyVGV4dDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLXZv
aWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBm
b3JjZSkKK3ZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgbmV3
VGV4dCwgYm9vbCBmb3JjZSkKIHsKLSAgICBSZW5kZXJUZXh0OjpzZXRUZXh0KHRleHQsIGZvcmNl
KTsKLQorICAgIFJlbmRlclRleHQ6OnNldFRleHQobmV3VGV4dCwgZm9yY2UpOwogICAgIG1fc3Rh
cnQgPSAwOwotICAgIG1fZW5kID0gdGV4dExlbmd0aCgpOworICAgIG1fZW5kID0gdGV4dCgpLmxl
bmd0aCgpOwogICAgIGlmICghbV9maXJzdExldHRlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1f
Zmlyc3RMZXR0ZXItPnJlbW92ZUZyb21QYXJlbnRBbmREZXN0cm95KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggNzVlMjFjNWRm
Mzk0ODA2YmE4NDM0MjJmZmE4NThjNjI2N2JlODhkYi4uYmQwMjQzYWQ5NDBhOGY4MzIzMTkwMTUy
YWU3YzFkMjE4ZmU4NDEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRMaW5lQm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0TGluZUJveGVzLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIGludCBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpjYXJldE1heE9mZnNldChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcikgY29uc3QK
IHsKICAgICBhdXRvIGJveCA9IG1fbGFzdDsKICAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJu
IHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQoKS5s
ZW5ndGgoKTsKIAogICAgIGludCBtYXhPZmZzZXQgPSBib3gtPnN0YXJ0KCkgKyBib3gtPmxlbigp
OwogICAgIGZvciAoYm94ID0gYm94LT5wcmV2VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+cHJl
dlRleHRCb3goKSkKQEAgLTM5NSw3ICszOTUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGNy
ZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zmc2V0Rm9yQmlEaShjb25zdCBJbgog
CiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dExpbmVCb3hlczo6cG9zaXRpb25Gb3JQb2ludChj
b25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25z
dAogewotICAgIGlmICghbV9maXJzdCB8fCAhcmVuZGVyZXIudGV4dExlbmd0aCgpKQorICAgIGlm
ICghbV9maXJzdCB8fCAhcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
cmVuZGVyZXIuY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwogCiAgICAgTGF5
b3V0VW5pdCBwb2ludExpbmVEaXJlY3Rpb24gPSBtX2ZpcnN0LT5pc0hvcml6b250YWwoKSA/IHBv
aW50LngoKSA6IHBvaW50LnkoKTsKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIFJlbmRlclRleHRM
aW5lQm94ZXM6OnNldFNlbGVjdGlvblN0YXRlKFJlbmRlclRleHQmIHJlbmRlcmVyLCBSZW5kZXJP
YmplY3Q6OgogICAgIGF1dG8gc3RhcnQgPSByZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuc3Rh
cnRQb3NpdGlvbigpOwogICAgIGF1dG8gZW5kID0gcmVuZGVyZXIudmlldygpLnNlbGVjdGlvbigp
LmVuZFBvc2l0aW9uKCk7CiAgICAgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
U3RhcnQpIHsKLSAgICAgICAgZW5kID0gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICBl
bmQgPSByZW5kZXJlci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIC8vIHRvIGhhbmRsZSBzZWxl
Y3Rpb24gZnJvbSBlbmQgb2YgdGV4dCB0byBlbmQgb2YgbGluZQogICAgICAgICBpZiAoc3RhcnQg
JiYgc3RhcnQgPT0gZW5kKQogICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSAxOwpAQCAtNTY4LDcg
KzU2OCw3IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRl
UXVhZHMoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsCiAKICAgICAgICAgLy8gU2hvcnRlbiB0
aGUgd2lkdGggb2YgdGhpcyB0ZXh0IGJveCBpZiBpdCBlbmRzIGluIGFuIGVsbGlwc2lzLgogICAg
ICAgICAvLyBGSVhNRTogZWxsaXBzaXNSZWN0Rm9yQm94IHNob3VsZCBzd2l0Y2ggdG8gcmV0dXJu
IEZsb2F0UmVjdCBzb29uIHdpdGggdGhlIHN1YnBpeGVsbGF5b3V0IGJyYW5jaC4KLSAgICAgICAg
SW50UmVjdCBlbGxpcHNpc1JlY3QgPSAob3B0aW9uID09IENsaXBUb0VsbGlwc2lzKSA/IGVsbGlw
c2lzUmVjdEZvckJveCgqYm94LCAwLCByZW5kZXJlci50ZXh0TGVuZ3RoKCkpIDogSW50UmVjdCgp
OworICAgICAgICBJbnRSZWN0IGVsbGlwc2lzUmVjdCA9IChvcHRpb24gPT0gQ2xpcFRvRWxsaXBz
aXMpID8gZWxsaXBzaXNSZWN0Rm9yQm94KCpib3gsIDAsIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgo
KSkgOiBJbnRSZWN0KCk7CiAgICAgICAgIGlmICghZWxsaXBzaXNSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldFdpZHRoKGVsbGlwc2lzUmVjdC5tYXhY
KCkgLSBib3VuZGFyaWVzLngoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dC5jcHAKaW5kZXggMWViNDY3Nzc4MWUxM2U2Nzk0ODcwZDcwZTJhZjViMmM3NmM1
MTAwYi4uYzgzNmQxZWM1ZjQ2OTRkZmVkNmNhYTEzMTNmMmY4NDY4YWM5Y2IxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JGb250QW5kVGV4dChj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIEluCiAgICAgYm9vbCBmbG93SXNKdXN0aWZpZWQg
PSBzdHlsZS50ZXh0QWxpZ24oKSA9PSBKVVNUSUZZOwogICAgIGZvciAoY29uc3QgYXV0byYgdGV4
dFJlbmRlcmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdykpIHsKICAgICAgICAg
Ly8gRklYTUU6IERvIG5vdCByZXR1cm4gdW50aWwgYWZ0ZXIgY2hlY2tpbmcgYWxsIGNoaWxkcmVu
LgotICAgICAgICBpZiAoIXRleHRSZW5kZXJlci50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmICh0
ZXh0UmVuZGVyZXIudGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5E
X1JFVFVSTl9JRl9ORUVERUQoRmxvd1RleHRJc0VtcHR5LCByZWFzb25zLCBpbmNsdWRlUmVhc29u
cyk7CiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIuaXNDb21iaW5lVGV4dCgpKQogICAgICAgICAg
ICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93VGV4dElzQ29tYmluZVRleHQs
IHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKaW5kZXggYTkxNjA0NWU0YmFlODU2
OTBjNTIwNmI2N2Y1MjUwYjdmMjU4YmY1Zi4uYjI5MjM1YjYzNzRjN2MzNTgwZWQ1M2EyMGMzYThj
OTk2NWFlMGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRDb3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgdm9pZCBw
cmludFRleHRGb3JTdWJ0cmVlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVk
JiBjaGFyYWN0ZQogc3RhdGljIHVuc2lnbmVkIHRleHRMZW5ndGhGb3JTdWJ0cmVlKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0TGVu
Z3RoKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4
dCgpLmxlbmd0aCgpOwogICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gMDsKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgdW5zaWduZWQgdGV4dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlcikKIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJC
bG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEhhc2hTZXQ8Y29uc3QgUmVu
ZGVyQmxvY2tGbG93Kj4mIGxlYWZSZW5kZXJlcnMpCiB7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+
KHJlbmRlcmVyKSkgewotICAgICAgICBpZiAoIWRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVy
KS50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmICghZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gRmlu
ZCBSZW5kZXJCbG9ja0Zsb3cgYW5jZXN0b3IuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byogY3Vy
cmVudCA9IHJlbmRlcmVyLnBhcmVudCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFy
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAppbmRleCAxOGU1YjY0YmQ5NzYxZGUxOWYxMjlmMGQ4
Y2NmYTNiYWFkYzQzYzc3Li4yOWIzNmEwZjMyNzVhNWU2MDAwYzIzMDc5OGYyMTUwODk0ZGRlYTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGbG93Q29udGVudHMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBWZWN0b3I8Rmxv
d0NvbnRlbnRzOjpTZWdtZW50PiBpbml0aWFsaXplU2VnbWVudHMoY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBmCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVj
dD4oZmxvdykpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkKSkgewogICAgICAg
ICAgICAgYXV0byYgdGV4dENoaWxkID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGQpOwotICAg
ICAgICAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IHRleHRDaGlsZC50ZXh0KCktPmxlbmd0aCgp
OworICAgICAgICAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IHRleHRDaGlsZC50ZXh0KCkubGVu
Z3RoKCk7CiAgICAgICAgICAgICBzZWdtZW50cy5hcHBlbmQoRmxvd0NvbnRlbnRzOjpTZWdtZW50
IHsgc3RhcnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbiArIHRleHRMZW5ndGgsIHRleHRDaGlsZC50
ZXh0KCksCiAgICAgICAgICAgICAgICAgdGV4dENoaWxkLCB0ZXh0Q2hpbGQuY2FuVXNlU2ltcGxp
ZmllZFRleHRNZWFzdXJpbmcoKSB9KTsKICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gKz0gdGV4
dExlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCAwNmI2MWNjNzU2NWYxYjlkMjdlMGZmMjUwOGFjMDYy
ODYzN2RjNjMyLi5lNTQzNTJkZmI2YjkwY2MyOTRmOGE0MTBjOGQ1OWJhMmM1YjU4ODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdW5zaWduZWQgdGV4dE9mZnNldEZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIKICAg
ICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2ZXIoZmxvdywgbGF5b3V0KTsKICAgICBhdXRvIGl0
ID0gcmVzb2x2ZXIucnVuRm9yUG9pbnQocG9pbnQpOwogICAgIGlmIChpdCA9PSByZXNvbHZlci5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKICAgICBhdXRvIHJ1biA9ICppdDsKICAgICBh
dXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUoKTsKICAgICBUZXh0UnVuIHRleHRSdW4ocnVuLnRleHQo
KSwgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5leHBhbnNpb24oKSwgcnVuLmV4cGFuc2lvbkJlaGF2
aW9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0RnVuY3Rpb25zLmgKaW5kZXggMDY0MWYzNzdjMDM3NGEyNzQxOTIyZDA3MmIyZTBlNTUyN2Mw
M2ZjNi4uM2U4Yjg3Y2JhNTQ3MzZlZmM5NjQ1NjAwYjBhOTg3NDEyN2ViNGVmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5o
CkBAIC0xMDYsNyArMTA2LDcgQEAgaW5saW5lIHVuc2lnbmVkIGZpbmRDYXJldE1pbmltdW1PZmZz
ZXQoY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IExheW91dCYgbGF5b3V0KQogaW5saW5lIHVuc2ln
bmVkIGZpbmRDYXJldE1heGltdW1PZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNv
bnN0IExheW91dCYgbGF5b3V0KQogewogICAgIGlmICghbGF5b3V0LnJ1bkNvdW50KCkpCi0gICAg
ICAgIHJldHVybiByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgICAgIHJldHVybiByZW5kZXJl
ci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgYXV0byYgbGFzdCA9IGxheW91dC5ydW5BdChsYXlvdXQu
cnVuQ291bnQoKSAtIDEpOwogICAgIHJldHVybiBsYXN0LmVuZDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggMDU2NjAxZTVkZjVk
ZDUzOTM0NzI0ZWE3ZGViOGM4M2RkYjIwMDQyYy4uN2YxYmExYzRlNGE1YzI2MGVkNjhiNDQwZjNl
ZGQ4NDc5MmI5YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmgKQEAgLTM4OSw3ICszODksNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRBZGRC
b3JkZXJQYWRkaW5nTWFyZ2luKFJlbmRlck9iamVjdCogY2hpbGQpCiAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgLy8gV2hlbiBkZWNpZGluZyB3aGV0aGVyIHdlJ3Jl
IGF0IHRoZSBlZGdlIG9mIGFuIGlubGluZSwgYWRqYWNlbnQgY29sbGFwc2VkIHdoaXRlc3BhY2Ug
aXMgdGhlIHNhbWUgYXMgbm8gc2libGluZyBhdCBhbGwuCi0gICAgaWYgKGlzPFJlbmRlclRleHQ+
KCpjaGlsZCkgJiYgIWRvd25jYXN0PFJlbmRlclRleHQ+KCpjaGlsZCkudGV4dExlbmd0aCgpKQor
ICAgIGlmIChpczxSZW5kZXJUZXh0PigqY2hpbGQpICYmICFkb3duY2FzdDxSZW5kZXJUZXh0Pigq
Y2hpbGQpLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxF
KENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPigq
Y2hpbGQpICYmIGNoaWxkLT5wYXJlbnQoKS0+c3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9
PSBEQ0xPTkUpCkBAIC00ODIsNyArNDgyLDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkU2tpcFdoaXRl
c3BhY2VBZnRlclN0YXJ0T2JqZWN0KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIFJlbmRlck8KICAg
ICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CiAgICAgICAgIG5leHQgPSBiaWRpTmV4dFNraXBwaW5nRW1wdHlJbmxpbmVzKGJsb2NrLCBuZXh0
KTsKIAotICAgIGlmIChpczxSZW5kZXJUZXh0PihuZXh0KSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0
PigqbmV4dCkudGV4dExlbmd0aCgpID4gMCkgeworICAgIGlmIChpczxSZW5kZXJUZXh0PihuZXh0
KSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0PigqbmV4dCkudGV4dCgpLmxlbmd0aCgpID4gMCkgewog
ICAgICAgICBSZW5kZXJUZXh0JiBuZXh0VGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0
KTsKICAgICAgICAgVUNoYXIgbmV4dENoYXIgPSBuZXh0VGV4dC5jaGFyYWN0ZXJBdCgwKTsKICAg
ICAgICAgaWYgKG5leHRUZXh0LnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UobmV4dENo
YXIpKSB7CkBAIC01OTIsNyArNTkyLDcgQEAgaW5saW5lIGZsb2F0IGZpcnN0UG9zaXRpdmVXaWR0
aChjb25zdCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogCiBpbmxpbmUgYm9v
bCBpdGVyYXRvcklzQmV5b25kRW5kT2ZSZW5kZXJDb21iaW5lVGV4dChjb25zdCBJbmxpbmVJdGVy
YXRvciYgaXRlciwgUmVuZGVyQ29tYmluZVRleHQmIHJlbmRlcmVyKQogewotICAgIHJldHVybiBp
dGVyLnJlbmRlcmVyKCkgPT0gJnJlbmRlcmVyICYmIGl0ZXIub2Zmc2V0KCkgPj0gcmVuZGVyZXIu
dGV4dExlbmd0aCgpOworICAgIHJldHVybiBpdGVyLnJlbmRlcmVyKCkgPT0gJnJlbmRlcmVyICYm
IGl0ZXIub2Zmc2V0KCkgPj0gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogfQogCiBpbmxpbmUg
dm9pZCBuZXh0Q2hhcmFjdGVyKFVDaGFyJiBjdXJyZW50Q2hhcmFjdGVyLCBVQ2hhciYgbGFzdENo
YXJhY3RlciwgVUNoYXImIHNlY29uZFRvTGFzdENoYXJhY3RlcikKQEAgLTYyMSw3ICs2MjEsNyBA
QCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRXaWR0aChSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IHRleHQuc3R5bGUoKTsKIAogICAgIEdseXBoT3ZlcmZsb3cgZ2x5cGhPdmVyZmxvdzsKLSAgICBp
ZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAmJiBsZW4gPT0gdGV4dC50ZXh0TGVuZ3RoKCkpIHx8
IHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCisgICAgaWYgKGlzRml4ZWRQaXRjaCB8fCAoIWZyb20g
JiYgbGVuID09IHRleHQudGV4dCgpLmxlbmd0aCgpKSB8fCBzdHlsZS5oYXNUZXh0Q29tYmluZSgp
KQogICAgICAgICByZXR1cm4gdGV4dC53aWR0aChmcm9tLCBsZW4sIGZvbnQsIHhQb3MsICZmYWxs
YmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdyk7CiAKICAgICBpZiAobGF5b3V0KQpAQCAtNzY1LDcg
Kzc2NSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVh
c3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgYm9vbCBjYW5IYW5nUHVuY3R1
YXRpb25BdFN0YXJ0ID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBGaXJzdEhhbmdpbmdQ
dW5jdHVhdGlvbjsKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0gc3R5bGUuaGFu
Z2luZ1B1bmN0dWF0aW9uKCkgJiBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2Fu
SGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBB
bGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbjsKLSAgICBpbnQgZW5kUHVuY3R1YXRpb25JbmRleCA9
IGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIG1fY29sbGFwc2VXaGl0ZVNwYWNlID8gcmVuZGVy
VGV4dC5sYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6IHJlbmRlclRleHQudGV4
dExlbmd0aCgpIC0gMTsKKyAgICBpbnQgZW5kUHVuY3R1YXRpb25JbmRleCA9IGNhbkhhbmdQdW5j
dHVhdGlvbkF0RW5kICYmIG1fY29sbGFwc2VXaGl0ZVNwYWNlID8gcmVuZGVyVGV4dC5sYXN0Q2hh
cmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgp
IC0gMTsKICAgICB1bnNpZ25lZCBsYXN0U3BhY2UgPSBtX2N1cnJlbnQub2Zmc2V0KCk7CiAgICAg
ZmxvYXQgd29yZFNwYWNpbmcgPSBtX2N1cnJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS53b3JkU3Bh
Y2luZygpOwogICAgIGZsb2F0IGxhc3RTcGFjZVdvcmRTcGFjaW5nID0gMDsKQEAgLTgxMCw3ICs4
MTAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgIC8vIHdvcmRzIHdpdGggdGhlaXIg
dHJhaWxpbmcgc3BhY2UsIHRoZW4gc3VidHJhY3QgaXRzIHdpZHRoLgogICAgIFRleHRMYXlvdXQq
IHRleHRMYXlvdXQgPSBtX3JlbmRlclRleHRJbmZvLmxheW91dC5nZXQoKTsKICAgICBXb3JkVHJh
aWxpbmdTcGFjZSB3b3JkVHJhaWxpbmdTcGFjZShzdHlsZSwgIXRleHRMYXlvdXQpOwotICAgIGZv
ciAoOyBtX2N1cnJlbnQub2Zmc2V0KCkgPCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKTsgbV9jdXJy
ZW50LmZhc3RJbmNyZW1lbnRJblRleHROb2RlKCkpIHsKKyAgICBmb3IgKDsgbV9jdXJyZW50Lm9m
ZnNldCgpIDwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCk7IG1fY3VycmVudC5mYXN0SW5jcmVt
ZW50SW5UZXh0Tm9kZSgpKSB7CiAgICAgICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNl
ID0gbV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZTsKICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJh
Y3RlcklzV1MgPSBtX2N1cnJlbnRDaGFyYWN0ZXJJc1dTOwogICAgICAgICBVQ2hhciBjID0gbV9j
dXJyZW50LmN1cnJlbnQoKTsKQEAgLTg0MCw3ICs4NDAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywg
Ym9vbAogCiAgICAgICAgIGlmICgoYnJlYWtBbGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRC
cmVhayAmJiAoIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgp
ICE9IFBSRV9XUkFQKSkgewogICAgICAgICAgICAgd3JhcFcgKz0gY2hhcldpZHRoOwotICAgICAg
ICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVB
RChjKSAmJiBtX2N1cnJlbnQub2Zmc2V0KCkgKyAxIDwgcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkg
JiYgVTE2X0lTX1RSQUlMKHJlbmRlclRleHRbbV9jdXJyZW50Lm9mZnNldCgpICsgMV0pOworICAg
ICAgICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNf
TEVBRChjKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4dC5jaGFyYWN0ZXJBdChtX2N1cnJlbnQu
b2Zmc2V0KCkgKyAxKSk7CiAgICAgICAgICAgICBjaGFyV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVy
VGV4dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBh
aXIgPyAyIDogMSwgZm9udCwgbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4
ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQp
OwogICAgICAgICAgICAgbWlkV29yZEJyZWFrID0gbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsg
d3JhcFcgKyBjaGFyV2lkdGggPiBtX3dpZHRoLmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIH0K
QEAgLTkyOSw3ICs5MjksNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRl
eHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCB0cnkgdG8gaHlwaGVuYXRlIGF0IHRoZSBmaW5hbCBicmVhayBvZiBh
IGJsb2NrLCBzaW5jZSB0aGlzIG1lYW5zIHRoZXJlIGlzCiAgICAgICAgICAgICAgICAgICAgIC8v
IG5vIG1vcmUgY29udGVudCwgYW5kIGEgaHlwaGVuYXRlZCBzaW5nbGUgd29yZCB3b3VsZCBlbmQg
dXAgb24gYSBsaW5lIGJ5IGl0c2VsZi4gVGhpcyBsb29rcwogICAgICAgICAgICAgICAgICAgICAv
LyBiYWQgc28ganVzdCBkb24ndCBhbGxvdyBpdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNh
bkh5cGhlbmF0ZSAmJiAhbV93aWR0aC5maXRzT25MaW5lKCkgJiYgKG1fbmV4dE9iamVjdCB8fCAh
cmVuZGVyVGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKG1fY3VycmVudC5vZmZzZXQoKSwgcmVu
ZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSBtX2N1cnJlbnQub2Zmc2V0KCkpIHx8IGlzTGluZUVtcHR5
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVuYXRlICYmICFtX3dpZHRoLmZp
dHNPbkxpbmUoKSAmJiAobV9uZXh0T2JqZWN0IHx8ICFyZW5kZXJUZXh0LmNvbnRhaW5zT25seUhU
TUxXaGl0ZXNwYWNlKG1fY3VycmVudC5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3Ro
KCkgLSBtX2N1cnJlbnQub2Zmc2V0KCkpIHx8IGlzTGluZUVtcHR5KSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9saW5lQnJlYWtIaXN0b3J5LnB1c2goWyZdKElubGluZUl0ZXJhdG9yJiBt
b2RpZnlNZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeUh5cGhlbmF0aW5nKHJl
bmRlclRleHQsIGZvbnQsIHN0eWxlLmxvY2FsZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2Us
IG1fY3VycmVudC5vZmZzZXQoKSwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxU
ZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxh
cHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNlV29yZFNwYWNpbmcsIG1vZGlmeU1lLCBtX2N1cnJlbnQu
bmV4dEJyZWFrYWJsZVBvc2l0aW9uKCksIG1fbGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwpAQCAtOTY1LDcgKzk2NSw3IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckJl
Zm9yZUJyZWFraW5nUG9zaXRpb24gPSBsYXN0Q2hhcmFjdGVyRnJvbVByZXZpb3VzUmVuZGVyVGV4
dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0Pihy
ZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgdGV4dFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJl
bmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSA+PSAxICYmIHRleHRSZW5kZXJl
ci50ZXh0TGVuZ3RoKCkgPiAobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpIC0gMSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGFzdEJyZWFraW5nUG9zaXRvbi52
YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKSA+IChsYXN0QnJlYWtp
bmdQb3NpdG9uLnZhbHVlKCkgLSAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24gPSB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVy
QXQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJCZWZv
cmVCcmVha2luZ1Bvc2l0aW9uKQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgaW5saW5lIGJvb2wgQnJl
YWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMsIGJvb2wKICAgICAgICAgICAgIGlmIChtX25leHRPYmplY3QgJiYgbV9zdGFydE9mSWdub3Jl
ZFNwYWNlcy5vZmZzZXQoKSAmJiBtX25leHRPYmplY3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0eWxl
LnRleHRBbGlnbigpID09IFJJR0hUIHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJL
SVRfUklHSFQpKSB7CiAgICAgICAgICAgICAgICAgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5zZXRP
ZmZzZXQobV9zdGFydE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAtIDEpOwogICAgICAgICAgICAg
ICAgIC8vIElmIHRoZXJlJ3MganVzdCBhIHNpbmdsZSB0cmFpbGluZyBzcGFjZSBzdGFydCBpZ25v
cmluZyBpdCBub3cgc28gaXQgY29sbGFwc2VzIGF3YXkuCi0gICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudC5vZmZzZXQoKSA9PSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAtIDEpCisgICAgICAg
ICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZzZXQoKSA9PSByZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKSAtIDEpCiAgICAgICAgICAgICAgICAgICAgIG1fbGluZVdoaXRlc3BhY2VDb2xsYXBzaW5n
U3RhdGUuc3RhcnRJZ25vcmluZ1NwYWNlcyhtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMTMxMywxMyArMTMxMywxMyBAQCBpbmxpbmUgSW5saW5l
SXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFp
bGluZ1dvcmQoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIFJlbmRlclRleHQmIHJl
bmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbGluZUJyZWFrLnJlbmRlcmVyKCkpOwog
ICAgIC8vIERvbid0IGV2ZW4gYm90aGVyIG1lYXN1cmluZyBpZiBvdXIgcmVtYWluaW5nIGxpbmUg
aGFzIG1hbnkgY2hhcmFjdGVycwotICAgIGlmIChyZW5kZXJUZXh0LnRleHRMZW5ndGgoKSA9PSBs
aW5lQnJlYWsub2Zmc2V0KCkgfHwgcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSBsaW5lQnJlYWsu
b2Zmc2V0KCkgPiBsb25nVHJhaWxpbmdXb3JkTGVuZ3RoKQorICAgIGlmIChyZW5kZXJUZXh0LnRl
eHQoKS5sZW5ndGgoKSA9PSBsaW5lQnJlYWsub2Zmc2V0KCkgfHwgcmVuZGVyVGV4dC50ZXh0KCku
bGVuZ3RoKCkgLSBsaW5lQnJlYWsub2Zmc2V0KCkgPiBsb25nVHJhaWxpbmdXb3JkTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIGJvb2wgY2FuVXNlTGluZUJyZWFrU2hvcnRj
dXQgPSBtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLm1vZGUoKSA9PSBMaW5lQnJl
YWtJdGVyYXRvck1vZGU6OkRlZmF1bHQ7CiAgICAgYm9vbCBicmVha05CU1AgPSBtX2F1dG9XcmFw
ICYmIG1fY3VycmVudFN0eWxlLT5uYnNwTW9kZSgpID09IFNQQUNFOwogICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWth
YmxlUG9zaXRpb24oKTsKICAgICBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVh
a0l0ZXJhdG9yLCBsaW5lQnJlYWsub2Zmc2V0KCkgKyAxLCBuZXh0QnJlYWthYmxlUG9zaXRpb24s
IGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIG1fY3VycmVudFN0eWxlLT53b3Jk
QnJlYWsoKSA9PSBLZWVwQWxsV29yZEJyZWFrKTsKLSAgICBpZiAoIW5leHRCcmVha2FibGVQb3Np
dGlvbiB8fCBuZXh0QnJlYWthYmxlUG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJUZXh0LnRleHRM
ZW5ndGgoKSkKKyAgICBpZiAoIW5leHRCcmVha2FibGVQb3NpdGlvbiB8fCBuZXh0QnJlYWthYmxl
UG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIGxpbmVCcmVhazsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBsaW5lU3R5
bGUocmVuZGVyVGV4dCwgbV9saW5lSW5mbyk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQg
PSBzdHlsZS5mb250Q2FzY2FkZSgpOwpAQCAtMTMyOSw3ICsxMzI5LDcgQEAgaW5saW5lIElubGlu
ZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJh
aWxpbmdXb3JkKCkKICAgICAgICAgY29uc3QgSW5saW5lSXRlcmF0b3ImIGNhbmRpZGF0ZSA9IG1f
bGluZUJyZWFrSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgIGlmIChjYW5kaWRhdGUucmVuZGVyZXIo
KSAhPSBsaW5lQnJlYWsucmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybiBiZXN0OwotICAg
ICAgICBmbG9hdCB3aWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBjYW5kaWRhdGUub2Zmc2V0
KCksIHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0gY2FuZGlkYXRlLm9mZnNldCgpLCBmb250LCAw
LCBmb250LmlzRml4ZWRQaXRjaCgpLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgZHVtbXlGb250cyk7
CisgICAgICAgIGZsb2F0IHdpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGNhbmRpZGF0ZS5v
ZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSBjYW5kaWRhdGUub2Zmc2V0KCks
IGZvbnQsIDAsIGZvbnQuaXNGaXhlZFBpdGNoKCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBkdW1t
eUZvbnRzKTsKICAgICAgICAgaWYgKHdpZHRoID4gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgICAgIGlmICh3aWR0aCAvIG1fd2lkdGguYXZh
aWxhYmxlV2lkdGgoKSA+IG9wdGltYWxUcmFpbGluZ0xpbmVSYXRpbykgLy8gU3Vic2VxdWVudCBs
aW5lIGlzIGxvbmcgZW5vdWdoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9UcmFpbGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
VHJhaWxpbmdPYmplY3RzLmNwcAppbmRleCAxMWNlMmI2ZjYxNDA4ZTg3NTliZTlkN2JmZTRkZWNi
MTM3MTc4YmY1Li41NGYwYjUzNDAzNDJmODAzY2E4ZmI2NDA4OGRkOTRhNDI3NTA0Mjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBUcmFpbGluZ09iamVjdHM6OnVwZGF0ZVdoaXRlc3BhY2VD
b2xsYXBzaW5nVHJhbnNpdGlvbnNGb3JUcmFpbGluZ0JveGVzKExpbmUKICAgICAgICAgQVNTRVJU
KG1fd2hpdGVzcGFjZS0+aXNUZXh0KCkpOwogICAgICAgICBBU1NFUlQoY29sbGFwc2VGaXJzdFNw
YWNlID09IENvbGxhcHNlRmlyc3RTcGFjZSk7CiAgICAgICAgIC8vIEFkZCBhIG5ldyBlbmQgdHJh
bnNpdGlvbiB0aGF0IHN0b3BzIHJpZ2h0IGF0IHRoZSB2ZXJ5IGVuZC4KLSAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gbV93aGl0ZXNwYWNlLT50ZXh0TGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IG1fd2hpdGVzcGFjZS0+dGV4dCgpLmxlbmd0aCgpOwogICAgICAgICB1bnNpZ25l
ZCBwb3MgPSBsZW5ndGggPj0gMiA/IGxlbmd0aCAtIDIgOiBVSU5UX01BWDsKICAgICAgICAgSW5s
aW5lSXRlcmF0b3IgZW5kTWlkKDAsIG1fd2hpdGVzcGFjZSwgcG9zKTsKICAgICAgICAgbGluZVdo
aXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUuc3RhcnRJZ25vcmluZ1NwYWNlcyhlbmRNaWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuY3BwCmluZGV4IGVjMWEwMTI1ZjAwOTE0OTcyOTQwZDNmYmU3ZTgzYzg1ODU0N2UyMjIuLjI4
ZmFmZGI1M2YzNzIxNjBlZjQ5N2Y5YWNmN2NiYjg4ZDA1NmQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICBhdXRvJiBzZXBhcmF0b3JzID0gZmVuY2VkLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oTWF0aE1MTmFtZXM6OnNlcGFyYXRvcnNBdHRyKTsKICAgICBpZiAoIXNlcGFyYXRv
cnMuaXNOdWxsKCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBjaGFyYWN0ZXJzOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNlcGFyYXRvcnMubGVuZ3RoKCk7IGkrKykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VwYXJhdG9ycy5sZW5ndGgoKTsg
aSsrKSB7CiAgICAgICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoc2VwYXJhdG9yc1tpXSkp
CiAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy5hcHBlbmQoc2VwYXJhdG9yc1tpXSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwCmluZGV4IDI5ZmRhNDYxNDE5YzAyZTJiYjkxZDE4ZTE2Y2RlMmY4YmQxODE1
MTkuLjNiYWM5Y2E1ZDBhZTMzYTUwNTgyMzk3M2QxMTNmNDY1ZmJkOTkzNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApA
QCAtMTU1LDcgKzE1NSw3IEBAIEludFJlY3QgUmVuZGVyU1ZHSW5saW5lVGV4dDo6bGluZXNCb3Vu
ZGluZ0JveCgpIGNvbnN0CiBib29sIFJlbmRlclNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0
c05ld1RleHRDaHVuayhpbnQgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBvc2l0aW9u
ID49IDApOwotICAgIEFTU0VSVChwb3NpdGlvbiA8IHN0YXRpY19jYXN0PGludD4odGV4dExlbmd0
aCgpKSk7CisgICAgQVNTRVJUKHBvc2l0aW9uIDwgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0KCkubGVu
Z3RoKCkpKTsKIAogICAgIC8vIEVhY2ggPHRleHRQYXRoPiBlbGVtZW50IHN0YXJ0cyBhIG5ldyB0
ZXh0IGNodW5rLCByZWdhcmRsZXNzIG9mIGFueSB4L3kgdmFsdWVzLgogICAgIGlmICghcG9zaXRp
b24gJiYgcGFyZW50KCktPmlzU1ZHVGV4dFBhdGgoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkpCkBA
IC0xNzAsNyArMTcwLDcgQEAgYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFy
dHNOZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9uKSBjb25zdAogCiBWaXNpYmxlUG9zaXRpb24gUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikKIHsKLSAgICBpZiAoIWZpcnN0VGV4
dEJveCgpIHx8ICF0ZXh0TGVuZ3RoKCkpCisgICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERP
V05TVFJFQU0pOwogCiAgICAgZmxvYXQgYmFzZWxpbmUgPSBtX3NjYWxlZEZvbnQuZm9udE1ldHJp
Y3MoKS5mbG9hdEFzY2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCmluZGV4IDJj
MDY4YjljMzk4YTYzNDY5Zjc3YjcwYzQ5Yjg4NWNmNTA5NTk5MDAuLjVlOTk5Mzg2MjlkYjM5YzMw
ZjY2MTUyMzJiZTgyNzRmNDI3NTg3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAK
QEAgLTgwLDE3ICs4MCwyMCBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6
cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saQogCiBzdGF0aWMgaW5s
aW5lIHZvaWQgcHJvY2Vzc1JlbmRlclNWR0lubGluZVRleHQoY29uc3QgUmVuZGVyU1ZHSW5saW5l
VGV4dCYgdGV4dCwgdW5zaWduZWQmIGF0Q2hhcmFjdGVyLCBib29sJiBsYXN0Q2hhcmFjdGVyV2Fz
U3BhY2UpCiB7CisgICAgYXV0byYgc3RyaW5nID0gdGV4dC50ZXh0KCk7CisgICAgYXV0byBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgaWYgKHRleHQuc3R5bGUoKS53aGl0ZVNwYWNlKCkg
PT0gUFJFKSB7Ci0gICAgICAgIGF0Q2hhcmFjdGVyICs9IHRleHQudGV4dExlbmd0aCgpOworICAg
ICAgICBhdENoYXJhY3RlciArPSBsZW5ndGg7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIHRleHRQb3NpdGlvbiA9IDAsIHRleHRMZW5ndGggPSB0ZXh0LnRleHRM
ZW5ndGgoKTsgdGV4dFBvc2l0aW9uIDwgdGV4dExlbmd0aDsgKyt0ZXh0UG9zaXRpb24pIHsKLSAg
ICAgICAgY29uc3QgVUNoYXIgY3VycmVudENoYXJhY3RlciA9IHRleHRbdGV4dFBvc2l0aW9uXTsK
LSAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJyAnICYmIGxhc3RDaGFyYWN0ZXJXYXNT
cGFjZSkKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSB3aGl0ZXNwYWNlIGNv
bGxhcHNpbmcgaW1wbGVtZW50YXRpb247IGl0IGRvZXNuJ3QgaGFuZGxlIG5ld2xpbmVzIG9yIHRh
YnMuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
IFVDaGFyIGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAn
ICcgJiYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgbGFzdENoYXJhY3Rlcldhc1NwYWNlID0gY3VycmVudENoYXJhY3RlciA9PSAnICc7Cisg
ICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSA9IGNoYXJhY3RlciA9PSAnICc7CiAgICAgICAg
ICsrYXRDaGFyYWN0ZXI7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKaW5kZXggNjYwZTg2YTMyYTgxZDRkZTRj
M2NiNTI2MzI2MmFlMjNmYmNhNTU4Yy4uMjMzMzcwMWQyNDM2ZDEwNDA4NzI5NmNlMjkzN2YzMWMx
YTQwNjU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRFbmdpbmUuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgYm9vbCBTVkdUZXh0TGF5b3V0
RW5naW5lOjpjdXJyZW50TG9naWNhbENoYXJhY3RlckF0dHJpYnV0ZXMoU1ZHVGV4dExheW91dEF0
dHJpYnUKICAgICBsb2dpY2FsQXR0cmlidXRlcyA9IG1fbGF5b3V0QXR0cmlidXRlc1ttX2xheW91
dEF0dHJpYnV0ZXNQb3NpdGlvbl07CiAgICAgQVNTRVJUKGxvZ2ljYWxBdHRyaWJ1dGVzKTsKIAot
ICAgIGlmIChtX2xvZ2ljYWxDaGFyYWN0ZXJPZmZzZXQgIT0gbG9naWNhbEF0dHJpYnV0ZXMtPmNv
bnRleHQoKS50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKG1fbG9naWNhbENoYXJhY3Rlck9mZnNldCAh
PSBsb2dpY2FsQXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICArK21fbGF5b3V0QXR0cmlidXRlc1Bvc2l0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCmluZGV4IDg2ZTRiZjJm
M2Q1MWVjZmRjMmY4OGFjMDU1ODQ4MjhiNzJlZWFmNzYuLmZkODkwMjI5NGI2YTAwNGNhNTA1ODZm
NTdhYmE2NDRiNmUwM2U1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dFF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRRdWVyeS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNWR1RleHRRdWVyeTo6bW9k
aWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwg
dQogICAgIHVuc2lnbmVkIHRleHRNZXRyaWNzU2l6ZSA9IHRleHRNZXRyaWNzVmFsdWVzLnNpemUo
KTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9uT2Zmc2V0ID0gMDsKLSAgICB1bnNpZ25lZCBwb3Np
dGlvblNpemUgPSBsYXlvdXRBdHRyaWJ1dGVzLT5jb250ZXh0KCkudGV4dExlbmd0aCgpOworICAg
IHVuc2lnbmVkIHBvc2l0aW9uU2l6ZSA9IGxheW91dEF0dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0
KCkubGVuZ3RoKCk7CiAKICAgICBib29sIGFsdGVyU3RhcnRQb3NpdGlvbiA9IHRydWU7CiAgICAg
Ym9vbCBhbHRlckVuZFBvc2l0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcAppbmRleCA3MzMxMTA5YWY1YTA1ZmE3MzgxNGZlMzZiYmUyNzYxMTcz
NDY0NGJjLi5jYzM5ZjIyM2RmMWU3Nzg5ODlkMzI2MmUxZTU0OTJiNWVmMzQ3OGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCkBAIC0xNzUsNyArMTc2LDcg
QEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2Rl
JiByb290KQogICAgICAgICAgICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwog
ICAgICAgICAgICAgYXV0byogdGV4dFVwZGF0ZSA9IG1fc3R5bGVVcGRhdGUtPnRleHRVcGRhdGUo
dGV4dCk7CiAgICAgICAgICAgICBib29sIGRpZENyZWF0ZVBhcmVudCA9IHBhcmVudCgpLnVwZGF0
ZXMgJiYgcGFyZW50KCkudXBkYXRlcy0+dXBkYXRlLmNoYW5nZSA9PSBTdHlsZTo6RGV0YWNoOwot
ICAgICAgICAgICAgYm9vbCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJl
bmRlcmluZ1BhcmVudCgpLmRpZENyZWF0ZU9yRGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5j
b250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBib29sIG1heU5lZWRVcGRhdGVX
aGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0
cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
SFRNTFNwYWNlPigpOwogICAgICAgICAgICAgaWYgKGRpZENyZWF0ZVBhcmVudCB8fCB0ZXh0VXBk
YXRlIHx8IG1heU5lZWRVcGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyKQogICAgICAgICAgICAg
ICAgIHVwZGF0ZVRleHRSZW5kZXJlcih0ZXh0LCB0ZXh0VXBkYXRlKTsKIApAQCAtNDA4LDcgKzQw
OSw3IEBAIGJvb2wgUmVuZGVyVHJlZVVwZGF0ZXI6OnRleHRSZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFRleHQmIHRleHROb2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoIXRleHROb2Rl
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF0ZXh0Tm9kZS5jb250
YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKCF0ZXh0Tm9kZS5kYXRhKCkuaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmluZ1BhcmVudC5wcmV2aW91c0NoaWxkUmVuZGVyZXIp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDgzNGMw
ZTNkOThlOGIyZGU1ZDk4MGFmYWZlNzYzNWYyNDM3ZTFmMGQuLjU5N2NlZGQ3YzBhYWQzZTY3MzBm
YjM4MDUxNTZhNTUwNzkzMDM4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMjUxLDgg
KzI1MSw4IEBAIGJvb2wgU1ZHVGVzdHM6Omhhc0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhjb25z
dCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYKICAgICAvLyBUaGlzIGlzIHdoYXQgdGhl
IERPTUltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIG5vdyBkb2VzIGluIEphdmFTY3JpcHQgYXMgaXMg
bm93IHN1Z2dlc3RlZCBpbiB0aGUgRE9NIHNwZWNpZmljYXRpb24uCiAgICAgLy8gVGhlIGJlaGF2
aW9yIGltcGxlbWVudGVkIGJlbG93IGlzIHF1aXJreSwgYnV0IHByZXNlcnZlcyB3aGF0IFdlYktp
dCBoYXMgZG9uZSBmb3IgYXQgbGVhc3QgdGhlIGxhc3QgZmV3IHllYXJzLgogCi0gICAgYm9vbCBo
YXNTVkcxMEZlYXR1cmVQcmVmaXggPSBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuZG9tLnN2
ZyIsIGZhbHNlKSB8fCBmZWF0dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2Muc3ZnIiwgZmFsc2UpOwot
ICAgIGJvb2wgaGFzU1ZHMTFGZWF0dXJlUHJlZml4ID0gZmVhdHVyZS5zdGFydHNXaXRoKCJodHRw
Oi8vd3d3LnczLm9yZy90ci9zdmciLCBmYWxzZSk7CisgICAgYm9vbCBoYXNTVkcxMEZlYXR1cmVQ
cmVmaXggPSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZlYXR1cmUsICJvcmcu
dzNjLmRvbS5zdmciKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZlYXR1
cmUsICJvcmcudzNjLnN2ZyIpOworICAgIGJvb2wgaGFzU1ZHMTFGZWF0dXJlUHJlZml4ID0gc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmZWF0dXJlLCAiaHR0cDovL3d3dy53My5v
cmcvdHIvc3ZnIik7CiAKICAgICAvLyBXZSBkb24ndCBldmVuIHRyeSB0byBoYW5kbGUgZmVhdHVy
ZSBuYW1lcyB0aGF0IGRvbid0IGxvb2sgbGlrZSB0aGUgU1ZHIG9uZXMsIHNvIGp1c3QgcmV0dXJu
IHRydWUgZm9yIGFsbCBvZiB0aG9zZS4KICAgICBpZiAoIShoYXNTVkcxMEZlYXR1cmVQcmVmaXgg
fHwgaGFzU1ZHMTFGZWF0dXJlUHJlZml4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBjMzEzMTM1YWVlMDg3
ZjY4MWNlYzYwZDRiNWJiZWQ5OTc0YzFhMzRhLi5hMzdkNjE1MTZhNjI4MDBmNWE0MzFiODkxYzcy
NzM0ZjA5MDM1YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zOTksMjIgKzM5OSwyMCBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJp
bmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwogCi0gICAgLy8gT24gbm9uLVdpbmRvd3MgcGxh
dGZvcm1zIGxpYnhtbCBhc2tzIGZvciB0aGlzIFVSTCwgdGhlCi0gICAgLy8gIlhNTF9YTUxfREVG
QVVMVF9DQVRBTE9HIiwgb24gaW5pdGlhbGl6YXRpb24uCisgICAgLy8gT24gbm9uLVdpbmRvd3Mg
cGxhdGZvcm1zIGxpYnhtbCBhc2tzIGZvciB0aGlzIFVSTCwgdGhlICJYTUxfWE1MX0RFRkFVTFRf
Q0FUQUxPRyIsIG9uIGluaXRpYWxpemF0aW9uLgogICAgIGlmICh1cmxTdHJpbmcgPT0gImZpbGU6
Ly8vZXRjL3htbC9jYXRhbG9nIikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gT24g
V2luZG93cywgbGlieG1sIGNvbXB1dGVzIGEgVVJMIHJlbGF0aXZlIHRvIHdoZXJlIGl0cyBETEwg
cmVzaWRlcy4KLSAgICBpZiAodXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZpbGU6Ly8vIiwgZmFsc2Up
ICYmIHVybFN0cmluZy5lbmRzV2l0aCgiL2V0Yy9jYXRhbG9nIiwgZmFsc2UpKQorICAgIGlmIChz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybFN0cmluZywgImZpbGU6Ly8vIikg
JiYgdXJsU3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi9ldGMvY2F0YWxvZyIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBUaGUgbW9zdCBjb21tb24gRFRELiAgVGhl
cmUgaXNuJ3QgbXVjaCBwb2ludCBpbiBoYW1tZXJpbmcgd3d3LnczYy5vcmcKLSAgICAvLyBieSBy
ZXF1ZXN0aW5nIHRoaXMgVVJMIGZvciBldmVyeSBYSFRNTCBkb2N1bWVudC4KLSAgICBpZiAodXJs
U3RyaW5nLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sIiwgZmFsc2UpKQor
ICAgIC8vIFRoZSBtb3N0IGNvbW1vbiBEVEQuIFRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gaGFt
bWVyaW5nIHd3dy53M2Mub3JnIGJ5IHJlcXVlc3RpbmcgdGhpcyBmb3IgZXZlcnkgWEhUTUwgZG9j
dW1lbnQuCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsU3Ry
aW5nLCAiaHR0cDovL3d3dy53My5vcmcvdHIveGh0bWwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gU2ltaWxhcmx5LCB0aGVyZSBpc24ndCBtdWNoIHBvaW50IGluIHJlcXVlc3Rp
bmcgdGhlIFNWRyBEVEQuCi0gICAgaWYgKHVybFN0cmluZy5zdGFydHNXaXRoKCJodHRwOi8vd3d3
LnczLm9yZy9HcmFwaGljcy9TVkciLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodXJsU3RyaW5nLCAiaHR0cDovL3d3dy53My5vcmcvZ3JhcGhpY3Mv
c3ZnIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFRoZSBsaWJ4bWwgZG9lc24n
dCBnaXZlIHVzIGEgbG90IG9mIGNvbnRleHQgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdG8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApp
bmRleCAxZWI3OTNkOWVmZTI3ZWMzNjA0OGYxNWU0YWRhMTAwYTUwZmM4ODk0Li5mZDdiYTc4YjYz
Nzk4NDc4MzBlZGNkZTllZGQ0NzM5YjQ3ZmQ5ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0yMjEsMTMgKzIyMSw5
IEBAIHN0YXRpYyBSZXRyaWV2ZURlY2lzaW9uIG1ha2VSZXRyaWV2ZURlY2lzaW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxCiAgICAgcmV0dXJuIFJldHJpZXZlRGVjaXNpb246
OlllczsKIH0KIAotc3RhdGljIGJvb2wgaXNNZWRpYU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCitzdGF0aWMgYm9vbCBpc01lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQog
ewotICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iLCAvKmNhc2VTZW5zaXRpdmUq
LyBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChtaW1lVHlwZS5zdGFydHNX
aXRoKCJhdWRpby8iLCAvKmNhc2VTZW5zaXRpdmUqLyBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIik7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gZXhwZWN0ZWRUb3RhbFJlc291cmNlU2l6ZUZyb21Db250ZW50UmFuZ2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKaW5kZXggM2M0OTkx
Y2M3NTlkMmZiNzU4NGQzZGFjYzQxMDQ1MzZiMjAxYTZlNC4uOGZhODFkMTA5YTRjNzNjZDBiMzE5
NWI4OGZmNWUzZGIxNTdjMzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApAQCAtODYsNyArODYsNyBAQCBzdGF0
aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkgJiYgc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgY29uc3QgdWludDhf
dCBudWxsQnl0ZSA9IDA7CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoJm51bGxCeXRlLCAx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBv
bGljaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGlj
aWVzLmNwcAppbmRleCAwMWNlODEzYzNiYzkxMjRjZjIyZTJmZDczNDUwNTBjYjg3MmM2MzM2Li4y
NzQyOTM0YmQ0ZjRhNDljMmUzMjQ5MzM4NjZjODZmZjA0N2RmMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZVBvbGljaWVzU2V0Q3VzdG9tSGVhZGVy
RmllbGRzKFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBXS1N0cmluZ1JlZiBuYW1lID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChrZXlzLmdldCgpLCBpKSk7CiAg
ICAgICAgIGF1dG8gZmllbGQgPSBXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZSh0b0lt
cGwobmFtZSktPnN0cmluZygpLCB0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGljdGlvbmFyeSwgbmFtZSkpKS0+c3RyaW5nKCkpOwotICAg
ICAgICBpZiAoZmllbGQgJiYgZmllbGQtPm5hbWUoKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoIlgtIikpCisgICAgICAgIGlmIChmaWVsZCAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGZpZWxkLT5uYW1lKCksICJ4LSIpKQogICAgICAgICAgICAgZmllbGRzLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKCpmaWVsZCkpOwogICAgIH0KICAgICB0b0ltcGwod2Vic2l0ZVBv
bGljaWVzKS0+c2V0Q3VzdG9tSGVhZGVyRmllbGRzKFdURk1vdmUoZmllbGRzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2ll
cy5tbQppbmRleCBjYjJlNTY2OGU2MmE0YzdjMDFlYWZmOGZkNDIxOTFlYmY2MGNhYWViLi5kN2Fh
MjVhNGVkNWNmMDY5NDViMTZjYTQzYmNiZWI3MWRlZmJhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KQEAg
LTEzOCw3ICsxMzgsNyBAQCAtICh2b2lkKXNldEN1c3RvbUhlYWRlckZpZWxkczooTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZmllbGRzCiAgICAgCiAgICAgZm9yIChOU1N0
cmluZyogbmFtZSBpbiBmaWVsZHMpIHsKICAgICAgICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhU
VFBIZWFkZXJGaWVsZDo6Y3JlYXRlKG5hbWUsIFtmaWVsZHMgb2JqZWN0Rm9yS2V5Om5hbWVdKTsK
LSAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLT5uYW1lKCkuc3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCJYLSIpKQorICAgICAgICBpZiAoZmllbGQgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShmaWVsZC0+bmFtZSgpLCAieC0iKSkKICAgICAgICAgICAgIHBhcnNlZEZp
ZWxkcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqZmllbGQpKTsKICAgICB9CiAgICAgX3dlYnNp
dGVQb2xpY2llcy0+c2V0Q3VzdG9tSGVhZGVyRmllbGRzKFdURk1vdmUocGFyc2VkRmllbGRzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YjA1YWFmMmUw
OWNjOTM3MjkzMTVjZmFlNDMxNmYzNzZhYmJiZDEwLi43NTkwZDUxN2RkNzY3MmNkZmViZTNhNmZm
YTk1N2ZhNjVjMGJmNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTYyNTIsNyArNjI1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmls
ZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7Ci0gICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRz
V2l0aCgiLnBkZiIsIGZhbHNlKSkKKyAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXVEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgQVND
SUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9wZGYiKSwgV1RGTW92ZShvcmlnaW5hdGluZ1VSTCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBk
ZmVmNThiMDg1OWJhNTdlY2E2MmZkZDE3OGExZTRlMWIzZDYwNjViLi4wMGMxYTcyOWFlMjg4MjY4
ZTc0ZjJlYjAzODM4ZGM2N2RmZGE2NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlv
blJhdyhjb25zdAogICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0
aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgpPykuCiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5n
VVJMU3RyaW5nKTsKIAotICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGgoIi5wZGYi
LCBmYWxzZSkpIHsKKyAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoIi5wZGYiKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBzYXZlIGZp
bGUgd2l0aG91dCAucGRmIGV4dGVuc2lvbiB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24oY29u
c3QgU3RyaW5nJgogewogICAgIFN0cmluZyBwZGZGaWxlbmFtZSA9IG1fdGVtcG9yYXJ5UERGRmls
ZXMuZ2V0KHBkZlVVSUQpOwogCi0gICAgaWYgKCFwZGZGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIs
IGZhbHNlKSkKKyAgICBpZiAoIXBkZkZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Ii5wZGYiKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jr
c3BhY2VdIG9wZW5GaWxlOnBkZkZpbGVuYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNWM3MDkyNGNlOTE4MzA1ZmY2YWUwZTgzMmNlOTYz
NmY1ZWNmMDI5Yi4uYWEyZmVmOThjYTg1Y2ZiYTRlYTU0NDFmMGFkZDRjZDFiMWY5NWE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgwMCw3
ICs4MDAsNyBAQCBSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUq
IGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luRQogICAgIGlmIChpc0Jsb2NrZWRQbHVn
aW4gfHwgIXBsdWdpblByb2Nlc3NUb2tlbikgewogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQog
ICAgICAgICBTdHJpbmcgcGF0aCA9IHBhcmFtZXRlcnMudXJsLnBhdGgoKTsKLSAgICAgICAgaWYg
KHNob3VsZFVzZVBERlBsdWdpbigpICYmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNj
cmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWltZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBl
LmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNX
aXRoKCIucHMiLCBmYWxzZSkpKSkpIHsKKyAgICAgICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigp
ICYmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHBhcmFtZXRl
cnMubWltZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBlLmlzRW1wdHkoKSAmJiAocGF0aC5l
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikgfHwgcGF0aC5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKCIucHMiKSkpKSkgewogICAgICAgICAgICAgYXV0byBwZGZQbHVnaW4gPSBQREZQ
bHVnaW46OmNyZWF0ZShmcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShwZGZQbHVn
aW4pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIwMjQ2MjUyOWQ0YWQ3OGE0ZTlmNmY3NWQzZmYxM2M5
ZmM1NGU1YzUuLjhiZDk3ZjZhNDFiNGVmMGVmZGNiOTQwYTk4ODBhNWU3MGQwODcyMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZy
YW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQ7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4g
dGhlIHN0cmluZyBjb250YWlucyBvbmx5IENKIGNoYXJhY3RlcnMuCi0gICAgICAgIHBvc3RMYXlv
dXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJl
c3VsdC5pc0luUGFzc3dvcmRGaWVsZCAmJiAhc2VsZWN0ZWRUZXh0LmNvbnRhaW5zT25seVdoaXRl
c3BhY2UoKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3Vs
dC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxl
Y3RlZFRleHQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICB9CiAg
ICAgcG9zdExheW91dERhdGEuaW5zaWRlRml4ZWRQb3NpdGlvbiA9IHN0YXJ0Tm9kZUlzSW5zaWRl
Rml4ZWRQb3NpdGlvbiB8fCBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uOwogICAgIGlmICgh
c2VsZWN0aW9uLmlzTm9uZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKaW5kZXggMWY5YmFlY2UwNjk1MGQ5NjI1
ZjQ3Yjc5YzA2MDYwYzA2NjhiNmI5Yy4uNmQ0NzRhMjZjNTIyYWU3MTdkOWJiN2EyMDhkMjM2YWIz
OGU1Nzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
QmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgQmluYXJ5UHJv
cGVydHlMaXN0UGxhbjo6d3JpdGVTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIG1fYnl0ZUNvdW50
ICs9IG1hcmtlclBsdXNMZW5ndGhCeXRlQ291bnQobGVuZ3RoKSArIGxlbmd0aDsKLSAgICBpZiAo
IXN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKQorICAgIGlmICghc3RyaW5nLmlzQWxsQVNDSUko
KSkKICAgICAgICAgbV9ieXRlQ291bnQgKz0gbGVuZ3RoOwogfQogCkBAIC02OTEsNyArNjkxLDcg
QEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVyOjphcHBlbmRTdHJpbmdPYmplY3Qo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc3RhcnRPYmplY3QoKTsKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKHN0cmluZy5jb250YWluc09ubHlB
U0NJSSgpKSB7CisgICAgaWYgKHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgaWYgKGxl
bmd0aCA8PSBtYXhMZW5ndGhJbk1hcmtlckJ5dGUpCiAgICAgICAgICAgICBhcHBlbmRCeXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGFzY2lpU3RyaW5nTWFya2VyQnl0ZSB8IGxlbmd0aCkp
OwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggNTZmNmRlYzBiN2Y1MmVlZWFm
ZWRhNjcxNTdjMzZlNzZhOWI2Y2FmNC4uYjdiY2E0NWIxNjA5YTc4MTRjNzIwN2RiMmYwY2I1NDFl
ZTA2YjhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgUmVn
dWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCByZWdFeHBDYWNoZVNpemUgPSA0OwogICAgIHN0YXRpYyBO
U011dGFibGVBcnJheSogcmVnRXhwTGFiZWxzID0gbmlsOwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxWZWN0b3I8UmVndWxhckV4cHJlc3Npb24qPj4gcmVnRXhwczsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNl
U2Vuc2l0aXZlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+
IHdvcmRSZWdFeHAoIlxcdyIpOwogCiAgICAgUmVndWxhckV4cHJlc3Npb24qIHJlc3VsdDsKICAg
ICBpZiAoIXJlZ0V4cExhYmVscykKQEAgLTM4OSw3ICszODksNyBAQCBzdGF0aWMgUmVndWxhckV4
cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgICAgICAgICAg
ICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKICAgICAgICAgfQogICAgICAgICBwYXR0
ZXJuLmFwcGVuZCgnKScpOwotICAgICAgICByZXN1bHQgPSBuZXcgUmVndWxhckV4cHJlc3Npb24o
cGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICAgICAgcmVzdWx0
ID0gbmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgSlNDOjpZYXJyOjpU
ZXh0Q2FzZUluc2Vuc2l0aXZlKTsKICAgICB9CiAKICAgICAvLyBhZGQgcmVnZXhwIHRvIHRoZSBj
YWNoZSwgbWFraW5nIHN1cmUgaXQgaXMgYXQgdGhlIGZyb250IGZvciBMUlUgb3JkZXJpbmcKQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKm1hdGNoTGFiZWxzQWdhaW5zdFN0cmlu
ZyhOU0FycmF5ICpsYWJlbHMsIGNvbnN0IFN0cmluZyYgc3RyaW5nVAogICAgIFN0cmluZyBtdXRh
YmxlU3RyaW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7CiAgICAgCiAgICAgLy8gTWFrZSBudW1i
ZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBl
LmcuLCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgUmVndWxh
ckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAiKTsKKyAgICByZXBsYWNl
KG11dGFibGVTdHJpbmdUb01hdGNoLCBSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiksICIgIik7CiAg
ICAgbXV0YWJsZVN0cmluZ1RvTWF0Y2gucmVwbGFjZSgnXycsICcgJyk7CiAgICAgCiAgICAgUmVn
dWxhckV4cHJlc3Npb24qIHJlZ0V4cCA9IHJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc5NTUxODAwZDky
MmNiM2JlZjc2NWFmMGEwODJhN2U1OTcyYWIxNjEuLmJjZjNiMjZlMzlkMmQ3YjZmYmFhMGY3NGVh
Mzc1NTVmZTA1M2ExNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhh
dCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChjaGFuZ2VXaW5kb3dTY2FsZUlm
TmVlZGVkKTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UuCisKIDIwMTctMTEtMjAgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IERpc2FibGUgQUNDRUxFUkFURURfMkRfQ0FOVkFTIGluIEZlYXR1cmVMaXN0LnBtCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNTE2OWU2OTZjNzIyMmY1
YTJmZTQ4ZWNlZTdiNWRiYmUyYTBlNTNhMy4uNGQxYzZlZTlmMTZiOGFjNGM4YTQzOGY5NGE3OGI0
YjkwMDVkMzcwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMTU5Miw5ICsxNTkyLDkgQEAgc3RhdGljIHZvaWQgY2hhbmdlV2luZG93U2NhbGVJZk5l
ZWRlZChjb25zdCBjaGFyKiB0ZXN0UGF0aE9yVVIpCiAgICAgV1RGOjpTdHJpbmcgbG9jYWxQYXRo
T3JVcmwgPSBTdHJpbmcodGVzdFBhdGhPclVSKTsKICAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0
b3IgPSBbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSBiYWNraW5nU2NhbGVGYWN0b3JdOwog
ICAgIGZsb2F0IHJlcXVpcmVkU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChsb2NhbFBhdGhPclVy
bC5maW5kSWdub3JpbmdDYXNlKCIvaGlkcGktM3gtIikgIT0gbm90Rm91bmQpCisgICAgaWYgKGxv
Y2FsUGF0aE9yVXJsLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIi9oaWRwaS0zeC0iKSkKICAg
ICAgICAgcmVxdWlyZWRTY2FsZUZhY3RvciA9IDM7Ci0gICAgZWxzZSBpZiAobG9jYWxQYXRoT3JV
cmwuZmluZElnbm9yaW5nQ2FzZSgiL2hpZHBpLSIpICE9IG5vdEZvdW5kKQorICAgIGVsc2UgaWYg
KGxvY2FsUGF0aE9yVXJsLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIi9oaWRwaS0iKSkKICAg
ICAgICAgcmVxdWlyZWRTY2FsZUZhY3RvciA9IDI7CiAgICAgaWYgKGN1cnJlbnRTY2FsZUZhY3Rv
ciA9PSByZXF1aXJlZFNjYWxlRmFjdG9yKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327389</attachid>
            <date>2017-11-20 22:53:39 -0800</date>
            <delta_ts>2017-11-21 04:47:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171120225334.patch</filename>
            <type>text/plain</type>
            <size>421379</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZDYwYmU0MGQyYmNlZTBmYWYwZDI3Nzk1ZGQxNDQxZDMzMzJmZjI0Li4xOGY0MzI0NjMyYmQ3ZWE4
MDZiNjU2YTJiZWFkYTA0N2ViMThhYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMCAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIERldGVjdCBfX2Rl
Y2xzcGVjIHdpdGhpbiBKU0Jhc2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmMTYxMzU0NTFiYTEyMTY1NjlhYWY1ZGYzN2Ez
MWE0NDAyNjQ0ZmIzLi5mM2UxOTM1MDQ2YmQ3Yjc3NWI4MzQwMjA4MDFlOWFmNDdhZmYxYTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVu
bmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGguaDogTW92ZWQgdGhlIHVzaW5nIGZvciBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkgaGVyZSBz
aW5jZQorICAgICAgICB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBoZXJlLgorCisgICAgICAgICog
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg6IFJlbW92ZWQgb3ZlcmxvYWRzIG9mIGNvbnRhaW5zLCBm
aW5kLCBzdGFydHNXaXRoLCBhbmQKKyAgICAgICAgZW5kc1dpdGggdGhhdCB0YWtlIGEgYm9vbGVh
biBpbmRpY2F0aW5nIHdoZXRoZXIgdGhleSBzaG91bGQgYmUgImNhc2Ugc2Vuc2l0aXZlIi4KKyAg
ICAgICAgV2hlbiBmYWxzZSwgdGhpcyB3YXMgZG9pbmcgVW5pY29kZSBjYXNlIGZvbGRpbmcsIGFu
ZCBubyBjYWxsZXJzIG5lZWRlZCB0aGF0LgorICAgICAgICBBbHNvIHR3ZWFrZWQgZm9ybWF0dGlu
ZyBhbmQgYXJndW1lbnQgbmFtZXMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9JbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmg6IEFkZGVkIGFuIGluY2x1ZGUgb2YgTENoYXIuaCBzaW5jZSB0aGlzIGZp
bGUKKyAgICAgICAgdXNlcyB0aGF0LiBBbHNvIHR3ZWFrZWQgZm9ybWF0dGluZyBhIGJpdC4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjb250YWluc09ubHlXaGl0ZXNwYWNlKTogRGVsZXRlZC4gRGVzcGl0ZSBpdHMgbmFtZSBz
b3VuZGluZyBsaWtlCisgICAgICAgIGl0IHVzZWQgdGhlIGZ1bGwgVW5pY29kZSB3aGl0ZXNwYWNl
IGRlZmluaXRpb24sIHRoaXMgYWN0dWFsbHkgY2hlY2tlZCBpc0FTQ0lJU3BhY2UuCisgICAgICAg
IENhbGxlcnMgbm93IGFsbCB1c2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBpbnN0ZWFkIHdpdGgg
dGhlIHdoaXRlc3BhY2UgZGVmaW5pdGlvbgorICAgICAgICB0aGF0IGlzIGFwcHJvcHJpYXRlIHRv
IGVhY2ggY2FsbCBzaXRlLgorICAgICAgICAoV1RGOjpsYXRpbjFDYXNlRm9sZFRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6ZmluZElnbm9yaW5nQ2FzZUlubmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6ZXF1YWxJbm5lcik6IFJlbW92ZWQgYm9vbGVhbiBjYXNlU2Vuc2l0aXZlIGFyZ3Vt
ZW50LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzdGFydHNXaXRoKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRoKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmg6IE1vdmVkIFRleHRDYXNlU2Vuc2l0aXZpdHkgb3V0IGludG8gYSBk
aWZmZXJlbnQgaGVhZGVyLgorICAgICAgICBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggaW5jbHVkZSBo
ZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMKKyAgICAg
ICAgZnJlZSBmdW5jdGlvbiBoZXJlIGZyb20gV1RGU3RyaW5nLmguIE1vdmVkIGxvdHMgb2YgZnVu
Y3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcworICAgICAgICBkZWZpbml0aW9ucyB0byBtYWtlIHRo
ZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIgdG8gcmVhZC4gU29ydGVkIHRoaW5ncyBhIGJpdC4K
KyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nLiBNYXJrZWQgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBvbmUgYXJndW1lbnQgZXhwbGljaXQuIEFkZGVkCisgICAgICAgIGFuIGlzRW1wdHkgZnVuY3Rp
b24gbGlrZSB0aGUgb25lIGluIFN0cmluZy4gUmVtb3ZlZCB0aGUgaGFzQXRMZWFzdE9uZVJlZgor
ICAgICAgICBmdW5jdGlvbiBzaW5jZSBpdCBkb2Vzbid0IG9mZmVyIGEgYmVuZWZpdCBvdmVyIHRo
ZSByZWZDb3VudCBmdW5jdGlvbi4gUmVuYW1lZAorICAgICAgICBjb3B5Q2hhcnMgdG8gY29weUNo
YXJhY3RlcnMuIEFkZGVkIGlzQWxsQVNDSUksIGlzQWxsTGF0aW4xIGFuZAorICAgICAgICBpc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzIGZ1bmN0aW9ucy4gUmVtb3ZlZCBib29sZWFuIGNhc2VTZW5zaXRp
dmUgYXJndW1lbnRzCisgICAgICAgIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmlu
ZElnbm9yaW5nQ2FzZSBhbmQgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuCisgICAgICAgIEFkZGVk
IGEgRklYTUUgdG8gY29kZVBvaW50Q29tcGFyZSBhYm91dCB0aGUgd2F5IGl0IHRyZWF0cyBudWxs
IGFuZCBlbXB0eSBzdHJpbmdzCisgICAgICAgIGFzIGVxdWFsLiBDaGFuZ2VkIGxlbmd0aCBhcmd1
bWVudCBpbiByZW1vdmUgdG8gdW5zaWduZWQgdG8gbWF0Y2ggb3RoZXIgbGVuZ3Rocy4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6cmVt
b3ZlSW50ZXJuYWwpOiBDaGFuZ2VkIGxlbmd0aCBhcmd1bWVudCB0byBiZSB1bnNpZ25lZC4KKyAg
ICAgICAgKFdURjo6Y3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyk6IFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgKFdURjo6U3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQgY29u
c3QpOiBSZXdyb3RlIHRvIGJlIGVhc2llciB0byByZWFkLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6IE1vdmVkIEFTQ0lJRmFzdFBhdGguaCB0byBTdHJpbmdJbXBsLmguIE1vdmVk
IGxvdHMgb2YKKyAgICAgICAgZnVuY3Rpb24gYm9kaWVzIG91dCBvZiBjbGFzcyBkZWZpbml0aW9u
cyB0byBtYWtlIHRoZSBjbGFzcyBkZWZpbml0aW9ucyBlYXNpZXIKKyAgICAgICAgdG8gcmVhZCwg
bWFkZSBvdGhlcnMgb25lLWxpbmVycy4gUmVtb3ZlZCB0aGUgU3RyaW5nOjphdCBmdW5jdGlvbiBi
dXQga2VwdCB0aGUKKyAgICAgICAgU3RyaW5nOjpjaGFyYWN0ZXJBdCBmdW5jdGlvbjsgdGhlIHR3
byB3ZXJlIGlkZW50aWNhbC4gUmVtb3ZlZCBib29sZWFuCisgICAgICAgIGNhc2VTZW5zaXRpdmUg
YXJndW1lbnRzIGZyb20gdmFyaW91cyBmdW5jdGlvbnMuIFJlbW92ZWQgZmluZElnbm9yaW5nQ2Fz
ZSBhbmQKKyAgICAgICAgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UuIFJlbmFtZWQgY29udGFpbnNP
bmx5QVNDSUkgdG8gaXNBbGxBU0NJSSBhbmQKKyAgICAgICAgY29udGFpbnNPbmx5TGF0aW4xIHRv
IGlzQWxsTGF0aW4xIHRvIG1hdGNoIHRoZSBuYW1pbmcgb2YgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cy4KKyAgICAgICAgTW92ZWQgdGhlIGlubGluZSBpbXBsZW1lbnRhdGlvbnMgb2YgZnVuY3Rpb25z
IHRoYXQgYXJlIGRlZmluZWQgYWJvdmUgZnVydGhlcgorICAgICAgICBkb3duLCBhZnRlciB0aGlu
Z3MgbGlrZSB0aGUgQVNDSUlMaXRlcmFsIGNsYXNzIGFuZCB2YXJpb3VzIGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDogVXBkYXRlZCBu
YW1lIG9mIGNvcHlDaGFycy4KKwogMjAxNy0xMS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElO
RyBmZWF0dXJlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTQyODZiNWZkNTJjNWRmODNiNDQxNTEwOGQy
OWNkNmY0NDJjMjYxLi42MGYyNTlmNGM0MTY3ODJkYjE1MWMyMTgwZDdjOGVlZmQ2OTU5ZjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDE5IEBACisyMDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0
aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBI
ZWFkZXJzKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmdldExlbmd0aEZvclRleHRSYW5nZSBjb25zdCk6IFVzZSB0ZXh0KCkubGVuZ3Ro
KCkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UpOiBVc2Ug
aXNIVE1MU3BhY2UgaW5zdGVhZCBvZgorICAgICAgICBpc1NwYWNlT3JOZXdsaW5lIHNpbmNlIHRo
ZSBjb2RlIGlzIHRyeWluZyB0byBza2lwIGNvbGxhcHNpYmxlIEhUTUwgc3BhY2VzLCBub3QKKyAg
ICAgICAgYXJiaXRyYXJ5IFVuaWNvZGUgd2hpdGVzcGFjZS4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0OjpjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRlbU1hcmtlcnMpOiBVc2UKKyAgICAg
ICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4gZm9yIHRoZSBzYW1lIHJlYXNv
biBhcyBhYm92ZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
U2VhcmNoRmllbGQgY29uc3QpOiBVc2UgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNU
ZXh0IGNvbnN0KTogVXNlCisgICAgICAgIG5ldyBmaW5kUGxhaW5UZXh0IGZ1bmN0aW9uIGV4cG9y
dGVkIGZyb20gVGV4dEl0ZXJhdG9yIHNvIHRoaXMgY2FuIHNoYXJlIHRoZQorICAgICAgICBzYW1l
IHNlYXJjaCBtYXRjaGluZyBsb2dpYyB1c2VkIHRvIGZpbmQgdGV4dCBpbiB3ZWJwYWdlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQpOiBVc2UgY2Fw
aXRhbGl6ZSBhbmQgaXRzIHJldHVybiB2YWx1ZQorICAgICAgICByYXRoZXIgdGhhbiBtYWtlQ2Fw
aXRhbGl6ZSBtb2RpZnlpbmcgYSBzdHJpbmcgaW4gcGxhY2UuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
b2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOiBVc2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0hUTUxTcGFjZT4KKyAgICAgICAgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1RvQnl0ZVN0cmlu
Zyk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmNvbnRhaW5zT25seUFTQ0lJV2l0aE5vVXBwZXJjYXNlKTogVXNlCisgICAgICAgIFN0cmlu
Z1ZpZXc6OmNvZGVVbml0cyBpbnN0ZWFkIG9mIFN0cmluZzo6YXQuCisKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9u
c0ZvclJlc291cmNlTG9hZCBjb25zdCk6CisgICAgICAgIFVzZSBpc0FsbEFTQ0lJLgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJuKTogRGl0
dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBvcnRlZEZvcm1hdCBjb25zdCk6IFVz
ZSBwcm90b2NvbElzIGFuZAorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogY3NzL0RPTUNTU05hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1
ZVdpdGhvdXRJbXBvcnRhbnQpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyk6IFVzZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzQ1NTU3BhY2U+LAorICAgICAgICBmb3IgdGhlIHByZWZsaWdodCwgd2hpY2ggbWF0Y2hlcyB3
aGF0IHRoZSBhY3R1YWwgcGFyc2luZyBjb2RlIHVzZXMuCisKKyAgICAgICAgKiBkb20vQ2hhcmFj
dGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpjb250YWluc09u
bHlXaGl0ZXNwYWNlIGNvbnN0KTogRGVsZXRlZC4gQ2FsbGVycyBjYW4KKyAgICAgICAgZWZmaWNp
ZW50bHkgZ2V0IGF0IHRoZSBkYXRhIGFuZCBkbyB0aGlzIGtpbmQgb2YgY2hlY2sgb24gdGhlIGRh
dGEgZGlyZWN0bHkuCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpub3JtYWxpemVUeXBlKTogVXNlIHN0YXJ0c1dpdGggc2luY2UgdGhlIHN0cmluZyBp
cyBhbHJlYWR5IGNvbnZlcnRlZAorICAgICAgICB0byBBU0NJSSBsb3dlcmNhc2UuCisKKyAgICAg
ICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmxlYWRp
bmdXaGl0ZXNwYWNlUG9zaXRpb24gY29uc3QpOiBVc2UgaXNIVE1MU3BhY2Ugc2luY2UKKyAgICAg
ICAgc2luY2UgdGhlIGNvZGUgaXMgdHJ5aW5nIHRvIGNoZWNrIGZvciBjb2xsYXBzaWJsZSBIVE1M
IHNwYWNlcywgbm90IGdlbmVyYWwKKyAgICAgICAgVW5pY29kZSBzcGFjZXMuIE90aGVyIGNhbGwg
c2l0ZXMgb2YgaXNTcGFjZU9yTmV3bGluZSBuZWVkIHRvIGJlIGNoZWNrZWQgZm9yCisgICAgICAg
IHRoaXMsIGJ1dCBJIGRpZCBub3QgZml4IHRoZW0gYWxsIGF0IHRoaXMgdGltZS4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3BhY2VQb3NpdGlvbiBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpOiBVc2Ugbm9CcmVha1NwYWNlLgorCisg
ICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlciBjb25zdCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkg
aW5zdGVhZAorICAgICAgICBvZiB0ZXh0TGVuZ3RoLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0IGNvbnN0KTogVXNlIG5vQnJlYWtTcGFjZS4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmlu
Z0NhcmV0U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0IGNvbnN0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0Tm9k
ZU9mZnNldEluRmxvdyk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpj
b2xsYXBzZWRTcGFjZUxlbmd0aCk6IFVwZGF0ZWQgc2luY2UgUmVuZGVyVGV4dDo6dGV4dCBub3cg
cmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpmaW5kUGxhaW5UZXh0KTogQWRkZWQuIFVzZXMgU2VhcmNoQnVmZmVyIHRv
IHNlYXJjaCBmb3Igb25lIHN0cmluZworICAgICAgICB3aXRoaW4gYW5vdGhlci4gRXhwb3J0ZWQg
c28gYWNjZXNzaWJpbGl0eSBjb2RlIGNhbiBkbyB0aGlzIG9wZXJhdGlvbi4KKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAg
KiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKTogVXNlIG5vQnJlYWtTcGFjZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRTdGFydE9mUGFyYWdyYXBoKTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0IG5vdyBy
ZXR1cm5zCisgICAgICAgIGEgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuZE9m
UGFyYWdyYXBoKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQpOiBVc2UgU3RyaW5n
OjpjaGFyYWN0ZXJBdCBpbnN0ZWFkIG9mIFN0cmluZzo6YXQuCisgICAgICAgIFVzZSBjYXBpdGFs
aXplIGluc3RlYWQgb2YgbWFrZUNhcGl0YWxpemVkLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpcE1pY3Jv
c29mdFByZWZpeCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1s
L0F1dG9maWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJv
bUhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaCBj
b25zdCk6IFJlbW92ZWQgZXhwbGljaXQKKyAgICAgICAgVGV4dENhc2VTZW5zaXRpdmUgc2luY2Ug
aXQgbm93IGlzIHRoZSBkZWZhdWx0LCBhbmQgbmVlZGVkIHRvIHRvdWNoIHRoaXMgYW55d2F5Cisg
ICAgICAgIGJlY2F1c2UgdGhlIGVudW1lcmF0aW9uIGlzIG5vdyBpbiBhIGRpZmZlcmVudCBuYW1l
c3BhY2UuCisKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzVmFsaWRFbWFpbEFkZHJlc3MpOiBVcGRhdGVkIHRvIHVzZSBKU0M6OllhcnI6OlRl
eHRDYXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpoYXNGYWxsYmFja0NvbnRl
bnQgY29uc3QpOiBVc2UKKyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFj
ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6c2hvdWxkQWxsb3dRdWlj
a1RpbWVDbGFzc0lkUXVpcmspOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpoYXNWYWxp
ZENsYXNzSWQpOiBVc2UgcHJvdG9jb2xJcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZXZlbnRzUGFy
ZW50T2JqZWN0RnJvbUV4cG9zdXJlKTogVXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1M
U3BhY2U+LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OnNldENvbXBhdGliaWxp
dHlNb2RlRnJvbURvY3R5cGUpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Q2hhcnNldCk6IFVzZSBmaW5kSWdub3Jp
bmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmlzQ29udGFpbmVkSW5SZXF1ZXN0KTogVXNlIGNv
bnRhaW5zSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmls
ZUlkZW50aWZpZXIpOiBEb24ndCBwYXNzIHRoZSBsZW5ndGggdG8KKyAgICAgICAgdGhlIFN0cmlu
Zzo6c3RhcnRzV2l0aCBmdW5jdGlvbi4gVGhlcmUgaGFzIG5ldmVyIGJlZW4gYSB2ZXJzaW9uIG9m
IHRoYXQgZnVuY3Rpb24KKyAgICAgICAgdGhhdCB0YWtlcyB0aGUgbGVuZ3RoLCB0aGVyZSBpcyBu
byBuZWVkIHRvIHBhc3MgdGhlIGxlbmd0aCBzaW5jZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgaGFu
ZGxlcyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncyBsaWtlIHRoZSBvbmUgaGVyZSwgYW5kIGluIHRo
ZSBwYXN0IHRoZSBsZW5ndGgKKyAgICAgICAgaGFzIGJlZW4gZ2V0dGluZyBjb252ZXJ0ZWQgdG8g
YSBib29sZWFuIG1ha2luZyB0aGUgY29tcGFyaXNvbiBiZSBjYXNlIHNlbnNpdGl2ZS4KKyAgICAg
ICAgUmVtb3ZpbmcgdGhlIGFyZ3VtZW50IGVudGlyZWx5IGxlYXZlcyBpdCBjYXNlIHNlbnNpdGl2
ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5vZGVGaW5kZXI6Om1hdGNoZXNFbGVtZW50KTogVXNlIHN0
YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZQorICAgICAgICBhbmQgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOiBVc2UgSlNDOjpZYXJyOjpU
ZXh0Q2FzZVNlbnNpdGl2ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNPbmx5SFRNTFdoaXRlc3Bh
Y2UpOiBNYWRlIHRoaXMgYSBub24tbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGFuZCByZWltcGxl
bWVudGVkIHVzaW5nIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkuCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKTogVXNlIGNv
bnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclByZXZpb3VzU2libGluZyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGROb2RlQ291bnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9k
ZSk6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
aDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZSk6CisgICAgICAg
IFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogcGFn
ZS9CYXNlNjRVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZTY0VXRpbGl0aWVz
OjpidG9hKTogVXNlIGlzQWxsTGF0aW4xLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOiBSZW1vdmVkIFRleHRDYXNl
U2Vuc2l0aXZlIGFyZ3VtZW50IHNpbmNlCisgICAgICAgIHRoYXQgaXMgbm93IHRoZSBkZWZhdWx0
IGFuZCBhbHNvIHVzZWQgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorICAgICAgICAo
V2ViQ29yZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKTogTW9yZSBvZiB0aGUgc2FtZS4KKwor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvdW50UmVu
ZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhyZXNob2xkKTogVXNlCisgICAgICAg
IHRleHQoKS5sZW5ndGgoKS4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNGZWVkV2l0aE5lc3RlZFByb3RvY29sSW5IVFRQRmFtaWx5KTog
VXNlCisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAg
ICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0IGNvbnN0KToKKyAgICAgICAgVXNlIGVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZTo6aG9zdE1hdGNoZXMgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VOb25jZVNvdXJjZSk6Cisg
ICAgICAgIFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBwYWdl
L2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3b3Jkc0luQ3VycmVu
dFBhcmFncmFwaCBjb25zdCk6IFVzZSBub0JyZWFrU3BhY2UuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6cGFyYW1l
dGVyIGNvbnN0KTogVXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRGb250TUlNRVR5cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKTogVXNlCisgICAgICAgIG1pbWVUeXBlLmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1RleHRNSU1FVHlwZSk6IFVzZQorICAgICAgICBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1F
VHlwZSk6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUpOiBVc2UKKyAgICAgICAgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZv
cm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQWxsQVNDSUkpOiBSZW5hbWVkIGZyb20g
Y29udGFpbnNPbmx5QVNDSUkuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkSG9zdG5h
bWUpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc09ubHlBU0NJSSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkpOiBVc2UgU3RyaW5nSW1wbDo6aXNB
bGxBU0NJSS4gQ2hhbmdlZAorICAgICAgICB0byB0YWtlIFN0cmluZ0ltcGwmIHRvIGd1YXJhbnRl
ZSB3ZSB3b24ndCBrZWVwIGRvaW5nIG51bGwgY2hlY2tzIHNpbmNlCisgICAgICAgIHRoZSBjYWxs
ZXIgYWxyZWFkeSBjaGVja3MgZm9yIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6
OnBhcnNlSG9zdEFuZFBvcnQpOiBQYXNzIFN0cmluZ0ltcGwmLgorICAgICAgICAqIHBsYXRmb3Jt
L1VSTFBhcnNlci5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpz
dXBwb3J0c1R5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZQorICAgICAgICBhbmQg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsaWRLZXlTeXN0ZW1SRSk6IFVzZSBKU0M6OllhcnI6OlRleHRD
YXNlSW5zZW5zaXRpdmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNpbWlsYXJG
b250KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UgZm9yCisgICAgICAgIHRoZSBHZWV6
YSBmb250IHNwZWNpYWwgY2FzZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9Mb2cpOiBSZW1vdmVkCisgICAgICAg
IFRleHRDYXNlU2Vuc2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0aGUgZGVmYXVsdC4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKTogVXNlIGlzQWxsQVNDSUkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKTogVXNlIEpTQzo6WWFycjo6VGV4dENhc2VJ
bnNlbnNpdGl2ZS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkU3RyaW5nVG9TSEExKTog
VXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMp
OiBVc2UgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVz
aCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2hh
cnNldEluTWVkaWFUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwYXJzZVJhbmdlKTog
VXNlIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvQmlkaVJ1bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVuKTog
VXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCBjb25z
dCk6IFVzZQorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6IFVzZSB0ZXh0KCkubGVuZ3RoKCku
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmNyZW1lbnQpOiBEdHRvLgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OmlzTGluZUJyZWFrIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0
CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCBjb25zdCk6IFVzZSB0ZXh0KCkubGVuZ3Ro
KCkuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojp0ZXh0IGNvbnN0KTogVXBkYXRl
ZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1w
bCYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKTogVXNlIHRleHQoKS5sZW5ndGgoKS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmlzaWJsZVJlbmRlclRleHQpOiBVc2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hU
TUxTcGFjZT4oKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlu
bGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyB0
cmltbWVkUHJlZmVycmVkV2lkdGhzIHRoYXQgcmV0dXJucyBhIHN0cnVjdHVyZSBpbnN0ZWFkIG9m
IHRoZQorICAgICAgICBvbGQgb25lIHdpdGggbG90cyBvZiBhcmd1bWVudHMuIEFsc28gdXNlIHRl
eHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZHNXaXRoSFRNTFNwYWNlcyk6IFJlbmFtZWQgYW5k
IGNoYW5nZWQgdG8gdXNlIGlzSFRNTFNwYWNlCisgICAgICAgIGluc3RlYWQgb2YgaXNBU0NJSVNw
YWNlLgorICAgICAgICAoV2ViQ29yZTo6cmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKTogVXNlIGVu
ZHNXaXRoSFRNTFNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICBVcGRhdGVk
IGZvciBoY2FuZ2VzIHRvIFJlbmRlclRleHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOiBEaXR0by4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCk6IFVzZQorICAgICAgICBpc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNs
aXBSZWN0cyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ym9sZGVyKTogQWRkZWQuIEhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KTog
UmV3cm90ZSB0bworICAgICAgICBvbmx5IGNvbXB1dGUgdGhlIGJvbGRlciBmb250IG9uY2UgcmF0
aGVyIHRoYW4gZm9yIGV2ZXJ5IGl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKTogVXBkYXRlZCBmb3IKKyAgICAgICAgY2hhbmdlIHRvIGFw
cGx5VGV4dFRyYW5zZm9ybS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSk6
IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBSZW5kZXJUZXh0Ojp0ZXh0LgorICAgICAg
ICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6IFVwZGF0ZWQgZm9yIGNoYW5n
ZSB0bworICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0uCisgICAgICAgIChSZW5kZXJNZW51TGlz
dDo6aXRlbVRleHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxpemUpOiBSZW5hbWVkIGZyb20gbWFr
ZUNhcGl0YWxpemVkLiBDaGFuZ2VkIHRvCisgICAgICAgIHRha2UgYW5kIHJldHVybiBhIFN0cmlu
ZyBpbnN0ZWFkIG9mIHRha2luZyBhIFN0cmluZyouCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpSZW5kZXJUZXh0KTogVXNlIGlzQWxsQVNDSUkuIEFsc28gbW92ZWQKKyAgICAgICAgaW5p
dGlhbGl6YXRpb24gb2YgbW9zdCBub24tYml0ZmllbGQgbWVtYmVycyB0byB0aGUgY2xhc3MgZGVm
aW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQp
OiBVc2UgdGV4dCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2Fj
aGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmhhbmdhYmxl
UHVuY3R1YXRpb25TdGFydFdpZHRoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGggY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmlyc3RDaGFyYWN0ZXJJbmRleFN0cmlw
cGluZ1NwYWNlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVycmVkV2lkdGhzKTogQ2hhbmdlZCB0
byByZXR1cm4gdmFsdWVzCisgICAgICAgIGluIGEgc3RydWN0dXJlIGluc3RlYWQgb2YgdGFraW5n
IGxvdHMgb2YgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOiBVcGRhdGVkIHRvIHVzZQorICAgICAgICB0aGUgdGV4
dCgpIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3Bh
Y2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2li
bGVXaGl0ZXNwYWNlIGNvbnN0KTogVXBkYXRlZCB0bworICAgICAgICB1c2UgYSB0aWdodGVyIGxv
b3AuCisgICAgICAgIChXZWJDb3JlOjppc0FsbFBvc3NpYmx5Q29sbGFwc2libGVXaGl0ZXNwYWNl
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb250YWluc09ubHlIVE1M
V2hpdGVzcGFjZSBjb25zdCk6IFVwZGF0ZWQgdG8KKyAgICAgICAgdXNlIGEgdGlnaHRlciBsb29w
LiBSZW5hbWVkIGZyb20gY29udGFpbnNPbmx5V2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KTogVXBkYXRlZCB0byAgdXNlIHRleHQoKS4K
KyAgICAgICAgKFdlYkNvcmU6OmlzSW5saW5lRmxvd09yRW1wdHlUZXh0KTogUmV3cm90ZSB0byBi
ZSBlYXNpZXIgdG8gcmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3Vz
Q2hhcmFjdGVyIGNvbnN0KTogR290IHJpZCBvZiB1bm5lZWRlZAorICAgICAgICBudWxsIGNoZWNr
IGFuZCBzaW1wbGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNmb3JtKTog
Q2hhbmdlZCB0byByZXR1cm4gYSBTdHJpbmcgcmF0aGVyCisgICAgICAgIHRoYW4gbW9kaWZ5aW5n
IG9uZSB0aGF0IGlzIHBhc3NlZCBpbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNl
dFJlbmRlcmVkVGV4dCk6IFVwZGF0ZWQgdXNlIG9mIGFwcGx5VGV4dFRyYW5zZm9ybS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlY3VyZVRleHQpOiBNb3JlIG9mIHRoZSBzYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0
TWVhc3VyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0
ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hl
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zm
c2V0Rm9yQmFja3dhcmREZWxldGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6bmV4dE9mZnNldCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCBjb25zdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyBjb25zdCk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDogTWFkZSBzb21lIG1vcmUgbWVt
YmVycyBwcml2YXRlIGFuZCBmaW5hbC4KKyAgICAgICAgVXBkYXRlZCBmb3IgYWJvdmUsIGluY2x1
ZGluZyBhZGRpbmcgdGhlIFdpZHRocyBzdHJ1Y3R1cmUuIEdvdCByaWQgb2YgdGhlCisgICAgICAg
IHRleHRMZW5ndGggZnVuY3Rpb24sIHdoaWNoIGV4aXN0ZWQgYXMgYSB3b3JrYXJvdW5kIGJlZm9y
ZSB3ZSBjb3VsZCBtYXJrCisgICAgICAgIGEgZnVuY3Rpb24gbGlrZSBsZW5ndGggZmluYWwuIE1h
ZGUgdGhlIHRleHQgZnVuY3Rpb24gcmV0dXJuIGEgU3RyaW5nSW1wbCYsCisgICAgICAgIHdoaWNo
IGlzIGdvb2Qgc2luY2UgdGhlIG1fdGV4dCBzdHJpbmcgaXMgbmV2ZXIgbnVsbCwgYW5kIHNvIGNh
bGxlcnMgZW5kCisgICAgICAgIHVwIHVzaW5nIFN0cmluZ0ltcGwgZGlyZWN0bHkgYW5kIHNhdmlu
ZyBudWxsIGNoZWNrcy4gUmVtb3ZlZCBmdW5jdGlvbnMKKyAgICAgICAgdGhhdCBhcmUgbm90IG5l
ZWRlZCwgaW5jbHVkaW5nIGlzOEJpdCwgY2hhcmFjdGVyczgsIGNoYXJhY3RlcnMxNiwKKyAgICAg
ICAgdW5jaGVja2VkQ2hhcmFjdGVyQXQsIG9wZXJhdG9yW10sIGFuZCBpc0FsbEFTQ0lJLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpz
ZXRTZWxlY3Rpb25TdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExp
bmVCb3hlczo6YWJzb2x1dGVRdWFkcyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6Y29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MpOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojppbml0aWFsaXplU2VnbWVu
dHMpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9y
UG9pbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZmluZENhcmV0TWF4
aW11bU9mZnNldCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0
T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppdGVyYXRvcklzQmV5b25kRW5kT2ZS
ZW5kZXJDb21iaW5lVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFdpZHRoKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVh
a0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL2xp
bmUvVHJhaWxpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWlsaW5nT2JqZWN0
czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9uc0ZvclRyYWlsaW5nQm94ZXMp
OiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVs
ZW1lbnQpOiBSZW1vdmVkIHN0cmF5IHVzZSBvZiAidW5zaWduZWQgaW50Ii4KKworICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsgY29uc3Qp
OiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5l
VGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlv
dXRFbmdpbmU6OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0cmlidXRlcyk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVz
IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZSk6
IFVzZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJc05lZWRlZCk6IERpdHRvLgorCisg
ICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpo
YXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZS4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBbGxvd0V4dGVybmFsTG9hZCk6IERpdHRv
LgorCiAyMDE3LTExLTIwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW9AZW5kbGVzc20uY29t
PgogCiAgICAgICAgIFtHVEtdIE5ldyBBUEkgdG8gYWRkLCByZXRyaWV2ZSBhbmQgZGVsZXRlIGNv
b2tpZXMgdmlhIFdlYktpdENvb2tpZU1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjJiMjg2MDk5NDA4MDgy
NjQwYTQxNDZhY2NjMjc0OGY1ZDExMGVlYi4uMWQ4NjJmNTA0M2U5YTRlZWUwYWQxMzRlMWUwYzc2
MWU2ODg5YWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9w
ZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBv
ZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OmlzTWVkaWFNSU1FVHlwZSk6IFVzZSBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6aGFzaFN0cmluZyk6
IFVzZSBpc0FsbEFTQ0lJLi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9s
aWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVs
ZHMpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4uCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19X
S1dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21IZWFkZXJGaWVsZHM6XSk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6IFVzZSBlbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBs
aWNhdGlvbik6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTogRGl0dG8uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogVXNlIGlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorCiAyMDE3LTExLTIwICBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIGRlY2xzcGVjIHdpdGhpbiBXZWJL
aXQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWRlNGMxNzc1ZDM3MDQ4OGQ4
MTg1OTkzYTJjNGMyNjk4NzEwNDBhMy4uYzE4NWM2Nzc3MDM1ZTc1OTA1NjhiNDlkNzc2MTExMmI5
YmNlNzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE3LTExLTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1
Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3Bl
cmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcDoKKyAgICAg
ICAgKEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nT2JqZWN0KTogVXNlIGlzQWxs
QVNDSUkuCisgICAgICAgIChCaW5hcnlQcm9wZXJ0eUxpc3RTZXJpYWxpemVyOjphcHBlbmRTdHJp
bmdPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKHJlZ0V4cEZvckxhYmVscyk6IFJlbW92ZWQgVGV4dENhc2VTZW5zaXRp
dmUgc2luY2UgaXQgaXMgbm93IHRoZSBkZWZhdWx0LgorICAgICAgICAobWF0Y2hMYWJlbHNBZ2Fp
bnN0U3RyaW5nKTogVXNlIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZS4KKwogMjAxNy0x
MS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdW51c2VkIFRPVUNIX0lDT05fTE9BRElORyBmZWF0dXJlIGZsYWcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAppbmRleCBi
NGNlYzZiNGU5OTgwODg5OTJmYWYxNWI3NzhmODc4MWFjZTRiNjI3Li43OTRlN2ZhNzNjYTJmOTNi
N2NkOWU4NWE1ZWY5MjVhMzZmOTAwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC04MSwxNCArODEsMTQgQEAgVW5p
cXVlZFN0cmluZ0ltcGwqIERlc2lyZWRJZGVudGlmaWVyczo6YXQodW5zaWduZWQgaW5kZXgpIGNv
bnN0CiAgICAgICAgIHJlc3VsdCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGluZGV4KS5pbXBs
KCk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBtX2FkZGVkSWRlbnRpZmllcnNbaW5kZXgg
LSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpXTsKLSAgICBBU1NFUlQocmVzdWx0
LT5oYXNBdExlYXN0T25lUmVmKCkpOworICAgIEFTU0VSVChyZXN1bHQtPnJlZkNvdW50KCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVzaXJlZElkZW50aWZpZXJzOjpyZWFsbHlB
ZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21tb25EYXRhKQogewogICAgIGZvciAoYXV0byByZXAg
OiBtX2FkZGVkSWRlbnRpZmllcnMpIHsKLSAgICAgICAgQVNTRVJUKHJlcC0+aGFzQXRMZWFzdE9u
ZVJlZigpKTsKKyAgICAgICAgQVNTRVJUKHJlcC0+cmVmQ291bnQoKSk7CiAgICAgICAgIGNvbW1v
bkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcmVw
KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4NDM3
MGIxYWNkZWJlY2Y4M2NlZjRkOTY4MDNkYzEwOGJmYjZkMGQ4Li4zYjM2N2ZmN2FlMjJkMDAwOGJl
ZTlkZWMzMzE2ODliNDVmMmZiZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cApAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGluCiBzdGF0aWMgYm9v
bCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wg
aXNSZWdleCkKIHsKICAgICBpZiAoaXNSZWdleCkgewotICAgICAgICBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICAgICAg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChwYXR0ZXJuKTsKICAgICAgICAgcmV0
dXJuIHJlZ2V4Lm1hdGNoKHVybCkgIT0gLTE7CiAgICAgfQogICAgIHJldHVybiB1cmwgPT0gcGF0
dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBm
ZGVkYTFkMTM4NTk4ZGIwZTAyOGQ2YjI1NWNhYjE3NTA2OTE2YzQ4Li5jZmU1NmY2NTg5NGYwYTJh
MmM5Y2U0MDMxZjc2YTJlMGM4YmYxNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlID0gMjA0ODsKIHZvaWQgSlNSb3BlU3RyaW5nOjpy
ZXNvbHZlUm9wZUludGVybmFsOChMQ2hhciogYnVmZmVyKSBjb25zdAogewogICAgIGlmIChpc1N1
YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycygKKyAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAgICBidWZmZXIsIHN1YnN0cmluZ0Jh
c2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEpTUm9w
ZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDhOb1N1YnN0cmluZyhMQ2hhciogYnVmZmVyKSBj
b25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgg
JiYgZmliZXIoaSk7ICsraSkgewogICAgICAgICBjb25zdCBTdHJpbmdJbXBsJiBmaWJlclN0cmlu
ZyA9ICpmaWJlcihpKS0+bV92YWx1ZS5pbXBsKCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGZpYmVyU3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9z
aXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGgpOwogICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogICAgIEFTU0VS
VCgoYnVmZmVyICsgbGVuZ3RoKCkpID09IHBvc2l0aW9uKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDhOb1N1YnN0cmluZyhMQ2hhciog
YnVmZmVyKSBjb25zdAogdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNihV
Q2hhciogYnVmZmVyKSBjb25zdAogewogICAgIGlmIChpc1N1YnN0cmluZygpKSB7Ci0gICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycygKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoCiAgICAgICAgICAgICBidWZmZXIsIHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0
ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5ndGgoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNjksOSArMTY5LDkgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3Bl
SW50ZXJuYWwxNk5vU3Vic3RyaW5nKFVDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgICAgIGNvbnN0
IFN0cmluZ0ltcGwmIGZpYmVyU3RyaW5nID0gKmZpYmVyKGkpLT5tX3ZhbHVlLmltcGwoKTsKICAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmliZXJTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIGlm
IChmaWJlclN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBmaWJlclN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgp
OworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIGZpYmVy
U3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogICAgICAgICBwb3NpdGlvbiArPSBsZW5n
dGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVuZ3RoKCkpID09IHBvc2l0aW9uKTsK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2Fz
ZTgoTENoYXIqIGJ1ZmZlcikgY29uc3QKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGN1cnJlbnRGaWJlci0+bGVuZ3RoKCk7CiAgICAgICAgIHBvc2l0aW9uIC09IGxlbmd0aDsK
LSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9uLCBjaGFyYWN0ZXJzLCBsZW5n
dGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgY2hhcmFj
dGVycywgbGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsK
QEAgLTM2Myw5ICszNjMsOSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2Fz
ZShVQ2hhciogYnVmZmVyKSBjb25zdAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGN1cnJlbnRGaWJlckFzUm9wZS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgcG9zaXRpb24g
LT0gbGVuZ3RoOwogICAgICAgICAgICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0cmluZy0+Y2hh
cmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSArIG9m
ZnNldCwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSAr
IG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGxlbmd0
aCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoICYmIGN1cnJl
bnRGaWJlckFzUm9wZS0+ZmliZXIoaSk7ICsraSkKQEAgLTM3Nyw5ICszNzcsOSBAQCB2b2lkIEpT
Um9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciogYnVmZmVyKSBjb25zdAogICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwogICAgICAgICBwb3NpdGlv
biAtPSBsZW5ndGg7CiAgICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAg
U3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnM4KCksIGxl
bmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwg
c3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczE2KCks
IGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlv
biwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQo
YnVmZmVyID09IHBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGFkYmZhZDIxMTllMGM2OTQ3MTg1ZjIxYzljMmMz
NDIxZDc0MzcxMTUuLjhlMmE2ZWJhNDVkMDE0ZmYxNzI2ZWFkYWE5ODE2NTI5MmZiNGE3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxp
Y2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAgICAgICAgIGlu
dCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7
IGkrKykgewogICAgICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0u
bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciAr
IGJ1ZmZlclBvcywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3Jj
TGVuKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIg
KyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNy
Y0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJj
CiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNv
dW50OyBpKyspIHsKICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0u
bGVuZ3RoKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4p
OworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVy
UG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwog
ICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgfQogICAgIH0KQEAgLTQx
MywxMyArNDEzLDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJz
dHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbWF4Q291bnQ7IGkrKykgewogICAgICAgICAgICAgaWYgKGkgPCByYW5nZUNv
dW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNb
aV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhi
dWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRp
b24sIHNyY0xlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0
ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5w
b3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xl
bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaSA8
IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGludCBzZXBMZW4gPSBzZXBh
cmF0b3JzW2ldLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgoKSwg
c2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMo
YnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7
CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtNDQwLDE4ICs0NDAsMTggQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUq
IGV4ZWMsIEoKICAgICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICBpZiAo
aW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKICAgICAgICAgICAgICAg
ICBpZiAoc291cmNlLmlzOEJpdCgpKQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0
cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2UuY2hhcmFj
dGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhi
dWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ1Jhbmdl
c1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkg
KyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBp
ZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNl
cGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VwYXJhdG9yc1tp
XS5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1
ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOwor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBi
dWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhi
dWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczE2KCksIHNlcExlbik7
CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciAr
IGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzMTYoKSwgc2VwTGVuKTsKICAgICAg
ICAgICAgICAgICBidWZmZXJQb3MgKz0gc2VwTGVuOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uY29udGFp
bnMoc2VhcmNoU3RyaW5nLCB0cnVlLCBzdGFydCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmZpbmQoc2VhcmNoU3RyaW5nLCBzdGFydCkg
IT0gbm90Rm91bmQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAppbmRleCAyODQyNzc0M2NkZjZhMzhhOWE3YTBk
MmViNzEyMzYxZmMxMTdiODgzLi4yMDczOTBiNWU5ZTcxYWE2NmE4MmVhNDUxNjMxYjFlYzQ0ODVj
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVz
c2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9u
LmgKQEAgLTI5LDE1ICsyOSwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIg
ewogCi1lbnVtIE11bHRpbGluZU1vZGUgewotICAgIE11bHRpbGluZURpc2FibGVkLAotICAgIE11
bHRpbGluZUVuYWJsZWQKLX07CitlbnVtIE11bHRpbGluZU1vZGUgeyBNdWx0aWxpbmVEaXNhYmxl
ZCwgTXVsdGlsaW5lRW5hYmxlZCB9OworZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5IHsgVGV4dENh
c2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIAogY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgUmVndWxhckV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vu
c2l0aXZpdHksIE11bHRpbGluZU1vZGUgPSBNdWx0aWxpbmVEaXNhYmxlZCk7CisgICAgZXhwbGlj
aXQgUmVndWxhckV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiwgVGV4dENhc2VTZW5zaXRpdml0eSA9
IFRleHRDYXNlU2Vuc2l0aXZlLCBNdWx0aWxpbmVNb2RlID0gTXVsdGlsaW5lRGlzYWJsZWQpOwog
ICAgIH5SZWd1bGFyRXhwcmVzc2lvbigpOwogCiAgICAgUmVndWxhckV4cHJlc3Npb24oY29uc3Qg
UmVndWxhckV4cHJlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlGYXN0UGF0aC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKaW5kZXgg
ZWI1NDgyOGEyOGVhZGE0MDk3NDVjODFkZWQzNzFkYjI2NjJmYjU3Ni4uMjY0MmE1YmJlYjJkMGI2
MzQ1NzU4ZjJmNDFiOGFjZGZmYjY4ZjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9BU0NJSUZhc3RQYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRo
LmgKQEAgLTE5NCw0ICsxOTQsNiBAQCBpbmxpbmUgdm9pZCBjb3B5TENoYXJzRnJvbVVDaGFyU291
cmNlKExDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIqIHNvdXJjZSwgcwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpjaGFyYWN0ZXJzQXJlQWxsQVNDSUk7CisKICNlbmRp
ZiAvLyBBU0NJSUZhc3RQYXRoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDc2
NThlMDUxMjU1OTQwZjE5OTk5YTIyOWM2MjNkOThlYmVmMzJhODIuLmI4NjNhYjAzMzE2OGFkODUy
MjU0OGVhNTFkNGJkZWQwNzk1NWJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiwgMjAwOCwgMjAx
NC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNzIsOCArNzIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHRlbXBs
YXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgQXRvbWljU3Ry
aW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZy
b21MaXRlcmFsVGFnKQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdB
WVNfSU5MSU5FIEF0b21pY1N0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVy
Q291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykKICAgICAgICAgOiBtX3N0cmluZyhBdG9t
aWNTdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSkp
CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJDb3VudCA+IDEsIEF0b21p
Y1N0cmluZ0Zyb21MaXRlcmFsTm90RW1wdHkpOwpAQCAtMTEyLDUxICsxMTEsMjcgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIG51bWJlcihk
b3VibGUpOwogICAgIC8vIElmIHdlIG5lZWQgbW9yZSBvdmVybG9hZHMgb2YgdGhlIG51bWJlciBm
dW5jdGlvbiwgd2UgY2FuIGFkZCBhbGwgdGhlIG90aGVycyB0aGF0IFN0cmluZyBoYXMsIGJ1dCB0
aGVzZSBzZWVtIHRvIGRvIGZvciBub3cuCiAKLSAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGMpOyB9Ci0gICAgYm9vbCBjb250YWlucyhj
b25zdCBMQ2hhciogcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocywgY2FzZVNlbnNpdGl2ZSk7IH0KLSAgICBib29s
IGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuY29udGFpbnMocyk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgcywgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlu
cyhzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLQotICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChjLCBzdGFydCk7
IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogcywgdW5zaWduZWQgc3RhcnQgPSAwLCBi
b29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmlu
Zy5maW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0
IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVl
KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNlU2Vu
dGl0aXZlKTsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
JiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNh
c2Uocyk7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYg
cywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5n
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzLCBzdGFydE9mZnNldCk7IH0KLSAgICBzaXplX3QgZmlu
ZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1bmN0aW9u
LCBzdGFydCk7IH0KLQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgocyk7IH0KLSAgICBib29sIHN0
YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQotICAg
IGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aChzLCBjYXNlU2Vuc2l0aXZl
KTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwg
Y2FzZVNlbnNpdGl2ZSk7IH0KLQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzKTsgfQotICAgIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLSAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQot
ICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAotICAgICAgICB7IHJldHVy
biBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRj
aExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUp
OyB9CisgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmNvbnRhaW5zKGNoYXJhY3Rlcik7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExD
aGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmluZyk7IH0K
KyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKworICAgIHNpemVfdCBmaW5kKFVDaGFy
IGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5m
aW5kKGNoYXJhY3Rlciwgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0
cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0
cmluZywgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJpbmcsIHN0
YXJ0KTsgfQorICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcpOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0
cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0KTsgfQorICAgIHNpemVfdCBmaW5k
KENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsg
fQorCisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0
YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNX
aXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9v
bCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KTsgfQorCisgICAg
Ym9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuZW5kc1dpdGgoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFy
YWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFy
ICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRo
PG1hdGNoTGVuZ3RoPihwcmVmaXgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQXRv
bWljU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIEF0b21pY1N0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0
OwpAQCAtMTcyLDEzICsxNDcsMTMgQEAgcHVibGljOgogI2lmIFVTRShDRikKICAgICBBdG9taWNT
dHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwogICAgIEF0b21p
Y1N0cmluZyhOU1N0cmluZyopOwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAotICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjgg
d2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgotICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRh
aW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgorICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVU
Rjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBp
bnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgo
Y29uc3QgY2hhciopOwogCkBAIC0yMjksNTMgKzIwNCw1MyBAQCBpbmxpbmUgQXRvbWljU3RyaW5n
OjpBdG9taWNTdHJpbmcoKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoY29uc3QgTENoYXIqIHMpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQo
cykpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHN0cmlu
ZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQogewogfQog
Ci1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgY2hhciogcykKLSAgICA6
IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6
OkF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNT
dHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRv
bWljU3RyaW5nKGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX3N0cmlu
ZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocywgbGVuZ3RoKSkKK2lubGluZSBBdG9taWNTdHJpbmc6
OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgpCisgICAg
OiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nLCBsZW5ndGgpKQogewogfQog
Ci1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2ln
bmVkIGxlbmd0aCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzLCBsZW5n
dGgpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFk
ZChzdHJpbmcsIGxlbmd0aCkpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciogcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFk
ZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogc3Ry
aW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9
CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBp
bXApCi0gICAgOiBtX3N0cmluZyhpbXApCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoQXRvbWljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQogewog
fQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+JiYgaW1wKQotICAgIDogbV9zdHJpbmcoV1RGTW92ZShpbXApKQoraW5saW5lIEF0b21p
Y1N0cmluZzo6QXRvbWljU3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmluZykK
KyAgICA6IG1fc3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkKLSAgICA6IG1fc3RyaW5nKEF0b21p
Y1N0cmluZ0ltcGw6OmFkZChpbXApKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFk
ZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29u
c3QgU3RhdGljU3RyaW5nSW1wbCogaW1wKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1w
bDo6YWRkKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3Rh
dGljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6
YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhj
b25zdCBTdHJpbmcmIHMpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocy5p
bXBsKCkpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZy5pbXBs
KCkpKQogewogfQogCkBAIC0yOTAsMTcgKzI2NSwyMSBAQCBpbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIH0KIAogI2lmIFVTRShDRikKLWlu
bGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhDRlN0cmluZ1JlZiBzKQotICAgIDogIG1f
c3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKKworaW5saW5lIEF0b21pY1N0cmluZzo6
QXRvbWljU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKKyAgICA6ICBtX3N0cmluZyhBdG9taWNT
dHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KKwogI2VuZGlmCiAKICNpZmRlZiBfX09CSkNf
XwotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKE5TU3RyaW5nKiBzKQotICAgIDog
bV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzKSkK
KworaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKE5TU3RyaW5nKiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXN0cmluZykpCiB7CiB9CisKICNlbmRpZgogCiAvLyBEZWZpbmUgZXh0ZXJuYWwgZ2xvYmFsIHZh
cmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0cmluZ3MuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCmluZGV4IDYxOTQyZTdm
YzRiMjVjYTFiOTA1NjI0MDE3OWQ4MTdmYWFmNWI5YmYuLjlkYjgzMDNjODMwMWI5N2M0MzA4MjA4
MjZmYTQ2YTkyY2U5Y2U5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oCkBAIC0yMiwxNCArMjIsMTMgQEAKICNpZm5kZWYgSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbl9oCiAjZGVmaW5lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25faAog
CisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0g
UG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsKLSAgICBQb3NpdGl2ZU51bWJlciwKLSAgICBOZWdh
dGl2ZU51bWJlcgotfTsKK2VudW0gUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsgUG9zaXRpdmVO
dW1iZXIsIE5lZ2F0aXZlTnVtYmVyIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51
bWJlclR5cGUsIHR5cGVuYW1lIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU+CiBzdGF0aWMgdHlwZW5h
bWUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRv
U3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQWRkaXRpb25hbEFyZ3VtZW50
VHlwZSBhZGRpdGlvbmFsQXJndW1lbnQpCkBAIC02Myw3ICs2Miw2IEBAIGlubGluZSB0eXBlbmFt
ZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9T
dHJpbmdVbnNpCiAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbDxULCBVbnNpZ25lZEludGVn
ZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBhZGRpdGlvbmFsQXJndW1lbnQpOwogfQog
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIFVuc2lnbmVkSW50
ZWdlclR5cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJlciBOdW1iZXJUeXBlPgogc3RhdGljIHZv
aWQgd3JpdGVOdW1iZXJUb0J1ZmZlckltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIsIENo
YXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQogewpAQCAtOTcsNyArOTUsNiBAQCBpbmxpbmUgdm9p
ZCB3cml0ZU51bWJlclRvQnVmZmVyVW5zaWduZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIs
IENoYXJhY3RlclR5cAogICAgIHJldHVybiB3cml0ZU51bWJlclRvQnVmZmVySW1wbDxDaGFyYWN0
ZXJUeXBlLCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBkZXN0
aW5hdGlvbik7CiB9CiAKLQogdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwg
UG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGU+CiBzdGF0aWMgdW5zaWduZWQgbGVu
Z3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCiB7CkBA
IC0xMjgsNyArMTI1LDYgQEAgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVtYmVyQXNTdHJpbmdV
bnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKICAgICByZXR1cm4gbGVuZ3RoT2ZO
dW1iZXJBc1N0cmluZ0ltcGw8VW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVOdW1iZXI+KG51
bWJlcik7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQxN2Yz
OWI0YjY4OTRmZWViNWIyYzczMjMxOWQyY2U3ZDAyNWI1NDAuLmZhZDUwNzUwZGFmY2NlZDRiMWI1
YjEzNjhmYTkyMmUxMGFlOWUwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAt
MTYyLDcgKzE2Miw2IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0
Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduCiB7CiAgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKLQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0cmluZ0ltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZykp
OwogfQogCkBAIC0xNzAsMTIgKzE2OSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbgogewog
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7Ci0KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgQ29uc3RydWN0V2l0
aG91dENvcHlpbmcpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwo
dW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQog
ewogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIGRhdGEgPSAwOwpAQCAtMTg0LDIwICsxODEs
MTkgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLAogICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwgQ2hhclR5cGUqJiBk
YXRhKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNp
Z25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChsZW5ndGgp
OwogCiAgICAgLy8gQWxsb2NhdGUgYSBzaW5nbGUgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250
YWluIHRoZSBTdHJpbmdJbXBsCiAgICAgLy8gc3RydWN0IGFzIHdlbGwgYXMgdGhlIGRhdGEgd2hp
Y2ggaXQgY29udGFpbnMuIFRoaXMgcmVtb3ZlcyBvbmUKICAgICAvLyBoZWFwIGFsbG9jYXRpb24g
ZnJvbSB0aGlzIGNhbGwuCi0gICAgaWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyVHlwZSkp
KQorICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQogICAgICAg
ICBDUkFTSCgpOwotICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0lt
cGwqPihzdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hhclR5cGU+KGxlbmd0aCkpKTsKKyAg
ICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nTWFs
bG9jKGFsbG9jYXRpb25TaXplPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpKTsKIAotICAgIGRhdGEg
PSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJUeXBlPigpOwotICAgIHJldHVybiBjb25zdHJ1Y3RJ
bnRlcm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOworICAgIGRhdGEgPSBzdHJpbmctPnRh
aWxQb2ludGVyPENoYXJhY3RlclR5cGU+KCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFs
PENoYXJhY3RlclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKIH0KIAogUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRh
dGEpCkBAIC0yMTAsOCArMjA2LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpCiAgICAgcmV0dXJu
IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbChsZW5ndGgsIGRhdGEpOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRl
cm5hbChSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBD
aGFyYWN0ZXJUeXBlKiYgZGF0YSkKIHsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmctPmhhc09u
ZVJlZigpKTsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmctPmJ1ZmZlck93bmVyc2hpcCgpID09
IEJ1ZmZlckludGVybmFsKTsKQEAgLTIyMiwxNCArMjE3LDE0IEBAIGlubGluZSBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmIG9y
aWdpbmFsCiAgICAgfQogCiAgICAgLy8gU2FtZSBhcyBjcmVhdGVVbmluaXRpYWxpemVkKCkgZXhj
ZXB0IGhlcmUgd2UgdXNlIHN0cmluZ1JlYWxsb2MuCi0gICAgaWYgKGxlbmd0aCA+ICgoc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNp
emVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVy
VHlwZSkpKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgb3JpZ2luYWxTdHJpbmctPn5TdHJpbmdJ
bXBsKCk7Ci0gICAgYXV0byogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmlu
Z1JlYWxsb2MoJm9yaWdpbmFsU3RyaW5nLmxlYWtSZWYoKSwgYWxsb2NhdGlvblNpemU8Q2hhclR5
cGU+KGxlbmd0aCkpKTsKKyAgICBhdXRvKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBs
Kj4oc3RyaW5nUmVhbGxvYygmb3JpZ2luYWxTdHJpbmcubGVha1JlZigpLCBhbGxvY2F0aW9uU2l6
ZTxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKSk7CiAKLSAgICBkYXRhID0gc3RyaW5nLT50YWlsUG9p
bnRlcjxDaGFyVHlwZT4oKTsKLSAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhclR5cGU+
KHN0cmluZywgbGVuZ3RoKTsKKyAgICBkYXRhID0gc3RyaW5nLT50YWlsUG9pbnRlcjxDaGFyYWN0
ZXJUeXBlPigpOworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPihz
dHJpbmcsIGxlbmd0aCk7CiB9CiAKIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9j
YXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIExD
aGFyKiYgZGF0YSkKQEAgLTI0NCwxNSArMjM5LDEzIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25l
CiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChXVEZNb3ZlKG9yaWdpbmFsU3RyaW5nKSwg
bGVuZ3RoLCBkYXRhKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJbnRlcm5h
bChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAg
ICAgaWYgKCFjaGFyYWN0ZXJzIHx8ICFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsK
LQotICAgIENoYXJUeXBlKiBkYXRhOworICAgIENoYXJhY3RlclR5cGUqIGRhdGE7CiAgICAgYXV0
byBzdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRh
dGEpOwotICAgIG1lbWNweShkYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGggKiBzaXplb2YoQ2hhclR5
cGUpKTsKKyAgICBjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAg
IHJldHVybiBzdHJpbmc7CiB9CiAKQEAgLTI3NSw3ICsyNjgsNyBAQCBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbgogICAgIGF1dG8gc3RyaW5nID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9u
RW1wdHkobGVuZ3RoLCBkYXRhKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gJiAweGZmMDApCisgICAgICAgIGlm
IChjaGFyYWN0ZXJzW2ldICYgMHhGRjAwKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNo
YXJhY3RlcnNbaV0pOwogICAgIH0KQEAgLTI5OCwyOSArMjkxLDYgQEAgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogc3RyaW5nKQogICAgIHJldHVybiBjcmVh
dGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gY29udGFp
bnNPbmx5QVNDSUlXaGl0ZXNwYWNlLgotICAgIC8vIE1vc3QgV2ViS2l0IGNhbGxlcnMgaW5zdGVh
ZCB3YW50IGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlIHdoaWNoLCB1bmxpa2UgdGhpcywKLSAg
ICAvLyB3b3VsZCAqbm90KiB0cmVhdCBVKzAwMEIgTElORSBUQUJVTEFUSU9OIGFzIGEgc3BhY2Uu
Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIFVDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2UoYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBt
X2RhdGExNltpXTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2UoYykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCiBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgaWYgKHN0YXJ0ID49IG1fbGVuZ3RoKQpAQCAtMzgxLDExICszNTEsOCBAQCBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgp
CiAgICAgaWYgKCEob3JlZCAmIH4weDdGKSkgewogICAgICAgICBVQ2hhciogZGF0YTE2OwogICAg
ICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSht
X2xlbmd0aCwgZGF0YTE2KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjID0gbV9kYXRhMTZbaV07
Ci0gICAgICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIoYyk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIobV9kYXRhMTZbaV0pOwogICAgICAgICByZXR1cm4g
bmV3SW1wbDsKICAgICB9CiAKQEAgLTQ1Miw5ICs0MTksOSBAQCBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIC8vIERv
IGEgZmFzdGVyIGxvb3AgZm9yIHRoZSBjYXNlIHdoZXJlIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUg
QVNDSUkuCiAgICAgICAgIHVuc2lnbmVkIG9yZWQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBMQ2hhciBjID0gbV9kYXRhOFtpXTsK
LSAgICAgICAgICAgIG9yZWQgfD0gYzsKLSAgICAgICAgICAgIGRhdGE4W2ldID0gdG9BU0NJSVVw
cGVyKGMpOworICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAg
ICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyOworICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJ
VXBwZXIoY2hhcmFjdGVyKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIShvcmVkICYgfjB4N0Yp
KQogICAgICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC00NjYsMTEgKzQzMywxMSBAQCBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgp
CiAgICAgICAgIC8vICAxLiBTb21lIExhdGluLTEgY2hhcmFjdGVycyB3aGVuIGNvbnZlcnRlZCB0
byB1cHBlciBjYXNlIGFyZSAxNiBiaXQgY2hhcmFjdGVycy4KICAgICAgICAgLy8gIDIuIExvd2Vy
IGNhc2Ugc2hhcnAtUyBjb252ZXJ0cyB0byAiU1MiICh0d28gY2hhcmFjdGVycykKICAgICAgICAg
Zm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIExDaGFy
IGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGMgPT0gc21hbGxMZXR0
ZXJTaGFycFMpKQorICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0ZXIgPT0gc21hbGxMZXR0ZXJTaGFycFMpKQog
ICAgICAgICAgICAgICAgICsrbnVtYmVyU2hhcnBTQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIEFT
U0VSVCh1X3RvdXBwZXIoYykgPD0gMHhGRkZGKTsKLSAgICAgICAgICAgIFVDaGFyIHVwcGVyID0g
dV90b3VwcGVyKGMpOworICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjaGFyYWN0ZXIpIDw9
IDB4RkZGRik7CisgICAgICAgICAgICBVQ2hhciB1cHBlciA9IHVfdG91cHBlcihjaGFyYWN0ZXIp
OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHVwcGVyID4gMHhGRikpIHsKICAgICAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGlzIHVwcGVyLWNhc2VkIGNoYXJhY3RlciBkb2VzIG5vdCBmaXQgaW4g
YW4gOC1iaXQgc3RyaW5nLCB3ZSBuZWVkIHRvIHRha2UgdGhlIDE2LWJpdCBwYXRoLgogICAgICAg
ICAgICAgICAgIGdvdG8gdXBjb252ZXJ0OwpAQCAtNDg3LDEzICs0NTQsMTMgQEAgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAg
ICAgICBMQ2hhciogZGVzdCA9IGRhdGE4OwogCiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBMQ2hhciBjID0gbV9kYXRhOFtpXTsKLSAg
ICAgICAgICAgIGlmIChjID09IHNtYWxsTGV0dGVyU2hhcnBTKSB7CisgICAgICAgICAgICBMQ2hh
ciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBz
bWFsbExldHRlclNoYXJwUykgewogICAgICAgICAgICAgICAgICpkZXN0KysgPSAnUyc7CiAgICAg
ICAgICAgICAgICAgKmRlc3QrKyA9ICdTJzsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjKSA8PSAweEZGKTsKLSAgICAgICAgICAgICAgICAq
ZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVfdG91cHBlcihjKSk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHVfdG91cHBlcihjaGFyYWN0ZXIpIDw9IDB4RkYpOworICAgICAgICAgICAgICAg
ICpkZXN0KysgPSBzdGF0aWNfY2FzdDxMQ2hhcj4odV90b3VwcGVyKGNoYXJhY3RlcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTUxMCw5ICs0NzcsOSBAQCB1cGNvbnZlcnQ6CiAg
ICAgLy8gRG8gYSBmYXN0ZXIgbG9vcCBmb3IgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSBjaGFyYWN0
ZXJzIGFyZSBBU0NJSS4KICAgICB1bnNpZ25lZCBvcmVkID0gMDsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBzb3VyY2UxNltpXTsKLSAg
ICAgICAgb3JlZCB8PSBjOwotICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJVXBwZXIoYyk7Cisg
ICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHNvdXJjZTE2W2ldOworICAgICAgICBvcmVkIHw9IGNo
YXJhY3RlcjsKKyAgICAgICAgZGF0YTE2W2ldID0gdG9BU0NJSVVwcGVyKGNoYXJhY3Rlcik7CiAg
ICAgfQogICAgIGlmICghKG9yZWQgJiB+MHg3RikpCiAgICAgICAgIHJldHVybiBuZXdJbXBsOwpA
QCAtNjM0LDggKzYwMSw3IEBAIFNsb3dQYXRoOgogICAgICAgICBpZiAoIW5lZWQxNkJpdENoYXJh
Y3RlcnMpIHsKICAgICAgICAgICAgIExDaGFyKiBkYXRhODsKICAgICAgICAgICAgIGF1dG8gZm9s
ZGVkID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGE4
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYWlsaW5nSW5kZXg7ICsr
aSkKLSAgICAgICAgICAgICAgICBkYXRhOFtpXSA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBj
b3B5Q2hhcmFjdGVycyhkYXRhOCwgbV9kYXRhOCwgZmFpbGluZ0luZGV4KTsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IG1fZGF0YThbaV07CiAgICAgICAgICAgICAg
ICAgaWYgKGlzQVNDSUkoY2hhcmFjdGVyKSkKQEAgLTcwNyw4ICs2NzMsNyBAQCBBTFdBWVNfSU5M
SU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0QVNDSUlDYXNlKFN0cmluZ0lt
cGwmIGltcGwsIGNvbgogU2xvd1BhdGg6CiAgICAgQ2hhcmFjdGVyVHlwZSogbmV3RGF0YTsKICAg
ICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5n
dGgsIG5ld0RhdGEpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYWlsaW5nSW5kZXg7
ICsraSkKLSAgICAgICAgbmV3RGF0YVtpXSA9IGRhdGFbaV07CisgICAgY29weUNoYXJhY3RlcnMo
bmV3RGF0YSwgZGF0YSwgZmFpbGluZ0luZGV4KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmYWls
aW5nSW5kZXg7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgbmV3RGF0YVtpXSA9IHR5cGUgPT0g
Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciA/IHRvQVNDSUlMb3dlcihkYXRhW2ldKSA6IHRvQVNDSUlV
cHBlcihkYXRhW2ldKTsKICAgICByZXR1cm4gbmV3SW1wbDsKQEAgLTc2MCw5ICs3MjUsOSBAQCBj
bGFzcyBVQ2hhclByZWRpY2F0ZSB7CiBwdWJsaWM6CiAgICAgaW5saW5lIFVDaGFyUHJlZGljYXRl
KENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZnVuY3Rpb24pOiBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KSB7IH0KIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoVUNoYXIgY2gpIGNvbnN0CisgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9mdW5jdGlvbihjaCk7CisgICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKGNo
YXJhY3Rlcik7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNzcxLDkgKzczNiw5IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlIHsKIHB1YmxpYzoKLSAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvcigpKFVDaGFyIGNoKSBjb25zdAorICAgIGlubGluZSBib29sIG9wZXJhdG9y
KCkoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3BhY2VP
ck5ld2xpbmUoY2gpOworICAgICAgICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShjaGFyYWN0ZXIp
OwogICAgIH0KIH07CiAKQEAgLTc4NywxMSArNzUyLDEwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNw
YWNlCiAgICAgcmV0dXJuIHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUoaXNX
aGl0ZVNwYWNlKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19J
TkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoY29uc3Qg
Q2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNo
KQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKLSAg
ICBjb25zdCBDaGFyVHlwZSogZnJvbSA9IGNoYXJhY3RlcnM7Ci0gICAgY29uc3QgQ2hhclR5cGUq
IGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CisgICAgYXV0byogZnJvbSA9IGNoYXJhY3RlcnM7
CisgICAgYXV0byogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0aDsKICAgICAKICAgICAvLyBBc3N1
bWUgdGhlIGNvbW1vbiBjYXNlIHdpbGwgbm90IHJlbW92ZSBhbnkgY2hhcmFjdGVycwogICAgIHdo
aWxlIChmcm9tICE9IGZyb21lbmQgJiYgIWZpbmRNYXRjaCgqZnJvbSkpCkBAIC03OTksMTIgKzc2
MywxMiBAQCBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVD
aGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYQogICAgIGlmIChmcm9tID09IGZyb21lbmQp
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKLSAgICBTdHJpbmdCdWZmZXI8Q2hhclR5cGU+
IGRhdGEobV9sZW5ndGgpOwotICAgIENoYXJUeXBlKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwor
ICAgIFN0cmluZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKKyAgICBhdXRv
KiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIG91dGMgPSBmcm9tIC0gY2hh
cmFjdGVyczsKICAgICAKICAgICBpZiAob3V0YykKLSAgICAgICAgbWVtY3B5KHRvLCBjaGFyYWN0
ZXJzLCBvdXRjICogc2l6ZW9mKENoYXJUeXBlKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKHRv
LCBjaGFyYWN0ZXJzLCBvdXRjKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHdoaWxl
IChmcm9tICE9IGZyb21lbmQgJiYgZmluZE1hdGNoKCpmcm9tKSkKQEAgLTgyNywxNyArNzkxLDE2
IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoCiAgICAgcmV0dXJuIHJlbW92ZUNoYXJhY3RlcnMo
Y2hhcmFjdGVyczE2KCksIGZpbmRNYXRjaCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlIHBy
ZWRpY2F0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIGNsYXNzIFVDaGFyUHJl
ZGljYXRlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hl
ZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKLSAgICBTdHJp
bmdCdWZmZXI8Q2hhclR5cGU+IGRhdGEobV9sZW5ndGgpOworICAgIFN0cmluZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKIAotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tID0g
Y2hhcmFjdGVyczxDaGFyVHlwZT4oKTsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbWVuZCA9IGZy
b20gKyBtX2xlbmd0aDsKKyAgICBhdXRvKiBmcm9tID0gY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBl
PigpOworICAgIGF1dG8qIGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CiAgICAgaW50IG91dGMg
PSAwOwogICAgIGJvb2wgY2hhbmdlZFRvU3BhY2UgPSBmYWxzZTsKICAgICAKLSAgICBDaGFyVHlw
ZSogdG8gPSBkYXRhLmNoYXJhY3RlcnMoKTsKKyAgICBhdXRvKiB0byA9IGRhdGEuY2hhcmFjdGVy
cygpOwogICAgIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHdoaWxlIChmcm9tICE9IGZy
b21lbmQgJiYgcHJlZGljYXRlKCpmcm9tKSkgewpAQCAtOTYyLDU0ICs5MjUsNiBAQCBmbG9hdCBT
dHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogICAgIHJldHVybiBjaGFyYWN0ZXJzVG9GbG9h
dChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG9rKTsKIH0KIAotLy8gVGFibGUgaXMgYmFzZWQg
b24gZnRwOi8vZnRwLnVuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBL0Nhc2VGb2xkaW5nLnR4dAot
c3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XSA9IHsKLSAgICAweDAw
MDAsIDB4MDAwMSwgMHgwMDAyLCAweDAwMDMsIDB4MDAwNCwgMHgwMDA1LCAweDAwMDYsIDB4MDAw
NywgMHgwMDA4LCAweDAwMDksIDB4MDAwYSwgMHgwMDBiLCAweDAwMGMsIDB4MDAwZCwgMHgwMDBl
LCAweDAwMGYsCi0gICAgMHgwMDEwLCAweDAwMTEsIDB4MDAxMiwgMHgwMDEzLCAweDAwMTQsIDB4
MDAxNSwgMHgwMDE2LCAweDAwMTcsIDB4MDAxOCwgMHgwMDE5LCAweDAwMWEsIDB4MDAxYiwgMHgw
MDFjLCAweDAwMWQsIDB4MDAxZSwgMHgwMDFmLAotICAgIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIs
IDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgwMDI3LCAweDAwMjgsIDB4MDAyOSwg
MHgwMDJhLCAweDAwMmIsIDB4MDAyYywgMHgwMDJkLCAweDAwMmUsIDB4MDAyZiwKLSAgICAweDAw
MzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAz
NywgMHgwMDM4LCAweDAwMzksIDB4MDAzYSwgMHgwMDNiLCAweDAwM2MsIDB4MDAzZCwgMHgwMDNl
LCAweDAwM2YsCi0gICAgMHgwMDQwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4
MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNmEsIDB4MDA2YiwgMHgw
MDZjLCAweDAwNmQsIDB4MDA2ZSwgMHgwMDZmLAotICAgIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIs
IDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwgMHgwMDc3LCAweDAwNzgsIDB4MDA3OSwg
MHgwMDdhLCAweDAwNWIsIDB4MDA1YywgMHgwMDVkLCAweDAwNWUsIDB4MDA1ZiwKLSAgICAweDAw
NjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2
NywgMHgwMDY4LCAweDAwNjksIDB4MDA2YSwgMHgwMDZiLCAweDAwNmMsIDB4MDA2ZCwgMHgwMDZl
LCAweDAwNmYsCi0gICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4
MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4MDA3YiwgMHgw
MDdjLCAweDAwN2QsIDB4MDA3ZSwgMHgwMDdmLAotICAgIDB4MDA4MCwgMHgwMDgxLCAweDAwODIs
IDB4MDA4MywgMHgwMDg0LCAweDAwODUsIDB4MDA4NiwgMHgwMDg3LCAweDAwODgsIDB4MDA4OSwg
MHgwMDhhLCAweDAwOGIsIDB4MDA4YywgMHgwMDhkLCAweDAwOGUsIDB4MDA4ZiwKLSAgICAweDAw
OTAsIDB4MDA5MSwgMHgwMDkyLCAweDAwOTMsIDB4MDA5NCwgMHgwMDk1LCAweDAwOTYsIDB4MDA5
NywgMHgwMDk4LCAweDAwOTksIDB4MDA5YSwgMHgwMDliLCAweDAwOWMsIDB4MDA5ZCwgMHgwMDll
LCAweDAwOWYsCi0gICAgMHgwMGEwLCAweDAwYTEsIDB4MDBhMiwgMHgwMGEzLCAweDAwYTQsIDB4
MDBhNSwgMHgwMGE2LCAweDAwYTcsIDB4MDBhOCwgMHgwMGE5LCAweDAwYWEsIDB4MDBhYiwgMHgw
MGFjLCAweDAwYWQsIDB4MDBhZSwgMHgwMGFmLAotICAgIDB4MDBiMCwgMHgwMGIxLCAweDAwYjIs
IDB4MDBiMywgMHgwMGI0LCAweDAzYmMsIDB4MDBiNiwgMHgwMGI3LCAweDAwYjgsIDB4MDBiOSwg
MHgwMGJhLCAweDAwYmIsIDB4MDBiYywgMHgwMGJkLCAweDAwYmUsIDB4MDBiZiwKLSAgICAweDAw
ZTAsIDB4MDBlMSwgMHgwMGUyLCAweDAwZTMsIDB4MDBlNCwgMHgwMGU1LCAweDAwZTYsIDB4MDBl
NywgMHgwMGU4LCAweDAwZTksIDB4MDBlYSwgMHgwMGViLCAweDAwZWMsIDB4MDBlZCwgMHgwMGVl
LCAweDAwZWYsCi0gICAgMHgwMGYwLCAweDAwZjEsIDB4MDBmMiwgMHgwMGYzLCAweDAwZjQsIDB4
MDBmNSwgMHgwMGY2LCAweDAwZDcsIDB4MDBmOCwgMHgwMGY5LCAweDAwZmEsIDB4MDBmYiwgMHgw
MGZjLCAweDAwZmQsIDB4MDBmZSwgMHgwMGRmLAotICAgIDB4MDBlMCwgMHgwMGUxLCAweDAwZTIs
IDB4MDBlMywgMHgwMGU0LCAweDAwZTUsIDB4MDBlNiwgMHgwMGU3LCAweDAwZTgsIDB4MDBlOSwg
MHgwMGVhLCAweDAwZWIsIDB4MDBlYywgMHgwMGVkLCAweDAwZWUsIDB4MDBlZiwKLSAgICAweDAw
ZjAsIDB4MDBmMSwgMHgwMGYyLCAweDAwZjMsIDB4MDBmNCwgMHgwMGY1LCAweDAwZjYsIDB4MDBm
NywgMHgwMGY4LCAweDAwZjksIDB4MDBmYSwgMHgwMGZiLCAweDAwZmMsIDB4MDBmZCwgMHgwMGZl
LCAweDAwZmYsCi19OwotCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2Fz
ZWxlc3MoY29uc3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgIGlmIChsYXRpbjFDYXNlRm9sZFRhYmxl
WyphKytdICE9IGxhdGluMUNhc2VGb2xkVGFibGVbKmIrK10pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wg
ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgVUNoYXIqIGEsIGNvbnN0IExDaGFyKiBi
LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgIGlm
ICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9DQVNFX0RFRkFVTFQpICE9IGxhdGluMUNhc2VGb2xk
VGFibGVbKmIrK10pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxl
c3MoY29uc3QgTENoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0g
ICAgcmV0dXJuIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKGIsIGEsIGxlbmd0aCk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBVQ2hh
ciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gIXVf
bWVtY2FzZWNtcChhLCBiLCBsZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQpOwotfQotCiBzaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rp
b24sIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIGlmIChpczhCaXQoKSkKQEAgLTEwODksNTAgKzEw
MDQsNiBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChjb25zdCBMQ2hhciogbWF0Y2hTdHJpbmcs
IHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBpbmRleCArIGk7CiB9CiAKLXNpemVfdCBTdHJp
bmdJbXBsOjpmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWdu
ZWQgaW5kZXgpCi17Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1h
dGNoIGFnYWluc3QKLSAgICBpZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4gbm90Rm91
bmQ7Ci0gICAgc2l6ZV90IG1hdGNoU3RyaW5nTGVuZ3RoID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KG1hdGNoU3RyaW5nKSk7Ci0gICAgaWYgKG1hdGNoU3RyaW5nTGVuZ3Ro
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBDUkFTSCgp
OwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmdMZW5ndGg7Ci0gICAgaWYg
KCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4LCBsZW5ndGgoKSk7
Ci0KLSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KLSAgICBp
ZiAoaW5kZXggPiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2ln
bmVkIHNlYXJjaExlbmd0aCA9IGxlbmd0aCgpIC0gaW5kZXg7Ci0gICAgaWYgKG1hdGNoTGVuZ3Ro
ID4gc2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgLy8gZGVsdGEg
aXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVh
bnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVsdGEgPSBzZWFyY2hMZW5ndGggLSBt
YXRjaExlbmd0aDsKLQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciog
c2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnM4KCkgKyBpbmRleDsKLQotICAgICAgICB1bnNp
Z25lZCBpID0gMDsKLSAgICAgICAgd2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhz
ZWFyY2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKSkgewotICAgICAg
ICAgICAgaWYgKGkgPT0gZGVsdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwot
ICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpbmRleCArIGk7Ci0g
ICAgfQotCi0gICAgY29uc3QgVUNoYXIqIHNlYXJjaENoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzMTYo
KSArIGluZGV4OwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgd2hpbGUgKCFlcXVhbENvbXBh
dGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hTdHJpbmcsIG1hdGNo
TGVuZ3RoKSkgewotICAgICAgICBpZiAoaSA9PSBkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBu
b3RGb3VuZDsKLSAgICAgICAgKytpOwotICAgIH0KLSAgICByZXR1cm4gaW5kZXggKyBpOwotfQot
CiBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKIHsKICAg
ICAvLyBDaGVjayBmb3IgbnVsbCBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApAQCAtMTE4MSw1MCAr
MTA1Miw2IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gZmluZENvbW1vbigqdGhpcywgKm1hdGNoU3Ry
aW5nLCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBl
LCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXpl
X3QgZmluZElnbm9yaW5nQ2FzZUlubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJj
aENoYXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2VhcmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0
aCkKLXsKLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8g
dGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0
YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3RoOwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0g
ICAgLy8ga2VlcCBsb29waW5nIHVudGlsIHdlIG1hdGNoCi0gICAgd2hpbGUgKCFlcXVhbENvbXBh
dGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hDaGFyYWN0ZXJzLCBt
YXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYgKGkgPT0gZGVsdGEpCi0gICAgICAgICAgICByZXR1
cm4gbm90Rm91bmQ7Ci0gICAgICAgICsraTsKLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4ICsgaTsK
LX0KLQotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCogbWF0
Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQotewotICAgIC8vIENoZWNrIGZvciBudWxsIG9yIGVt
cHR5IHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0Ci0gICAgaWYgKCFtYXRjaFN0cmluZykKLSAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJp
bmctPmxlbmd0aCgpOwotICAgIGlmICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1pbihpbmRleCwgbGVuZ3RoKCkpOwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0
aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKGluZGV4ID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVy
biBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBzZWFyY2hMZW5ndGggPSBsZW5ndGgoKSAtIGluZGV4
OwotICAgIGlmIChtYXRjaExlbmd0aCA+IHNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwotCi0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJh
Y3RlcnM4KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBzZWFy
Y2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJ
bm5lcihjaGFyYWN0ZXJzOCgpICsgaW5kZXgsIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwg
aW5kZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChtYXRj
aFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIo
Y2hhcmFjdGVyczE2KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdD
YXNlSW5uZXIoY2hhcmFjdGVyczE2KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMx
NigpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci19Ci0KIHNpemVfdCBTdHJp
bmdJbXBsOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJp
bmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRo
aXMsIG1hdGNoU3RyaW5nLCAwKTsKQEAgLTEyNDksMTEgKzEwNzYsMTEgQEAgc2l6ZV90IFN0cmlu
Z0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmlu
ZywgdW5zaWduZWQKICAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhp
cywgKm1hdGNoU3RyaW5nLCBzdGFydE9mZnNldCk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpy
ZXZlcnNlRmluZChVQ2hhciBjLCB1bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpy
ZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIGlmIChp
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgsIGMsIGluZGV4KTsKLSAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsIGMsIGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJz
ZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGNoYXJhY3RlciwgaW5kZXgpOworICAgIHJl
dHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVy
LCBpbmRleCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0
eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CkBAIC0xMzE2LDEwMCArMTE0Myw0OCBAQCBzaXpl
X3QgU3RyaW5nSW1wbDo6cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2ln
bmVkIGluZGV4KQogICAgIHJldHVybiByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1l
IE1hdGNoQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNl
RmluZElnbm9yaW5nQ2FzZUlubmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENo
YXJhY3RlcnMsIGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNp
Z25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQg
bWF0Y2hMZW5ndGgpCiB7Ci0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFs
IHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5z
aWduZWQgZGVsdGEgPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoIC0gbWF0Y2hMZW5ndGgpOworICAg
IEFTU0VSVChtYXRjaExlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVChzdGFy
dE9mZnNldCArIG1hdGNoTGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICAvLyBrZWVw
IGxvb3BpbmcgdW50aWwgd2UgbWF0Y2gKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNh
c2VsZXNzKHNlYXJjaENoYXJhY3RlcnMgKyBkZWx0YSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExl
bmd0aCkpIHsKLSAgICAgICAgaWYgKCFkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLSAgICAgICAgLS1kZWx0YTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbHRhOworICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJp
bmcpLCBtYXRjaExlbmd0aCk7CisgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJp
bmcpLCBtYXRjaExlbmd0aCk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZEln
bm9yaW5nQ2FzZShTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5n
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpCiB7
Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QK
LSAgICBpZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5z
aWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy0+bGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQg
b3VyTGVuZ3RoID0gbGVuZ3RoKCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWluKGluZGV4LCBvdXJMZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBt
YXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAg
ICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiByZXZlcnNl
RmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0
ZXJzOCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5j
aGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLQot
ICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXZlcnNlRmlu
ZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVy
czgoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwotCi0gICAgcmV0dXJuIHJldmVy
c2VGaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwotfQotCi1BTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nSW1w
bCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25l
ZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKQotewotICAgIEFTU0VSVChzdHJpbmdJ
bXBsKTsKLSAgICBBU1NFUlQobWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwot
ICAgIEFTU0VSVChzdGFydE9mZnNldCArIG1hdGNoTGVuZ3RoIDw9IHN0cmluZ0ltcGwtPmxlbmd0
aCgpKTsKLQotICAgIGlmIChjYXNlU2Vuc2l0aXZlKSB7Ci0gICAgICAgIGlmIChzdHJpbmdJbXBs
LT5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLT5jaGFyYWN0
ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRj
aFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwt
PmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAgICB9Ci0gICAgaWYgKHN0cmluZ0lt
cGwtPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Mo
c3RyaW5nSW1wbC0+Y2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7Ci0gICAgcmV0dXJuIGVx
dWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3Rh
cnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1h
dGNoTGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNv
bnN0IFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBT
dHJpbmdJbXBsJiBtYXRjaFN0cmluZykKLXsKLSAgICBpZiAoc3RhcnRPZmZzZXQgPiBzdHJpbmdJ
bXBsLmxlbmd0aCgpKQorICAgIGlmIChzdGFydE9mZnNldCA+IHN0cmluZy5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtYXRjaFN0cmluZy5sZW5ndGgoKSA+IHN0cmlu
Z0ltcGwubGVuZ3RoKCkpCisgICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpID4gc3RyaW5nLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0
aCgpICsgc3RhcnRPZmZzZXQgPiBzdHJpbmdJbXBsLmxlbmd0aCgpKQorICAgIGlmIChtYXRjaFN0
cmluZy5sZW5ndGgoKSArIHN0YXJ0T2Zmc2V0ID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RyaW5nSW1wbC5pczhCaXQoKSkgeworICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zm
c2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNl
dCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0
LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRj
aFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KICAg
ICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJ
bXBsLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4
KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC5j
aGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bWF0Y2hTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJh
Y3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIG1hdGNo
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigp
ICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5s
ZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJ
bXBsKiBzdHIpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5n
SW1wbCogc3RyaW5nKSBjb25zdAogewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCAqc3RyKTsKKyAgICByZXR1
cm4gc3RyaW5nICYmIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCAqc3RyaW5nKTsKIH0KIAotYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmIHN0cikgY29uc3QKK2Jv
b2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBzdHIpOworICAgIHJldHVy
biA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywgc3RyaW5nKTsKIH0KIAogYm9vbCBTdHJpbmdJbXBs
OjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogcHJlZml4KSBj
b25zdAogewotICAgIGlmICghcHJlZml4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnByZWZpeCk7
CisgICAgcmV0dXJuIHByZWZpeCAmJiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KCp0aGlzLCAqcHJlZml4KTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgcHJlZml4KSBjb25zdApAQCAtMTQyMiwxMiAr
MTE5Nyw5IEBAIGJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylbMF0gPT0gY2hhcmFjdGVyOwogfQog
Ci1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVu
c2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Citib29sIFN0cmlu
Z0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoKSBjb25zdAogewotICAgIEFTU0VSVChtYXRjaExlbmd0aCk7Ci0gICAgaWYgKG1hdGNo
TGVuZ3RoID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZXF1
YWxJbm5lcih0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUp
OworICAgIHJldHVybiBtYXRjaExlbmd0aCA8PSBsZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlz
LCAwLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6Omhh
c0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0CkBAIC0xNDM3LDEwICsxMjA5LDcgQEAgYm9vbCBTdHJpbmdJbXBs
OjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2ln
bmVkIHN0YXIKIAogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsKiBzdWZmaXgp
CiB7Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biA6OldURjo6ZW5kc1dpdGgoKnRoaXMsICpzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYg
OjpXVEY6OmVuZHNXaXRoKCp0aGlzLCAqc3VmZml4KTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjpl
bmRzV2l0aChTdHJpbmdJbXBsJiBzdWZmaXgpCkBAIC0xNDQ4LDIyICsxMjE3LDkgQEAgYm9vbCBT
dHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBzdWZmaXgpCiAgICAgcmV0dXJuIDo6V1RG
OjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0
aChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlKQotewotICAgIEFT
U0VSVChtYXRjaFN0cmluZyk7Ci0gICAgaWYgKG1fbGVuZ3RoID49IG1hdGNoU3RyaW5nLT5tX2xl
bmd0aCkgewotICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1fbGVuZ3RoIC0gbWF0Y2hTdHJpbmct
Pm1fbGVuZ3RoOwotICAgICAgICByZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyBmaW5kKG1hdGNoU3Ry
aW5nLCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNlKG1hdGNoU3RyaW5nLCBzdGFydCkpID09IHN0
YXJ0OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgU3RyaW5nSW1wbDo6ZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBzdWZmaXgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFzdWZmaXgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiA6
OldURjo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0
dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnN1
ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0CkBAIC0xNDc2LDY2ICsxMjMyLDU5IEBAIGJv
b2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJldHVy
biBtX2xlbmd0aCAmJiAoKnRoaXMpW21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOwogfQogCi1i
b29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25l
ZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAorYm9vbCBTdHJpbmdJbXBs
OjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1hdGNoTGVuZ3RoKTsKLSAgICBpZiAobWF0Y2hMZW5ndGgg
PiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gbGVuZ3RoKCkgLSBtYXRjaExlbmd0aDsKLSAgICByZXR1cm4gZXF1YWxJbm5lcih0aGlz
LCBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoLCBjYXNlU2Vuc2l0aXZlKTsK
KyAgICByZXR1cm4gbWF0Y2hMZW5ndGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywg
bGVuZ3RoKCkgLSBtYXRjaExlbmd0aCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKTsKIH0KIAog
Ym9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNo
U3RyaW5nLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGVuZE9mZnNldCA8
IG1hdGNoU3RyaW5nLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRj
aFN0cmluZyk7CisgICAgcmV0dXJuIGVuZE9mZnNldCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAm
JiBlcXVhbElubmVyKCp0aGlzLCBlbmRPZmZzZXQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0
Y2hTdHJpbmcpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hh
ciBvbGRDLCBVQ2hhciBuZXdDKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2Uo
VUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkKIHsKLSAgICBpZiAob2xkQyA9PSBuZXdD
KQorICAgIGlmICh0YXJnZXQgPT0gcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB1bnNpZ25lZCBpOwogICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewot
ICAgICAgICBVQ2hhciBjID0gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV07Ci0g
ICAgICAgIGlmIChjID09IG9sZEMpCisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IGlzOEJpdCgp
ID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyID09IHRh
cmdldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoaSA9PSBtX2xlbmd0aCkK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlm
IChvbGRDID4gMHhmZikKLSAgICAgICAgICAgIC8vIExvb2tpbmcgZm9yIGEgMTYgYml0IGNoYXIg
aW4gYW4gOCBiaXQgc3RyaW5nLCB3ZSdyZSBkb25lLgorICAgICAgICBpZiAodGFyZ2V0ID4gMHhG
RikgeworICAgICAgICAgICAgLy8gTG9va2luZyBmb3IgYSAxNi1iaXQgY2hhcmFjdGVyIGluIGFu
IDgtYml0IHN0cmluZywgc28gd2UncmUgZG9uZS4KICAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogCi0gICAgICAgIGlmIChuZXdDIDw9IDB4ZmYpIHsKKyAgICAgICAgaWYgKHJl
cGxhY2VtZW50IDw9IDB4RkYpIHsKICAgICAgICAgICAgIExDaGFyKiBkYXRhOwotICAgICAgICAg
ICAgTENoYXIgb2xkQ2hhciA9IHN0YXRpY19jYXN0PExDaGFyPihvbGRDKTsKLSAgICAgICAgICAg
IExDaGFyIG5ld0NoYXIgPSBzdGF0aWNfY2FzdDxMQ2hhcj4obmV3Qyk7CisgICAgICAgICAgICBM
Q2hhciBvbGRDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KHRhcmdldCk7CisgICAgICAgICAgICBM
Q2hhciBuZXdDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KHJlcGxhY2VtZW50KTsKIAogICAgICAg
ICAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHko
bV9sZW5ndGgsIGRhdGEpOwogCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpICE9IG1fbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBMQ2hhciBjaCA9IG1fZGF0YThbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKGNoID09IG9sZENoYXIpCi0gICAgICAgICAgICAgICAgICAgIGNoID0gbmV3
Q2hhcjsKLSAgICAgICAgICAgICAgICBkYXRhW2ldID0gY2g7CisgICAgICAgICAgICAgICAgTENo
YXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVy
ID09IG9sZENoYXIpCisgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IG5ld0NoYXI7Cisg
ICAgICAgICAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBuZXdJbXBsOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVGhlcmUgaXMg
dGhlIHBvc3NpYmlsaXR5IHdlIG5lZWQgdG8gdXAgY29udmVydCBmcm9tIDggdG8gMTYgYml0LAot
ICAgICAgICAvLyBjcmVhdGUgYSAxNiBiaXQgc3RyaW5nIGZvciB0aGUgcmVzdWx0LgogICAgICAg
ICBVQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXpl
ZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEpOwogCiAgICAgICAgIGZvciAoaSA9IDA7
IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgVUNoYXIgY2ggPSBtX2RhdGE4W2ld
OwotICAgICAgICAgICAgaWYgKGNoID09IG9sZEMpCi0gICAgICAgICAgICAgICAgY2ggPSBuZXdD
OwotICAgICAgICAgICAgZGF0YVtpXSA9IGNoOworICAgICAgICAgICAgVUNoYXIgY2hhcmFjdGVy
ID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQorICAg
ICAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2VtZW50OworICAgICAgICAgICAgZGF0YVtp
XSA9IGNoYXJhY3RlcjsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsOwpAQCAt
MTU0NSw1NiArMTI5NCw1MCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBvbGRDLCBVQ2hhciBuZXdDKQogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlh
bGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhKTsKIAogICAgIGZvciAoaSA9IDA7
IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjaCA9IG1fZGF0YTE2W2ldOwot
ICAgICAgICBpZiAoY2ggPT0gb2xkQykKLSAgICAgICAgICAgIGNoID0gbmV3QzsKLSAgICAgICAg
ZGF0YVtpXSA9IGNoOworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltpXTsKKyAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCisgICAgICAgICAgICBjaGFyYWN0ZXIgPSBy
ZXBsYWNlbWVudDsKKyAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICB9CiAgICAgcmV0
dXJuIG5ld0ltcGw7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVu
c2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0
cikKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9u
LCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cmluZykKIHsKICAgICBw
b3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBs
YWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0ciA/IHN0ci0+bGVuZ3RoKCkgOiAwOworICAg
IHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nID8gc3RyaW5nLT5sZW5ndGgoKSA6IDA7
CiAgICAgaWYgKCFsZW5ndGhUb1JlcGxhY2UgJiYgIWxlbmd0aFRvSW5zZXJ0KQogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlKSA+PSAo
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoVG9JbnNlcnQpKQog
ICAgICAgICBDUkFTSCgpOwogCi0gICAgaWYgKGlzOEJpdCgpICYmICghc3RyIHx8IHN0ci0+aXM4
Qml0KCkpKSB7CisgICAgaWYgKGlzOEJpdCgpICYmICghc3RyaW5nIHx8IHN0cmluZy0+aXM4Qml0
KCkpKSB7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNl
cnQsIGRhdGEpOwotICAgICAgICBtZW1jcHkoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24gKiBzaXpl
b2YoTENoYXIpKTsKLSAgICAgICAgaWYgKHN0cikKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsg
cG9zaXRpb24sIHN0ci0+bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQgKiBzaXplb2YoTENoYXIpKTsK
LSAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4
ICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsCi0gICAgICAgICAgICAgICAobGVuZ3RoKCkg
LSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSkgKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24pOworICAgICAgICBpZiAoc3Ry
aW5nKQorICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmct
Pm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0KTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSAr
IHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTggKyBwb3NpdGlvbiArIGxlbmd0aFRv
UmVwbGFjZSwgbGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSk7CiAgICAgICAg
IHJldHVybiBuZXdJbXBsOwogICAgIH0KICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0lt
cGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVu
Z3RoVG9JbnNlcnQsIGRhdGEpOwogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBvc2l0aW9uOyArK2kpCi0gICAgICAgICAgICBkYXRhW2ldID0gbV9k
YXRhOFtpXTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24p
OwogICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGRhdGEsIG1fZGF0YTE2LCBwb3NpdGlvbiAqIHNp
emVvZihVQ2hhcikpOwotICAgIGlmIChzdHIpIHsKLSAgICAgICAgaWYgKHN0ci0+aXM4Qml0KCkp
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoVG9JbnNlcnQ7ICsr
aSkKLSAgICAgICAgICAgICAgICBkYXRhW2kgKyBwb3NpdGlvbl0gPSBzdHItPm1fZGF0YThbaV07
CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1fZGF0YTE2LCBwb3NpdGlvbik7CisgICAg
aWYgKHN0cmluZykgeworICAgICAgICBpZiAoc3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLT5tX2RhdGE4LCBsZW5ndGhU
b0luc2VydCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgcG9zaXRp
b24sIHN0ci0+bV9kYXRhMTYsIGxlbmd0aFRvSW5zZXJ0ICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAg
fQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZTsgKytpKQotICAgICAgICAgICAg
ZGF0YVtpICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydF0gPSBtX2RhdGE4W2kgKyBwb3NpdGlv
biArIGxlbmd0aFRvUmVwbGFjZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWVtY3B5KGRhdGEg
KyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBjaGFyYWN0ZXJzMTYoKSArIHBvc2l0aW9uICsg
bGVuZ3RoVG9SZXBsYWNlLAotICAgICAgICAgICAgKGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5n
dGhUb1JlcGxhY2UpICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+bV9kYXRhMTYsIGxlbmd0aFRvSW5zZXJ0KTsKICAg
ICB9CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9z
aXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9kYXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBs
YWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBt
X2RhdGExNiArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9u
IC0gbGVuZ3RoVG9SZXBsYWNlKTsKICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIApAQCAtMTYwMiwx
MCArMTM0NSw4IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICghcmVwbGFjZW1lbnQp
CiAgICAgICAgIHJldHVybiAqdGhpczsKLQogICAgIGlmIChyZXBsYWNlbWVudC0+aXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotCiAgICAgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVw
bGFjZW1lbnQtPm1fZGF0YTE2LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwogfQogCkBAIC0xNjQ4
LDE1ICsxMzg5LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFy
IHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAKICAgICAgICAgd2hpbGUg
KChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RG
b3VuZCkgewogICAgICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBz
cmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9k
YXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihMQ2hhcikp
OworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCAr
IHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZz
ZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zm
c2V0LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVwU3Ry
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAg
ICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgMTsKICAgICAgICAgfQogCiAg
ICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFydDsKLSAg
ICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQs
IHNyY1NlZ21lbnRMZW5ndGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVu
dExlbmd0aCk7CiAKICAgICAgICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGgg
PT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE2NjgsMTggKzE0MDksMTcgQEAgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgTENo
YXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgIHdoaWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgc3JjU2Vn
bWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1l
bWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2Vn
bWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRh
ICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0
aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXBTdHJMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRh
dGFbaSArIGRzdE9mZnNldF0gPSByZXBsYWNlbWVudFtpXTsKKyAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCk7CiAKICAgICAg
ICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0g
c3JjU2VnbWVudEVuZCArIDE7CiAgICAgfQogCiAgICAgc3JjU2VnbWVudExlbmd0aCA9IG1fbGVu
Z3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2Rh
dGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikp
OworICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2Vn
bWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgIEFTU0VSVChkc3RPZmZzZXQgKyBz
cmNTZWdtZW50TGVuZ3RoID09IG5ld0ltcGwuZ2V0KCkubGVuZ3RoKCkpOwogCkBAIC0xNzI1LDE5
ICsxNDY1LDE3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBh
dHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zCiAKICAgICAgICAgd2hpbGUgKChz
cmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3Vu
ZCkgewogICAgICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNT
ZWdtZW50U3RhcnQ7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3JjU2Vn
bWVudExlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBt
X2RhdGE4W2kgKyBzcmNTZWdtZW50U3RhcnRdOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExl
bmd0aCk7CiAKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAg
ICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5n
dGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBk
c3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgpOwogCiAgICAgICAgICAgICBkc3RP
ZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3Jj
U2VnbWVudEVuZCArIDE7CiAgICAgICAgIH0KIAogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0g
bV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzcmNTZWdtZW50TGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBkc3RPZmZz
ZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsKKyAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVu
dExlbmd0aCk7CiAKICAgICAgICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGgg
PT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE3NDksMTcgKzE0ODcsMTcgQEAgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNo
YXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgIHdoaWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQo
cGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgc3JjU2Vn
bWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1l
bWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2Vn
bWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRh
ICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0
aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgIG1l
bWNweShkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxh
Y2VtZW50LCByZXBTdHJMZW5ndGgpOwogCiAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5n
dGg7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyAxOwogICAgIH0K
IAogICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFydDsKLSAg
ICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQsIHNy
Y1NlZ21lbnRMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICBjb3B5Q2hhcmFjdGVycyhkYXRh
ICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0
aCk7CiAKICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBs
LmdldCgpLmxlbmd0aCgpKTsKIApAQCAtMTgxOCwxNSArMTU1NiwxNSBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiBy
ZXBsYWNlbWVudAogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKG5l
d1NpemUsIGRhdGEpOwogICAgICAgICB3aGlsZSAoKHNyY1NlZ21lbnRFbmQgPSBmaW5kKHBhdHRl
cm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBzcmNTZWdt
ZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgICAg
IG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNT
ZWdtZW50TGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50
TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAg
ICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCBy
ZXBTdHJMZW5ndGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJz
KGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOwog
ICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1Nl
Z21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyBwYXR0ZXJuTGVuZ3RoOwogICAgICAgICB9CiAK
ICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0Owot
ICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFj
dGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdt
ZW50TGVuZ3RoKTsKIAogICAgICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0
aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsKIApAQCAtMTgzOSwyMCArMTU3NywxOCBAQCBS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBT
dHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2Vn
bWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKICAgICAgICAgaWYgKHNyY0lzOEJpdCkgewogICAg
ICAgICAgICAgLy8gQ2FzZSAzLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNyY1NlZ21lbnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBkYXRhW2kgKyBkc3RPZmZz
ZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsKKyAgICAgICAgICAgIGNvcHlDaGFy
YWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1Nl
Z21lbnRMZW5ndGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ2FzZSAyICYg
NC4KLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1Nl
Z21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50
U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGRzdE9mZnNldCAr
PSBzcmNTZWdtZW50TGVuZ3RoOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRJczhCaXQpIHsKICAg
ICAgICAgICAgIC8vIENhc2VzIDIgJiAzLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJlcFN0ckxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9m
ZnNldF0gPSByZXBsYWNlbWVudC0+bV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ2FzZSA0Ci0gICAgICAgICAgICBt
ZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5n
dGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBk
c3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAg
fQogICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICBzcmNTZWdtZW50
U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgcGF0dGVybkxlbmd0aDsKQEAgLTE4NjEsMTEgKzE1OTcs
MTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCogcGF0
dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQKICAgICBzcmNTZWdtZW50TGVuZ3RoID0gbV9s
ZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7CiAgICAgaWYgKHNyY0lzOEJpdCkgewogICAgICAgICAv
LyBDYXNlIDMuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsg
c3JjU2VnbWVudFN0YXJ0XTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNl
dCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gQ2FzZXMgMiAmIDQuCi0gICAgICAgIG1lbWNweShkYXRhICsgZHN0
T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNp
emVvZihVQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBt
X2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5s
ZW5ndGgoKSk7CkBAIC0xODc4LDggKzE2MTMsNyBAQCBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCiAgICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIp
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgYm9vbCBlcXVhbElu
dGVybmFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IENoYXJUeXBlKiBiLCB1bnNpZ25lZCBs
ZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVh
bEludGVybmFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IENoYXJhY3RlclR5cGUqIGIsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybiAhYjsKQEAgLTE5
NTQsMTEgKzE2ODgsNyBAQCBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEs
IFN0cmluZ0ltcGwqIGIpCiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogewotICAgIGlmIChhID09IGIpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmICghYSB8fCAhYikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKCphLCAqYik7CisgICAg
cmV0dXJuIGEgPT0gYiB8fCAoYSAmJiBiICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoKmEsICpi
KSk7CiB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3QgU3RyaW5n
SW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKQEAgLTE5NzEsNyArMTcwMSw3IEBAIGJvb2wg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3Qg
U3RyaW5nSW1wbCogYikKIFVDaGFyRGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyRGlyZWN0aW9u
IGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV0pOworICAgICAgICBhdXRvIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rp
b24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOwogICAgICAgICBpZiAoY2hh
ckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgIGlmIChoYXNTdHJv
bmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxp
dHkgPSB0cnVlOwpAQCAtMjAxMywxMyArMTc0MywxMyBAQCBzaXplX3QgU3RyaW5nSW1wbDo6c2l6
ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsgc2l6ZW9mKCp0aGlzKTsKIH0KIAot
Ly8gSGVscGVyIHRvIHdyaXRlIGEgdGhyZWUtYnl0ZSBVVEYtOCBjb2RlIHBvaW50IHRvIHRoZSBi
dWZmZXIsIGNhbGxlciBtdXN0IGNoZWNrIHJvb20gaXMgYXZhaWxhYmxlLgotc3RhdGljIGlubGlu
ZSB2b2lkIHB1dFVURjhUcmlwbGUoY2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCisvLyBIZWxwZXIg
dG8gd3JpdGUgYSB0aHJlZS1ieXRlIFVURi04IGNvZGUgcG9pbnQgaW50byB0aGUgYnVmZmVyOyBj
YWxsZXIgbXVzdCBlbnN1cmUgcm9vbSBpcyBhdmFpbGFibGUuCitzdGF0aWMgaW5saW5lIHZvaWQg
cHV0VVRGOFRyaXBsZShjaGFyKiYgYnVmZmVyLCBVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgQVNT
RVJUKGNoID49IDB4MDgwMCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChj
aCA+PiAxMikgJiAweDBGKSB8IDB4RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNo
YXI+KCgoY2ggPj4gNikgJiAweDNGKSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19j
YXN0PGNoYXI+KChjaCAmIDB4M0YpIHwgMHg4MCk7CisgICAgQVNTRVJUKGNoYXJhY3RlciA+PSAw
eDA4MDApOworICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2hhcmFjdGVyID4+
IDEyKSAmIDB4MEYpIHwgMHhFMCk7CisgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
KChjaGFyYWN0ZXIgPj4gNikgJiAweDNGKSB8IDB4ODApOworICAgICpidWZmZXIrKyA9IHN0YXRp
Y19jYXN0PGNoYXI+KChjaGFyYWN0ZXIgJiAweDNGKSB8IDB4ODApOwogfQogCiBib29sIFN0cmlu
Z0ltcGw6OnV0ZjhJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IGNoYXIqJiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb252ZXJzaW9uTW9kZSBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAxMzA4NjZjZjJhMGQwZjRhMThkNjE4MjMyZjZl
YTE1YTQyMWY3MmYwLi4zZmJlZTA0YmE1NDFkZTMyZWRiNGUwOTM5OWE1ZmZhMGRkZWRhNDI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb21tb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdNYWxsb2MuaD4KQEAgLTU3LDcg
KzU4LDYgQEAgY2xhc3MgU3ltYm9sSW1wbDsKIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogCiBzdHJ1
Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJ1ZmZlckZy
b21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKIHN0cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFu
c2xhdG9yOwogc3RydWN0IExDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBTdHJpbmdIYXNo
OwpAQCAtNjYsMjIgKzY2LDIxIEBAIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAKLWVudW0gVGV4dENhc2VTZW5z
aXRpdml0eSB7Ci0gICAgVGV4dENhc2VTZW5zaXRpdmUsCi0gICAgVGV4dENhc2VJbnNlbnNpdGl2
ZQotfTsKKy8vIERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0dXJuIG9uIHJ1bnRpbWUgc3RhdGlz
dGljcyBmb3Igc3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNhZ2UuCisjZGVmaW5lIFNUUklOR19T
VEFUUyAwCiAKIHR5cGVkZWYgYm9vbCAoKkNoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpKFVDaGFy
KTsKIHR5cGVkZWYgYm9vbCAoKklzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKShVQ2hhcik7CiAKLS8v
IERlZmluZSBTVFJJTkdfU1RBVFMgdG8gMSB0dXJuIG9uIHJ1biB0aW1lIHN0YXRpc3RpY3Mgb2Yg
c3RyaW5nIHNpemVzIGFuZCBtZW1vcnkgdXNhZ2UKLSNkZWZpbmUgU1RSSU5HX1NUQVRTIDAKK3Rl
bXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBz
aXplX3QgbGVuZ3RoKTsKIAogI2lmIFNUUklOR19TVEFUUworCiBzdHJ1Y3QgU3RyaW5nU3RhdHMg
ewotICAgIGlubGluZSB2b2lkIGFkZDhCaXRTdHJpbmcodW5zaWduZWQgbGVuZ3RoLCBib29sIGlz
U3ViU3RyaW5nID0gZmFsc2UpCisgICAgdm9pZCBhZGQ4Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0
aCwgYm9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgKyttX3RvdGFsTnVt
YmVyU3RyaW5nczsKICAgICAgICAgKyttX251bWJlcjhCaXRTdHJpbmdzOwpAQCAtODksNyArODgs
NyBAQCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogICAgICAgICAgICAgbV90b3RhbDhCaXREYXRhICs9
IGxlbmd0aDsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBhZGQxNkJpdFN0cmluZyh1bnNpZ25l
ZCBsZW5ndGgsIGJvb2wgaXNTdWJTdHJpbmcgPSBmYWxzZSkKKyAgICB2b2lkIGFkZDE2Qml0U3Ry
aW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQogICAgIHsKICAg
ICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAgICAgKyttX251bWJlcjE2Qml0U3Ry
aW5nczsKQEAgLTEyMCw3ICsxMTksOSBAQCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogI2RlZmluZSBT
VFJJTkdfU1RBVFNfUkVNT1ZFX1NUUklORyhzdHJpbmcpIFN0cmluZ0ltcGw6OnN0cmluZ1N0YXRz
KCkucmVtb3ZlU3RyaW5nKHN0cmluZykKICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkco
c3RyaW5nKSArK1N0cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCkubV9yZWZDYWxsczsKICNkZWZpbmUg
U1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORyhzdHJpbmcpICsrU3RyaW5nSW1wbDo6c3RyaW5nU3Rh
dHMoKS5tX2RlcmVmQ2FsbHM7CisKICNlbHNlCisKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0FERF84
QklUX1NUUklORyhsZW5ndGgpICgodm9pZCkwKQogI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREXzhC
SVRfU1RSSU5HMihsZW5ndGgsIGlzU3ViU3RyaW5nKSAoKHZvaWQpMCkKICNkZWZpbmUgU1RSSU5H
X1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobGVuZ3RoKSAoKHZvaWQpMCkKQEAgLTEyOSw0MiArMTMw
LDE4IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAjZGVmaW5lIFNUUklOR19TVEFUU19SRU1PVkVf
U1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNUUklOR19TVEFUU19SRUZfU1RSSU5H
KHN0cmluZykgKCh2b2lkKTApCiAjZGVmaW5lIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoc3Ry
aW5nKSAoKHZvaWQpMCkKKwogI2VuZGlmCiAKIGNsYXNzIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbFNoYXBlKTsKIHByb3RlY3RlZDoKLSAgICBT
dHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
TENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCi0gICAgICAgIDogbV9yZWZDb3Vu
dChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9kYXRh
OChkYXRhOCkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9
Ci0KLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgVUNoYXIqIGRhdGExNiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQotICAgICAgICA6
IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAg
ICAsIG1fZGF0YTE2KGRhdGExNikKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxh
Z3MpCi0gICAgeyB9CisgICAgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKTsKKyAgICBT
dHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOwogCiAgICAgZW51bSBDb25zdHJ1Y3RXaXRo
Q29uc3RFeHByVGFnIHsgQ29uc3RydWN0V2l0aENvbnN0RXhwciB9OwotICAgIAotICAgIHRlbXBs
YXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hh
cGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RX
aXRoQ29uc3RFeHByVGFnKQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YThDaGFyKGNoYXJhY3RlcnMpCi0g
ICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQotICAgIHsgfQotICAgIAotICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIGNvbnN0ZXhwciBTdHJpbmdJ
bXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhcjE2
X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywg
Q29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKLSAgICAgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50
KQotICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2RhdGExNkNoYXIoY2hh
cmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9
CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGNvbnN0ZXhwciBTdHJpbmdJ
bXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25z
dHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwg
dW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKIAogICAg
IHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CkBAIC0xODEsMjYg
KzE1OCwyNSBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIFN0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmlu
Z0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbCk7IFdURl9N
QUtFX1NUUklOR19BTExPQ0FURUQ7CisKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1w
bDsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludDo6RGF0YTsKKyAgICBmcmllbmQgY2xhc3Mg
SlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIFByaXZhdGVTeW1i
b2xJbXBsOworICAgIGZyaWVuZCBjbGFzcyBSZWdpc3RlcmVkU3ltYm9sSW1wbDsKKyAgICBmcmll
bmQgY2xhc3MgU3ltYm9sSW1wbDsKKwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpDU3RyaW5nVHJh
bnNsYXRvcjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBmcmllbmQgc3Ry
dWN0IFdURjo6SGFzaEFuZENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3Qg
V1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmll
bmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwotICAgIGZyaWVuZCBjbGFzcyBK
U0M6OkxMSW50OjpEYXRhOwotICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKLSAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLSAgICBmcmllbmQgY2xh
c3MgU3ltYm9sSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7Ci0gICAg
ZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOwotICAgIAorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0
b3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kQ2hh
cmFjdGVyc1RyYW5zbGF0b3I7CisKIHB1YmxpYzoKLSAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7
Ci0gICAgICAgIEJ1ZmZlckludGVybmFsLAotICAgICAgICBCdWZmZXJPd25lZCwKLSAgICAgICAg
QnVmZmVyU3Vic3RyaW5nLAotICAgIH07CisgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgeyBCdWZm
ZXJJbnRlcm5hbCwgQnVmZmVyT3duZWQsIEJ1ZmZlclN1YnN0cmluZyB9OwogCiAgICAgLy8gVGhl
IGJvdHRvbSA2IGJpdHMgaW4gdGhlIGhhc2ggYXJlIGZsYWdzLgogICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2OwpAQCAtMjIyLDk0ICsxOTgsMjkgQEAg
cHJpdmF0ZToKICAgICAgICAgU3RyaW5nU3ltYm9sID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5
bWJvbCwgLy8gc3ltYm9sLCBub24tYXRvbWljCiAgICAgfTsKIAotICAgIC8vIEZJWE1FOiB0aGVy
ZSBoYXMgdG8gYmUgYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgogICAgIGVudW0gRm9yY2U4
Qml0IHsgRm9yY2U4Qml0Q29uc3RydWN0b3IgfTsKLSAgICAvLyBDcmVhdGUgYSBub3JtYWwgOC1i
aXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJuYWwpCi0gICAgU3Ry
aW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgsIEZvcmNlOEJpdCkKLSAgICAgICAgOiBTdHJpbmdJbXBs
U2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxMQ2hhcj4oKSwg
c19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsK
IAotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9
CisgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDgtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3Jh
Z2UgKEJ1ZmZlckludGVybmFsKQorICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3Jj
ZThCaXQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbm9ybWFsIDE2LWJpdCBzdHJpbmcgd2l0aCBpbnRl
cm5hbCBzdG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICBTdHJpbmdJbXBsKHVuc2lnbmVkIGxl
bmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVu
Z3RoLCB0YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwp
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5n
dGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsK
LSAgICB9CisgICAgZXhwbGljaXQgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAg
Ly8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVk
IGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19y
ZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgc19oYXNoRmxh
ZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLQotICAgICAgICBT
VFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgU3RyaW5n
SW1wbChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAg
ICBlbnVtIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnIHsgQ29uc3RydWN0V2l0aG91dENvcHlp
bmcgfTsKLSAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxT
aGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1h
bCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAg
ICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklU
X1NUUklORyhtX2xlbmd0aCk7Ci0gICAgfQotCi0gICAgU3RyaW5nSW1wbChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykK
LSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBj
aGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlcklu
dGVybmFsKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBBU1NFUlQo
bV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5n
dGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
LCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CisgICAgU3RyaW5nSW1wbChjb25zdCBMQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpOwogCiAgICAg
Ly8gQ3JlYXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVk
IGJ1ZmZlciAoQnVmZmVyT3duZWQpCi0gICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8VUNoYXI+IGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19y
ZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVyT3duZWQpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAg
ICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRf
U1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8VUNoYXI+
LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN0cmluZ3Mg
dGhhdCBhcmUgYSBzdWJzdHJpbmcgb2YgYW4gZXhpc3RpbmcgOC1iaXQgU3RyaW5nSW1wbCAoQnVm
ZmVyU3Vic3RyaW5nKQotICAgIFN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKLSAgICAgICAgOiBTdHJpbmdJ
bXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAg
ICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hp
cCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSAm
YmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORzIo
bV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJik7CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0
ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyAxNi1iaXQg
U3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0cmluZ0ltcGwoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKLSAg
ICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFy
YWN0ZXJzLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBB
U1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgQVNT
RVJUKG1fbGVuZ3RoKTsKLSAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9
IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSAmYmFzZS5s
ZWFrUmVmKCk7Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVu
Z3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYpOwogCiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RyaW5nSW1wbCopOwpAQCAtMzE3LDcxICsy
MjgsMjYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVh
dGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICB9Cisg
ICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+
Jik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqKTsKIAotICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5n
dGgpOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgTENoYXIqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4ocykpOyB9Ci0KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYgcmVwLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChsZW5ndGggPD0g
cmVwLmxlbmd0aCgpKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpKTsgfQogCi0gICAgICAgIGlmICghbGVuZ3RoKQotICAg
ICAgICAgICAgcmV0dXJuICplbXB0eSgpOworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKIAotICAgICAgICBhdXRvKiBvd25lclJlcCA9ICgocmVwLmJ1ZmZlck93
bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAm
cmVwKTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmKVtjaGFyYWN0ZXJDb3Vu
dF0pOwogCi0gICAgICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVmZmVyIHRoYXQgY29udGFpbnMgYm90
aCB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QgYXMgd2VsbCBhcyB0aGUgcG9pbnRlciB0byB0aGUgb3du
ZXIgc3RyaW5nLgotICAgICAgICBhdXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5n
SW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMSkpKTsKLSAg
ICAgICAgaWYgKHJlcC5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGE4ICsgb2Zmc2V0LCBs
ZW5ndGgsICpvd25lclJlcCkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVs
bCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwg
Km93bmVyUmVwKSk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNl
IG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0byBjcmVhdGVXaXRob3V0Q29weWluZyBp
bnN0ZWFkLgorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRl
cmFsKGNvbnN0IGNoYXIqKTsKIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0
ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQotICAgIHsKLSAg
ICAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxp
dGVyYWxOb3RFbXB0eSk7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJDb3VudCAt
IDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFy
KSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVyZmxvdyk7Ci0KLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihj
aGFyYWN0ZXJzKSwgY2hhcmFjdGVyQ291bnQgLSAxKTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
VHJhbnNpdGlvbiBvZmYgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5n
IGluc3RlYWQuCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKLQotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyKiYgZGF0YSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBB
TFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVComIG91dHB1dCkKLSAgICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKSB7
Ci0gICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIGVtcHR5
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKFQpKSkg
ewotICAgICAgICAgICAgb3V0cHV0ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZ0ltcGwqIHJlc3VsdEltcGwgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdJbXBsKj4odHJ5U3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPFQ+KGxlbmd0
aCkpKTsKLSAgICAgICAgaWYgKCFyZXN1bHRJbXBsKSB7Ci0gICAgICAgICAgICBvdXRwdXQgPSBu
dWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
b3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8VD4oKTsKLQotICAgICAgICByZXR1cm4g
Y29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVuZ3RoKTsKLSAgICB9CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENv
cHlpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0
IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
TENoYXIqJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4g
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJik7
CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcg
bXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3du
ZXJzaGlwIG11c3QgYmUgQnVmZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRl
ciBvZiByZWFsbG9jKCksCkBAIC0zOTYsODMgKzI2MiwzMSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7
IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
clR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJp
bmdWZWN0b3I8Q2hhclR5cGUsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5PiYmIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rv
ci5zaXplKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGlmIChzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAg
ICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHJpbmdJbXBsKHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNpemUpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gKmVtcHR5KCk7Ci0gICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHk+CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChT
dHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+JiYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYmKTsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8
TENoYXI+JiYpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE1lbW9yeU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2xlbmd0aCk7IH0KLSAgICBib29sIGlzOEJp
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZmZXI7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9sZW5ndGg7IH0KIAorICAg
IGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFn
OEJpdEJ1ZmZlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4
KCkgY29uc3QgeyBBU1NFUlQoaXM4Qml0KCkpOyByZXR1cm4gbV9kYXRhODsgfQogICAgIEFMV0FZ
U19JTkxJTkUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgQVNTRVJUKCFpczhC
aXQoKSk7IHJldHVybiBtX2RhdGExNjsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotICAgIEFMV0FZU19JTkxJTkUgY29uc3QgQ2hhclR5cGUgKmNoYXJhY3RlcnMoKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7CiAKLSAgICBzaXplX3QgY29zdCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICAvLyBGb3Igc3Vic3RyaW5ncywgcmV0dXJuIHRoZSBjb3N0IG9mIHRoZSBiYXNl
IHN0cmluZy4KLSAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmlu
ZykKLSAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdCdWZmZXIoKS0+Y29zdCgpOwotCi0gICAg
ICAgIC8vIE5vdGU6IHdlIG11c3Qgbm90IGFsdGVyIHRoZSBtX2hhc2hBbmRGbGFncyBmaWVsZCBp
biBpbnN0YW5jZXMgb2YgU3RhdGljU3RyaW5nSW1wbC4KLSAgICAgICAgLy8gV2UgZW5zdXJlIHRo
aXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBhbGwg
aW5zdGFuY2VzIG9mCi0gICAgICAgIC8vIFN0YXRpY1N0cmluZ0ltcGwuIEFzIGEgcmVzdWx0LCBT
dGF0aWNTdHJpbmdJbXBsIGluc3RhbmNlcyB3aWxsIGFsd2F5cyByZXR1cm4gYSBjb3N0IG9mCi0g
ICAgICAgIC8vIDAgaGVyZSBhbmQgYXZvaWQgbW9kaWZ5aW5nIG1faGFzaEFuZEZsYWdzLgotICAg
ICAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCkKLSAgICAg
ICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdE
aWRSZXBvcnRDb3N0OwotICAgICAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Ci0gICAgICAg
IGlmICghaXM4Qml0KCkpCi0gICAgICAgICAgICByZXN1bHQgPDw9IDE7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKQotICAgIHsK
LSAgICAgICAgaWYgKGlzU3RhdGljKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0RHVy
aW5nR0MoKSwgcmVmQ291bnQoKSk7Ci0gICAgICAgIAotICAgICAgICBzaXplX3QgcmVzdWx0ID0g
bV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0gICAgICAgICAgICByZXN1bHQgPDw9
IDE7Ci0gICAgICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsK
LSAgICB9CisgICAgc2l6ZV90IGNvc3QoKSBjb25zdDsKKyAgICBzaXplX3QgY29zdER1cmluZ0dD
KCk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29u
c3Q7CiAKICAgICBTdHJpbmdLaW5kIHN0cmluZ0tpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTdHJpbmdLaW5kPihtX2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tTdHJpbmdLaW5kKTsg
fQogICAgIGJvb2wgaXNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNf
aGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7IH0KICAgICBib29sIGlzQXRvbWljKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9
Ci0KLSAgICB2b2lkIHNldElzQXRvbWljKGJvb2wgaXNBdG9taWMpCi0gICAgewotICAgICAgICBB
U1NFUlQoIWlzU3RhdGljKCkpOwotICAgICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOwotICAgICAg
ICBpZiAoaXNBdG9taWMpIHsKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZs
YWdTdHJpbmdLaW5kSXNBdG9taWM7Ci0gICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09
IFN0cmluZ0F0b21pYyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2hhc2hBbmRG
bGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKLSAgICAgICAgICAgIEFTU0VS
VChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nTm9ybWFsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2
b2lkIHNldElzQXRvbWljKGJvb2wpOwogCiAjaWYgU1RSSU5HX1NUQVRTCiAgICAgYm9vbCBpc1N1
YlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0
cmluZzsgfQpAQCAtNDg5LDQ0ICszMDMsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgaGlnaCBi
aXRzIG9mICdoYXNoJyBhcmUgYWx3YXlzIGVtcHR5LCBidXQgd2UgcHJlZmVyIHRvIHN0b3JlIG91
ciBmbGFncwogICAgIC8vIGluIHRoZSBsb3cgYml0cyBiZWNhdXNlIGl0IG1ha2VzIHRoZW0gc2xp
Z2h0bHkgbW9yZSBlZmZpY2llbnQgdG8gYWNjZXNzLgogICAgIC8vIFNvLCB3ZSBzaGlmdCBsZWZ0
IGFuZCByaWdodCB3aGVuIHNldHRpbmcgYW5kIGdldHRpbmcgb3VyIGhhc2ggY29kZS4KLSAgICB2
b2lkIHNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aGFzSGFzaCgpKTsKLSAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKLSAgICAgICAgLy8gTXVs
dGlwbGUgY2xpZW50cyBhc3N1bWUgdGhhdCBTdHJpbmdIYXNoZXIgaXMgdGhlIGNhbm9uaWNhbCBz
dHJpbmcgaGFzaCBmdW5jdGlvbi4KLSAgICAgICAgQVNTRVJUKGhhc2ggPT0gKGlzOEJpdCgpID8g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGE4LCBtX2xlbmd0
aCkgOiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTE2LCBt
X2xlbmd0aCkpKTsKLSAgICAgICAgQVNTRVJUKCEoaGFzaCAmIChzX2ZsYWdNYXNrIDw8ICg4ICog
c2l6ZW9mKGhhc2gpIC0gc19mbGFnQ291bnQpKSkpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggaGln
aCBiaXRzIGFyZSBlbXB0eS4KLSAgICAgICAgCi0gICAgICAgIGhhc2ggPDw9IHNfZmxhZ0NvdW50
OwotICAgICAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5kRmxhZ3MpKTsgLy8gVmVyaWZ5IHRo
YXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBzaGlmdC4KLSAgICAgICAgQVNTRVJU
KGhhc2gpOyAvLyBWZXJpZnkgdGhhdCAwIGlzIGEgdmFsaWQgc2VudGluZWwgaGFzaCB2YWx1ZS4K
LQotICAgICAgICBtX2hhc2hBbmRGbGFncyB8PSBoYXNoOyAvLyBTdG9yZSBoYXNoIHdpdGggZmxh
Z3MgaW4gbG93IGJpdHMuCi0gICAgfQorICAgIHZvaWQgc2V0SGFzaCh1bnNpZ25lZCkgY29uc3Q7
CiAKLSAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2hhc2hBbmRGbGFncyA+PiBzX2ZsYWdDb3VudDsKLSAgICB9CisgICAgdW5zaWduZWQgcmF3SGFz
aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzID4+IHNfZmxhZ0NvdW50OyB9CiAKIHB1
YmxpYzoKLSAgICBib29sIGhhc0hhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJh
d0hhc2goKSAhPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzSGFzaCgpKTsKLSAgICAgICAgcmV0dXJuIHJhd0hh
c2goKTsKLSAgICB9CisgICAgYm9vbCBoYXNIYXNoKCkgY29uc3QgeyByZXR1cm4gISFyYXdIYXNo
KCk7IH0KIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGhh
c0hhc2goKSkKLSAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0hhc2goKTsKLSAgICAgICAgcmV0
dXJuIGhhc2hTbG93Q2FzZSgpOwotICAgIH0KKyAgICB1bnNpZ25lZCBleGlzdGluZ0hhc2goKSBj
b25zdCB7IEFTU0VSVChoYXNIYXNoKCkpOyByZXR1cm4gcmF3SGFzaCgpOyB9CisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGhhc0hhc2goKSA/IHJhd0hhc2goKSA6IGhhc2hTbG93
Q2FzZSgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY29uY3VycmVudEhh
c2goKSBjb25zdDsKIApAQCAtNTM1LDQwICszMjAsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3Rh
dGljU3RyaW5nOyB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IHJlZkNvdW50KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50IC8gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICB9
Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgfQorICAgIHNp
emVfdCByZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQgLyBzX3JlZkNvdW50SW5j
cmVtZW50OyB9CisgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50
ID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KICAgICAKLSAgICAvLyBUaGlzIG1ldGhvZCBpcyB1
c2VmdWwgZm9yIGFzc2VydGlvbnMuCi0gICAgaW5saW5lIGJvb2wgaGFzQXRMZWFzdE9uZVJlZigp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISFtX3JlZkNvdW50OwotICAgIH0KLQotICAg
IGlubGluZSB2b2lkIHJlZigpCi0gICAgewotICAgICAgICBTVFJJTkdfU1RBVFNfUkVGX1NUUklO
RygqdGhpcyk7Ci0KLSAgICAgICAgbV9yZWZDb3VudCArPSBzX3JlZkNvdW50SW5jcmVtZW50Owot
ICAgIH0KLQotICAgIGlubGluZSB2b2lkIGRlcmVmKCkKLSAgICB7Ci0gICAgICAgIFNUUklOR19T
VEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOwotCi0gICAgICAgIHVuc2lnbmVkIHRlbXBSZWZDb3Vu
dCA9IG1fcmVmQ291bnQgLSBzX3JlZkNvdW50SW5jcmVtZW50OwotICAgICAgICBpZiAoIXRlbXBS
ZWZDb3VudCkgewotICAgICAgICAgICAgU3RyaW5nSW1wbDo6ZGVzdHJveSh0aGlzKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3JlZkNvdW50ID0gdGVtcFJlZkNv
dW50OwotICAgIH0KKyAgICB2b2lkIHJlZigpOworICAgIHZvaWQgZGVyZWYoKTsKIAogICAgIGNs
YXNzIFN0YXRpY1N0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1N0cmluZ0ltcGwpOwpAQCAtNjAwLDY0ICszNTYs
MjkgQEAgcHVibGljOgogICAgICAgICAvLyAgICAgICBTdHJpbmdJbXBsOjpoYXNoKCkgb25seSBz
ZXRzIGEgbmV3IGhhc2ggaWZmICFoYXNIYXNoKCkuCiAgICAgICAgIC8vICAgICAgIEFkZGl0aW9u
YWxseSwgU3RyaW5nSW1wbDo6c2V0SGFzaCgpIGFzc2VydHMgaGFzSGFzaCgpIGFuZCAhaXNTdGF0
aWMoKS4KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICAg
ICAgY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5kID0gU3RyaW5nTm9ybWFsKQotICAg
ICAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZywg
Y2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgIHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgfCBzdHJpbmdLaW5kIHwgQnVm
ZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9w
OEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHBy
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFy
YWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hh
cjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2lu
ZCA9IFN0cmluZ05vcm1hbCkKLSAgICAgICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291
bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKLSAg
ICAgICAgICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZm
ZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4
Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIG9wZXJhdG9yIFN0cmluZ0ltcGwmKCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFN0cmluZ0lt
cGwqPih0aGlzKTsKLSAgICAgICAgfQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4gY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RhdGljU3RyaW5n
SW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5n
S2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAgIG9wZXJhdG9yIFN0cmluZ0ltcGwmKCk7CiAg
ICAgfTsKIAogICAgIFdURl9FWFBPUlREQVRBIHN0YXRpYyBTdGF0aWNTdHJpbmdJbXBsIHNfYXRv
bWljRW1wdHlTdHJpbmc7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nSW1wbCogZW1w
dHkoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigmc19hdG9taWNFbXB0
eVN0cmluZyk7IH0KIAogICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgcmVhbGx5IGJlbG9uZyBpbiBT
dHJpbmdJbXBsPwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBjb3B5Q2hh
cnMoVCogZGVzdGluYXRpb24sIGNvbnN0IFQqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVy
cykKLSAgICB7Ci0gICAgICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKLSAgICAgICAgICAg
ICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIG51bUNoYXJhY3RlcnMgKiBzaXpl
b2YoVCkpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgY29weUNoYXJz
KFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgTENoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hh
cmFjdGVycykKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFy
YWN0ZXJzOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKLSAg
ICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgY29w
eUNoYXJhY3RlcnMoQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24sIGNvbnN0IENoYXJhY3RlclR5
cGUqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycyk7CisgICAgc3RhdGljIHZvaWQgY29w
eUNoYXJhY3RlcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCBMQ2hhciogc291cmNlLCB1bnNp
Z25lZCBudW1DaGFyYWN0ZXJzKTsKIAogICAgIC8vIFNvbWUgc3RyaW5nIGZlYXR1cmVzLCBsaWtl
IHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5IGZsYWcsIGFyZSBub3QKICAgICAvLyB0aHJl
YWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2FmZXR5IGJ5IGlzb2xhdGlvbiwgZ2l2aW5nIGVh
Y2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5IG9mIHRoZSBzdHJpbmcuCiAgICAgUmVmPFN0
cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4g
PSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBz
dWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKLSAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8
IG1fbGVuZ3RoKTsKLSAgICAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIG1f
ZGF0YThbaV07Ci0gICAgICAgIHJldHVybiBtX2RhdGExNltpXTsKLSAgICB9CisgICAgVUNoYXIg
YXQodW5zaWduZWQpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBj
aGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLQogICAgIGludCB0b0ludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNjkyLDQ5ICs0MTMsNDQgQEAgcHVibGlj
OgogICAgIFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVu
Y3Rpb25QdHIpOwogCiAgICAgUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFj
dGVyTWF0Y2hGdW5jdGlvblB0cik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoY29uc3Qg
Q2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFy
YWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsK
KworICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0OworICAgIGJvb2wgaXNBbGxMYXRpbjEoKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGJvb2wg
aXNBbGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0OwogCiAgICAgc2l6ZV90IGZpbmQoTENoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIgY2hh
cmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJh
Y3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsK
ICAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAg
QUxXQVlTX0lOTElORSBzaXplX3QgZmluZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9
IDApIHsgcmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRl
eCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywg
dW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmQoU3RyaW5nSW1wbCopOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qg
ZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIHNpemVfdCBmaW5kSWdub3Jp
bmdDYXNlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5M
SU5FIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4
ID0gMCkgeyByZXR1cm4gZmluZElnbm9yaW5nQ2FzZShyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4ocyksIGluZGV4KTsgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmlu
ZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmdJbXBsJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qg
cmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9N
QVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIs
IHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmlu
Z0ltcGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0lt
cGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlKSB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gc3Rh
cnRzV2l0aChzdHIpIDogKHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkgPT0gMCk7IH0K
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hh
ciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25z
dCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxLCBjYXNlU2Vuc2l0
aXZlKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNo
TGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0g
MSk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQo
Y29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqKTsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2
ZSk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKLSAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIg
KCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3Qg
eyByZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUp
OyB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhcios
IHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRj
aExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0p
IGNvbnN0IHsgcmV0dXJuIGVuZHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5n
SW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKQEAgLTc0MywxMyAr
NDU5LDE0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0lt
cGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5n
dGgpOwogICAgIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBVQ2hhciosIHVu
c2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgs
IHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBT
dHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXJEaXJlY3Rpb24g
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBu
dWxscHRyKTsKIAogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0
ZUNGU3RyaW5nKCk7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIG9wZXJhdG9yIE5TU3RyaW5nICooKTsKICNlbmRpZgpAQCAtNzYwLDEyICs0Nzcs
NyBAQCBwdWJsaWM6CiAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRGbGFncyAm
IHNfaGFzaE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAgCi0gICAgdm9pZCBhc3NlcnRDYWdl
ZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKLSAgICAgICAg
ICAgIHJlbGVhc2VBc3NlcnRDYWdlZCgpOwotICAgIH0KLSAgICAKKyAgICB2b2lkIGFzc2VydENh
Z2VkKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUFzc2VydENh
Z2VkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTc3NCw5NiArNDg2LDM1IEBAIHByb3RlY3Rl
ZDoKICAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9OwogCiAgICAgLy8g
VXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgOC1i
aXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1
YnN0cmluZykuCi0gICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNf
cmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBBU1NF
UlQoaXM4Qml0KCkpOwotICAgICAgICBBU1NFUlQobV9kYXRhOCk7Ci0gICAgICAgIFNUUklOR19T
VEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5n
SW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIAog
ICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4aXN0
aW5nIDE2LWJpdCBbW0Rlc2NyaXB0aW9uXV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAo
QnVmZmVyU3Vic3RyaW5nKS4KLSAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBs
U2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdTeW1i
b2wgfCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsK
LSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJ
VF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChDcmVhdGVT
eW1ib2xUYWcsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIE51bGwg
c3ltYm9sLgotICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnKQotICAgICAgICA6IFN0cmlu
Z0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBlbXB0eSgpLT5jaGFyYWN0ZXJzOCgp
LCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4
KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUp
OwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZyk7CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxz
aXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gKHRhaWxPZmZz
ZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCkpLnVuc2FmZUdldCgpOwotICAg
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KENoZWNrZWQ8c2l6ZV90PiB0YWlsRWxlbWVudENvdW50KTsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgc3RhdGljIHNpemVfdCB0YWlsT2Zmc2V0KCkKLSAgICB7Ci0jaWYgQ09NUElM
RVIoTVNWQykKLSAgICAgICAgLy8gTVNWQyBkb2Vzbid0IHN1cHBvcnQgYWxpZ25vZiB5ZXQuCi0g
ICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihUKT4oc2l6ZW9mKFN0cmlu
Z0ltcGwpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdu
b2YoVCk+KG9mZnNldG9mKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZsYWdzKSArIHNpemVvZihTdHJp
bmdJbXBsOjptX2hhc2hBbmRGbGFncykpOwotI2VuZGlmCi0gICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBzaXplX3QgdGFpbE9mZnNldCgpOwogCiBwcml2YXRlOgotICAgIGJv
b2wgcmVxdWlyZXNDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChidWZmZXJPd25lcnNo
aXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2RhdGE4ID09IHRhaWxQb2lu
dGVyPExDaGFyPigpOwotICAgICAgICByZXR1cm4gbV9kYXRhMTYgPT0gdGFpbFBvaW50ZXI8VUNo
YXI+KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjb25zdCBUKiB0
YWlsUG9pbnRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpICsg
dGFpbE9mZnNldDxUPigpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IFQqIHRhaWxQb2ludGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
X3B0cjxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGhpcykgKyB0YWlsT2Zmc2V0PFQ+
KCkpOwotICAgIH0KLQotICAgIFN0cmluZ0ltcGwqIGNvbnN0JiBzdWJzdHJpbmdCdWZmZXIoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1
YnN0cmluZyk7Ci0KLSAgICAgICAgcmV0dXJuICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsK
LSAgICB9Ci0KLSAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5nQnVmZmVyKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOwotCi0gICAg
ICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Ci0gICAgfQorICAgIGJvb2wg
cmVxdWlyZXNDb3B5KCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCog
dGFpbFBvaW50ZXIoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB0YWlsUG9p
bnRlcigpOworICAgIFN0cmluZ0ltcGwqIGNvbnN0JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdDsK
KyAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5nQnVmZmVyKCk7CiAKICAgICBlbnVtIGNsYXNzIENh
c2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OwotICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0
VHlwZSB0eXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYsIGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNp
Z25lZCk7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJ
bXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1w
bD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25z
dHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWxOb25FbXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChSZWY8
U3RyaW5nSW1wbD4mJiwgdW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25z
dCBDaGFyVHlwZSosIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0ZTxDYXNlQ29udmVydFR5cGUsIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29udmVydEFTQ0lJ
Q2FzZShTdHJpbmdJbXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc3RyaXBN
YXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBz
aW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25z
dHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFs
aXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0
aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQsIENoYXJhY3RlclR5cGUqJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBy
ZWFsbG9jYXRlSW50ZXJuYWwoUmVmPFN0cmluZ0ltcGw+JiYsIHVuc2lnbmVkLCBDaGFyYWN0ZXJU
eXBlKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVk
KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93
Q2FzZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBp
bmRpY2F0ZXMgYSBzdGF0aWMgKGltbW9ydGFsKSBzdHJpbmcuCkBAIC04NzUsMTMgKzUyNiw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogcHVibGljOgotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGFz
c2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0hhc2go
KSk7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9PSBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKSk7Ci0gICAgfQot
I2VuZGlmCisgICAgdm9pZCBhc3NlcnRIYXNoSXNDb3JyZWN0KCkgY29uc3Q7CiB9OwogCiB1c2lu
ZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDsKQEAgLTkw
MCwxNyArNTQ1LDYgQEAgVmFsdWVDaGVjazxTdHJpbmdJbXBsKj4gewogfTsKICNlbmRpZgogCi10
ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29u
c3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgs
IEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KLXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5n
SW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9Ci0KLXRlbXBsYXRlIDw+Ci1BTFdBWVNf
SU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0
IHsgcmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KLQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUg
Y29uc3QgVUNoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QgeyByZXR1
cm4gY2hhcmFjdGVyczE2KCk7IH0KLQogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwogaW5saW5l
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4g
ZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQpAQCAtOTM0LDcg
KzU2OCwzMSBAQCBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiwgY29ucwogdGVtcGxhdGU8dW5zaWduZWQgbGVu
Z3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwm
LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIAotaW5s
aW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXgg
PSAwKQorc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CitzaXplX3QgZmluZChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5z
aWduZWQgaW5kZXggPSAwKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6
ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVy
c2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5
cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKTsKK3NpemVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3NpemVfdCByZXZlcnNlRmluZChjb25z
dCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVk
IGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKwordGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0
IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiwgU3RyaW5nSW1wbCopOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+IGludCBj
b2RlUG9pbnRDb21wYXJlKGNvbnN0IENoYXJhY3RlclR5cGUxKiwgdW5zaWduZWQgbGVuZ3RoMSwg
Y29uc3QgQ2hhcmFjdGVyVHlwZTIqLCB1bnNpZ25lZCBsZW5ndGgyKTsKK2ludCBjb2RlUG9pbnRD
b21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CisKKy8vIEZJWE1F
OiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gbWFrZSBjbGVhciBpdCB1c2VzIHRoZSBVbmljb2RlIGRl
ZmluaXRpb24gb2Ygd2hpdGVzcGFjZS4KKy8vIE1vc3QgV2ViS2l0IGNhbGxlcnMgZG9uJ3Qgd2Fu
dCB0aGF0IHdvdWxkIHVzZSBpc0FTQ0lJU3BhY2Ugb3IgaXNIVE1MU3BhY2UgaW5zdGVhZC4KK2Jv
b2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhcik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFj
dGVyVHlwZSopOworCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPExDaGFyPihTdHJpbmdJbXBsKiBzdHJpbmcsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nKSBT
dHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0b3IpKTsgfQordGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5h
bDxVQ2hhcj4oU3RyaW5nSW1wbCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQordGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJz
PExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBj
b25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQorCitpbmxpbmUgc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRl
eF0pKQpAQCAtOTQ0LDcgKzYwMiw3IEBAIGlubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0CiAgICAgcmV0
dXJuIG5vdEZvdW5kOwogfQogCi1pbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApCitpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBs
ZW5ndGgpIHsKICAgICAgICAgaWYgKG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQpA
QCAtOTU0LDI0ICs2MTIsMjIgQEAgaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3QKICAgICByZXR1cm4g
bm90Rm91bmQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1pbmxpbmUg
c2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNlRmluZExp
bmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVy
biBub3RGb3VuZDsKICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAgICAgICBpbmRleCA9IGxl
bmd0aCAtIDE7Ci0gICAgQ2hhcmFjdGVyVHlwZSBjID0gY2hhcmFjdGVyc1tpbmRleF07Ci0gICAg
d2hpbGUgKChjICE9ICdcbicpICYmIChjICE9ICdccicpKSB7CisgICAgYXV0byBjaGFyYWN0ZXIg
PSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICB3aGlsZSAoY2hhcmFjdGVyICE9ICdcbicgJiYgY2hh
cmFjdGVyICE9ICdccicpIHsKICAgICAgICAgaWYgKCFpbmRleC0tKQogICAgICAgICAgICAgcmV0
dXJuIG5vdEZvdW5kOwotICAgICAgICBjID0gY2hhcmFjdGVyc1tpbmRleF07CisgICAgICAgIGNo
YXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOwogICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IHJldmVy
c2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Q2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBzaXplX3QgcmV2ZXJzZUZp
bmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFy
YWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpAQCAtOTg0LDEyICs2NDAsMTIgQEAgaW5s
aW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIENoYXIKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQor
QUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQog
ewogICAgIHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0
PFVDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAotaW5saW5lIHNpemVfdCByZXZl
cnNlRmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBt
YXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCkKK2lubGluZSBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNo
YXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIGlmIChtYXRjaENoYXJh
Y3RlciAmIH4weEZGKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CkBAIC0xMDIxLDQ1ICs2Nzcs
MzAgQEAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUyPgotaW5saW5lIGludCBjb2RlUG9p
bnRDb21wYXJlKHVuc2lnbmVkIGwxLCB1bnNpZ25lZCBsMiwgY29uc3QgQ2hhcmFjdGVyVHlwZTEq
IGMxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogYzIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgbG1p
biA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIHVuc2lnbmVkIHBvcyA9IDA7Ci0gICAgd2hpbGUg
KHBvcyA8IGxtaW4gJiYgKmMxID09ICpjMikgewotICAgICAgICArK2MxOwotICAgICAgICArK2My
OwotICAgICAgICArK3BvczsKK2lubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBDaGFy
YWN0ZXJUeXBlMSogY2hhcmFjdGVyczEsIHVuc2lnbmVkIGxlbmd0aDEsIGNvbnN0IENoYXJhY3Rl
clR5cGUyKiBjaGFyYWN0ZXJzMiwgdW5zaWduZWQgbGVuZ3RoMikKK3sKKyAgICB1bnNpZ25lZCBj
b21tb25MZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgxLCBsZW5ndGgyKTsKKworICAgIHVuc2lnbmVk
IHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAocG9zaXRpb24gPCBjb21tb25MZW5ndGggJiYgKmNo
YXJhY3RlcnMxID09ICpjaGFyYWN0ZXJzMikgeworICAgICAgICArK2NoYXJhY3RlcnMxOworICAg
ICAgICArK2NoYXJhY3RlcnMyOworICAgICAgICArK3Bvc2l0aW9uOwogICAgIH0KIAotICAgIGlm
IChwb3MgPCBsbWluKQotICAgICAgICByZXR1cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOwor
ICAgIGlmIChwb3NpdGlvbiA8IGNvbW1vbkxlbmd0aCkKKyAgICAgICAgcmV0dXJuIChjaGFyYWN0
ZXJzMVswXSA+IGNoYXJhY3RlcnMyWzBdKSA/IDEgOiAtMTsKIAotICAgIGlmIChsMSA9PSBsMikK
KyAgICBpZiAobGVuZ3RoMSA9PSBsZW5ndGgyKQogICAgICAgICByZXR1cm4gMDsKLQotICAgIHJl
dHVybiAobDEgPiBsMikgPyAxIDogLTE7Ci19Ci0KLWlubGluZSBpbnQgY29kZVBvaW50Q29tcGFy
ZTgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikK
LXsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5n
Mi0+bGVuZ3RoKCksIHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmNoYXJhY3RlcnM4
KCkpOwotfQotCi1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUxNihjb25zdCBTdHJpbmdJbXBs
KiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQotewotICAgIHJldHVybiBjb2Rl
UG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwgc3RyaW5n
MS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsKLX0KLQotaW5saW5l
IGludCBjb2RlUG9pbnRDb21wYXJlOFRvMTYoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29u
c3QgU3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShz
dHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCksIHN0cmluZzEtPmNoYXJhY3RlcnM4
KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsKKyAgICByZXR1cm4gKGxlbmd0aDEgPiBsZW5n
dGgyKSA/IDEgOiAtMTsKIH0KIAogaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzIpCiB7CisgICAgLy8g
RklYTUU6IFNob3VsZCBudWxsIHN0cmluZ3MgY29tcGFyZSBhcyBsZXNzIHRoYW4gZW1wdHkgc3Ry
aW5ncyByYXRoZXIgdGhhbiBlcXVhbCB0byB0aGVtPwogICAgIGlmICghc3RyaW5nMSkKICAgICAg
ICAgcmV0dXJuIChzdHJpbmcyICYmIHN0cmluZzItPmxlbmd0aCgpKSA/IC0xIDogMDsKLQogICAg
IGlmICghc3RyaW5nMikKICAgICAgICAgcmV0dXJuIHN0cmluZzEtPmxlbmd0aCgpID8gMSA6IDA7
CiAKQEAgLTEwNjcsMjMgKzcwOCwyMiBAQCBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29u
c3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMgogICAgIGJv
b2wgc3RyaW5nMklzOEJpdCA9IHN0cmluZzItPmlzOEJpdCgpOwogICAgIGlmIChzdHJpbmcxSXM4
Qml0KSB7CiAgICAgICAgIGlmIChzdHJpbmcySXM4Qml0KQotICAgICAgICAgICAgcmV0dXJuIGNv
ZGVQb2ludENvbXBhcmU4KHN0cmluZzEsIHN0cmluZzIpOwotICAgICAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZThUbzE2KHN0cmluZzEsIHN0cmluZzIpOworICAgICAgICAgICAgcmV0dXJuIGNv
ZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMS0+bGVuZ3RoKCks
IHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxlbmd0aCgpKTsKKyAgICAgICAgcmV0
dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMS0+bGVu
Z3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJpbmcyLT5sZW5ndGgoKSk7CiAgICAg
fQogICAgIGlmIChzdHJpbmcySXM4Qml0KQotICAgICAgICByZXR1cm4gLWNvZGVQb2ludENvbXBh
cmU4VG8xNihzdHJpbmcyLCBzdHJpbmcxKTsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZTE2
KHN0cmluZzEsIHN0cmluZzIpOworICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJp
bmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3Rl
cnM4KCksIHN0cmluZzItPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShz
dHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcyLT5sZW5ndGgoKSk7CiB9CiAKLWlubGluZSBib29sIGlzU3BhY2VP
ck5ld2xpbmUoVUNoYXIgYykKK2lubGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgY2hh
cmFjdGVyKQogewogICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYmFzaWMgTGF0aW4tMS4K
ICAgICAvLyBUaGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0IGluY2x1ZGVk
IGluIFVuaWNvZGUgRGlyV1MuCi0gICAgcmV0dXJuIGMgPD0gMHg3RiA/IGlzQVNDSUlTcGFjZShj
KSA6IHVfY2hhckRpcmVjdGlvbihjKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CisgICAgcmV0
dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFy
RGlyZWN0aW9uKGNoYXJhY3RlcikgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVs
bFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1p
bmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQogewogICAgIEFTU0VSVChz
dHJpbmcpOwogICAgIHNpemVfdCBsZW5ndGggPSAwOwpAQCAtMTA5NCw2ICs3MzQsMzggQEAgaW5s
aW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVy
VHlwZSogc3RyaW5nKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsK
IH0KIAoraW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJl
ZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExDaGFyKiBkYXRhOCwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzKQorICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKKyAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKKyAgICAsIG1fZGF0YTgoZGF0YTgpCisgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5k
RmxhZ3MpCit7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1
bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogZGF0YTE2LCB1
bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCisgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQorICAgICwg
bV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhMTYoZGF0YTE2KQorICAgICwgbV9oYXNoQW5k
RmxhZ3MoaGFzaEFuZEZsYWdzKQoreworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gaW5saW5lIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1
bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhD
b25zdEV4cHJUYWcpCisgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQorICAgICwgbV9kYXRhOENoYXIoY2hhcmFjdGVycykKKyAgICAsIG1faGFzaEFuZEZs
YWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGlubGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5z
aWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0
aENvbnN0RXhwclRhZykKKyAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0
aChsZW5ndGgpCisgICAgLCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKKyAgICAsIG1faGFzaEFu
ZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKwogaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNDb3B5KCkp
IHsKQEAgLTExMDcsNiArNzc5LDM4OSBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZShtX2RhdGExNiwgbV9s
ZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjppc0FsbEFTQ0lJKCkgY29uc3QK
K3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
SW1wbDo6aXNBbGxMYXRpbjEoKSBjb25zdAoreworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgYXV0byogY2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpOworICAg
IFVDaGFyIG9yZWQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsr
aSkKKyAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOworICAgIHJldHVybiAhKG9yZWQgJiAw
eEZGMDApOworfQorCit0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhciksIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghaXNTcGVj
aWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFy
YWN0ZXIoVUNoYXIpPiBpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjppc0FsbFNwZWNpYWxDaGFyYWN0
ZXJzKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBXVEY6Omlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyPihjaGFyYWN0ZXJzOCgpLCBs
ZW5ndGgoKSk7CisgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNp
YWxDaGFyYWN0ZXI+KGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7Cit9CisKK2lubGluZSBTdHJp
bmdJbXBsOjpTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCwgRm9yY2U4Qml0KQorICAgIDogU3Ry
aW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgdGFpbFBvaW50ZXI8TENo
YXI+KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJu
YWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisKKyAg
ICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0
cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNo
YXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgdGFpbFBvaW50ZXI8VUNoYXI+KCksIFN0
cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2RhdGExNik7Cisg
ICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5H
KG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jUHRy
PExDaGFyPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hh
cGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKK3sKKyAgICBB
U1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFU
U19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3Ry
aW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1
Y3RXaXRob3V0Q29weWluZ1RhZykKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5j
cmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFs
KQoreworICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAg
IFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0
cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUo
c19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2Rh
dGE4KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF84QklU
X1NUUklORyhtX2xlbmd0aCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKE1h
bGxvY1B0cjxVQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5n
SW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycy5sZWFrUHRy
KCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQoreworICAgIEFTU0VSVChtX2RhdGExNik7
CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RS
SU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFz
ZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNo
YXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vi
c3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgQVNTRVJUKG1fZGF0YTgpOwor
ICAgIEFTU0VSVChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgp
ICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxl
YWtSZWYoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0
cnVlKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICA6
IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMs
IFN0cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoIWlzOEJpdCgp
KTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisgICAgQVNT
RVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICBz
dWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKKworICAgIFNUUklOR19TVEFUU19B
RERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4
Qml0SWZQb3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9y
KQoreworICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKTsKK30KKworQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYgcmVwLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoIDw9IHJlcC5sZW5n
dGgoKSk7CisKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuICplbXB0eSgpOworCisg
ICAgYXV0byogb3duZXJSZXAgPSAoKHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJz
dHJpbmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcCk7CisKKyAgICAvLyBXZSBhbGxv
Y2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIGJvdGggdGhlIFN0cmluZ0ltcGwgc3RydWN0IGFz
IHdlbGwgYXMgdGhlIHBvaW50ZXIgdG8gdGhlIG93bmVyIHN0cmluZy4KKyAgICBhdXRvKiBzdHJp
bmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0aW9u
U2l6ZTxTdHJpbmdJbXBsKj4oMSkpKTsKKyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAu
bV9kYXRhOCArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXApKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhMTYgKyBv
ZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQor
eworICAgIENPTVBJTEVfQVNTRVJUKGNoYXJhY3RlckNvdW50ID4gMSwgU3RyaW5nSW1wbEZyb21M
aXRlcmFsTm90RW1wdHkpOworICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJDb3VudCAtIDEg
PD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkp
LCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVyZmxvdyk7CisKKyAgICByZXR1cm4gY3Jl
YXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3Rl
cnMpLCBjaGFyYWN0ZXJDb3VudCAtIDEpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomIG91dHB1
dCkKK3sKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAg
ICAgICByZXR1cm4gZW1wdHkoKTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6
ZW9mKENoYXJhY3RlclR5cGUpKSkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byogcmVzdWx0SW1wbCA9IHN0YXRpY19j
YXN0PFN0cmluZ0ltcGwqPih0cnlTdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hhcmFjdGVy
VHlwZT4obGVuZ3RoKSkpOworICAgIGlmICghcmVzdWx0SW1wbCkgeworICAgICAgICBvdXRwdXQg
PSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgb3V0cHV0ID0g
cmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8Q2hhcmFjdGVyVHlwZT4oKTsKKworICAgIHJldHVybiBj
b25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPihyZXN1bHRJbXBsLCBsZW5ndGgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgoraW5saW5lIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlw
ZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYgdmVjdG9y
KQoreworICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKKyAgICAgICAgQVNT
RVJUKHZlY3Rvci5kYXRhKCkpOworICAgICAgICBpZiAoc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgc2l6ZSkp
OworICAgIH0KKyAgICByZXR1cm4gKmVtcHR5KCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5n
SW1wbDo6Y29zdCgpIGNvbnN0Cit7CisgICAgLy8gRm9yIHN1YnN0cmluZ3MsIHJldHVybiB0aGUg
Y29zdCBvZiB0aGUgYmFzZSBzdHJpbmcuCisgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1
ZmZlclN1YnN0cmluZykKKyAgICAgICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7
CisKKyAgICAvLyBOb3RlOiB3ZSBtdXN0IG5vdCBhbHRlciB0aGUgbV9oYXNoQW5kRmxhZ3MgZmll
bGQgaW4gaW5zdGFuY2VzIG9mIFN0YXRpY1N0cmluZ0ltcGwuCisgICAgLy8gV2UgZW5zdXJlIHRo
aXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBhbGwg
aW5zdGFuY2VzIG9mCisgICAgLy8gU3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0YXRp
Y1N0cmluZ0ltcGwgaW5zdGFuY2VzIHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKKyAgICAv
LyAwIGhlcmUgYW5kIGF2b2lkIG1vZGlmeWluZyBtX2hhc2hBbmRGbGFncy4KKyAgICBpZiAobV9o
YXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdDsKKyAgICBz
aXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFpczhCaXQoKSkKKyAgICAgICAgcmVz
dWx0IDw8PSAxOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5n
SW1wbDo6Y29zdER1cmluZ0dDKCkKK3sKKyAgICBpZiAoaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKQor
ICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0RHVy
aW5nR0MoKSwgcmVmQ291bnQoKSk7CisKKyAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Cisg
ICAgaWYgKCFpczhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8PSAxOworICAgIHJldHVybiBkaXZp
ZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5n
SW1wbDo6c2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKK3sKKyAgICBBU1NFUlQoIWlzU3RhdGlj
KCkpOworICAgIEFTU0VSVCghaXNTeW1ib2woKSk7CisgICAgaWYgKGlzQXRvbWljKSB7CisgICAg
ICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAg
ICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRvbWljKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsK
KyAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdOb3JtYWwpOworICAgIH0KK30K
KworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SGFzaCh1bnNpZ25lZCBoYXNoKSBjb25zdAor
eworICAgIC8vIFRoZSBoaWdoIGJpdHMgb2YgJ2hhc2gnIGFyZSBhbHdheXMgZW1wdHksIGJ1dCB3
ZSBwcmVmZXIgdG8gc3RvcmUgb3VyIGZsYWdzCisgICAgLy8gaW4gdGhlIGxvdyBiaXRzIGJlY2F1
c2UgaXQgbWFrZXMgdGhlbSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0byBhY2Nlc3MuCisgICAg
Ly8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0IHdoZW4gc2V0dGluZyBhbmQgZ2V0dGluZyBv
dXIgaGFzaCBjb2RlLgorCisgICAgQVNTRVJUKCFoYXNIYXNoKCkpOworICAgIEFTU0VSVCghaXNT
dGF0aWMoKSk7CisgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBhc3N1bWUgdGhhdCBTdHJpbmdIYXNo
ZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5jdGlvbi4KKyAgICBBU1NFUlQoaGFz
aCA9PSAoaXM4Qml0KCkgPyBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KG1fZGF0YTgsIG1fbGVuZ3RoKSA6IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9w
OEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKSkpOworICAgIEFTU0VSVCghKGhhc2ggJiAoc19mbGFn
TWFzayA8PCAoOCAqIHNpemVvZihoYXNoKSAtIHNfZmxhZ0NvdW50KSkpKTsgLy8gVmVyaWZ5IHRo
YXQgZW5vdWdoIGhpZ2ggYml0cyBhcmUgZW1wdHkuCisKKyAgICBoYXNoIDw8PSBzX2ZsYWdDb3Vu
dDsKKyAgICBBU1NFUlQoIShoYXNoICYgbV9oYXNoQW5kRmxhZ3MpKTsgLy8gVmVyaWZ5IHRoYXQg
ZW5vdWdoIGxvdyBiaXRzIGFyZSBlbXB0eSBhZnRlciBzaGlmdC4KKyAgICBBU1NFUlQoaGFzaCk7
IC8vIFZlcmlmeSB0aGF0IDAgaXMgYSB2YWxpZCBzZW50aW5lbCBoYXNoIHZhbHVlLgorCisgICAg
bV9oYXNoQW5kRmxhZ3MgfD0gaGFzaDsgLy8gU3RvcmUgaGFzaCB3aXRoIGZsYWdzIGluIGxvdyBi
aXRzLgorfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpyZWYoKQoreworICAgIFNUUklOR19T
VEFUU19SRUZfU1RSSU5HKCp0aGlzKTsKKworICAgIG1fcmVmQ291bnQgKz0gc19yZWZDb3VudElu
Y3JlbWVudDsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6ZGVyZWYoKQoreworICAgIFNU
UklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRoaXMpOworCisgICAgdW5zaWduZWQgdGVtcFJlZkNv
dW50ID0gbV9yZWZDb3VudCAtIHNfcmVmQ291bnRJbmNyZW1lbnQ7CisgICAgaWYgKCF0ZW1wUmVm
Q291bnQpIHsKKyAgICAgICAgU3RyaW5nSW1wbDo6ZGVzdHJveSh0aGlzKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpjb3B5Q2hh
cmFjdGVycyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSog
c291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQoreworICAgIGlmIChudW1DaGFyYWN0ZXJz
ID09IDEpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgbnVtQ2hhcmFjdGVycyAq
IHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcmFjdGVycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IExDaGFyKiBzb3Vy
Y2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bUNoYXJhY3RlcnM7ICsraSkKKyAgICAgICAgZGVzdGluYXRpb25baV0gPSBzb3VyY2Vb
aV07Cit9CisKK2lubGluZSBVQ2hhciBTdHJpbmdJbXBsOjphdCh1bnNpZ25lZCBpKSBjb25zdAor
eworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7Cisg
ICAgcmV0dXJuIGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOworfQorCitpbmxp
bmUgdm9pZCBTdHJpbmdJbXBsOjphc3NlcnRDYWdlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpCisgICAgICAgIHJlbGVhc2VBc3NlcnRDYWdlZCgpOworfQorCitpbmxpbmUg
U3RyaW5nSW1wbDo6U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOwor
ICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMiht
X2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0
ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3Rl
cnMsIFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoIWlzOEJp
dCgpKTsKKyAgICBBU1NFUlQobV9kYXRhMTYpOworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRf
U1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbFRhZykKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5j
cmVtZW50LCAwLCBlbXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8
IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkp
OworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5H
MihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXpl
X3QgU3RyaW5nSW1wbDo6YWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50
Q291bnQpCit7CisgICAgcmV0dXJuICh0YWlsT2Zmc2V0PFQ+KCkgKyB0YWlsRWxlbWVudENvdW50
ICogc2l6ZW9mKFQpKS51bnNhZmVHZXQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHNpemVfdCBTdHJpbmdJbXBsOjp0YWlsT2Zmc2V0KCkKK3sKKyNpZiBDT01QSUxFUihNU1ZD
KQorICAgIC8vIE1TVkMgZG9lc24ndCBzdXBwb3J0IGFsaWdub2YgeWV0LgorICAgIHJldHVybiBy
b3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihUKT4oc2l6ZW9mKFN0cmluZ0ltcGwpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zmc2V0b2YoU3Ry
aW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1faGFzaEFuZEZs
YWdzKSk7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU3RyaW5nSW1wbDo6cmVxdWlyZXNDb3B5
KCkgY29uc3QKK3sKKyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVySW50ZXJuYWwp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1
cm4gbV9kYXRhOCA9PSB0YWlsUG9pbnRlcjxMQ2hhcj4oKTsKKyAgICByZXR1cm4gbV9kYXRhMTYg
PT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBjb25zdCBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBUKiBTdHJpbmdJbXBsOjp0YWlsUG9pbnRlcigpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSAr
IHRhaWxPZmZzZXQ8VD4oKSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsKiBjb25zdCYgU3RyaW5n
SW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoYnVmZmVyT3duZXJz
aGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3Ry
aW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsKiYgU3RyaW5nSW1wbDo6c3Vic3Ry
aW5nQnVmZmVyKCkKK3sKKyAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vi
c3RyaW5nKTsKKworICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Cit9CisK
K2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdAorewor
ICAgIEFTU0VSVChleGlzdGluZ0hhc2goKSA9PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5k
TWFza1RvcDhCaXRzKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKSk7Cit9CisKK3RlbXBsYXRlPHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3RleHByIFN0cmluZ0ltcGw6OlN0YXRp
Y1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5kKQorICAgIDogU3RyaW5nSW1wbFNo
YXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hh
cmFjdGVycywKKyAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFnRGlkUmVw
b3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNv
bXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3Vu
dCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCit7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3RleHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0lt
cGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2luZCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShz
X3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0ZXJDb3VudCAtIDEsIGNoYXJhY3Rl
cnMsCisgICAgICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1ZmZl
ckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhC
aXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikK
K3sKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6Om9wZXJhdG9yIFN0
cmluZ0ltcGwmKCkKK3sKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+
KHRoaXMpOworfQorCiAvLyBTdHJpbmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmlu
Z0ltcGwqIGFuZCBSZWZQdHI8U3RyaW5nSW1wbD4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBEZWZhdWx0SGFzaDsKIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwq
PiB7CkBAIC0xMTU2LDE0ICsxMjExLDEwIEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5s
aW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nCiAgICAg
ICAgIHJldHVybiAmaW1wbDsgXAogICAgIH0oKSkKIAotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
dXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpTdGF0aWNTdHJpbmdJbXBsOwogdXNp
bmcgV1RGOjplcXVhbDsKLXVzaW5nIFdURjo6VGV4dENhc2VTZW5zaXRpdml0eTsKLXVzaW5nIFdU
Rjo6VGV4dENhc2VTZW5zaXRpdmU7Ci11c2luZyBXVEY6OlRleHRDYXNlSW5zZW5zaXRpdmU7CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCAyYTIyNTVhNmM1MjlmNDFiNzQ3
ZDBkNTE1ZDlmMTQ1ZTBmZjRlMmQyLi4xODEzZWMzMDg3ZDRkZjBjM2FhZjM4NGE1OWZhYzQ4ZmM2
OWVhMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNDUxLDE2ICs0NTEsMTYgQEAg
aW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAog
aW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIq
IGRlc3RpbmF0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJzKGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7Cisg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAogewogICAgIGlmIChpczhCaXQo
KSkgewotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRpb24sIGNoYXJhY3Rl
cnM4KCksIG1fbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVz
dGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigp
LCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24s
IGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CiB9CiAKIGlubGluZSBTdHJpbmdWaWV3OjpVcGNv
bnZlcnRlZENoYXJhY3RlcnM6OlVwY29udmVydGVkQ2hhcmFjdGVycyhjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggMGU5OTUwMjFmOGVmZThi
YWRlZGI3OGI5ODA5ZmMyZTBkMzFkNDY3YS4uZTMxNWRhYzM3ZDFiMzRlNWQyMGEwYTAxNjFmMDI0
NTJmODEyYjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNo
IE1vYmlsZSwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ4LDEyICs0OCwxMCBAQCBTdHJpbmc6OlN0
cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogfQogCiAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRl
ZCBzb3VyY2UuCi1TdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogc3RyKQorU3RyaW5nOjpTdHJp
bmcoY29uc3QgVUNoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5nKQogewotICAgIGlmICghc3RyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RyLCBs
ZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKHN0cikpOworICAgIGlmIChudWxsVGVybWluYXRl
ZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKG51bGxUZXJtaW5h
dGVkU3RyaW5nLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKG51bGxUZXJtaW5hdGVkU3Ry
aW5nKSk7CiB9CiAKIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgpAQCAt
NjksMTcgKzY3LDE3IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAotLy8g
Q29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0
ZWQgc291cmNlLgotU3RyaW5nOjpTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpCisvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBMYXRpbi0xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0
ZWQgc291cmNlLgorU3RyaW5nOjpTdHJpbmcoY29uc3QgTENoYXIqIG51bGxUZXJtaW5hdGVkU3Ry
aW5nKQogewotICAgIGlmIChjaGFyYWN0ZXJzKQotICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBs
OjpjcmVhdGUoY2hhcmFjdGVycyk7CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQorICAg
ICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUobnVsbFRlcm1pbmF0ZWRTdHJpbmcpOwog
fQogCi1TdHJpbmc6OlN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQorU3RyaW5nOjpTdHJp
bmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcpCiB7Ci0gICAgaWYgKGNoYXJhY3Rl
cnMpCi0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpOworICAgIGlmIChudWxsVGVybWluYXRlZFN0cmlu
ZykKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihudWxsVGVybWluYXRlZFN0cmluZykpOwogfQogCiBTdHJpbmc6OlN0cmlu
ZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKQEAgLTg3LDM1ICs4NSwzNiBAQCBTdHJpbmc6OlN0
cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKIHsKIH0KIAotdm9pZCBTdHJpbmc6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIHN0cikKK3ZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgU3RyaW5nJiBv
dGhlclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBleHRyZW1lbHkgaW5lZmZpY2ll
bnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRvIHRha2UgdGhpcyBvdXQgb2YgU3Ry
aW5nJ3MgQVBJLgogCi0gICAgaWYgKHN0ci5pc0VtcHR5KCkpCi0gICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKHN0ci5tX2ltcGwpIHsKLSAgICAgICAgaWYgKG1faW1wbCkgewotICAgICAgICAgICAg
aWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgc3RyLm1faW1wbC0+aXM4Qml0KCkpIHsKLSAgICAgICAg
ICAgICAgICBMQ2hhciogZGF0YTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbV9pbXBsLT5sZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0lt
cGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyBz
dHIubGVuZ3RoKCksIGRhdGEpOwotICAgICAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX2ltcGwt
PmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKLSAgICAg
ICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCksIHN0ci5jaGFyYWN0ZXJz
OCgpLCBzdHIubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtX2lt
cGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFVDaGFyKiBkYXRhOwotICAgICAgICAgICAgaWYgKHN0ci5sZW5n
dGgoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIG1faW1wbC0+bGVu
Z3RoKCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGF1dG8gbmV3SW1w
bCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0
ci5sZW5ndGgoKSwgZGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwotICAgICAgICAgICAgU3RyaW5nVmlldyhzdHIp
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBtX2ltcGwtPmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgbV9pbXBsID0gc3RyLm1faW1wbDsKKyAgICBpZiAoIW1faW1wbCkgeworICAgICAg
ICBtX2ltcGwgPSBvdGhlclN0cmluZy5tX2ltcGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAob3RoZXJTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7CisgICAgYXV0byBvdGhlckxlbmd0aCA9IG90
aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7CisgICAgaWYgKG90aGVyTGVuZ3RoID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoKQorICAgICAgICBDUkFTSCgp
OworCisgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhC
aXQoKSkgeworICAgICAgICBMQ2hhciogZGF0YTsKKyAgICAgICAgYXV0byBuZXdJbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7
CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFj
dGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0
YSArIGxlbmd0aCwgb3RoZXJTdHJpbmcubV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0
aCk7CisgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgVUNoYXIqIGRhdGE7CisgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7CisgICAgU3Ry
aW5nVmlldygqbV9pbXBsKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKKyAgICBT
dHJpbmdWaWV3KCpvdGhlclN0cmluZy5tX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KGRhdGEgKyBsZW5ndGgpOworICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CiB9CiAKIHZv
aWQgU3RyaW5nOjphcHBlbmQoTENoYXIgY2hhcmFjdGVyKQpAQCAtMTM0LDcgKzEzMyw3IEBAIHZv
aWQgU3RyaW5nOjphcHBlbmQoTENoYXIgY2hhcmFjdGVyKQogICAgICAgICBDUkFTSCgpOwogICAg
IExDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRhdGEpOwotICAgIG1lbWNweShkYXRhLCBt
X2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOworICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbV9pbXBsLT5sZW5n
dGgoKSk7CiAgICAgZGF0YVttX2ltcGwtPmxlbmd0aCgpXSA9IGNoYXJhY3RlcjsKICAgICBtX2lt
cGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQpAQCAtMjI3LDggKzIyNiw4IEBAIHZvaWQgU3RyaW5n
OjphcHBlbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnNUb0FwcGVuZCwgdW5zaWduZWQgbGVuZ3Ro
VG9BcHBlbmQpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBMQ2hhciogZGF0YTsKICAg
ICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChzdHJM
ZW5ndGggKyBsZW5ndGhUb0FwcGVuZCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlD
aGFycyhkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7Ci0gICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQs
IGxlbmd0aFRvQXBwZW5kKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0
YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBzdHJMZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxl
bmd0aFRvQXBwZW5kKTsKICAgICAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTIzNyw4ICsyMzYsOCBAQCB2b2lkIFN0cmluZzo6YXBwZW5k
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5k
KQogICAgICAgICBDUkFTSCgpOwogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0FwcGVu
ZCwgZGF0YSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFj
dGVyczE2KCksIHN0ckxlbmd0aCk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEgKyBz
dHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOworICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczE2KCksIHN0ckxl
bmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIHN0ckxlbmd0aCwg
Y2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7CiAgICAgbV9pbXBsID0gV1RGTW92
ZShuZXdJbXBsKTsKIH0KIApAQCAtMjY0LDEwICsyNjMsMTAgQEAgdm9pZCBTdHJpbmc6OmFwcGVu
ZChjb25zdCBVQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVu
ZCkKICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKICAgICBp
ZiAobV9pbXBsLT5pczhCaXQoKSkKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEs
IGNoYXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
YWN0ZXJzKGRhdGEsIGNoYXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7CiAgICAgZWxzZQotICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgY2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7
Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNU
b0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhkYXRhLCBjaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0
aFRvQXBwZW5kKTsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCkBAIC0yODUs
NDEgKzI4NCwzMyBAQCB2b2lkIFN0cmluZzo6dHJ1bmNhdGUodW5zaWduZWQgcG9zaXRpb24pCiAg
ICAgICAgIG1faW1wbCA9IG1faW1wbC0+c3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92
ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0
aW9uLCBpbnQgbGVuZ3RoVG9SZW1vdmUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBpbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlbW92ZSkK
IHsKICAgICBDaGFyYWN0ZXJUeXBlKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSwgZGF0YSk7
Ci0gICAgbWVtY3B5KGRhdGEsIGNoYXJhY3RlcnMsIHBvc2l0aW9uICogc2l6ZW9mKENoYXJhY3Rl
clR5cGUpKTsKLSAgICBtZW1jcHkoZGF0YSArIHBvc2l0aW9uLCBjaGFyYWN0ZXJzICsgcG9zaXRp
b24gKyBsZW5ndGhUb1JlbW92ZSwKLSAgICAgICAgKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZW1vdmUg
LSBwb3NpdGlvbikgKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpOwotCisgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJhY3RlcnMoZGF0YSwgY2hhcmFjdGVycywgcG9zaXRpb24pOworICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwgY2hhcmFjdGVycyArIHBvc2l0aW9u
ICsgbGVuZ3RoVG9SZW1vdmUsIGxlbmd0aCgpIC0gbGVuZ3RoVG9SZW1vdmUgLSBwb3NpdGlvbik7
CiAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIAotdm9pZCBTdHJpbmc6OnJlbW92
ZSh1bnNpZ25lZCBwb3NpdGlvbiwgaW50IGxlbmd0aFRvUmVtb3ZlKQordm9pZCBTdHJpbmc6OnJl
bW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZW1vdmUpCiB7Ci0gICAg
aWYgKGxlbmd0aFRvUmVtb3ZlIDw9IDApCisgICAgaWYgKCFsZW5ndGhUb1JlbW92ZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgoKSkKKyAgICBhdXRvIGxlbmd0
aCA9IHRoaXMtPmxlbmd0aCgpOworICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFRvUmVtb3ZlKSA+
IGxlbmd0aCgpIC0gcG9zaXRpb24pCi0gICAgICAgIGxlbmd0aFRvUmVtb3ZlID0gbGVuZ3RoKCkg
LSBwb3NpdGlvbjsKLQotICAgIGlmIChpczhCaXQoKSkgeworICAgIGxlbmd0aFRvUmVtb3ZlID0g
c3RkOjptaW4obGVuZ3RoVG9SZW1vdmUsIGxlbmd0aCAtIHBvc2l0aW9uKTsKKyAgICBpZiAoaXM4
Qml0KCkpCiAgICAgICAgIHJlbW92ZUludGVybmFsKGNoYXJhY3RlcnM4KCksIHBvc2l0aW9uLCBs
ZW5ndGhUb1JlbW92ZSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlbW92ZUlu
dGVybmFsKGNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVuZ3RoVG9SZW1vdmUpOworICAgIGVs
c2UKKyAgICAgICAgcmVtb3ZlSW50ZXJuYWwoY2hhcmFjdGVyczE2KCksIHBvc2l0aW9uLCBsZW5n
dGhUb1JlbW92ZSk7CiB9CiAKLVN0cmluZyBTdHJpbmc6OnN1YnN0cmluZyh1bnNpZ25lZCBwb3Ms
IHVuc2lnbmVkIGxlbikgY29uc3QKK1N0cmluZyBTdHJpbmc6OnN1YnN0cmluZyh1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKSAKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnN1YnN0cmluZyhwb3Ms
IGxlbik7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkg
b3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5ndGgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0
cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CkBAIC0zMzIsMTAwICszMjMsOTUgQEAgU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5n
U2hhcmluZ0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAKICAg
ICBpZiAoIW9mZnNldCAmJiBsZW5ndGggPT0gc3RyaW5nTGVuZ3RoKQogICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbCgqbV9pbXBsLCBvZmZzZXQsIGxlbmd0aCkpOworICAgIHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9pbXBsLCBvZmZzZXQsIGxlbmd0aCk7CiB9
CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlr
ZSBpdCwgYmUgaW5saW5lZD8KLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IFN0cmlu
ZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBv
dGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNl
KCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRvQVNDSUlVcHBlcmNhc2Uo
KSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExv
Y2FsZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55
IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0
cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFp
bGluZ0luZGV4OEJpdCh1bnNpZ25lZCBmYWlsaW5nSW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252
ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoZmFp
bGluZ0luZGV4KTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUg
bWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRl
eDhCaXQoZmFpbGluZ0luZGV4KSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25zdAogewotICAgIGlmICghbV9pbXBs
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRv
VXBwZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5j
dGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKSA6IFN0
cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2Nh
bGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdAogewotICAgIGlm
ICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+
Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShsb2NhbGVJZGVudGlmaWVyKTsKKyAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwg
YmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNh
c2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5n
IFN0cmluZzo6Y29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9VcHBlcmNhc2VXaXRo
TG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5j
dGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUobG9jYWxlSWRl
bnRpZmllcikgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzdHJpcFdoaXRlU3Bh
Y2UoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgcmV0dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgLy8gRklYTUU6IFNo
b3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGlu
ZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9u
ZSB0aGluZywgIndoaXRlc3BhY2UiIGlzIGEgc2luZ2xlCisgICAgLy8gd29yZCBzbyB0aGUgInMi
IHNob3VsZCBiZSBsb3dlcmNhc2UuIEZvciBhbm90aGVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRo
aXMgbmFtZQorICAgIC8vIHRoYXQgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5p
dGlvbiBvZiB3aGl0ZXNwYWNlLiBNb3N0IFdlYktpdCBjYWxsZXJzCisgICAgLy8gZG9uJ3Qgd2Fu
dCB0aGF0IGFuZCBldmVudHVhbGx5IHdlIHNob3VsZCBjb25zaWRlciBkZWxldGluZyB0aGlzLgor
ICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0cmlwV2hpdGVTcGFjZSgpIDogU3RyaW5nIHsg
fTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnN0cmlwV2hpdGVTcGFjZShpc1do
aXRlU3BhY2UpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBt
YW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0
aW9uIG5lZWRzIGEgbmV3IG5hbWUuIEl0IHN0cmlwcyBsZWFkaW5nIGFuZCB0cmFpbGluZworICAg
IC8vIGNoYXJhY3RlcnMgdGhhdCBtYXRjaCBhIHByZWRpY2F0ZTsgbm90IG5lY2Vzc2FyaWx5ICJ3
aGl0ZSBzcGFjZSIuCisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNl
KGlzV2hpdGVTcGFjZSkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzaW1wbGlm
eVdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2Ug
aXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcg
bmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2UiIGlzIGEgc2luZ2xlCisgICAgLy8gd29y
ZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2UuIEZvciBhbm90aGVyLCBpdCdzIG5vdCBj
bGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIFVu
aWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBNb3N0IFdlYktpdCBjYWxsZXJzCisgICAg
Ly8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5IHdlIHNob3VsZCBjb25zaWRlciBkZWxl
dGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c2ltcGxpZnlXaGl0ZVNwYWNl
KElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKIHsKLSAgICBpZiAo
IW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnNp
bXBsaWZ5V2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAg
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZShpc1doaXRlU3BhY2Up
IDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFy
YWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1w
bCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnJlbW92ZUNo
YXJhY3RlcnMoZmluZE1hdGNoKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24s
IGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5yZW1vdmVDaGFyYWN0ZXJzKGZpbmRNYXRjaCkgOiBTdHJpbmcgeyB9Owog
fQogCiBTdHJpbmcgU3RyaW5nOjpmb2xkQ2FzZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5mb2xkQ2FzZSgp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVy
cyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZvbGRD
YXNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJl
c3VsdCkgY29uc3QKQEAgLTQ2NSw4ICs0NTEsNyBAQCBWZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApCi1zdGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhG
b3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCitXVEZf
QVRUUklCVVRFX1BSSU5URigxLCAwKSBzdGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRB
cmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAgICAgdmFfbGlz
dCBhcmdzQ29weTsKICAgICB2YV9jb3B5KGFyZ3NDb3B5LCBhcmdzKTsKQEAgLTQ3OCwxNCArNDYz
LDEyIEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhjb25zdCBj
aGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogI2lmIFVTRShDRikgJiYgIU9TKFdJTkRPV1Mp
CiAgICAgaWYgKHN0cnN0cihmb3JtYXQsICIlQCIpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZGb3JtYXQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZm9ybWF0LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKLQotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNm
Rm9ybWF0LmdldCgpLCBhcmdzKSk7Ci0KKyAgICAgICAgYXV0byBjZkZvcm1hdCA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb3JtYXQsIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51
bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7CiAgICAgICAgIHZhX2VuZChhcmdzKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKICAgICB9Ci0jZW5kaWYgLy8gVVNFKENGKSAmJiAh
T1MoV0lORE9XUykKKyNlbmRpZgogCiAgICAgLy8gRG8gdGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0
aGUgbGVuZ3RoLgogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC00OTcsNyArNDgwLDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGNvbnN0IGNoYXIgKmZvcm1hdCwg
dmFfbGlzdCBhcmdzKQogICAgIHZhX2VuZChhcmdzKTsKIAogICAgIGlmIChyZXN1bHQgPT0gMCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTUy
Nyw3ICs1MTAsNiBAQCBTdHJpbmcgU3RyaW5nOjpmb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pCiAgICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKICAgICBTdHJpbmcgcmVzdWx0ID0gY3Jl
YXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhmb3JtYXQsIGFyZ3MpOwogICAgIHZhX2VuZChhcmdz
KTsKLSAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03MDAsMTEgKzY4MiwxMSBAQCBm
bG9hdCBTdHJpbmc6OnRvRmxvYXQoYm9vbCogb2spIGNvbnN0CiB9CiAKICNpZiBDT01QSUxFUl9T
VVBQT1JUUyhDWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9GVU5DVElPTlMpCisKIFN0cmluZyBTdHJp
bmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtl
IGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29w
eSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYK
QEAgLTcxMiwzNiArNjk0LDI3IEBAIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpICYmCiAg
ICAgaWYgKGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKSB7CiAgICAgICAgIC8vIFNpbmNl
IHdlIGtub3cgdGhhdCBvdXIgc3RyaW5nIGlzIGEgdGVtcG9yYXJ5IHRoYXQgd2lsbCBiZSBkZXN0
cm95ZWQKICAgICAgICAgLy8gd2UgY2FuIGp1c3Qgc3RlYWwgdGhlIG1faW1wbCBmcm9tIGl0LCB0
aHVzIGF2b2lkaW5nIGEgY29weS4KLSAgICAgICAgcmV0dXJuIFN0cmluZyhXVEZNb3ZlKCp0aGlz
KSk7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKnRoaXMpIH07CiAgICAgfQogCi0gICAgaWYg
KCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX2ltcGwt
Pmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29w
eSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2Vsc2UKKwogU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVk
PworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsg
fTsKIH0KKwogI2VuZGlmCiAKIGJvb2wgU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKSBjb25zdAogewotICAgIGlmICghaW1wbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBBdG9taWNTdHJp
bmdzIGFyZSBub3Qgc2FmZSB0byBzZW5kIGJldHdlZW4gdGhyZWFkcyBhcyB+U3RyaW5nSW1wbCgp
CiAgICAgLy8gd2lsbCB0cnkgdG8gcmVtb3ZlIHRoZW0gZnJvbSB0aGUgd3JvbmcgQXRvbWljU3Ry
aW5nVGFibGUuCi0gICAgaWYgKGltcGwoKS0+aXNBdG9taWMoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChpbXBsKCktPmhhc09uZVJlZigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzRW1wdHkoKSB8fCAobV9pbXBsLT5oYXNP
bmVSZWYoKSAmJiAhbV9pbXBsLT5pc0F0b21pYygpKTsKIH0KIAogdm9pZCBTdHJpbmc6OnNwbGl0
KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KSBjb25zdApAQCAtODQ4LDEwICs4MjEsNyBAQCBDU3RyaW5nIFN0cmlu
Zzo6bGF0aW4xKCkgY29uc3QKIAogQ1N0cmluZyBTdHJpbmc6OnV0ZjgoQ29udmVyc2lvbk1vZGUg
bW9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIENTdHJpbmco
IiIsIDApOwotICAgIAotICAgIHJldHVybiBtX2ltcGwtPnV0ZjgobW9kZSk7CisgICAgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+dXRmOChtb2RlKSA6IENTdHJpbmcgeyAiIiwgMCB9OwogfQogCiBD
U3RyaW5nIFN0cmluZzo6dXRmOCgpIGNvbnN0CkBAIC04ODAsNyArODUwLDcgQEAgU3RyaW5nIFN0
cmluZzo6bWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3QgTENoYXIqIHNvdXJjZSwgc2l6ZV90
IGxlbmd0aCkKICAgICBVQ2hhciogZGVzdGluYXRpb247CiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0
cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRlc3RpbmF0aW9uKTsKICAgICAKLSAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRpb24sIHNvdXJjZSwgbGVuZ3RoKTsKKyAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgc291cmNlLCBsZW5ndGgp
OwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NDksOCArOTE5LDggQEAgc3RhdGlj
IGJvb2wgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNlKFVDaGFyIGMsIGludCBiYXNlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5h
bWUgQ2hhclR5cGU+Ci1zdGF0aWMgaW5saW5lIEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShj
b25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQor
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
c3RhdGljIGlubGluZSBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVy
VHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewogICAgIHN0
YXRpYyBjb25zdCBJbnRlZ3JhbFR5cGUgaW50ZWdyYWxNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRz
PEludGVncmFsVHlwZT46Om1heCgpOwogICAgIHN0YXRpYyBjb25zdCBib29sIGlzU2lnbmVkID0g
c3RkOjpudW1lcmljX2xpbWl0czxJbnRlZ3JhbFR5cGU+Ojppc19zaWduZWQ7CkBAIC05ODQsNyAr
OTU0LDcgQEAgc3RhdGljIGlubGluZSBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3Qg
Q2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGIKICAgICB3aGlsZSAobGVuZ3RoICYmIGlz
Q2hhcmFjdGVyQWxsb3dlZEluQmFzZSgqZGF0YSwgYmFzZSkpIHsKICAgICAgICAgLS1sZW5ndGg7
CiAgICAgICAgIEludGVncmFsVHlwZSBkaWdpdFZhbHVlOwotICAgICAgICBDaGFyVHlwZSBjID0g
KmRhdGE7CisgICAgICAgIGF1dG8gYyA9ICpkYXRhOwogICAgICAgICBpZiAoaXNBU0NJSURpZ2l0
KGMpKQogICAgICAgICAgICAgZGlnaXRWYWx1ZSA9IGMgLSAnMCc7CiAgICAgICAgIGVsc2UgaWYg
KGMgPj0gJ2EnKQpAQCAtMTAyNSw4ICs5OTUsOCBAQCBieWU6CiAgICAgcmV0dXJuIGlzT2sgPyB2
YWx1ZSA6IDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLXN0YXRpYyB1bnNp
Z25lZCBsZW5ndGhPZkNoYXJhY3RlcnNBc0ludGVnZXIoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIHVu
c2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIHNpemVfdCBpID0gMDsKIApAQCAtMTE1MSw4ICsx
MTIxLDggQEAgaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBib29sKiBvaykKIAogZW51bSBUcmFpbGluZ0p1bmtQb2xpY3kgeyBEaXNh
bGxvd1RyYWlsaW5nSnVuaywgQWxsb3dUcmFpbGluZ0p1bmsgfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgotc3RhdGljIGlubGluZSBk
b3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBi
b29sKiBvaywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCBUcmFpbGluZ0p1bmtQb2xpY3kgcG9saWN5Pgorc3RhdGljIGlubGluZSBkb3VibGUg
dG9Eb3VibGVUeXBlKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJv
b2wqIG9rLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKIHsKICAgICBzaXplX3QgbGVhZGluZ1NwYWNl
c0xlbmd0aCA9IDA7CiAgICAgd2hpbGUgKGxlYWRpbmdTcGFjZXNMZW5ndGggPCBsZW5ndGggJiYg
aXNBU0NJSVNwYWNlKGRhdGFbbGVhZGluZ1NwYWNlc0xlbmd0aF0pKQpAQCAtMTIxOSw3ICsxMTg5
LDggQEAgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
I2lmbmRlZiBOREVCVUcKLS8vIEZvciB1c2UgaW4gdGhlIGRlYnVnZ2VyCisKKy8vIEZvciB1c2Ug
aW4gdGhlIGRlYnVnZ2VyLgogU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciopOwogVmVjdG9yPGNo
YXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCogaW1wbCk7CiBWZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1
ZyhTdHJpbmcmIHN0cmluZyk7CkBAIC0xMjMxLDcgKzEyMDIsNyBAQCB2b2lkIFN0cmluZzo6c2hv
dygpIGNvbnN0CiAKIFN0cmluZyogc3RyaW5nKGNvbnN0IGNoYXIqIHMpCiB7Ci0gICAgLy8gbGVh
a3MgbWVtb3J5IQorICAgIC8vIEludGVudGlvbmFsbHkgbGVha3MgbWVtb3J5IQogICAgIHJldHVy
biBuZXcgU3RyaW5nKHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAzYTk3YjE2
Nzg3OTMwNTkwNmQ2NWI3MGY5YTFkNTE1ZmI2MjgxY2NhLi4yZjI5YWE1MWM4NzEwZmM1NWFiMjM0
YjIzYzE1YzBiNmVmMTFiZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgogCkBAIC04MCw3ICs3OSw3IEBAIGVudW0gVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xp
Y3kgeyBLZWVwVHJhaWxpbmdaZXJvcywgVHJ1bmNhdGVUcmFpbGluZ1plcm9zIH07CiBjbGFzcyBT
dHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5n
dWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nKCkgeyB9CisgICAgU3Ry
aW5nKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2
IGRhdGEuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTEyNSwyMiArMTI0LDE2IEBAIHB1YmxpYzoK
ICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFs
LgogICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgdGhlICJiaWciIHZlcnNpb24sIGFzIGl0IHB1
dCB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZSBiaWdnZXIgY29k
ZS4KICAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVy
YWwgfTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICBTdHJpbmco
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxp
dGVyYWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3Rl
ckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9Ci0KLSAgICAvLyBXZSBoYXZlIHRvIGRlY2xhcmUgdGhl
IGNvcHkgY29uc3RydWN0b3IgYW5kIGNvcHkgYXNzaWdubWVudCBvcGVyYXRvciBhcyB3ZWxsLCBv
dGhlcndpc2UKLSAgICAvLyB0aGV5J2xsIGJlIGltcGxpY2l0bHkgZGVsZXRlZCBieSBhZGRpbmcg
dGhlIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBT
dHJpbmcoY29uc3QgU3RyaW5nJiBvdGhlcikKLSAgICAgICAgOiBtX2ltcGwob3RoZXIubV9pbXBs
KQotICAgIHsgfQotICAgIFN0cmluZyhTdHJpbmcmJiBvdGhlcikKLSAgICAgICAgOiBtX2ltcGwo
V1RGTW92ZShvdGhlci5tX2ltcGwpKQotICAgIHsgfQotICAgIFN0cmluZyYgb3BlcmF0b3I9KGNv
bnN0IFN0cmluZyYgb3RoZXIpIHsgbV9pbXBsID0gb3RoZXIubV9pbXBsOyByZXR1cm4gKnRoaXM7
IH0KLSAgICBTdHJpbmcmIG9wZXJhdG9yPShTdHJpbmcmJiBvdGhlcikgeyBtX2ltcGwgPSBXVEZN
b3ZlKG90aGVyLm1faW1wbCk7IHJldHVybiAqdGhpczsgfQotCi0gICAgLy8gSW5saW5lIHRoZSBk
ZXN0cnVjdG9yLgotICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygpIHsgfQorICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpIDogbV9pbXBsKFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9
CisKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGhhdmUgdG8gZGVmaW5lIHRoZXNlIGV4cGxpY2l0
bHkgZ2l2ZW4gdGhhdCB3ZSBqdXN0IHdhbnQgdGhlIGRlZmF1bHQgdmVyc2lvbnM/CisgICAgLy8g
V2UgaGF2ZSB2ZXJpZmllZCBlbXBpcmljYWxseSB0aGF0IHdlIGRvLgorICAgIFN0cmluZyhjb25z
dCBTdHJpbmcmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nKFN0cmluZyYmKSA9IGRlZmF1bHQ7Cisg
ICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJikgPSBkZWZhdWx0OworICAgIFN0cmlu
ZyYgb3BlcmF0b3I9KFN0cmluZyYmKSA9IGRlZmF1bHQ7CisKKyAgICBBTFdBWVNfSU5MSU5FIH5T
dHJpbmcoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHN3YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5z
d2FwKG8ubV9pbXBsKTsgfQogCkBAIC0xNTAsNDYgKzE0MywyMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cmluZyBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYgdmVjdG9yKSB7IHJldHVybiBTdHJp
bmdJbXBsOjphZG9wdChXVEZNb3ZlKHZlY3RvcikpOyB9CiAKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzRW1wdHkoKTsgfQogCiAgICAgU3RyaW5n
SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQogICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiByZWxlYXNlSW1wbCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbXBsKTsgfQogCi0g
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmxlbmd0aCgpOwot
ICAgIH0KLQotICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQo
bV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4KCk7
Ci0gICAgfQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NF
UlQoIW1faW1wbC0+aXM4Qml0KCkpOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJz
MTYoKTsKLSAgICB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7IH0KKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgo
KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNoYXJhY3RlcnM4KCkgOiBudWxscHRy
OyB9CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+Y2hhcmFjdGVyczE2KCkgOiBudWxscHRyOyB9CiAKICAgICAvLyBSZXR1cm4g
Y2hhcmFjdGVyczgoKSBvciBjaGFyYWN0ZXJzMTYoKSBkZXBlbmRpbmcgb24gQ2hhcmFjdGVyVHlw
ZS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICBpbmxpbmUgY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMoKSBjb25z
dDsKIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsg
fQogCi0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KCFtX2ltcGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7Ci0g
ICAgfQorICAgIHVuc2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNo
YXIpKSA6IDA7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIGFzY2lpKCkg
Y29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7
CkBAIC0xOTcsMTYgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0gICAgVUNoYXIgYXQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwt
Pmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiAoKm1faW1w
bClbaW5kZXhdOwotICAgIH0KLSAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKyAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CisgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gY2hhcmFjdGVyQXQoaW5kZXgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgaW50KTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CkBAIC0yMTks
MTE5ICsxODIsNjQgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
U3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRXaWR0aChkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQ
bGFjZXMpOwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNv
IHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9ybXMuCi0gICAgc2l6ZV90IGZpbmQoVUNo
YXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7IH0KLQotICAgIHNpemVfdCBmaW5k
KGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmZpbmQoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
LmltcGwoKSkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAotICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgp
LCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQotCi0gICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHIsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgZmluZChVQ2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKworICAgIHNpemVfdCBm
aW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PmZpbmQoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5maW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwo
KSkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBzdGFydE9m
ZnNldCkgOiBub3RGb3VuZDsgfQorCisgICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsg
fQorICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDog
bm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3QgaW5zdGFuY2Ugb2YgYSBzaW5nbGUg
Y2hhcmFjdGVyIG9yIHN0cmluZy4KLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIgYywgdW5z
aWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5yZXZlcnNlRmluZChjLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIu
aW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBz
dHJpbmcgbWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIq
IHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAg
IHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFy
dCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9y
aW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZl
cnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBV
SU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNl
RmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAg
Ly8gV3JhcHBlcnMgZm9yIGZpbmQgJiByZXZlcnNlRmluZCBhZGRpbmcgZHluYW1pYyBzZW5zaXRp
dml0eSBjaGVjay4KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyLCB1bnNpZ25lZCBz
dGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBjYXNlU2Vu
c2l0aXZlID8gZmluZChzdHIsIHN0YXJ0KSA6IGZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7
IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJv
b2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/
IGZpbmQoc3RyLCBzdGFydCkgOiBmaW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9Ci0gICAg
c2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0
YXJ0KTsgfQorICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVk
IHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90
Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBsKCksIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVmVjdG9yPFVD
aGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogCi0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29u
c3Q7IC8vIERpdHRvLgotCi0gICAgYm9vbCBjb250YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVy
biBmaW5kKGMpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hhciog
c3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGZpbmQoc3RyLCBzdGFydE9mZnNldCwgY2FzZVNlbnNp
dGl2ZSkgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3Ry
KSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kKHN0cikgIT0gbm90Rm91bmQ7IH0KLSAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyLCBib29sIGNhc2VTZW5zaXRpdmUsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gZmluZChzdHIsIHN0
YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cikgIT0gbm90Rm91bmQ7IH0KLSAgICBib29s
IGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7IH0KLQotICAgIGJvb2wgc3RhcnRzV2l0aChj
b25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uocy5pbXBsKCkp
IDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBi
b29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+c3RhcnRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQot
ICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KLSAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29sIHN0YXJ0c1dpdGgoY29u
c3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVl
KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0
Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBi
b29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHByZWZpeCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1wbCgp
ID8gbV9pbXBsLT5oYXNJbmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0
KSA6IGZhbHNlOyB9Ci0KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QK
LSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLmltcGwoKSkgOiBz
LmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wg
ZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBsKCksIGNhc2VTZW5z
aXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVuZHNXaXRoKFVDaGFyIGNoYXJhY3Rl
cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChjaGFy
YWN0ZXIpIDogZmFsc2U7IH0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBjaGFy
YWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsKKworICAgIGJvb2wgY29udGFpbnMoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBmaW5kKGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7
IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJu
IGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQor
ICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykg
Y29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgIT0gbm90Rm91bmQ7
IH0KKyAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCkgIT0gbm90Rm91bmQ7IH0KKworICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5zdGFydHNXaXRoKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIHN0YXJ0c1dp
dGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5zdGFy
dHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4g
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgp
IDogIW1hdGNoTGVuZ3RoOyB9CisgICAgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwg
JiYgcHJlZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0luZml4U3RhcnRpbmdBdCgqcHJlZml4Lmlt
cGwoKSwgc3RhcnRPZmZzZXQpOyB9CisKKyAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYg
c3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHN0cmluZy5p
bXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlz
RW1wdHkoKTsgfQorICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgJiYgbV9pbXBsLT5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9CiAgICAgYm9vbCBl
bmRzV2l0aChjaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNoYXJhY3RlcikpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5n
dGg+Ci0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0s
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+ZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkg
OiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5n
JiBzdWZmaXgsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9p
bXBsICYmIHN1ZmZpeC5pbXBsKCkgPyBtX2ltcGwtPmhhc0luZml4RW5kaW5nQXQoKnN1ZmZpeC5p
bXBsKCksIGVuZE9mZnNldCkgOiBmYWxzZTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNo
TGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJl
Zml4KSA6ICFtYXRjaExlbmd0aDsgfQorICAgIGJvb2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBT
dHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwg
JiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBs
KCksIGVuZE9mZnNldCk7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQo
TENoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIgYykgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENo
YXI+KGMpKTsgfTsKKyAgICB2b2lkIGFwcGVuZChjaGFyIGNoYXJhY3RlcikgeyBhcHBlbmQoc3Rh
dGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcikpOyB9OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB2b2lkIGFwcGVuZChVQ2hhcik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBw
ZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBw
b3MpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNo
YXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVy
biAqdGhpczsgfQotICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEsIGIuaW1wbCgpKTsgcmV0
dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiByZXBsYWNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShhLmltcGwo
KSwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWdu
ZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgY29uc3QgU3RyaW5nJiBiKSB7IGlmIChtX2ltcGwpIG1f
aW1wbCA9IG1faW1wbC0+cmVwbGFjZShpbmRleCwgbGVuLCBiLmltcGwoKSk7IHJldHVybiAqdGhp
czsgfQorICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50
KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVyYWwo
VUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7
CiAKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICBBTFdBWVNfSU5M
SU5FIFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIGEsIGNvbnN0IGNoYXIgKCZjaGFy
YWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCi0gICAgewotICAgICAgICBpZiAobV9pbXBsKQotICAg
ICAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEsIGNoYXJhY3RlcnMsIGNoYXJhY3Rl
ckNvdW50IC0gMSk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgdHJ1bmNhdGUodW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCByZW1vdmUodW5z
aWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IDEpOwogCi0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCB0cnVuY2F0ZSh1
bnNpZ25lZCBsZW4pOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBwb3MsIGludCBsZW4gPSAxKTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJp
bmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwo
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQot
ICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhs
ZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcg
c3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zaXRpb24sIHVuc2ln
bmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7
CisgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJp
bmcoMCwgbGVuZ3RoKTsgfQorICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQog
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgY29udmVydFRvQVND
SUlVcHBlcmNhc2UoKSBjb25zdDsKQEAgLTM0Nyw3ICsyNTUsNiBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNl
RnVuY3Rpb25QdHIpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBy
ZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBzdHJpbmcgd2l0aCBjYXNl
IGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLgogICAgIC8vIFVzZSBjb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSBpbnN0ZWFkIGlmIEFTQ0lJIGNhc2UgaW5zZW5zaXRpdmUgY29t
cGFyaXNvbiBpcyBkZXNpcmVkLgpAQCAtMzU4LDM1ICsyNjUsMTggQEAgcHVibGljOgogCiAgICAg
Ly8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmluZy4gVGhlIGNoYXJhY3RlcnMgbmVlZHMg
dG8gYmUgd3JpdHRlbgogICAgIC8vIGludG8gdGhlIGJ1ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJl
Zm9yZSB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIHVzZWQuCi0gICAgLy8gRmFpbHVyZSB0byBkbyB0
aGlzIHdpbGwgaGF2ZSB1bnByZWRpY3RhYmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVy
biBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KICAgICBz
dGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciom
IGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBk
YXRhKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Ci0gICAgewotICAgICAgICBzcGxpdChzZXBhcmF0
b3IsIGZhbHNlLCByZXN1bHQpOwotICAgIH0KKyAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7IH0KIAogICAgIHVzaW5nIFNwbGl0RnVuY3RvciA9IFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmdWaWV3Jik+OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgY29u
c3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQg
c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAgfQotICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFy
IHNlcGFyYXRvcikgY29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsK
LSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0g
ICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQorICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0K
KyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0OworICAgIFZl
Y3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdDsKIAogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWdu
ZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7
CkBAIC00MzksMTEgKzMyOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVUNo
YXIqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBz
dGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwg
aW5saW5lQ2FwYWNpdHk+JiBidWZmZXIpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZThCaXRG
cm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQorICAg
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RhdGljIFN0cmluZyBtYWtlOEJpdEZy
b20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYpOwogCiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbWFrZTE2Qml0RnJvbThCaXRT
b3VyY2UoY29uc3QgTENoYXIqLCBzaXplX3QpOwogCkBAIC00NTEsMjggKzMzNywyMSBAQCBwdWJs
aWM6CiAgICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5j
ZXMuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29u
c3QgTENoYXIqLCBzaXplX3QpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3Ry
aW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKik7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChj
b25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07Ci0gICAgc3RhdGljIFN0cmluZyBm
cm9tVVRGOChjb25zdCBjaGFyKiBzKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4ocykpOyB9OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3Qg
Y2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVURjgocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOyB9OworICAgIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogc3RyaW5nKSB7IHJldHVybiBmcm9tVVRG
OChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyaW5nKSk7IH07CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgQ1N0cmluZyYpOwog
ICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVy
cyk7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVU
Ri04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2
YWxpZCBVVEYtOC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3Qg
bGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVu
Z3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH07CiAKICAgICAvLyBEZXRlcm1p
bmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRo
bSBydWxlcyBQMiBhbmQgUDMuCi0gICAgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJl
Y3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKLSAgICAgICAgaWYg
KGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQotICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBVX0xFRlRfVE9fUklHSFQ7Ci0gICAgfQor
ICAgIFVDaGFyRGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5ID0gbnVsbHB0cikgY29uc3Q7CiAKLSAgICBib29sIGNvbnRhaW5zT25s
eUFTQ0lJKCkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWluc09ubHlMYXRpbjEoKSBjb25zdDsKLSAg
ICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8
IG1faW1wbC0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOyB9CisgICAgYm9vbCBpc0FsbEFTQ0lJ
KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzQWxsQVNDSUkoKTsgfQorICAg
IGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXNB
bGxMYXRpbjEoKTsgfQorICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8
fCBtX2ltcGwtPmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyPigpOyB9
CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25z
dHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAgICBTdHJpbmcoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkgeyB9CkBAIC00ODQsNDAgKzM2MywxNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICAvLyBXb3JrYXJvdW5k
IGZvciBhIGNvbXBpbGVyIGJ1Zy4gVXNlIG9wZXJhdG9yW10gaW5zdGVhZC4KLSAgICBVQ2hhciBj
aGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9p
bXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07Ci0gICAgfQotCiAgICAgLy8gVHVybnMg
dGhpcyBTdHJpbmcgZW1wdHkgaWYgdGhlIFN0cmluZ0ltcGwgaXMgbm90IHJlZmVyZW5jZWQgYnkg
YW55b25lIGVsc2UuCiAgICAgLy8gVGhpcyBpcyB1c2VmdWwgZm9yIGNsZWFyaW5nIFN0cmluZy1i
YXNlZCBjYWNoZXMuCi0gICAgdm9pZCBjbGVhckltcGxJZk5vdFNoYXJlZCgpCi0gICAgewotICAg
ICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+aGFzT25lUmVmKCkpCi0gICAgICAgICAgICBtX2lt
cGwgPSBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwtPmFzc2VydENh
Z2VkKCk7Ci0gICAgfQorICAgIHZvaWQgY2xlYXJJbXBsSWZOb3RTaGFyZWQoKTsKIAotICAgIHZv
aWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwp
Ci0gICAgICAgICAgICBtX2ltcGwtPnJlbGVhc2VBc3NlcnRDYWdlZCgpOwotICAgIH0KKyAgICB2
b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LSAgICB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCwg
aW50KTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotICAgIHZvaWQg
YXBwZW5kSW50ZXJuYWwoQ2hhcmFjdGVyVHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5z
aWduZWQsIHVuc2lnbmVkKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIGFwcGVuZEludGVybmFsKENoYXJhY3RlclR5cGUpOwogCiAgICAgUmVmUHRyPFN0cmluZ0lt
cGw+IG1faW1wbDsKIH07CkBAIC01MzIsNyArMzg3LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKHJlaW50ZXJw
cmUKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9CiB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ry
aW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBi
ID09IGE7IH0KIAotCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29u
c3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJl
dHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CkBAIC01NTAsNyArNDA0LDcgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiwKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNv
bnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nTnVs
bGl0eShhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwg
aW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3Jp
bmdOdWxsaXR5KGEsIGIuaW1wbCgpKTsgfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3Qg
U3RyaW5nJiBzdHIpIHsgcmV0dXJuIHN0ci5pc051bGwoKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0
b3IhKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBzdHJpbmcuaXNOdWxsKCk7IH0KIAog
aW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikgeyBhLnN3YXAoYik7IH0KIApA
QCAtNTYxLDgxICs0MTUsMTc2IEBAIE5TU3RyaW5nICogbnNTdHJpbmdOaWxJZkVtcHR5KGNvbnN0
IFN0cmluZyYpOwogCiAjZW5kaWYKIAorV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCBjb2RlUG9p
bnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBjb2RlUG9pbnRD
b21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0
ZXJUeXBlPiYsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKTsKKworLy8gU2hhcmVkIGdsb2JhbCBlbXB0
eSBzdHJpbmcuCitXVEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmlu
ZygpOworCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7IHVzaW5nIEhhc2ggPSBTdHJpbmdIYXNoOyB9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc1Zl
Y3RvclRyYWl0cyB7IH07CisKK2NsYXNzIEFTQ0lJTGl0ZXJhbCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJz
KGNoYXJhY3RlcnMpIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFN0
cmluZz4geworICAgIHVzaW5nIFJldHVyblR5cGUgPSBTdHJpbmc7CisgICAgdXNpbmcgQWRkaXRp
b25hbEFyZ3VtZW50VHlwZSA9IHZvaWQ7CisgICAgc3RhdGljIFN0cmluZyBmbHVzaChMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKikgeyByZXR1cm4geyBjaGFyYWN0ZXJz
LCBsZW5ndGggfTsgfQorfTsKKwogLy8gRGVmaW5pdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMK
IAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0ltcGwmIGltcGwpCi0gICAgOiBtX2ltcGwo
JmltcGwpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIDog
bV9pbXBsKCZzdHJpbmcpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBs
KiBpbXBsKQotICAgIDogbV9pbXBsKGltcGwpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5n
SW1wbCogc3RyaW5nKQorICAgIDogbV9pbXBsKHN0cmluZykKIHsKIH0KIAotaW5saW5lIFN0cmlu
Zzo6U3RyaW5nKFJlZjxTdHJpbmdJbXBsPiYmIGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShp
bXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8U3RyaW5nSW1wbD4mJiBzdHJpbmcpCisg
ICAgOiBtX2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJp
bmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwp
KQoraW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAg
ICA6IG1faW1wbChXVEZNb3ZlKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmlu
ZyhSZWY8QXRvbWljU3RyaW5nSW1wbD4mJiBpbXBsKQotICAgIDogbV9pbXBsKFdURk1vdmUoaW1w
bCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmPEF0b21pY1N0cmluZ0ltcGw+JiYgc3RyaW5n
KQorICAgIDogbV9pbXBsKFdURk1vdmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6
U3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIGltcGwpCi0gICAgOiBtX2ltcGwoV1RG
TW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewogfQogCi1pbmxp
bmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYgaW1wbCkKLSAgICA6IG1faW1wbChy
ZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigmaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpTdHJp
bmcoU3RhdGljU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmco
U3RhdGljU3RyaW5nSW1wbCogaW1wbCkKLSAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0
cmluZ0ltcGwqPihpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBs
KiBzdHJpbmcpCisgICAgOiBtX2ltcGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oc3Ry
aW5nKSkKIHsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+Ci1TdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCi0gICAgOiBtX2ltcGwodmVjdG9y
LnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgp
KSA6IFJlZjxTdHJpbmdJbXBsPigqU3RyaW5nSW1wbDo6ZW1wdHkoKSkpCit0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gU3RyaW5nOjpTdHJp
bmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYg
dmVjdG9yKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXplKCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUo
dmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBSZWY8U3RyaW5nSW1wbD4geyAqU3RyaW5n
SW1wbDo6ZW1wdHkoKSB9KQogewogfQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgTENoYXIq
IFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgY29u
c3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdAogewotICAgIEFTU0VS
VChpczhCaXQoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnM4KCk7CiB9CiAKLXRlbXBsYXRlPD4K
LWlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0Cit0
ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpczhCaXQoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMx
NigpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0
CitpbmxpbmUgVUNoYXIgU3RyaW5nOjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gKCptX2ltcGwpW2luZGV4XTsKK30KKworaW5saW5lIFN0
cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpCiB7
Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1faW1w
bCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQp
OworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9p
bXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVu
dC5pbXBsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5n
OjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0
YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhpczsKK30K
KworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCit7CisgICAgaWYgKG1faW1wbCkK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2Vt
ZW50LmltcGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQogCi0gICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBB
TFdBWVNfSU5MSU5FIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFy
Z2V0LCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQoreworICAgIGlm
IChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIGNoYXJh
Y3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgcmV0dXJuICp0aGlzOworfQogCi0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzMTYoKTsKLSAgICBVQ2hhciBvcmVk
ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW1wbC0+bGVuZ3RoKCk7ICsraSkK
LSAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXJzW2ldOwotICAgIHJldHVybiAhKG9yZWQgJiAweEZG
MDApOworaW5saW5lIFZlY3RvcjxTdHJpbmc+IFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9y
KSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBzcGxpdChzZXBhcmF0
b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBWZWN0
b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdAor
eworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNl
LCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4gaW5saW5lIFN0cmluZyBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNl
KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBidWZmZXIpCit7CisgICAgcmV0
dXJuIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OworfQorCitpbmxpbmUgVUNoYXJEaXJlY3Rpb24gU3RyaW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkgY29uc3QKK3sKKyAgICBpZiAobV9p
bXBsKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQor
ICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKKyAgICByZXR1cm4gVV9M
RUZUX1RPX1JJR0hUOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmc6OmNsZWFySW1wbElmTm90U2hh
cmVkKCkKK3sKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+aGFzT25lUmVmKCkpCisgICAgICAg
IG1faW1wbCA9IG51bGxwdHI7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZzo6YXNzZXJ0Q2FnZWQo
KSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+YXNzZXJ0Q2FnZWQo
KTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nOjpyZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdAor
eworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+cmVsZWFzZUFzc2VydENhZ2VkKCk7
CiB9CiAKICNpZmRlZiBfX09CSkNfXwpAQCAtNjU2LDE5ICs2MDUsNiBAQCBpbmxpbmUgTlNTdHJp
bmcgKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICNlbmRpZgog
Ci1pbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QKLXsKLSAgICBp
ZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChpczhCaXQoKSkK
LSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzOCgpLCBtX2lt
cGwtPmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFj
dGVyczE2KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotfQotCi1XVEZfRVhQT1JUX1NUUklOR19BUEkg
aW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0KIGlu
bGluZSBib29sIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYikKIHsKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShhLmltcGwoKSwgYi5p
bXBsKCkpIDwgMDsKQEAgLTY5Nyw0OSArNjMzLDYgQEAgaW5saW5lIHZvaWQgYXBwZW5kTnVtYmVy
KFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYgdmVjdG9yLCB1bnNpZ25lZCBjaGFyIG51bWJlcikKICAg
ICB9CiB9CiAKLXRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNTcGVjaWFs
Q2hhcmFjdGVyKGNoYXJhY3RlcnNbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0
ZXIoVUNoYXIpPgotaW5saW5lIGJvb2wgU3RyaW5nOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkg
Y29uc3QKLXsKLSAgICBzaXplX3QgbGVuID0gbGVuZ3RoKCk7Ci0KLSAgICBpZiAoIWxlbikKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBX
VEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyLCBMQ2hhcj4oY2hh
cmFjdGVyczgoKSwgbGVuKTsKLSAgICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzU3BlY2lhbENoYXJhY3RlciwgVUNoYXI+KGNoYXJhY3RlcnMxNigpLCBsZW4pOwotfQotCi0v
LyBTdHJpbmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmluZwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8U3RyaW5nPiB7Ci0gICAgdHlwZWRlZiBTdHJpbmdIYXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0
cyB7IH07Ci0KLWNsYXNzIEFTQ0lJTGl0ZXJhbCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQVND
SUlMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3Rl
cnMpIHsgfQotICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJz
OyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwotfTsKLQotLy8g
U2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCi1XVEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3Qg
U3RyaW5nJiBlbXB0eVN0cmluZygpOwotCiBpbmxpbmUgU3RyaW5nIFN0cmluZzo6ZnJvbVVURjgo
Y29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykKIHsKICAgICBpZiAoY2hhcmFjdGVycy5p
c0VtcHR5KCkpCkBAIC03NjcsMzggKzY2MCwzMCBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgUwog
ICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBs
KCksIGxvd2VyY2FzZUxldHRlcnMpOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7Ci0gICAgdXNpbmcgUmV0dXJuVHlwZSA9IFN0
cmluZzsKLSAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRUeXBlID0gdm9pZDsKLSAgICBzdGF0
aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQq
KSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9Ci19OwotCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAotdXNpbmcgV1RGOjpDU3RyaW5nOwordXNpbmcgV1RGOjpBU0NJSUxpdGVyYWw7CiB1
c2luZyBXVEY6OktlZXBUcmFpbGluZ1plcm9zOwogdXNpbmcgV1RGOjpTdHJpbmc7Ci11c2luZyBX
VEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7Ci11c2luZyBXVEY6OmNo
YXJhY3RlcnNBcmVBbGxBU0NJSTsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0Owot
dXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50U3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9Eb3VibGU7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0Zsb2F0OwordXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9JbnQ2NDsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3Q7Ci11c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
SW50UHRyU3RyaWN0OwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ7Ci11c2luZyBXVEY6OmNo
YXJhY3RlcnNUb1VJbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RG
OjpjaGFyYWN0ZXJzVG9VSW50NjQ7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0cjsKLXVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9GbG9h
dDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0OwordXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9JbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKK3VzaW5n
IFdURjo6Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9V
SW50OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50U3RyaWN0OwordXNpbmcgV1RGOjplbXB0
eVN0cmluZzsKIHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6
OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM7CiB1c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1
c2luZyBXVEY6OnJldmVyc2VGaW5kOwotdXNpbmcgV1RGOjpBU0NJSUxpdGVyYWw7CiAKICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAppbmRleCAyNWEwZTFlODY0YjI5NzE0ODFlMzA5
YzQzNTRlNDMxMDYxYjQ1YzdlLi5iODEwOWQ3NjE5YTU0MmJlMmQyOTZjZWQwYzI2YmYzNTVmMGNh
ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhV
VGV4dCogdVRleHQsIGludDY0X3QgaW5kZXgsIFVCb29sIGZvcndhcmQpCiAgICAgfQogICAgIHVU
ZXh0LT5jaHVua0xlbmd0aCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2
ZUxpbWl0IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwogCi0gICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19j
YXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3Rh
cnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKyAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhjb25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNodW5rQ29u
dGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0
LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNodW5rTGVu
Z3RoKSk7CiAKICAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5jaHVua0xl
bmd0aDsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0
cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgbGltaXQsIFVDCiAgICAg
ICAgIGlmICh0cmltbWVkTGVuZ3RoID4gZGVzdENhcGFjaXR5KQogICAgICAgICAgICAgdHJpbW1l
ZExlbmd0aCA9IGRlc3RDYXBhY2l0eTsKIAotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMo
ZGVzdCwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyaW1tZWRMZW5ndGgpKTsKKyAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1VGV4dC0+
Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyaW1tZWRMZW5ndGgpKTsK
ICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgZGVzdENhcGFjaXR5KSB7CkBAIC0yOTAsNyArMjkw
LDcgQEAgc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGkKICAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxl
bmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8
aW50MzJfdD4obGVuZ3RoKSA6IDA7CiAgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRl
eHQtPmNodW5rTGVuZ3RoOwogICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0
ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxV
Q2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRl
eHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2Fz
dDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0
LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggYjQ5N2FkYzc3YWQ4OTM0YWFm
YTc1MzM1M2Y4ZGZiNDMxNDRkZmY0My4uYzkxNzFkYzJhM2I0NjQyODQwOTQyZTllOTUxNDZmNTc5
OTEwYTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTE3NCwxMSArMTc0LDYgQEAgc3Rh
dGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFs
dWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICByZXR1cm4gcXVlcnlEaWN0aW9uYXJ5OwogfQogICAg
IAotc3RhdGljIGJvb2wgaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KGNvbnN0IFN0cmluZyYgaW5w
dXQsIGNvbnN0IFN0cmluZyYgcHJlZml4KQotewotICAgIHJldHVybiBpbnB1dC5zdGFydHNXaXRo
KHByZWZpeCwgZmFsc2UpOwotfQotICAgIAogc3RhdGljIGJvb2wgaXNZb3VUdWJlVVJMKGNvbnN0
IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBob3N0TmFtZSA9IHVybC5ob3N0KCk7CkBAIC0yNjQs
NyArMjU5LDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBV
UkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGhhc0Nhc2VJbnNlbnNpdGl2
ZVByZWZpeChwYXRoLCAiL3YvIikgfHwgaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KHBhdGgsICIv
ZS8iKSkgeworICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwYXRoLCAiL3YvIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRo
LCAiL2UvIikpIHsKICAgICAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CiAgICAgICAgIFN0cmluZyB2aWRlb0lEOwogICAgICAgICBTdHJpbmcg
cGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDBlYTkwZjU4OWIy
YWJjYTIyYTI5YmJmOGEyNTViOGU5N2U5ZTgwMjEuLjdlYzI3ODYzODBkNmEwYTgzYjdjMzBlY2I0
NjAzMjkxYjVhMjhjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgY29u
c3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgaWYgKChoZWFkZXJOYW1lID09IEhUVFBIZWFk
ZXJOYW1lOjpTZWNXZWJTb2NrZXRFeHRlbnNpb25zCiAgICAgICAgICAgICB8fCBoZWFkZXJOYW1l
ID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRBY2NlcHQKICAgICAgICAgICAgIHx8IGhl
YWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldFByb3RvY29sKQotICAgICAg
ICAgICAgJiYgIXZhbHVlLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICAgICAgICAgICYmICF2
YWx1ZS5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1ha2VT
dHJpbmcobmFtZSwgIiBoZWFkZXIgdmFsdWUgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFy
YWN0ZXJzIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMjk5MmEw
OTIxZTUyMzY0MThjNzEyN2RkNjY1YjZkNzNhNTVhYjdiZi4uMWRmMWYwNTEyZjEyNjdkMGViMzBj
ZjJkY2JiMDdiZTJiMWM3MmY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAiSFRNTExhYmVs
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAj
aW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgpAQCAtMTYxNSwxNCArMTYxNiwxNCBAQCBDaGFyYWN0
ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJh
bmdlPnJhbmdlLCBpbnQgbwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWdub3Jl
IHNwYWNlLCBuZXcgbGluZSwgdGFnIG5vZGUuCiAgICAgICAgICAgICBpZiAoY3VycmVudExlbmd0
aCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoaXRlcmF0b3Iu
dGV4dCgpWzBdKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0hUTUxTcGFjZShpdGVyYXRvci50
ZXh0KClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGhhcyBCUiB0
YWcsIHdlIHdhbnQgdG8gc2V0IHRoZSBjdXJyZW50Tm9kZSB0byBpdC4KICAgICAgICAgICAgICAg
ICAgICAgaW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVyc2VUb0NoaWxk
QXQoc3ViT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGls
ZE5vZGUtPnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY2hpbGROb2RlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoRWxlbWVudCAqc2hhZG93SG9zdCA9IGN1cnJlbnROb2RlLT5zaGFk
b3dIb3N0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBzaGFkb3dI
b3N0ID0gY3VycmVudE5vZGUtPnNoYWRvd0hvc3QoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU2luY2Ugd2UgYXJlIGVudGVyaW5nIHRleHQgY29udHJvbHMsIHdlIHNob3VsZCBzZXQg
dGhlIGN1cnJlbnROb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBiZSB0aGUgc2hh
ZG93IGhvc3Qgd2hlbiB0aGVyZSdzIG5vIGNvbnRlbnQuCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZUlzVGV4dENvbnRyb2woc2hhZG93SG9zdCkgJiYgY3VycmVudE5vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3QuY3BwCmluZGV4IDZlMzAxYjBjMjVjMzljM2EzNGI3OWYxOGUzNzhiNTUzNmQ2
MjIxMWMuLmQ1ZGI5ZTI0NWQwZGQ0MDUwYzRhZjhlOWM2NmJhNmM4OTRjOTE5OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCkBA
IC0xMTgsNyArMTE4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9W
aXNpYmxlTGlzdEl0ZW1NYXJrZXJzKFJlbmRlck9iamVjdCogbGlzdEkKICAgICAvLyB0aG9zZSBy
ZW5kZXJlcnMgYXMgImlnbm9yZWQiIG9iamVjdHMuCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0
cmluZyB0ZXh0ID0gYXhPYmotPnRleHRVbmRlckVsZW1lbnQoKTsKLSAgICByZXR1cm4gIXRleHQu
aXNFbXB0eSgpICYmICF0ZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4g
IXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3Bh
Y2U+KCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApp
bmRleCA1N2QwZWFjNzM1MzYwZDc1YzIxM2U4YmU1NWUxZTU5MGFkOTljZGNmLi5lOTRhYTk0NmRj
ZjczNTQ3MjgwZjkzYzQ5MTI3ZTEyZWQ3NTUxMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNDgx
LDEyICs0ODEsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTZWFyY2hGaWVs
ZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayB0aGUgbm9kZSBuYW1lIG9mIHRoZSBpbnB1dCB0eXBl
LCBzb21ldGltZXMgaXQncyAic2VhcmNoIi4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVB
dHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgIGlmIChuYW1lQXR0cmlidXRl
LmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpCisgICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gQ2hlY2sgdGhlIGZvcm0gYWN0aW9uIGFuZCB0aGUgbmFtZSwgd2hpY2ggd2lsbCBzb21l
dGltZXMgYmUgInNlYXJjaCIuCiAgICAgYXV0byogZm9ybSA9IGlucHV0RWxlbWVudC5mb3JtKCk7
Ci0gICAgaWYgKGZvcm0gJiYgKGZvcm0tPm5hbWUoKS5jb250YWlucygic2VhcmNoIiwgZmFsc2Up
IHx8IGZvcm0tPmFjdGlvbigpLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpKQorICAgIGlmIChm
b3JtICYmIChmb3JtLT5uYW1lKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikg
fHwgZm9ybS0+YWN0aW9uKCkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDI5
MTkxNDIwNzc3N2M1OWU0ODkyZTA0NTE2NTY0YjMxZjU2NjQ5MDIuLmJkNGViODE5OTkyZTExODhj
MjYwZjg0ZTJmMzBiODg2MTJkN2I1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjg5LDkgKzI4OSw5IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChT
dHJpbmcqIHRleHQpIGNvbnN0CiAgICAgLy8gSWYgdGV4dCBpcyBudWxsIG9yIGVtcHR5IHdlIHJl
dHVybiB0cnVlLgogICAgIHJldHVybiAhdGV4dAogICAgICAgICB8fCB0ZXh0LT5pc0VtcHR5KCkK
LSAgICAgICAgfHwgdGl0bGUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpCi0gICAgICAgIHx8IGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSkKLSAgICAgICAg
fHwgc3RyaW5nVmFsdWUoKS5jb250YWlucygqdGV4dCwgZmFsc2UpOworICAgICAgICB8fCBmaW5k
UGxhaW5UZXh0KHRpdGxlKCksICp0ZXh0LCBDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIHx8IGZp
bmRQbGFpblRleHQoYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCksICp0ZXh0LCBDYXNlSW5zZW5z
aXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQoc3RyaW5nVmFsdWUoKSwgKnRleHQsIENh
c2VJbnNlbnNpdGl2ZSk7CiB9CiAKIC8vIEFSSUEgbWFya3MgZWxlbWVudHMgYXMgaGF2aW5nIHRo
ZWlyIGFjY2Vzc2libGUgbmFtZSBkZXJpdmUgZnJvbSBlaXRoZXIgdGhlaXIgY29udGVudHMsIG9y
IHRoZWlyIGF1dGhvciBwcm92aWRlIG5hbWUuCkBAIC04MzgsOCArODM4LDcgQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0
ZXJpYSogY3JpdGVyaWEKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKGNsb3Nlc3RTdHJpbmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSkpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU6Ci0gICAgICAgICAgICAg
ICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjbG9zZXN0U3RyaW5nOwotICAgICAgICAgICAgICAgIG1h
a2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDApOworICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50U3RyaW5nID0gY2FwaXRhbGl6ZShjbG9zZXN0U3RyaW5nLCAnICcpOyAvLyBGSVhN
RTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5Lgog
ICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5
OjpGaW5kQW5kVXBwZXJjYXNlOgpAQCAtODU2LDcgKzg1NSw3IEBAIFN0cmluZyBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzZWxlY3RUZXh0KEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEqIGNy
aXRlcmlhCiAgICAgICAgICAgICAgICAgLy8gKHVubGVzcyB3ZSdyZSByZXBsYWNpbmcgd2l0aCBh
biBhYmJyZXZpYXRpb24uKQogICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0U3RyaW5nLmxlbmd0
aCgpID4gMCAmJiByZXBsYWNlbWVudFN0cmluZy5sZW5ndGgoKSA+IDIgJiYgcmVwbGFjZW1lbnRT
dHJpbmcgIT0gcmVwbGFjZW1lbnRTdHJpbmcuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2Fs
ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0U3RyaW5nWzBdID09IHVfdG91
cHBlcihjbG9zZXN0U3RyaW5nWzBdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VDYXBp
dGFsaXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDApOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFsaXplKHJlcGxhY2VtZW50U3RyaW5nLCAnICcpOyAv
LyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVj
dGx5LgogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50U3RyaW5nLmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4K
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxMTNmZmY1YzIzYTUx
NWYyYzk2Nzc5NGE4N2ZiZTFmMjIzM2IzOWZjLi42ZGI5Zjc3MTE1NmNjZTkxYzI5NTBhYzJjOTg3
YWEyODRhMGI0NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTExMjEsNyArMTEyMSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBj
b25zdAogc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gb2JqZWN0SW5jbHVzaW9u
RnJvbUFsdFRleHQoY29uc3QgU3RyaW5nJiBhbHRUZXh0KQogewogICAgIC8vIERvbid0IGlnbm9y
ZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgotICAgIGlmICghYWx0VGV4dC5jb250YWlu
c09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKCFhbHRUZXh0LmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogICAgIAogICAgIC8vIFRoZSBpbmZvcm1hbCBzdGFuZGFy
ZCBpcyB0byBpZ25vcmUgaW1hZ2VzIHdpdGggemVyby1sZW5ndGggYWx0IHN0cmluZ3MuCkBAIC0x
MjUxLDcgKzEyNTEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAgICAgfQogCiAgICAgICAgIC8vIHRl
eHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBlbXB0eSB3aGl0ZXNwYWNlIHNob3VsZCBub3QgYmUg
cmV0dXJuZWQKLSAgICAgICAgcmV0dXJuIHJlbmRlclRleHQudGV4dCgpLT5jb250YWluc09ubHlX
aGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZW5kZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIH0KICAgICAKICAgICBpZiAoaXNIZWFk
aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0QXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCmluZGV4IDE3NTY2YjE3YzFlOTJjOThlNmRiMmRj
OTMzOGRjZDNlMzQ0N2U2NDIuLjU5MzNhMTlhN2I4ZmFkYTJmYWI4MTZjN2ZmOTZkMTYwMDM0NTdk
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2li
aWxpdHlPYmplY3RBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdW5zaWduZWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCkgY29uc3QKICAgICBO
b2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlID8gbm9kZS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+
KHJlbmRlcmVyKSkKLSAgICAgICAgdGV4dExlbmd0aCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpy
ZW5kZXJlcikudGV4dExlbmd0aCgpOworICAgICAgICB0ZXh0TGVuZ3RoID0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKnJlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCk7CiAKICAgICAvLyBHZXQgdGhlIHRl
eHQgbGVuZ3RoIGZyb20gdGhlIGVsZW1lbnRzIHVuZGVyIHRoZQogICAgIC8vIGFjY2Vzc2liaWxp
dHkgb2JqZWN0IGlmIHRoZSB2YWx1ZSBpcyBzdGlsbCB6ZXJvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAppbmRleCA2OWRkNGJmODIw
NGExOTk1N2Y4YzhhNzFjYTA5NmUwZDZjMTBjZjMwLi5iNTQzOGY3ZTFlMGE1NWFhOWYwNGUyMDc2
MjFkNzQxYjM0NmJmYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRTdHJpbmdzLmNwcApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBzdHJpbmdUb0J5dGVTdHJpbmcoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgU3RyaW5nJiYgc3RyaW5nKQogewotICAg
IGlmICghc3RyaW5nLmNvbnRhaW5zT25seUxhdGluMSgpKSB7CisgICAgaWYgKCFzdHJpbmcuaXNB
bGxMYXRpbjEoKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDM3YzJj
YThmOTk1NjFkZTNlODAwOGQ0NzYwZDEwMTNkNjlmZmYzMTUuLjE2NjE0YzVjYmY0NjA1MWZlNzQw
ZWUyNWZkYzFmM2M4MzFhZDI0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC01MSw5ICs1
MSw4IEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAgICAgCiBzdGF0aWMgYm9vbCBj
b250YWluc09ubHlBU0NJSVdpdGhOb1VwcGVyY2FzZShjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tYWluLmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgVUNoYXIgYyA9IGRvbWFpbi5hdChpKTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJKGMpIHx8
IGlzQVNDSUlVcHBlcihjKSkKKyAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogU3RyaW5nVmlldyB7
IGRvbWFpbiB9LmNvZGVVbml0cygpKSB7CisgICAgICAgIGlmICghaXNBU0NJSShjaGFyYWN0ZXIp
IHx8IGlzQVNDSUlVcHBlcihjaGFyYWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDMw
NzIxMDFmM2ZhMDFjZDFjZjgyYmU3Yzg5YWFmMjEyODE2ZTUyMTYuLmMwZGIxYjEyZGE3M2FjMGM1
Mjc5NzNkMDFiNTkzYWUwNjc4Zjk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAt
ODAsNyArODAsNyBAQCBzdGQ6OnBhaXI8VmVjdG9yPEFjdGlvbj4sIFZlY3RvcjxTdHJpbmc+PiBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSByZXNvdXJjZUxvYWRJbmZvLnJlc291
cmNlVVJMLnN0cmluZygpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmNvbnRh
aW5zT25seUFTQ0lJKCksICJBIGRlY29kZWQgVVJMIHNob3VsZCBvbmx5IGNvbnRhaW4gQVNDSUkg
Y2hhcmFjdGVycy4gVGhlIG1hdGNoaW5nIGFsZ29yaXRobSBhc3N1bWVzIHRoZSBpbnB1dCBpcyBB
U0NJSS4iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHVybFN0cmluZy5pc0FsbEFTQ0lJKCks
ICJBIGRlY29kZWQgVVJMIHNob3VsZCBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVycy4gVGhl
IG1hdGNoaW5nIGFsZ29yaXRobSBhc3N1bWVzIHRoZSBpbnB1dCBpcyBBU0NJSS4iKTsKICAgICBj
b25zdCBDU3RyaW5nJiB1cmxDU3RyaW5nID0gdXJsU3RyaW5nLnV0ZjgoKTsKIAogICAgIFZlY3Rv
cjxBY3Rpb24+IGZpbmFsQWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCmluZGV4IDIyZGZjMTNhODQ2ZjQ2YTgyYmZm
NmMwNDc4NzQ5NDVlZWYzZGU5NzcuLmUzNTFlMTdkOWVhNzY0YjQ2OGRkZmY2NTNhOGVkMDZjNTEy
NWVhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJM
RmlsdGVyUGFyc2VyLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6flVS
TEZpbHRlclBhcnNlcigpID0gZGVmYXVsdDsKIAogVVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1
cyBVUkxGaWx0ZXJQYXJzZXI6OmFkZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29s
IHBhdHRlcm5Jc0Nhc2VTZW5zaXRpdmUsIHVpbnQ2NF90IHBhdHRlcm5JZCkKIHsKLSAgICBpZiAo
IXBhdHRlcm4uY29udGFpbnNPbmx5QVNDSUkoKSkKKyAgICBpZiAoIXBhdHRlcm4uaXNBbGxBU0NJ
SSgpKQogICAgICAgICByZXR1cm4gTm9uQVNDSUk7CiAgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gRW1wdHlQYXR0ZXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDYzNTcyYzUxNWJlYTY2NWY1NjI3NDEyNWJmZjgzY2Jh
ODI0YzE2MWQuLjhhY2Q5YWYxYjAxZjAwYmEwYTAyM2U3YzM0MzkwNDQwN2QxODE0YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBvcnRlZEZvcm1hdCgpIGNvbnN0CiAg
ICAgLy8gd2Ugd2lsbCBhbHNvIGNoZWNrIHRvIHNlZSBpZiB0aGUgVVJMIGVuZHMgd2l0aCAuZW90
LiBJZiBzbywgd2UnbGwgYXNzdW1lIHRoYXQgd2Ugc2hvdWxkbid0IGxvYWQgaXQuCiAgICAgaWYg
KG1fZm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBDaGVjayBmb3IgLmVvdC4KLSAgICAg
ICAgaWYgKCFtX3Jlc291cmNlLnN0YXJ0c1dpdGgoImRhdGE6IiwgZmFsc2UpICYmIG1fcmVzb3Vy
Y2UuZW5kc1dpdGgoIi5lb3QiLCBmYWxzZSkpCisgICAgICAgIGlmICghcHJvdG9jb2xJcyhtX3Jl
c291cmNlLCAiZGF0YSIpICYmIG1fcmVzb3VyY2UuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
LmVvdCIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCmluZGV4IGM2YWE3ODZl
ZDgyMDIzMzFjODkwMGMxZmNkZDZjNzZhNTIwMDZhODkuLjkxMzUyMzc3Njk2NTk0MmYyZjUwODYy
M2Y2NTY3MGE4YTBhYWUwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyB2
YWx1ZVdpdGhvdXRJbXBvcnRhbnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIXZh
bHVlLmVuZHNXaXRoKCJpbXBvcnRhbnQiLCBmYWxzZSkpCisgICAgaWYgKCF2YWx1ZS5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCJpbXBvcnRhbnQiKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwog
CiAgICAgU3RyaW5nIG5ld1ZhbHVlID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGMxNjc4NzliZDkxNDBjMDE0YmY2ZWJm
MzhhZjEyOTdkYmViYjEyMDEuLjk5Y2VlZDQ4NDI3OTA3OTNlNjRmYTJhYzQzNTM0M2JmMTZmNGRi
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCkBAIC0zMjU0LDcgKzMyNTQsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gcGFyc2VHcmlk
VGVtcGxhdGVBcmVhc0NvbHVtbk5hbWVzKGNvbnN0IFN0cmluZyYgZ3JpZFJvd05hbQogCiBzdGF0
aWMgYm9vbCBwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KGNvbnN0IFN0cmluZyYgZ3JpZFJvd05h
bWVzLCBOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgY29uc3Qgc2l6ZV90IHJvd0NvdW50
LCBzaXplX3QmIGNvbHVtbkNvdW50KQogewotICAgIGlmIChncmlkUm93TmFtZXMuaXNFbXB0eSgp
IHx8IGdyaWRSb3dOYW1lcy5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKGdyaWRS
b3dOYW1lcy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQ1NTU3BhY2U+KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzID0gcGFyc2VHcmlk
VGVtcGxhdGVBcmVhc0NvbHVtbk5hbWVzKGdyaWRSb3dOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAKaW5kZXggZTZlZTJhYzI0ZjFkNTM5MTBmMWIyODU2ZThhOGUwNTg5YTdl
NGM4ZS4uYzNmNGIwOWZmMjFkYWY0MTA1YzBiNzc2MWE0ZmI3MjY5OTIyYzdjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMTc0LDExICsxNzQsNiBAQCBTdHJpbmcgQ2hh
cmFjdGVyRGF0YTo6bm9kZVZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQogCi1i
b29sIENoYXJhY3RlckRhdGE6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdAotewotICAg
IHJldHVybiBtX2RhdGEuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwotfQotCiBFeGNlcHRpb25P
cjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiBub2RlVmFs
dWUpCiB7CiAgICAgc2V0RGF0YShub2RlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKaW5kZXggZTRhZDIyMWVkMGZmZTFhM2ZlMmQyYzUzNDJhMTQ2ZjRjM2Q2YjRhMi4uMWJiMWJi
ZWRkYjE1ZWZhMzNhZDRkY2RmYzBiNzBiNzc1OWVkOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksOCArMzksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNl
RGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcmKTsKIAot
ICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0OwotCiAgICAgLy8gTGlrZSBh
cHBlbmREYXRhLCBidXQgb3B0aW1pemVkIGZvciB0aGUgcGFyc2VyIChlLmcuLCBubyBtdXRhdGlv
biBldmVudHMpLgogICAgIC8vIFJldHVybnMgaG93IG11Y2ggY291bGQgYmUgYWRkZWQgYmVmb3Jl
IGxlbmd0aCBsaW1pdCB3YXMgbWV0LgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERhdGEoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoTGltaXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBlZmExZTlhNzc4MmU1ZjFkMWYx
MmRmYTdmZGI2ZTY5NzUyNzk5YjRmLi42ZjMzMzI2NDFkMzg2MjdjZTdkN2VkYmU0ZjVhY2M0MTM3
NzdjNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMTE4LDExICsxMTgs
MTEgQEAgc3RhdGljIFN0cmluZyBub3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAg
ICAgICAgcmV0dXJuIHR5cGU7CiAKICAgICBTdHJpbmcgbG93ZXJjYXNlVHlwZSA9IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh0eXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwotICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgidGV4dC9wbGFpbjsiKSkKKyAgICBpZiAobG93ZXJjYXNl
VHlwZSA9PSAidGV4dCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIp
KQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iOwotICAgIGlmIChsb3dlcmNhc2VUeXBlID09
ICJ1cmwiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJ0ZXh0
L3VyaS1saXN0OyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ1cmwiIHx8IGxvd2VyY2Fz
ZVR5cGUuc3RhcnRzV2l0aCgidGV4dC91cmktbGlzdDsiKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0
L3VyaS1saXN0IjsKLSAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoInRleHQvaHRtbDsiKSkKKyAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0
ZXh0L2h0bWw7IikpCiAgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIHJldHVybiBs
b3dlcmNhc2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMGM2YmMyNWY0ZmE0ZmYx
NGMyODUyY2M1ZmNkNmNkZThkNzhiZWZmOC4uODlhNTA2ZmY1MDE3YTM2ZmU4YWU2OTgxMWI1MTVk
NGU0YzViYmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKQEAgLTExNDEsMTEgKzExNDIsMTEgQEAg
UG9zaXRpb24gUG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmluaXR5IGFm
ZmluaXR5LCBib29sIGNvbnNpZGVyTm8KIAogICAgIFBvc2l0aW9uIHByZXYgPSBwcmV2aW91c0No
YXJhY3RlclBvc2l0aW9uKGFmZmluaXR5KTsKICAgICBpZiAocHJldiAhPSAqdGhpcyAmJiBpblNh
bWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGRlcHJlY2F0ZWROb2RlKCksIHByZXYuZGVwcmVj
YXRlZE5vZGUoKSkgJiYgaXM8VGV4dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkpIHsKLSAgICAg
ICAgU3RyaW5nIHN0cmluZyA9IGRvd25jYXN0PFRleHQ+KCpwcmV2LmRlcHJlY2F0ZWROb2RlKCkp
LmRhdGEoKTsKLSAgICAgICAgVUNoYXIgYyA9IHN0cmluZ1twcmV2LmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCldOwotICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2Ug
PyAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgOiBkZXByZWNhdGVk
SXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoYykpCisgICAgICAgIFVDaGFyIGMgPSBkb3duY2FzdDxU
ZXh0PigqcHJldi5kZXByZWNhdGVkTm9kZSgpKS5kYXRhKClbcHJldi5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpXTsKKyAgICAgICAgaWYgKGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNl
ID8gKGlzSFRNTFNwYWNlKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0Nv
bGxhcHNpYmxlV2hpdGVzcGFjZShjKSkgewogICAgICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3Np
dGlvbihwcmV2KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiB7IH07CkBAIC0xMTYyLDcgKzExNjMsNyBAQCBQb3NpdGlvbiBQb3Np
dGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmluaXR5LCBib29sIGNvbnNpZGVy
Tm9uQ29sbGFwcwogICAgIFVDaGFyIGMgPSB2LmNoYXJhY3RlckFmdGVyKCk7CiAgICAgLy8gVGhl
IHNwYWNlIG11c3Qgbm90IGJlIGluIGFub3RoZXIgcGFyYWdyYXBoIGFuZCBpdCBtdXN0IGJlIGVk
aXRhYmxlLgogICAgIGlmICghaXNFbmRPZlBhcmFncmFwaCh2KSAmJiB2Lm5leHQoQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnkpLmlzTm90TnVsbCgpKQotICAgICAgICBpZiAoY29uc2lkZXJOb25D
b2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJl
YWtTcGFjZSkgOiBkZXByZWNhdGVkSXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoYykpCisgICAgICAg
IGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc0hUTUxTcGFjZShjKSB8
fCBjID09IG5vQnJlYWtTcGFjZSkgOiBkZXByZWNhdGVkSXNDb2xsYXBzaWJsZVdoaXRlc3BhY2Uo
YykpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgCiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBiYTA2Zjc5Y2IwZDNlNDE4MjQ5MGMwODY3Mzg4
MmU1Y2UyNWVhNDI5Li44YTk5N2U0ZDljNjFmNDQ0ZTY5ZDQxYmJmZTlkNzMzZDE1NDAzZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zNTU5LDcgKzM1NTksNyBAQCB2b2lkIEVk
aXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKCkKICAgICAgICAgICAgIFVDaGFyMzIgYyA9
IG5ld1N0YXJ0LmNoYXJhY3RlckJlZm9yZSgpOwogICAgICAgICAgICAgLy8gRklYTUU6IFZpc2li
bGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoKSBhbmQgY2hhcmFjdGVyQmVmb3JlKCkgZG8gbm90
IGVtaXQgbmV3bGluZXMgdGhlIHNhbWUKICAgICAgICAgICAgIC8vIHdheSBhcyBUZXh0SXRlcmF0
b3IsIHNvIHdlIGRvIGFuIGlzU3RhcnRPZlBhcmFncmFwaCBjaGVjayBoZXJlLgotICAgICAgICAg
ICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwIHx8IGlzU3RhcnRPZlBhcmFn
cmFwaChuZXdTdGFydCkpIHsKKyAgICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gbm9CcmVha1NwYWNlIHx8IGlzU3RhcnRPZlBhcmFncmFwaChuZXdTdGFydCkpIHsKICAg
ICAgICAgICAgICAgICBzdGFydFdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbmV3QWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rp
b24oc3RhcnRPZldvcmQobmV3U3RhcnQsIHN0YXJ0V29yZFNpZGUpLCBlbmRPZldvcmQobmV3U3Rh
cnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcAppbmRleCBiMjA3M2FjNGM1Nzk3MzExNmUyZDA2MGY4MjhiMTlhYTUxYWY2
ZDBlLi5mMzZlMDVlYWRlNzI0YmJmYzdkYTk2MDFlMmVmMDliZWRhMzNkMGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTc2Myw3ICsxNzYzLDcgQEAg
dm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBib29sIHNlbGVjdGVkKSBjb25zdAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcbiIs
IHNlbGVjdGVkID8gIj09PiAiIDogIiAgICAiLCBlbGVtZW50LmxvY2FsTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVy
KSkgewogICAgICAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqcmVuZGVyZXIpOwotICAgICAgICBpZiAoIXRleHRSZW5kZXJlci50ZXh0TGVuZ3RoKCkg
fHwgIXRleHRSZW5kZXJlci5maXJzdFRleHRCb3goKSkgeworICAgICAgICBpZiAodGV4dFJlbmRl
cmVyLnRleHQoKS5pc0VtcHR5KCkgfHwgIXRleHRSZW5kZXJlci5maXJzdFRleHRCb3goKSkgewog
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVk
ID8gIj09PiAiIDogIiAgICAiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjY0MSw3ICsyNjQxLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXRXb3JkU3Rh
cnQoKSBjb25zdAogICAgICAgICB9CiAgICAgICAgIFVDaGFyIGMocG9zLmNoYXJhY3RlckFmdGVy
KCkpOwogICAgICAgICBpZiAoYykgewotICAgICAgICAgICAgcmVzdWx0ID0gaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IDB4QTAgfHwgKHVfaXNwdW5jdChjKSAmJiBjICE9ICcsJyAmJiBjICE9
ICctJyAmJiBjICE9ICdcJycpOworICAgICAgICAgICAgcmVzdWx0ID0gaXNTcGFjZU9yTmV3bGlu
ZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYm
IGMgIT0gJy0nICYmIGMgIT0gJ1wnJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI2ODYsNyArMjY4Niw3IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rp
b246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzCiAKICAg
ICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSkgewog
ICAgICAgICBVQ2hhciBjKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24uY2hhcmFjdGVyQmVm
b3JlKCkpOwotICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTApIHsK
KyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsK
ICAgICAgICAgICAgIC8vIEVuZCBvZiBwYXJhZ3JhcGggd2l0aCBzcGFjZS4KICAgICAgICAgICAg
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KQEAgLTI3MjksNyArMjcyOSw3
IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNl
bGVjdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVy
QWZ0ZXIoKSk7Ci0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkg
eworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkg
ewogICAgICAgICAgICAgLy8gU3BhY2UgYXQgZW5kIG9mIGxpbmUKICAgICAgICAgICAgIHJldHVy
biBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KQEAgLTI3NDQsNyArMjc0NCw3IEBAIFZp
c2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2Fy
ZXRTZWxlY3Rpb24oY29uc3QgVmlzCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigpOwogICAgICAgICB9CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIo
KSk7Ci0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAg
ICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAg
ICAgICAgICAgLy8gU3BhY2UgYXQgZW5kIG9mIGxpbmUKICAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KQEAgLTI3NjQsNyArMjc2NCw3IEBAIFZpc2libGVT
ZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxl
Y3Rpb24oY29uc3QgVmlzCiAgICAgd2hpbGUgKGVuZFZpc2libGVQb3MgIT0gc3RhcnRWaXNpYmxl
UG9zKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyhlbmRWaXNpYmxlUG9zLnBy
ZXZpb3VzKCkpOwogICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCkpOwot
ICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSAweEEwKQorICAgICAgICBp
ZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZW5kVmlzaWJsZVBvcyA9IHByZXZpb3VzOwogICAgIH0KQEAgLTI4
MDIsNyArMjgwMiw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmFjdHVhbFNlbGVjdGlvbkF0U2Vu
dGVuY2VTdGFydChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWwpCiAgICAgICAgIH0KICAgICAg
ICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7CiAgICAgICAgIGlmIChjKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAg
ICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAg
ICAgICAgICAgICAgc2F3U3BhY2UgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNWM5ZjM2
MDU3NzcxZjRlNjJkZmJmMGFhZTcxMTBhYjhmOTJiMGY2Yy4uM2FmMWFjZmIzMWFmNTE3NWVkYzVh
MjI5MzczZTcyOGFiNWRlYjk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxl
eGV5IFByb3NrdXJ5YWtvdi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU3OSw3ICs1NzksNyBAQCBz
dGF0aWMgdW5zaWduZWQgdGV4dE5vZGVPZmZzZXRJbkZsb3coY29uc3QgVGV4dCYgZmlyc3RUZXh0
Tm9kZUluUmFuZ2UpCiAgICAgdW5zaWduZWQgdGV4dE9mZnNldCA9IDA7CiAgICAgZm9yIChyZW5k
ZXJlciA9IHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmcoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0g
cmVuZGVyZXItPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0
PihyZW5kZXJlcikpCi0gICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlclRl
eHQ+KHJlbmRlcmVyKS0+dGV4dExlbmd0aCgpOworICAgICAgICAgICAgdGV4dE9mZnNldCArPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlciktPnRleHQoKS5sZW5ndGgoKTsKICAgICB9CiAg
ICAgcmV0dXJuIHRleHRPZmZzZXQ7CiB9CkBAIC02NDAsNyArNjQwLDcgQEAgYm9vbCBUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgYm9vbCBpc05ld1RleHROb2RlID0gbV9w
cmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICYmIG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUlu
RmxvdyAhPSAmdGV4dE5vZGU7CiAgICAgICAgIC8vIFNpbXBsZSBsaW5lIGxheW91dCBydW4gcG9z
aXRpb25zIGFyZSBhbGwgYWJzb2x1dGUgdG8gdGhlIHBhcmVudCBmbG93LgogICAgICAgICAvLyBP
ZmZzZXR0aW5nIGlzIHJlcXVpcmVkIHdoZW4gbXVsdGlwbGUgcmVuZGVyZXJzIGFyZSBwcmVzZW50
LgotICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBpc05ld1Rl
eHROb2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigpLT50ZXh0
KCktPmxlbmd0aCgpIDogMDsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJ
bkZsb3cgKz0gaXNOZXdUZXh0Tm9kZSA/IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdy0+
cmVuZGVyZXIoKS0+dGV4dCgpLmxlbmd0aCgpIDogMDsKICAgICAgICAgbV9wcmV2aW91c1NpbXBs
ZVRleHROb2RlSW5GbG93ID0gJnRleHROb2RlOwogCiAgICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0
aW9uID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9lbmRPZmZzZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwpAQCAtMTA0NSw3ICsxMDQ1LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUoTm9kZSYgbm9kZSkK
IAogc3RhdGljIGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwg
aW50IHRleHRFbmQpCiB7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICpyZW5kZXJlci50ZXh0KCk7
CisgICAgU3RyaW5nSW1wbCYgdGV4dCA9IHJlbmRlcmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IHRleHRFbmQ7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBz
aWJsZVdoaXRlU3BhY2UodGV4dFtpXSkpCkBAIC0yNzYzLDQgKzI3NjMsMjAgQEAgUmVmPFJhbmdl
PiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IEZpbmRPcHRpb25zIG8KICAgICByZXR1cm4gcmFuZ2VGb3JNYXRjaChyYW5nZSwgb3B0aW9ucywg
bWF0Y2hTdGFydCwgbWF0Y2hMZW5ndGgsIHNlYXJjaEZvcndhcmQpOwogfQogCitib29sIGZpbmRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZp
bmRPcHRpb25zIG9wdGlvbnMpCit7CisgICAgU2VhcmNoQnVmZmVyIGJ1ZmZlciB7IHRhcmdldCwg
b3B0aW9ucyB9OworICAgIFN0cmluZ1ZpZXcgcmVtYWluaW5nVGV4dCB7IGRvY3VtZW50IH07Cisg
ICAgd2hpbGUgKCFyZW1haW5pbmdUZXh0LmlzRW1wdHkoKSkgeworICAgICAgICBzaXplX3QgY2hh
cmFjdGVyc0FwcGVuZGVkID0gYnVmZmVyLmFwcGVuZChkb2N1bWVudCk7CisgICAgICAgIHJlbWFp
bmluZ1RleHQgPSByZW1haW5pbmdUZXh0LnN1YnN0cmluZyhjaGFyYWN0ZXJzQXBwZW5kZWQpOwor
ICAgICAgICBpZiAocmVtYWluaW5nVGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBidWZmZXIu
cmVhY2hlZEJyZWFrKCk7CisgICAgICAgIHNpemVfdCBtYXRjaFN0YXJ0T2Zmc2V0OworICAgICAg
ICBpZiAoYnVmZmVyLnNlYXJjaChtYXRjaFN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDIzYzBiNWVjNzViMzcwNjNhZmMyMWNiODNkZWFkM2Ji
NWE3ODBiMGQuLjg2MGU3NGNmNmE1MjExOWZkODRmNmQxYzI2YzE4MjkzYTgzMzEyNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElubGluZVRleHRCb3g7CiBjbGFzcyBS
ZW5kZXJUZXh0OwogY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OworCiBuYW1lc3BhY2UgU2ltcGxl
TGluZUxheW91dCB7CiBjbGFzcyBSdW5SZXNvbHZlcjsKIH0KQEAgLTQ3LDYgKzQ4LDcgQEAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBS
YW5nZSosIFRleHRJdGVyYXRvckIKIFJlZjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25zdCBSYW5n
ZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5n
ZT4gZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQbGFpblRleHQo
Y29uc3QgUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7Citib29sIGZpbmRQbGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOyAvLyBMZXRzIHVzIHVzZSB0aGUgc2VhcmNoIGFsZ29y
aXRobSBvbiBhIHN0cmluZy4KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBp
biB0aGUgZWRpdGluZyBkaXJlY3RvcnkuIEl0IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBib29sIGlz
UmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA5NjIwYmZiNzEyNzBjY2RjMzYzNWFkZmRkYWZl
ZjMyMWE2MDg5NDBmLi5mZDc5MDY2ZmJmYWU0NmI4YWM5MjJlZDM2ZGNiMjMwZDZmZmU5MmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlw
aW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKICAgICAgICAgVUNoYXIzMiBjID0gcHJldmlvdXMuY2hh
cmFjdGVyQWZ0ZXIoKTsKICAgICAgICAgLy8gRklYTUU6IFZpc2libGVQb3NpdGlvbjo6Y2hhcmFj
dGVyQWZ0ZXIoKSBhbmQgY2hhcmFjdGVyQmVmb3JlKCkgZG8gbm90IGVtaXQgbmV3bGluZXMgdGhl
IHNhbWUKICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRvciwgc28gd2UgZG8gYW4gaXNFbmRP
ZlBhcmFncmFwaCBjaGVjayBoZXJlLgotICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8
fCBjID09IDB4QTAgfHwgaXNFbmRPZlBhcmFncmFwaChwcmV2aW91cykpIHsKKyAgICAgICAgaWYg
KGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UgfHwgaXNFbmRPZlBhcmFn
cmFwaChwcmV2aW91cykpIHsKICAgICAgICAgICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdvcmRJ
Zk9uQm91bmRhcnk7CiAgICAgICAgIH0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAxID0gc3Rh
cnRPZldvcmQocHJldmlvdXMsIHN0YXJ0V29yZFNpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwCmluZGV4IDZhYmNkNGY5NGNlNWJhYTliYmIyNmY0MzVjODNhNGY0MmJk
Yjc0N2MuLmNjMTdkZDYzZWZjZDA2NzM3YTYwZGU4MDk2M2RjMTQzMzc4NjYxYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTExOTMsNyArMTE5Myw3IEBAIE5v
ZGUqIGZpbmRTdGFydE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJv
b3QsIE5vZGUqIHN0YXJ0QmxvY2ssCiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihpczxUZXh0PigqbikpOwogICAgICAgICAgICAgdHlwZSA9IFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CiAgICAgICAgICAgICBpZiAoc3R5bGUucHJlc2VydmVO
ZXdsaW5lKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmRvd25jYXN0
PFJlbmRlclRleHQ+KCpyKS50ZXh0KCk7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCYgdGV4
dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyKS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgaW50
IGkgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICAgICAgICAgIGludCBvID0gb2Zmc2V0OwogICAg
ICAgICAgICAgICAgIGlmIChuID09IHN0YXJ0Tm9kZSAmJiBvIDwgaSkKQEAgLTEyNTcsNyArMTI1
Nyw3IEBAIE5vZGUqIGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGhp
Z2hlc3RSb290LCBOb2RlKiBzdGF5SW5zaWRlQmxvCiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxUZXh0PigqbikpOwogICAgICAgICAgICAgdHlwZSA9IFBv
c2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7CiAgICAgICAgICAgICBpZiAoc3R5bGUu
cHJlc2VydmVOZXdsaW5lKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0g
KmRvd25jYXN0PFJlbmRlclRleHQ+KCpyKS50ZXh0KCk7CisgICAgICAgICAgICAgICAgU3RyaW5n
SW1wbCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyKS50ZXh0KCk7CiAgICAgICAgICAg
ICAgICAgaW50IG8gPSBuID09IHN0YXJ0Tm9kZSA/IG9mZnNldCA6IDA7CiAgICAgICAgICAgICAg
ICAgaW50IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQg
aSA9IG87IGkgPCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDMwYWQ2ZGJiNjQ3Yzk4NjMyYjlmOTEwNGFlN2Y3Y2Q3
MDllNGRjZWUuLjZiMTM5N2ViZjczN2MxZWYxNzQ5MDQ4ZmUyMTc2ODUwZDQyNjU5OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIyMjQs
NyArMjIyNCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRh
dGEmIGNoYXJhY3RlckRhdGEpCiAgICAgYm9vbCB3YXNTcGFjZSA9IGZhbHNlOwogICAgIGlmIChf
Y2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjaGFyYWN0ZXJEYXRhLCBDU1NQcm9wZXJ0eVdo
aXRlU3BhY2UpLnN0YXJ0c1dpdGgoInByZSIpKSB7CiAgICAgICAgIGlmICh0ZXh0TGVuZ3RoICYm
IG9yaWdpbmFsU3RyaW5nLmxlbmd0aCgpICYmIF9mbGFncy5pc1NvZnQpIHsKLSAgICAgICAgICAg
IHVuaWNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmF0KDApOworICAgICAgICAgICAgdW5pY2hhciBj
ID0gb3JpZ2luYWxTdHJpbmcuY2hhcmFjdGVyQXQoMCk7CiAgICAgICAgICAgICBpZiAoYyA9PSAn
XG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09IE5TUGFyYWdyYXBoU2VwYXJhdG9yQ2hhcmFjdGVyIHx8
IGMgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGMgPT0gTlNGb3JtRmVlZENoYXJhY3Rl
ciB8fCBjID09IFdlYk5leHRMaW5lQ2hhcmFjdGVyKQogICAgICAgICAgICAgICAgIHJhbmdlVG9S
ZXBsYWNlID0gTlNNYWtlUmFuZ2UodGV4dExlbmd0aCAtIDEsIDEpOwogICAgICAgICB9CkBAIC0y
MjM0LDcgKzIyMzQsNyBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0
ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhKQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIExDaGFyIG5vQnJlYWtTcGFjZVJlcHJlc2VudGF0aW9uID0gMDsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFVDaGFyIGMg
PSBvcmlnaW5hbFN0cmluZy5hdChpKTsKKyAgICAgICAgICAgIFVDaGFyIGMgPSBvcmlnaW5hbFN0
cmluZy5jaGFyYWN0ZXJBdChpKTsKICAgICAgICAgICAgIGJvb2wgaXNXaGl0ZXNwYWNlID0gYyA9
PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCcgfHwgYyA9PSAweGMg
fHwgYyA9PSAweDIwMGI7CiAgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKQogICAgICAgICAg
ICAgICAgIHdhc1NwYWNlID0gKCF3YXNMZWFkaW5nIHx8ICFzdXBwcmVzc0xlYWRpbmdTcGFjZSk7
CkBAIC0yMjYwLDcgKzIyNjAsNyBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChD
aGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhKQogICAgIGlmIChvdXRwdXRTdHJpbmcubGVuZ3Ro
KCkpIHsKICAgICAgICAgU3RyaW5nIHRleHRUcmFuc2Zvcm0gPSBfY2FjaGVzLT5wcm9wZXJ0eVZh
bHVlRm9yTm9kZShjaGFyYWN0ZXJEYXRhLCBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0pOwogICAg
ICAgICBpZiAodGV4dFRyYW5zZm9ybSA9PSAiY2FwaXRhbGl6ZSIpCi0gICAgICAgICAgICBtYWtl
Q2FwaXRhbGl6ZWQoJm91dHB1dFN0cmluZywgMCk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxv
Y2FsZSBpbnRvIGFjY291bnQgdG8gd29yayBjb3JyZWN0bHkuCisgICAgICAgICAgICBvdXRwdXRT
dHJpbmcgPSBjYXBpdGFsaXplKG91dHB1dFN0cmluZywgJyAnKTsgLy8gRklYTUU6IE5lZWRzIHRv
IHRha2UgbG9jYWxlIGludG8gYWNjb3VudCB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxz
ZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAidXBwZXJjYXNlIikKICAgICAgICAgICAgIG91dHB1dFN0
cmluZyA9IG91dHB1dFN0cmluZy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7IC8v
IEZJWE1FOiBOZWVkcyBsb2NhbGUgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgIGVsc2UgaWYg
KHRleHRUcmFuc2Zvcm0gPT0gImxvd2VyY2FzZSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGViMjg2NjZlODUz
Mzg5ZDZiNmNhNTYxZTcxNDdjNTUzYTNlMjEyYmMuLjZhM2ZlNDYwNmQ2NjBkNzIxNzg5YjJhMzZh
MDY5Njg4Y2JkNzBlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIFN0
cmluZyBzdHJpcE1pY3Jvc29mdFByZWZpeChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBJ
dCdzIGEgc2ltcGxlLW1pbmRlZCB3YXkgdG8gaWdub3JlIHRoZSBDRl9IVE1MIGNsaXBib2FyZCBm
b3JtYXQsIGp1c3Qgc2tpcHBpbmcgb3ZlciB0aGUKICAgICAvLyBkZXNjcmlwdGlvbiBwYXJ0IGFu
ZCBwYXJzaW5nIHRoZSBlbnRpcmUgY29udGV4dCBwbHVzIGZyYWdtZW50LgogICAgIGlmIChzdHJp
bmcuc3RhcnRzV2l0aCgiVmVyc2lvbjoiKSkgewotICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBz
dHJpbmcuZmluZElnbm9yaW5nQ2FzZSgiPGh0bWwiKTsKKyAgICAgICAgc2l6ZV90IGxvY2F0aW9u
ID0gc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiPGh0bWwiKTsKICAgICAgICAgaWYgKGxv
Y2F0aW9uICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmco
bG9jYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Zp
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZTMxMzQxOTg0
ODBlZGJmZjE4OThjYjE2NjlkYmZiMmY1YmMyODgwMy4uMmYxZGU5YmNlY2VmNTIwY2ExMWU4MGQz
NjM4ZjcwMDFjN2I4NjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmls
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTMwNCw3ICsz
MDQsNyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250
cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIC8vIDE3LiBJZiB0aGUgZmlyc3Qg
ZWlnaHQgY2hhcmFjdGVycyBvZiB0aGUgaW5kZXh0aCB0b2tlbiBpbiB0b2tlbnMgYXJlIG5vdCBh
biBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlCiAgICAgLy8gbWF0Y2ggZm9yIHRoZSBzdHJpbmcgInNl
Y3Rpb24tIiwgdGhlbiBqdW1wIHRvIHRoZSBzdGVwIGxhYmVsZWQgZGVmYXVsdC4KICAgICBjb25z
dCBhdXRvJiBzZWN0aW9uVG9rZW4gPSB0b2tlbnNbaW5kZXhdOwotICAgIGlmICghc2VjdGlvblRv
a2VuLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgic2VjdGlvbi0iKSkKKyAgICBpZiAoIXN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2VjdGlvblRva2VuLCAic2VjdGlvbi0i
KSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRMYWJlbCgpOwogCiAgICAgLy8gMTguIExldCBzZWN0
aW9uIGJlIHRoZSBpbmRleHRoIHRva2VuIGluIHRva2VucywgY29udmVydGVkIHRvIEFTQ0lJIGxv
d2VyY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKaW5kZXgg
NTZkNjcwOTczMDcyZmFhZGM0MzY1NWQxYzA1Y2MxYWNhZmQ5ZWZkYy4uMmJiNDMzMTU5MjRlY2Nh
MGZmMWNlNTNmY2VjYjhhMGI0YmFlZjY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4
dElucHV0VHlwZS5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBib29sIEJhc2VUZXh0SW5wdXRUeXBl
Ojppc1RleHRUeXBlKCkgY29uc3QKIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNt
YXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgcmF3UGF0dGVybiA9IGVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHBhdHRlcm5BdHRyKTsKLSAgICBpZiAocmF3UGF0dGVybi5pc051bGwoKSB8fCB2YWx1ZS5pc0Vt
cHR5KCkgfHwgIUpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocmF3UGF0dGVybiwgVGV4dENh
c2VTZW5zaXRpdmUpLmlzVmFsaWQoKSkKKyAgICBpZiAocmF3UGF0dGVybi5pc051bGwoKSB8fCB2
YWx1ZS5pc0VtcHR5KCkgfHwgIUpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocmF3UGF0dGVy
bikuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHBhdHRlcm4g
PSAiXig/OiIgKyByYXdQYXR0ZXJuICsgIikkIjsKICAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwog
ICAgIGludCB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwotICAgIGludCBtYXRjaE9mZnNl
dCA9IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgVGV4dENhc2VTZW5zaXRp
dmUpLm1hdGNoKHZhbHVlLCAwLCAmbWF0Y2hMZW5ndGgpOworICAgIGludCBtYXRjaE9mZnNldCA9
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybikubWF0Y2godmFsdWUsIDAsICZt
YXRjaExlbmd0aCk7CiAgICAgcmV0dXJuIG1hdGNoT2Zmc2V0IHx8IG1hdGNoTGVuZ3RoICE9IHZh
bHVlTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4
IDMxZjhhYTU1YjZmZWQwNDgwZTI1NjhkNTQ5ODgwYmIwN2VlMjhkYzEuLjFjMjdmODhiNDEwZWQx
NGU0Y2VhMDJkZDdmM2M4OTdiNGIzMTk1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRW1haWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJl
c3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChlbWFpbFBhdHRlcm4sIFRleHRDYXNlSW5z
ZW5zaXRpdmUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0ZXJuLCBKU0M6OllhcnI6OlRleHRDYXNl
SW5zZW5zaXRpdmUpOwogCiAgICAgaW50IG1hdGNoTGVuZ3RoOwogICAgIGludCBtYXRjaE9mZnNl
dCA9IHJlZ0V4cC5nZXQoKS5tYXRjaChhZGRyZXNzLCAwLCAmbWF0Y2hMZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBjNTIzMjI5MmExMWJjZTdj
ZGYyNzc5MjY3ZGVjYjZiMGUxMTk5NDE3Li4xYmMwZWU0NmJlMmIyZTFjYmNhNTE3ZTZjMmU4Njhl
ZTdlNTMwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApA
QCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6Omhhc0ZhbGxiYWNrQ29u
dGVudCgpIGNvbnN0CiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIC8vIElnbm9y
ZSB3aGl0ZXNwYWNlLW9ubHkgdGV4dCwgYW5kIDxwYXJhbT4gdGFncywgYW55IG90aGVyIGNvbnRl
bnQgaXMgZmFsbGJhY2sgY29udGVudC4KICAgICAgICAgaWYgKGlzPFRleHQ+KCpjaGlsZCkpIHsK
LSAgICAgICAgICAgIGlmICghZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5jb250YWluc09ubHlXaGl0
ZXNwYWNlKCkpCisgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFRleHQ+KCpjaGlsZCkuZGF0YSgp
LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoIWlzPEhUTUxQYXJhbUVsZW1lbnQ+KCpj
aGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBib29s
IEhUTUxPYmplY3RFbGVtZW50OjpzaG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRRdWlyaygpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MTWV0YUVsZW1lbnQ+KGRvY3VtZW50KCkpKSB7Ci0gICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtZXRhRWxlbWVudC5uYW1lKCksICJnZW5l
cmF0b3IiKSAmJiBtZXRhRWxlbWVudC5jb250ZW50KCkuc3RhcnRzV2l0aCgiTWFjIE9TIFggU2Vy
dmVyIFdlYiBTZXJ2aWNlcyBTZXJ2ZXIiLCBmYWxzZSkpCisgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtZXRhRWxlbWVudC5uYW1lKCksICJnZW5lcmF0b3IiKSAmJiBz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50LmNvbnRlbnQoKSwg
Im1hYyBvcyB4IHNlcnZlciB3ZWIgc2VydmljZXMgc2VydmVyIikpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIEhUTUxPYmplY3RFbGVt
ZW50OjpzaG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRRdWlyaygpCiAgICAgCiBib29sIEhUTUxP
YmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQoKQogewotICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSgpKSAmJiBhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGNsYXNzaWRBdHRyKS5zdGFydHNXaXRoKCJqYXZhOiIsIGZhbHNl
KSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2Vydmlj
ZVR5cGUoKSkgJiYgcHJvdG9jb2xJcyhhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNs
YXNzaWRBdHRyKSwgImphdmEiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYg
KHNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkpCkBAIC00MDksNyArNDA5LDcgQEAg
c3RhdGljIGlubGluZSBib29sIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGNvbnN0
IE5vZGUmIGNoaWxkKQogICAgIGlmIChpczxFbGVtZW50PihjaGlsZCkpCiAgICAgICAgIHJldHVy
biBwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShkb3duY2FzdDxFbGVtZW50PihjaGls
ZCkpOwogICAgIGlmIChpczxUZXh0PihjaGlsZCkpCi0gICAgICAgIHJldHVybiAhZG93bmNhc3Q8
VGV4dD4oY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0dXJuICFk
b3duY2FzdDxUZXh0PihjaGlsZCkuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1M
U3BhY2U+KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVHlwZUFoZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNw
cAppbmRleCA3NzRhZDU0N2NlYzZiM2M0YWM5MTQyZGFhY2RhNGEyYzUzOGIzZmY4Li43NjRlNTAy
MjMwYTdkYzlhMzRkODdjYmE2OTNhY2Q2NjU0OTAxYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1R5cGVBaGVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhl
YWQuY3BwCkBAIC00NiwxMyArNDYsMTEgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgdHlwZUFoZWFk
VGltZW91dCB7IDFfcyB9Owogc3RhdGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNwYWNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKLQogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVha1NwYWNlICYmIChzdHJpbmdbaV0g
PD0gMHg3RiA/ICFpc0FTQ0lJU3BhY2Uoc3RyaW5nW2ldKSA6ICh1X2NoYXJEaXJlY3Rpb24oc3Ry
aW5nW2ldKSAhPSBVX1dISVRFX1NQQUNFX05FVVRSQUwpKSkKKyAgICAgICAgaWYgKHN0cmluZ1tp
XSAhPSBub0JyZWFrU3BhY2UgJiYgIWlzU3BhY2VPck5ld2xpbmUoc3RyaW5nW2ldKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KLQogICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKGksIGxl
bmd0aCAtIGkpOwogfQogCkBAIC05NSwxMCArOTMsNiBAQCBpbnQgVHlwZUFoZWFkOjpoYW5kbGVF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCwgTWF0Y2hNb2RlRmxhZ3MgbWF0Y2hNb2RlKQogICAg
ICAgICBpbnQgaW5kZXggPSAoc2VsZWN0ZWQgPCAwID8gMCA6IHNlbGVjdGVkKSArIHNlYXJjaFN0
YXJ0T2Zmc2V0OwogICAgICAgICBpbmRleCAlPSBvcHRpb25Db3VudDsKIAotICAgICAgICAvLyBD
b21wdXRlIGEgY2FzZS1mb2xkZWQgY29weSBvZiB0aGUgcHJlZml4IHN0cmluZyBiZWZvcmUgYmVn
aW5uaW5nIHRoZSBzZWFyY2ggZm9yCi0gICAgICAgIC8vIGEgbWF0Y2hpbmcgZWxlbWVudC4gVGhp
cyBjb2RlIHVzZXMgZm9sZENhc2UgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdAotICAgICAg
ICAvLyBTdHJpbmc6OnN0YXJ0V2l0aCBkb2VzIG5vdCBmb2xkIG5vbi1BU0NJSSBjaGFyYWN0ZXJz
LiBUaGlzIGNvZGUgY2FuIGJlIGNoYW5nZWQKLSAgICAgICAgLy8gdG8gdXNlIHN0YXJ0V2l0aCBv
bmNlIHRoYXQgaXMgZml4ZWQuCiAgICAgICAgIFN0cmluZyBwcmVmaXhXaXRoQ2FzZUZvbGRlZChw
cmVmaXguZm9sZENhc2UoKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3B0aW9uQ291
bnQ7ICsraSwgaW5kZXggPSAoaW5kZXggKyAxKSAlIG9wdGlvbkNvdW50KSB7CiAgICAgICAgICAg
ICAvLyBGb2xkIHRoZSBvcHRpb24gc3RyaW5nIGFuZCBjaGVjayBpZiBpdHMgcHJlZml4IGlzIGVx
dWFsIHRvIHRoZSBmb2xkZWQgcHJlZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDEyMTdkOWI1NGY1OGIzYzM0ODQy
NDlhZjViYTA0MGI3MjdkYzA1MzAuLjAyM2M4ZmQ3ZjM1NDBmMWFkOGM3MmE2ZDA1ODI5YTAzM2Ux
NjJiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTMzNiw3NiArMzM2LDc2IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6OnNldENvbXBhdGliaWxpdHlNb2RlRnJvbURvY3R5cGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjCiAKICAgICAvLyBDaGVjayBmb3IgUXVpcmtzIE1vZGUuCiAgICAgaWYgKG5hbWUgIT0gImh0
bWwiCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIisvL1NpbG1hcmlsLy9kdGQgaHRt
bCBQcm8gdjByMTEgMTk5NzAxMDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9BZHZhU29mdCBMdGQvL0RURCBIVE1MIDMuMCBhc1dlZGl0ICsgZXh0ZW5zaW9u
cy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0FTLy9EVEQg
SFRNTCAzLjAgYXNXZWRpdCArIGV4dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgTGV2ZWwgMS8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBM
ZXZlbCAyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVU
Ri8vRFREIEhUTUwgMi4wIFN0cmljdCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVi
bGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIFN0cmljdCBMZXZlbCAyLy8i
LCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhU
TUwgMi4wIFN0cmljdC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgo
Ii0vL0lFVEYvL0RURCBIVE1MIDIuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0
YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMUUvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAzLjAvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAzLjIgRmluYWwv
LyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQg
SFRNTCAzLjIvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9J
RVRGLy9EVEQgSFRNTCAzLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0
aCgiLS8vSUVURi8vRFREIEhUTUwgTGV2ZWwgMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDEvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZlbCAyLy8i
LCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhU
TUwgTGV2ZWwgMy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0v
L0lFVEYvL0RURCBIVE1MIFN0cmljdCBMZXZlbCAwLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVi
bGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgU3RyaWN0IExldmVsIDEvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBT
dHJpY3QgTGV2ZWwgMi8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgo
Ii0vL0lFVEYvL0RURCBIVE1MIFN0cmljdCBMZXZlbCAzLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9NZXRyaXVzLy9EVEQgTWV0
cml1cyBQcmVzZW50YXRpb25hbC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL01pY3Jvc29mdC8vRFREIEludGVybmV0IEV4cGxvcmVyIDIuMCBIVE1MIFN0cmlj
dC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29m
dC8vRFREIEludGVybmV0IEV4cGxvcmVyIDIuMCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIg
Mi4wIFRhYmxlcy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0v
L01pY3Jvc29mdC8vRFREIEludGVybmV0IEV4cGxvcmVyIDMuMCBIVE1MIFN0cmljdC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8vRFREIElu
dGVybmV0IEV4cGxvcmVyIDMuMCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMy4wIFRhYmxl
cy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL05ldHNjYXBl
IENvbW0uIENvcnAuLy9EVEQgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0
YXJ0c1dpdGgoIi0vL05ldHNjYXBlIENvbW0uIENvcnAuLy9EVEQgU3RyaWN0IEhUTUwvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9PJ1JlaWxseSBhbmQgQXNz
b2NpYXRlcy8vRFREIEhUTUwgMi4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vTydSZWlsbHkgYW5kIEFzc29jaWF0ZXMvL0RURCBIVE1MIEV4dGVuZGVkIDEu
MC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5
IGFuZCBBc3NvY2lhdGVzLy9EVEQgSFRNTCBFeHRlbmRlZCBSZWxheGVkIDEuMC8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1NvZnRRdWFkIFNvZnR3YXJlLy9E
VEQgSG9UTWV0YUwgUFJPIDYuMDo6MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gSFRNTCA0LjAvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9Tb2Z0UXVhZC8vRFRE
IEhvVE1ldGFMIFBSTyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25zIHRvIEhUTUwgNC4wLy8iLCBm
YWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU3B5Z2xhc3MvL0RURCBI
VE1MIDIuMCBFeHRlbmRlZC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1NRLy9EVEQgSFRNTCAyLjAgSG9UTWV0YUwgKyBleHRlbnNpb25zLy8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU3VuIE1pY3Jvc3lzdGVtcyBDb3Jw
Li8vRFREIEhvdEphdmEgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL1N1biBNaWNyb3N5c3RlbXMgQ29ycC4vL0RURCBIb3RKYXZhIFN0cmljdCBIVE1M
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQg
SFRNTCAzIDE5OTUtMDMtMjQvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNX
aXRoKCItLy9XM0MvL0RURCBIVE1MIDMuMiBEcmFmdC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjIvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1M
IDMuMlMgRHJhZnQvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCIt
Ly9XM0MvL0RURCBIVE1MIDQuMCBGcmFtZXNldC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgRXhw
ZXJpbWVudGFsIDE5OTYwNzEyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRz
V2l0aCgiLS8vVzNDLy9EVEQgSFRNTCBFeHBlcmltZW50YWwgOTcwNDIxLy8iLCBmYWxzZSkKLSAg
ICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgVzMgSFRNTC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czTy8vRFREIFczIEhUTUwg
My4wLy8iLCBmYWxzZSkKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIisvL3NpbG1hcmlsLy9kdGQgaHRtbCBwcm8gdjByMTEgMTk5NzAxMDEv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy9hZHZhc29mdCBsdGQvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8v
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJ
ZCwgIi0vL2FzLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAg
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRm
Ly9kdGQgaHRtbCAyLjAgbGV2ZWwgMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAy
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAxLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8v
ZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAyLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0
cmljdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
dWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIu
MWUvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAzLjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAzLjIg
ZmluYWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAzLjIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAz
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIGxl
dmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0
bWwgbGV2ZWwgMy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy8iKQorICAg
ICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
aWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBzdHJp
Y3QgbGV2ZWwgMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy8iKQorICAg
ICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
aWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwvLyIpCisgICAgICAg
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9tZXRy
aXVzLy9kdGQgbWV0cml1cyBwcmVzZW50YXRpb25hbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGlu
dGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGlu
dGVybmV0IGV4cGxvcmVyIDIuMCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQg
ZXhwbG9yZXIgMi4wIHRhYmxlcy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxv
cmVyIDMuMCBodG1sIHN0cmljdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxv
cmVyIDMuMCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4w
IHRhYmxlcy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL25l
dHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgc3RyaWN0IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9vJ3JlaWxseSBhbmQg
YXNzb2NpYXRlcy8vZHRkIGh0bWwgMi4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMv
L2R0ZCBodG1sIGV4dGVuZGVkIDEuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9k
dGQgaHRtbCBleHRlbmRlZCByZWxheGVkIDEuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NvZnRxdWFkIHNvZnR3YXJlLy9k
dGQgaG90bWV0YWwgcHJvIDYuMDo6MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLyIp
CisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQs
ICItLy9zb2Z0cXVhZC8vZHRkIGhvdG1ldGFsIHBybyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25z
IHRvIGh0bWwgNC4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vc3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL3NxLy9kdGQgaHRtbCAyLjAgaG90bWV0YWwgKyBleHRlbnNpb25zLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3VuIG1p
Y3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3N1biBtaWNyb3N5c3Rl
bXMgY29ycC4vL2R0ZCBob3RqYXZhIHN0cmljdCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAz
IDE5OTUtMDMtMjQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMuMiBkcmFmdC8vIikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8v
ZHRkIGh0bWwgMy4yIGZpbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAzLjIvLyIpCisgICAgICAg
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2Mv
L2R0ZCBodG1sIDMuMnMgZHJhZnQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMCBmcmFtZXNldC8v
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJ
ZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vIikKKyAgICAgICAgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0
bWwgZXhwZXJpbWVudGFsIDE5OTYwNzEyLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50
YWwgOTcwNDIxLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgdzMgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czby8vZHRkIHczIGh0
bWwgMy4wLy8iKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL3czby8vZHRkIHczIGh0bWwgc3RyaWN0IDMuMC8vZW4vLyIpCi0gICAgICAgIHx8
IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1dlYlRlY2hzLy9EVEQgTW96aWxsYSBIVE1MIDIuMC8v
IiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1dlYlRlY2hzLy9E
VEQgTW96aWxsYSBIVE1MLy8iLCBmYWxzZSkKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1s
IDIuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
dWJsaWNJZCwgIi0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sLy8iKQogICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vdzNjL2R0ZCBodG1sIDQu
MCB0cmFuc2l0aW9uYWwvZW4iKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgImh0bWwiKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzeXN0ZW1JZCwgImh0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0
bWwxLXRyYW5zaXRpb25hbC5kdGQiKQotICAgICAgICB8fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYm
IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vIiwg
ZmFsc2UpKQotICAgICAgICB8fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvLyIsIGZhbHNlKSkpIHsK
KyAgICAgICAgfHwgKHN5c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8i
KSkKKyAgICAgICAgfHwgKHN5c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRp
b25hbC8vIikpKSB7CiAgICAgICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0
aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Ly8gQ2hlY2sgZm9yIExpbWl0ZWQgUXVpcmtzIE1vZGUuCi0gICAgaWYgKHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL1czQy8vRFREIFhIVE1MIDEuMCBGcmFtZXNldC8vIiwgZmFsc2UpCi0gICAgICAg
IHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9u
YWwvLyIsIGZhbHNlKQotICAgICAgICB8fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJ
ZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvLyIsIGZhbHNlKSkK
LSAgICAgICAgfHwgKCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpKSkgeworICAgIGlm
IChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9k
dGQgeGh0bWwgMS4wIGZyYW1lc2V0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgeGh0bWwgMS4wIHRyYW5zaXRp
b25hbC8vIikKKyAgICAgICAgfHwgKCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wMSBm
cmFtZXNldC8vIikpCisgICAgICAgIHx8ICghc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQu
MDEgdHJhbnNpdGlvbmFsLy8iKSkpIHsKICAgICAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9j
dW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAKaW5kZXggOGE4NDY4OTE1ZmU5MzI2YzllNzM2YTdhYTUzNWFlOGRk
M2ViNGQyNC4uOGQzM2VlNjYzZmIzMzA3MDRhOTg4YTIxMTVjMDQzMGNiMTllMzZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIu
Y3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0KGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgbGVuZ3RoOyApIHsKLSAgICAgICAg
cG9zID0gdmFsdWUuZmluZCgiY2hhcnNldCIsIHBvcywgZmFsc2UpOworICAgICAgICBwb3MgPSB2
YWx1ZS5maW5kSWdub3JpbmdBU0NJSUNhc2UoImNoYXJzZXQiLCBwb3MpOwogICAgICAgICBpZiAo
cG9zID09IG5vdEZvdW5kKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggOTNmZmE1YmE2NDhlYzg4YTg4ZDM1ZWU2MDAz
MTk1Yzc2MzAzOGYzNC4uYTczZWQ5M2I5OTdmYjdiNWRhMTgyODE4MmIxNGY3YWUyYmFhZWU2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTcxNSwxMSAr
NzE1LDExIEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBkZWNvZGVkU25pcHBldCkKIHsKICAgICBpZiAoZGVjb2RlZFNuaXBwZXQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fZGVjb2RlZFVSTC5maW5kKGRlY29k
ZWRTbmlwcGV0LCAwLCBmYWxzZSkgIT0gbm90Rm91bmQpCisgICAgaWYgKG1fZGVjb2RlZFVSTC5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGRlY29kZWRTbmlwcGV0KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgaWYgKG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiAhbV9kZWNvZGVk
SFRUUEJvZHlTdWZmaXhUcmVlLT5taWdodENvbnRhaW4oZGVjb2RlZFNuaXBwZXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5LmZpbmQoZGVjb2Rl
ZFNuaXBwZXQsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsKKyAgICByZXR1cm4gbV9kZWNvZGVkSFRU
UEJvZHkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShkZWNvZGVkU25pcHBldCk7CiB9CiAKIGJv
b2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggYWNlNjZlNTQx
YzBiODkzMGJkZWZkM2JkNTljYjFjODdlYTI0MjE3My4uNTE4ZWQ4YjMwNjBkMDY4OWUyNzQ0ODkz
YjQ2ZDlhYzQ3NzczZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJl
ZEZpbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGluZSkKICAgICAvLyBBIFdlYlZUVCBmaWxl
IGlkZW50aWZpZXIgY29uc2lzdHMgb2YgYW4gb3B0aW9uYWwgQk9NIGNoYXJhY3RlciwKICAgICAv
LyB0aGUgc3RyaW5nICJXRUJWVFQiIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHNwYWNlIG9yIHRh
YiBjaGFyYWN0ZXIsCiAgICAgLy8gYW5kIGFueSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGFy
ZSBub3QgbGluZSB0ZXJtaW5hdG9ycyAuLi4KLSAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aChmaWxl
SWRlbnRpZmllciwgZmlsZUlkZW50aWZpZXJMZW5ndGgpKQorICAgIGlmICghbGluZS5zdGFydHNX
aXRoKGZpbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChsaW5l
Lmxlbmd0aCgpID4gZmlsZUlkZW50aWZpZXJMZW5ndGggJiYgIWlzSFRNTFNwYWNlKGxpbmVbZmls
ZUlkZW50aWZpZXJMZW5ndGhdKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCmluZGV4IDU5NTgzYTkw
Mjg1NDRiYjkxYjJjNDc1ZTNhODZlNWU5ZTljZjExNzguLmY5MmE1ZDg5MjdlNzYwYmY0YjdiNWYw
ODg4OGY2YTA1ZDNlNWFjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JOb2RlRmluZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTm9kZUZpbmRlci5jcHAKQEAgLTExMCw4ICsxMTAsOCBAQCBib29sIEluc3BlY3Rvck5v
ZGVGaW5kZXI6Om1hdGNoZXNFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3Ry
aW5nIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZSgpOwogICAgIGlmICgoIW1fc3RhcnRUYWdG
b3VuZCAmJiAhbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5jb250YWluc0lnbm9yaW5nQVNDSUlD
YXNlKG1fdGFnTmFtZVF1ZXJ5KSkKICAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiBtX2Vu
ZFRhZ0ZvdW5kICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uobm9kZU5hbWUsIG1fdGFnTmFtZVF1
ZXJ5KSkKLSAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3VuZCAmJiBu
b2RlTmFtZS5zdGFydHNXaXRoKG1fdGFnTmFtZVF1ZXJ5LCBmYWxzZSkpCi0gICAgICAgIHx8ICgh
bV9zdGFydFRhZ0ZvdW5kICYmIG1fZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuZW5kc1dpdGgobV90
YWdOYW1lUXVlcnksIGZhbHNlKSkpCisgICAgICAgIHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgIW1f
ZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1fdGFn
TmFtZVF1ZXJ5KSkKKyAgICAgICAgfHwgKCFtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3Vu
ZCAmJiBub2RlTmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1fdGFnTmFtZVF1ZXJ5KSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCBkN2UyZTkzZDNkODFjN2M5NjI3MDViNDFhZGE0ZTVhNzdlZjk3NjFhLi5kMmNkODVh
N2YyNDk5OTk5YjkzNDZmNjVkMjY3ZjY0MjUwMzA5M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBA
QCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxk
T2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIoYwogCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3Rv
cnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBT
dHJpbmcmIHNoZWV0VGV4dCwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVs
ZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24+IGNvbW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNp
dGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwq
LyIsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5h
YmxlZCk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICBjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggZTQ3MDAxNjI5YWFiZDZmMzk4MWM1OTBkOThmMTRlZmIyMjM1NTI5Yy4uZDA4NjllZmFi
MWQ1Y2JiNDZjZjhlZmRhMTk1NzQ4YzMzYWFiYTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxT
dHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCkBAIC0xOTcz
LDEwICsxOTc0LDE2IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpCiAgICAgcmV0dXJuIFdURk1v
dmUodmFsdWUpOwogfQogCitzdGF0aWMgYm9vbCBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShO
b2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBSZXNwZWN0IGlnbm9yZVdoaXRlc3BhY2Ugc2V0
dGluZyBmcm9tIGluc3BlY3RvciBmcm9udCBlbmQ/CisgICAgcmV0dXJuIGlzPFRleHQ+KG5vZGUp
ICYmIGRvd25jYXN0PFRleHQ+KCpub2RlKS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0hUTUxTcGFjZT4oKTsKK30KKwogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RD
aGlsZChOb2RlKiBub2RlKQogewogICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7Ci0gICAg
d2hpbGUgKGlzV2hpdGVzcGFjZShub2RlKSkKKyAgICB3aGlsZSAoY29udGFpbnNPbmx5SFRNTFdo
aXRlc3BhY2Uobm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwogICAg
IHJldHVybiBub2RlOwogfQpAQCAtMTk4NSw3ICsxOTkyLDcgQEAgTm9kZSogSW5zcGVjdG9yRE9N
QWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcoTm9kZSogbm9kZSkKIHsKICAgICBkbyB7CiAgICAgICAg
IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwotICAgIH0gd2hpbGUgKGlzV2hpdGVzcGFjZShu
b2RlKSk7CisgICAgfSB3aGlsZSAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2Uobm9kZSkpOwog
ICAgIHJldHVybiBub2RlOwogfQogCkBAIC0xOTkzLDE4ICsyMDAwLDE1IEBAIE5vZGUqIEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclByZXZpb3VzU2libGluZyhOb2RlKiBub2RlKQogewogICAgIGRv
IHsKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOwotICAgIH0gd2hpbGUg
KGlzV2hpdGVzcGFjZShub2RlKSk7CisgICAgfSB3aGlsZSAoY29udGFpbnNPbmx5SFRNTFdoaXRl
c3BhY2Uobm9kZSkpOwogICAgIHJldHVybiBub2RlOwogfQogCiB1bnNpZ25lZCBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJDaGlsZE5vZGVDb3VudChOb2RlKiBub2RlKQogewogICAgIHVuc2lnbmVk
IGNvdW50ID0gMDsKLSAgICBOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsKLSAg
ICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgICAgY2hpbGQgPSBpbm5l
ck5leHRTaWJsaW5nKGNoaWxkKTsKLSAgICB9CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVy
Rmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkp
CisgICAgICAgICsrY291bnQ7CiAgICAgcmV0dXJuIGNvdW50OwogfQogCkBAIC0yMDE4LDEzICsy
MDIyLDYgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShOb2RlKiBu
b2RlKQogICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9y
RE9NQWdlbnQ6OmlzV2hpdGVzcGFjZShOb2RlKiBub2RlKQotewotICAgIC8vIEZJWE1FOiBSZW5h
bWUgdG8gY29udGFpbnNPbmx5SFRNTFNwYWNlcz8KLSAgICAvLyBGSVhNRTogUmVzcGVjdCBpZ25v
cmVXaGl0ZXNwYWNlIHNldHRpbmcgZnJvbSBpbnNwZWN0b3IgZnJvbnQgZW5kPwotICAgIHJldHVy
biBpczxUZXh0Pihub2RlKSAmJiBkb3duY2FzdDxUZXh0Pigqbm9kZSkuZGF0YSgpLmNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bWFpbkZyYW1l
RE9NQ29udGVudExvYWRlZCgpCiB7CiAgICAgLy8gUmUtcHVzaCBkb2N1bWVudCBvbmNlIGl0IGlz
IGxvYWRlZC4KQEAgLTIwNTYsNyArMjA1Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKGlzV2hpdGVzcGFjZSgm
bm9kZSkpCisgICAgaWYgKGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKCZub2RlKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gV2UgY291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRy
ZWUuIEZvcmdldCB0aGUgYmluZGluZ3MuCkBAIC0yMDg1LDcgKzIwODIsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNX
aGl0ZXNwYWNlKCZub2RlKSkKKyAgICBpZiAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoJm5v
ZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2Rl
LnBhcmVudE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA2MGViNmM3YWIzOTVkNmJmOTQ2ZDAzODE5MjJkYWI4
ZmU3MmNiYTNmLi4wYWZiMjg1MGQyZmNkNzQyNmQwNTFhZmJhMzNhYTkwNjYzNDA3Y2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCkBAIC0yMDMsNyArMjAzLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBOb2RlKiBpbm5lclBy
ZXZpb3VzU2libGluZyhOb2RlKik7CiAgICAgc3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2Rl
Q291bnQoTm9kZSopOwogICAgIHN0YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOwot
ICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CiAKICAgICBOb2RlKiBhc3NlcnRO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CiAgICAgRWxlbWVudCogYXNzZXJ0RWxlbWVu
dChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggN2Jl
OTFiZTU1M2ZkZmY5M2U3N2Q3MDJjYTgxNDE5ODhlMjg4OTMxOS4uMTUzZTg4NDAyMWJkNzgzMjg1
ODg2ZmE3MmZjODJjNGU1NDYxMjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjg1LDgg
KzEyODUsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVUYWJsZXMoKQog
ICAgIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFz
RmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSkKIHsKLSAgICByZXR1
cm4gcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKS5zdGFydHNXaXRoKCJhdWRpby8iLCBm
YWxzZSkgCi0gICAgICAgIHx8IHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkuc3RhcnRz
V2l0aCgidmlkZW8vIiwgZmFsc2UpOworICAgIGF1dG8mIHR5cGUgPSByZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOworICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxl
RXh0ZW5zaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCmluZGV4IGUw
OGExNmI0MDVmNGEyMmFhOGNmY2Y1ODE3NDliMTRjYTA0ZDhkYzUuLjBjNjEzZmE0MzA5MGI3OTYw
ZDBkZTdiOWFmMzc4NzhmNDkzZDlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
QmFzZTY0VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxp
dGllcy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBCYXNlNjRVdGls
aXRpZXM6OmJ0b2EoY29uc3QgU3RyaW5nJiBzdHJpbmdUb0VuY29kZSkKICAgICBpZiAoc3RyaW5n
VG9FbmNvZGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmICgh
c3RyaW5nVG9FbmNvZGUuY29udGFpbnNPbmx5TGF0aW4xKCkpCisgICAgaWYgKCFzdHJpbmdUb0Vu
Y29kZS5pc0FsbExhdGluMSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENo
YXJhY3RlckVycm9yIH07CiAKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHN0cmluZ1RvRW5jb2Rl
LmxhdGluMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggM2M0ZDAwNzcyZmExNzc5MTAxODM4
ODg0ZTdhNjFjMDYyMDdiNDI3OS4uZTJlMTMxMDc1YzQ1NjQ1YmRhZDBmMWMyZWVjZDY4MTU4YjU1
MTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgSlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mCiAgICAgLy8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFt
ZU1hYy5tbSBjYWNoZXMgYmFzZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRo
ZSBzYW1lIGFjcm9zcyBjYWxscy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3
IiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciKTsKICAgICBTdHJpbmdCdWls
ZGVyIHBhdHRlcm47CiAgICAgcGF0dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNpZ25lZCBpbnQg
bnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgSlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mCiAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwog
ICAgIH0KICAgICBwYXR0ZXJuLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7
CisgICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmlu
ZygpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogfQogCiBTdHJpbmcgRnJhbWU6
OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uJiByZWdFeHAsIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsLCBzaXplX3QqIHJlc3VsdERp
c3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0YXRpYyBTdHJpbmcg
bWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIGNv
bnN0IFN0cmluCiAgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0gc3RyaW5nVG9NYXRj
aDsKIAogICAgIC8vIE1ha2UgbnVtYmVycyBhbmQgXydzIGluIGZpZWxkIG5hbWVzIGJlaGF2ZSBs
aWtlIHdvcmQgYm91bmRhcmllcywgZS5nLiwgImFkZHJlc3MyIgotICAgIHJlcGxhY2UobXV0YWJs
ZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24oIlxcZCIsIFRleHRD
YXNlU2Vuc2l0aXZlKSwgIiAiKTsKKyAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiKSwgIiAiKTsKICAgICBtdXRhYmxlU3Ry
aW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKICAgICBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uIHJlZ0V4cCA9IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGMwYzY5NzdiZDc2ZGJiZWFiMTgwM2NjMjQzNGVh
NDhhZTFkMDE4YTAuLmU0ZTM1MjUzNjVkMWNiZDFiZjcwNWI1NmFlYTc0YmJjZTdjMWVkMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTI0ODgsNyArMjQ4OCw3IEBAIHN0YXRpYyB1
bnNpZ25lZCBjb3VudFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9s
ZChjb25zdCBSZW5kZXJFCiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3Qg
UmVuZGVyT2JqZWN0KiBkZXNjZW5kYW50ID0gJnJlbmRlcmVyOyBkZXNjZW5kYW50OyBkZXNjZW5k
YW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIoKSkgewogICAgICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oKmRlc2NlbmRhbnQpKSB7Ci0gICAgICAgICAgICBjb3VudCArPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PigqZGVzY2VuZGFudCkudGV4dCgpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGNv
dW50ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpkZXNjZW5kYW50KS50ZXh0KCkubGVuZ3RoKCk7
CiAgICAgICAgICAgICBpZiAoY291bnQgPj0gdGhyZXNob2xkKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4
IDUzYzk5YzU3NDc5MjZmNGYwYWVjNDlmMGNlZGVmZDI0MmI4YjVjODQuLjlkMmU1Y2NkNGViMTFk
MDJkOWI0NTdjNWQwMjU1ODg0MTFhZWM2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCkBAIC0zMzEsMTQgKzMzMSwxNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5S
ZWNlaXZlRHJhZ0RhdGEoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGRyYWdJbml0aWF0b3IpIGNvbgog
Ly8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBhcyBhbiBvdXRjb21lIG9mIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE5Ngogc3RhdGljIGJvb2wgaXNG
ZWVkV2l0aE5lc3RlZFByb3RvY29sSW5IVFRQRmFtaWx5KGNvbnN0IFVSTCYgdXJsKQogewotICAg
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwotICAgIGlmICghdXJsU3Ry
aW5nLnN0YXJ0c1dpdGgoImZlZWQiLCBmYWxzZSkpCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcg
PSB1cmwuc3RyaW5nKCk7CisgICAgaWYgKCFzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZywgImZlZWQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkOi8vIiwgZmFsc2UpIAotICAgICAgICB8fCB1cmxT
dHJpbmcuc3RhcnRzV2l0aCgiZmVlZDpodHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRz
V2l0aCgiZmVlZDpodHRwczoiLCBmYWxzZSkKLSAgICAgICAgfHwgdXJsU3RyaW5nLnN0YXJ0c1dp
dGgoImZlZWRzOmh0dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkczpo
dHRwczoiLCBmYWxzZSkKLSAgICAgICAgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzZWFy
Y2g6aHR0cDoiLCBmYWxzZSkgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzZWFyY2g6aHR0
cHM6IiwgZmFsc2UpOworICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZywgImZlZWQ6Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWQ6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWQ6aHR0cHM6IikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkczpodHRw
OiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmVlZHM6aHR0cHM6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICJmZWVkc2VhcmNoOmh0dHA6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkc2VhcmNoOmh0dHBzOiIpOwog
fQogCiBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4
IDRkYWI1NDc5NGI2NzczYmM1ZDk2MzVhNThmMGYzNDQ4YzczNjhlMTkuLmUxZmRjOWI3NTM5Zjlm
NzRiNzkyZTRhYWUyZjgyYWVhY2JhZWMxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIFVzZXJDb250
ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBkb21haW4gaXMgYSBzdWJkb21h
aW4gb2Ygb3VyIGhvc3QuCi0gICAgaWYgKCFob3N0LmVuZHNXaXRoKG1faG9zdCwgZmFsc2UpKQor
ICAgIGlmICghaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1faG9zdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChob3N0Lmxlbmd0aCgpID4gbV9ob3N0Lmxlbmd0
aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwCmluZGV4IDU5NjA0YzY3YWNlNzdhMzU0ZDRkZWE4YWFkYjU3Zjk5
NmJlZGEyYzYuLjdhNDMzM2Q1ZDZhZjg4OTYyODhiMjA3OTU2NTA0YjZjM2Y3NzliY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmNwcApAQCAtNjQsOSArNjQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZTo6c2NoZW1lTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlOjpob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBjb25zdCBTdHJpbmcmIGhvc3QgPSB1cmwuaG9zdCgpOwotICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBtX2hvc3RIYXNXaWxkY2FyZCAmJiBob3N0LmVuZHNXaXRoKCIuIiArIG1faG9zdCwgZmFs
c2UpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkgfHwg
KG1faG9zdEhhc1dpbGRjYXJkICYmIGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLiIg
KyBtX2hvc3QpKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IDkyMGFkMTJkOThh
YWE2OWZiNjAzMThhMzVjZDVjOGFmNjcyM2NkNmIuLmMzNjA4MTViMTRmZjRhNTg2YWNkYThmOWI1
NGI4NjM4MWZhYzg2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC00MzcsMTAgKzQzNywx
MCBAQCBzdGF0aWMgYm9vbCBpc05vbmNlQ2hhcmFjdGVyKFVDaGFyIGMpCiAvLyBub25jZS12YWx1
ZSAgICAgPSBiYXNlNjQtdmFsdWUKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dDo6cGFyc2VOb25jZVNvdXJjZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQp
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbm9uY2VQcmVmaXgoIidub25j
ZS0iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAoIVN0cmluZ1ZpZXco
YmVnaW4sIGVuZCAtIGJlZ2luKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uobm9uY2VQcmVm
aXguZ2V0KCkpKQorICAgIGNvbnN0IHVuc2lnbmVkIG5vbmNlUHJlZml4TGVuZ3RoID0gNjsKKyAg
ICBpZiAoIVN0cmluZ1ZpZXcoYmVnaW4sIGVuZCAtIGJlZ2luKS5zdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoIm5vbmNlLSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgVUNo
YXIqIHBvc2l0aW9uID0gYmVnaW4gKyBub25jZVByZWZpeC5nZXQoKS5sZW5ndGgoKTsKKyAgICBj
b25zdCBVQ2hhciogcG9zaXRpb24gPSBiZWdpbiArIG5vbmNlUHJlZml4TGVuZ3RoOwogICAgIGNv
bnN0IFVDaGFyKiBiZWdpbk5vbmNlVmFsdWUgPSBwb3NpdGlvbjsKICAgICBza2lwV2hpbGU8VUNo
YXIsIGlzTm9uY2VDaGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQpOwogICAgIGlmIChwb3NpdGlvbiA+
PSBlbmQgfHwgcG9zaXRpb24gPT0gYmVnaW5Ob25jZVZhbHVlIHx8ICpwb3NpdGlvbiAhPSAnXCcn
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCBiMzNlODY5N2UyOTViODdlOWE5
MDQ3MTE5OWM3ZjYwYzk0NTRmNGUzLi41ODRmNzRiYjU0MTAxMmZmN2M5ZTRmNDQ5OTEyZjUxMjlk
ZDE2ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMTE5LDcgKzExOSw3
IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jkc0luQ3VycmVudFBhcmFncmFwaCgpIGNvbnN0CiAgICAg
aWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgoZW5kKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXMgPSBlbmQucHJldmlvdXMoKTsKICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFy
YWN0ZXJBZnRlcigpKTsKLSAgICAgICAgaWYgKCFpc3dwdW5jdChjKSAmJiAhaXNTcGFjZU9yTmV3
bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXN3cHVuY3QoYykgJiYgIWlzU3Bh
Y2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBlbmQgPSBz
dGFydE9mV29yZChlbmQpOwogICAgIH0KICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc3RhcnRP
ZlBhcmFncmFwaChlbmQpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBOU0FycmF5ICpGcmFtZTo6d29y
ZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBjb25zdAogICAgICAgICBpZiAobGVuZ3RoID4gMSB8fCAh
aXNTcGFjZU9yTmV3bGluZSh0ZXh0WzBdKSkgewogICAgICAgICAgICAgaW50IHN0YXJ0T2ZXb3Jk
Qm91bmRhcnkgPSAwOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKHRleHRbaV0pIHx8IHRl
eHRbaV0gPT0gMHhBMCkgeworICAgICAgICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKHRl
eHRbaV0pIHx8IHRleHRbaV0gPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgICAg
IGludCB3b3JkTGVuZ3RoID0gaSAtIHN0YXJ0T2ZXb3JkQm91bmRhcnk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh3b3JkTGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBjaHVuayA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0T2ZXb3JkQm91bmRh
cnksIHdvcmRMZW5ndGgpLmNyZWF0ZU5TU3RyaW5nKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgTlNB
cnJheSAqRnJhbWU6OndvcmRzSW5DdXJyZW50UGFyYWdyYXBoKCkgY29uc3QKICAgICBpZiAoW3dv
cmRzIGNvdW50XSA+IDAgJiYgaXNFbmRPZlBhcmFncmFwaChwb3NpdGlvbikgJiYgIWlzU3RhcnRP
ZlBhcmFncmFwaChwb3NpdGlvbikpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
ID0gcG9zaXRpb24ucHJldmlvdXMoKTsKICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0
ZXJBZnRlcigpKTsKLSAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gMHhB
MCkKKyAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVha1NwYWNl
KQogICAgICAgICAgICAgW3dvcmRzIHJlbW92ZUxhc3RPYmplY3RdOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCmluZGV4IDk5NjFjZGRkNTBmZjc3YjQ3Zjdj
MDM3MzJmOTJlMDllZTllMjNiMDEuLmFjNzVlNmY5NTExZjFmMWI3ZGUxMDQ5ODEwMzUwNjViNGQ1
YmJiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgU3RyaW5nIENvbnRlbnRUeXBlOjpwYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBwYXJh
bWV0ZXJOYW1lKSBjb25zdAogICAgIC8vIGEgTUlNRSB0eXBlIGNhbiBoYXZlIG9uZSBvciBtb3Jl
ICJwYXJhbT12YWx1ZSIgYWZ0ZXIgYSBzZW1pLWNvbG9uLCBhbmQgc2VwYXJhdGVkIGZyb20gZWFj
aCBvdGhlciBieSBzZW1pLWNvbG9ucwogICAgIHNpemVfdCBzZW1pID0gc3RyaXBwZWRUeXBlLmZp
bmQoJzsnKTsKICAgICBpZiAoc2VtaSAhPSBub3RGb3VuZCkgewotICAgICAgICBzaXplX3Qgc3Rh
cnQgPSBzdHJpcHBlZFR5cGUuZmluZChwYXJhbWV0ZXJOYW1lLCBzZW1pICsgMSwgZmFsc2UpOwor
ICAgICAgICBzaXplX3Qgc3RhcnQgPSBzdHJpcHBlZFR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNl
KHBhcmFtZXRlck5hbWUsIHNlbWkgKyAxKTsKICAgICAgICAgaWYgKHN0YXJ0ICE9IG5vdEZvdW5k
KSB7CiAgICAgICAgICAgICBzdGFydCA9IHN0cmlwcGVkVHlwZS5maW5kKCc9Jywgc3RhcnQgKyBw
YXJhbWV0ZXJOYW1lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChzdGFydCAhPSBub3RGb3Vu
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCA1YmFiMWJiZTY3NDBlMzI4MjUyZWIxMDFjOTU3M2M3M2EyOTAxZWE2Li5hNzk5ZTg3MWMwZTM1
ZjI5NTBjNTM2OWIyN2I4NWRhN2QwOWY1OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNDkxLDE1ICs0OTEsMTUgQEAgYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZFN0eWxlU2hlZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkRm9udE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZv
bnRMZW4gPSA1OwotICAgIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KCJmb250LyIpKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmb250TGVuZ3RoID0gNTsKKyAg
ICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJmb250
LyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHN1YlR5cGUgPSBtaW1lVHlw
ZS5zdWJzdHJpbmcoZm9udExlbik7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHN1YlR5cGUsICJ3b2ZmIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc3ViVHlwZSwgIndvZmYyIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3ViVHlwZSwgIm90ZiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN1YlR5cGUsICJ0dGYiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdWJUeXBlLCAic2ZudCIpOworICAgIGF1dG8gc3VidHlwZSA9IFN0cmlu
Z1ZpZXcgeyBtaW1lVHlwZSB9LnN1YnN0cmluZyhmb250TGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3VidHlwZSwgIndvZmYiKQorICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAid29mZjIiKQorICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAib3RmIikKKyAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3VidHlwZSwgInR0ZiIpCisgICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YnR5cGUsICJzZm50Iik7CiB9CiAK
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTUxMSw3ICs1MTEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gV2hlbiBkZXRlY3RpbmcgK2pzb24gZW5zdXJlIHRoZXJl
IGlzIGEgbm9uLWVtcHR5IHR5cGUgLyBzdWJ0eXBlIHByZWNlZWRpbmcgdGhlIHN1ZmZpeC4KLSAg
ICBpZiAobWltZVR5cGUuZW5kc1dpdGgoIitqc29uIiwgZmFsc2UpICYmIG1pbWVUeXBlLmxlbmd0
aCgpID49IDgpIHsKKyAgICBpZiAobWltZVR5cGUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
K2pzb24iKSAmJiBtaW1lVHlwZS5sZW5ndGgoKSA+PSA4KSB7CiAgICAgICAgIHNpemVfdCBzbGFz
aFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOwogICAgICAgICBpZiAoc2xhc2hQb3NpdGlv
biAhPSBub3RGb3VuZCAmJiBzbGFzaFBvc2l0aW9uID4gMCAmJiBzbGFzaFBvc2l0aW9uIDw9IG1p
bWVUeXBlLmxlbmd0aCgpIC0gNikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTU2LDEz
ICs1NTYsMTIgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwgaXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUobWltZVR5
cGUpIC8vIFJlbmRlciBKU09OIGFzIHRleHQvcGxhaW4uCi0gICAgICAgIHx8IChtaW1lVHlwZS5z
dGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKQorICAgICAgICB8fCAoc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikKICAgICAgICAgICAgICYmICFlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCiAgICAgICAg
ICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3ht
bCIpCiAgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3hzbCIpKTsKIH0KIAotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFhNTE1J
TUVUeXBlQ2hhcihVQ2hhciBjKQogewogICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgcGVyIFJGQ3Mg
MzAyMyBhbmQgMjA0NTogMC05YS16QS1aXy0rfiEkXnt9fC4lJ2AjJioKQEAgLTU3NSw3ICs1NzQs
NyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUs
ICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
YXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3hzbCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghbWltZVR5
cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCisgICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCIreG1sIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHNp
emVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOwpAQCAtNTk5LDkgKzU5OCw5
IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKICAgICAvLyBvZiB1c2luZyBhIGhhc2ggc2V0LgogICAgIC8vIEFueSBv
ZiB0aGUgTUlNRSB0eXBlcyBiZWxvdyBtYXkgYmUgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBz
cGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgSlZNLAogICAgIC8vIHdoaWNoIGlzIHdoeSB3ZSB1c2Ug
c3RhcnRzV2l0aCgpCi0gICAgcmV0dXJuIG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9u
L3gtamF2YS1hcHBsZXQiLCBmYWxzZSkKLSAgICAgICAgfHwgbWltZVR5cGUuc3RhcnRzV2l0aCgi
YXBwbGljYXRpb24veC1qYXZhLWJlYW4iLCBmYWxzZSkKLSAgICAgICAgfHwgbWltZVR5cGUuc3Rh
cnRzV2l0aCgiYXBwbGljYXRpb24veC1qYXZhLXZtIiwgZmFsc2UpOworICAgIHJldHVybiBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1q
YXZhLWFwcGxldCIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LWphdmEtYmVhbiIpCisgICAgICAgIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LWph
dmEtdm0iKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC02MjYsNyArNjI1LDcgQEAgYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICBpZiAoaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3Vw
cG9ydGVkSlNPTk1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0LyIpKQogICAgICAg
ICByZXR1cm4gIWlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggMmVkNDRiMDJkOWE0ZGQzMmVj
ZTU5OWUxMTM2MjViYjljZGNjNDg4ZS4uMmYzNTVhOTdlZGQ2ZWEyMWM2NDRhYjcwYjkxMDNkZTJk
ZTkzOTdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9v
bCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0
aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGlj
IGJvb2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1Zp
ZXcgc3RyaW5nKQogICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdv
bid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBj
b25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7CiAgICAgCi0gICAgaWYg
KHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGNvbnRhaW5zT25seUFT
Q0lJKHN0cmluZykpIHsKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJM
ZW5ndGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CiAgICAgICAgIGFwcGVuZChidWZmZXIsIHN0
cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwCmluZGV4IGVkNTYwNDUxYWNiMWYzNTVlYjk0NGM1NDM5YWJhY2M0MzA3OTI2
MWYuLjY3Mjg2MTJlZDAzMjQ5ZmY5NzYyODgyMTVkYzliNDUxM2NhOTdkMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcApAQCAtMjUzOCwxOSArMjUzOCwxMCBAQCBWZWN0b3I8
TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IFVSTFBhcnNlcjo6cGVy
Y2VudERlY29kZShjb25zdAogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKLUFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0g
ICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCks
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJp
bmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2Vy
OjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShjb25z
dCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZh
dWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBs
JiBkb21haW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQogewogICAgIFZlY3RvcjxMQ2hhciwgZGVmYXVs
dElubGluZUJ1ZmZlclNpemU+IGFzY2lpOwotICAgIGlmIChjb250YWluc09ubHlBU0NJSShkb21h
aW4pKSB7CisgICAgaWYgKGRvbWFpbi5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgc2l6ZV90IGxl
bmd0aCA9IGRvbWFpbi5sZW5ndGgoKTsKICAgICAgICAgaWYgKGRvbWFpbi5pczhCaXQoKSkgewog
ICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSBkb21haW4uY2hhcmFjdGVyczgo
KTsKQEAgLTI3NjcsNyArMjc1OCw3IEBAIGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKGRvbWFpbiAhPSBTdHJpbmdWaWV3KHBlcmNlbnREZWNvZGVkLmRh
dGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKSkKICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgYXV0byBhc2NpaURvbWFpbiA9IGRvbWFpblRvQVNDSUkoZG9tYWluLCBo
b3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpkb21haW4u
aW1wbCgpLCBob3N0QmVnaW4pOwogICAgIGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9yYmlkZGVu
SG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBhc2NpaURvbWFp
blZhbHVlID0gYXNjaWlEb21haW4udmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmgKaW5kZXggMWE1M2M4YzdlMDZiMjc1NzQ0OTAxNDkzMWExNzFlNzU2NWRiOTQzMi4uMDZkMDFj
MWNmMjI1MmI3NmFjZTExNDM1OTVjZjY1MTQwYzViN2QxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPiB2b2lkIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIo
VW5zaWduZWRJbnRlZ2VyVHlwZSk7CiAgICAgdGVtcGxhdGU8Ym9vbCgqaXNJbkNvZGVTZXQpKFVD
aGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhQZXJjZW50RW5jb2RlKGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNp
emU+PiBkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxM
Q2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwm
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4gcGVyY2VudERlY29kZShj
b25zdCBMQ2hhciosIHNpemVfdCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwogICAgIHN0YXRpYyBWZWN0
b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNvbnN0IExD
aGFyKiwgc2l6ZV90KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxE
ZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNzg4OWQ4YTE0ZGJjODZhOTI1MjRlNTFlOWVl
ZTlmYWRmNjE5NjZjMS4uNWZmZTNkMjk1NGZlZThiYzlhNjk1MzVkNzU4YmQ1YTE3OGQyMTJjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cApAQCAtOTMzLDggKzkzMyw4IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhCiAgICAgLy8gc2xv
dyBjb25uZWN0aW9ucy4gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjQwOT4KICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVj
aWZpY0hhY2tzKCkpIHsKICAgICAgICAgU3RyaW5nIGhvc3QgPSBjbGllbnQtPm1lZGlhUGxheWVy
RG9jdW1lbnRIb3N0KCk7Ci0gICAgICAgIGlmICgoaG9zdC5lbmRzV2l0aCgiLnlvdXR1YmUuY29t
IiwgZmFsc2UpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ5b3V0dWJl
LmNvbSIpKQotICAgICAgICAgICAgJiYgKGNvbnRhaW5lclR5cGUuc3RhcnRzV2l0aCgidmlkZW8v
d2VibSIsIGZhbHNlKSB8fCBjb250YWluZXJUeXBlLnN0YXJ0c1dpdGgoInZpZGVvL3gtZmx2Iiwg
ZmFsc2UpKSkKKyAgICAgICAgaWYgKChob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi55
b3V0dWJlLmNvbSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ5b3V0
dWJlLmNvbSIpKQorICAgICAgICAgICAgJiYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29udGFpbmVyVHlwZSwgInZpZGVvL3dlYm0iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2aWRlby94LWZsdiIpKSkKICAgICAgICAg
ICAgIHJldHVybiBJc05vdFN1cHBvcnRlZDsKICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmYmUxMTNjZmI5
NTI5Y2YzYjkyMjdhMjZkNzVjOTI2NWQ3OWMyMjYzLi5kMjc4MGM5OGZjZjI0NDZmYWY5MjA3ZWQ1
NTI3ZmJmZWRlMzMxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiYgdmFsaWRLZXlTeXN0ZW1SRSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNv
bVxcLmFwcGxlXFwuZnBzXFwuWzIzXV9cXGQrKD86LFxcZCspKiQiLCBUZXh0Q2FzZUluc2Vuc2l0
aXZlKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5
c3RlbVJFKCJeY29tXFwuYXBwbGVcXC5mcHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIEpTQzo6
WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgcmV0dXJuIGtleVN5c3RlbVJFOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggZmIwZWNlM2M3NGE2OWJjNWVjMmFkNzU3ZTJl
NTQ5OWJkZGJhYTFhYS4uMWYyYjVmNWQwYmE4NTFiMjEzOTU0Zjg0ODQ3ZDkzYTQyYjBhNTlmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNjg1LDcgKzY4NSw3IEBAIFJlZlB0cjxGb250
PiBGb250Q2FjaGU6OnNpbWlsYXJGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIGNvbnN0IEF0CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZ2Vl
emFQbGFpbigiR2VlemFQcm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBnZWV6YUJvbGQoIkdlZXph
UHJvLUJvbGQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBmb3Ig
KFN0cmluZyogbWF0Y2hXb3JkIDogbWF0Y2hXb3JkcykgewotICAgICAgICBpZiAoZmFtaWx5LmNv
bnRhaW5zKCptYXRjaFdvcmQsIGZhbHNlKSkKKyAgICAgICAgaWYgKGZhbWlseS5jb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKCptYXRjaFdvcmQpKQogICAgICAgICAgICAgcmV0dXJuIGZvbnRGb3JG
YW1pbHkoZGVzY3JpcHRpb24sIGlzRm9udFdlaWdodEJvbGQoZGVzY3JpcHRpb24ud2VpZ2h0KCkp
ID8gZ2VlemFCb2xkIDogZ2VlemFQbGFpbik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggZGYy
NWY1OTNkZWM4MzM5ODA5NTRmMjZiYmIwYmJkZmM2ZTA1OWMxMy4uMGU0YWM0YmJlMWM0OTVjYzFk
ZWRmN2RlMjM1MzVkN2E2N2YwZDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJd
LCBHQzNEcwogewogICAgIExPRyhXZWJHTCwgIk9yaWdpbmFsIFNoYWRlckluZm9Mb2c6XG4lcyIs
IGxvZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24g
cmVnRXhwKCJ3ZWJnbF9bMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIiwgVGV4dENhc2VTZW5zaXRp
dmUpOworICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnRXhwKCJ3ZWJnbF9bMDEy
MzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIik7CiAKICAgICBTdHJpbmdCdWlsZGVyIHByb2Nlc3NlZExv
ZzsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNT
dWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFj
Lm1tCmluZGV4IDNmNDMxNzIzOGVkZTMzNzZkZWFiNmNhMDljYThhYWFiZjg0MTgwZDQuLjgxMzgw
Y2NhMzQ3MTRkZDQzN2VjMDZmMWQxOGQ1YjI4YzdmMmVkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBTdHJp
bmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikKICAg
ICBpZiAoW2RvbWFpbiBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc10pCiAgICAgICAgIHJldHVybiBk
b21haW47CiAKLSAgICBpZiAoIWRvbWFpbi5jb250YWluc09ubHlBU0NJSSgpKQorICAgIGlmICgh
ZG9tYWluLmlzQWxsQVNDSUkoKSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKICAgICAKICAgICBj
b25zdCBhdXRvJiBsb3dlcmNhc2VEb21haW4gPSBkb21haW4uY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5l
cmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tCmluZGV4IGE4MmM1NmJkMTM2MDVlNjM2MzU4MDljYzUxNDAyMGJhYjBmNTc1NmMuLjNm
MTRmNDI5N2JjOWJmNmEwYjY1NTlhZDUzMDA5YWMwY2RkNjA2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMjM4LDcgKzIz
OCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICB9CiAKLSAgICBhdXRvIGNoYWxsZW5nZSA9IGNoYWxsZW5nZVN0cmluZy5jb250YWluc09u
bHlBU0NJSSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkgOiAiIjsKKyAgICBhdXRvIGNoYWxs
ZW5nZSA9IGNoYWxsZW5nZVN0cmluZy5pc0FsbEFTQ0lJKCkgPyBjaGFsbGVuZ2VTdHJpbmcuYXNj
aWkoKSA6ICIiOwogCiAgICAgcmV0dXJuIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhrZXlTaXplLCBjaGFsbGVuZ2UsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
aW5kZXggYjg5ZmM2ZTQxZWY1NmJiODJmN2JiZmE5MDY2NmRmNjM4ZDg3YWQ1Zi4uYmYwNDhjZWRh
ZTc2ZmEwMGRkZmY5Y2U5NGU0OWQ5YTRhMzkzYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBT
dHJpbmcgd2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgCiBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgU3RyaW5nJiB3aWxkY2FyZFN0cmluZykKIHsKLSAgICByZXR1cm4gSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3aWxkY2FyZFN0
cmluZyksIFRleHRDYXNlSW5zZW5zaXRpdmUpLm1hdGNoKHN0cmluZykgIT0gLTE7CisgICAgcmV0
dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRlcm5TdHJp
bmcod2lsZGNhcmRTdHJpbmcpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpLm1hdGNo
KHN0cmluZykgIT0gLTE7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAK
aW5kZXggNDBhNjE3NzI4ODg4M2UzODk3NWRkMmExYzQ4MTM2MTc5N2ViMDU3Zi4uYmQwYWE3OWE4
MzY0MzliMDMyYjE3Y2MxNTcwNTUwYzQ0MGVkMmRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NI
QTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3Ry
aW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0
cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgY29uc3QgdWludDhfdCBudWxsQnl0ZSA9IDA7
CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoJm51bGxCeXRlLCAxKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAppbmRleCA3
YjIyM2U3ODg1OWI2NGNlM2Q2ZTk3ZmE3ZjdkNDI4YTUzNjdmNjZkLi5jOTEzMDE5NzQwMGM5MTg2
OTI2ZWE4NjM2MWQ4OWMyZjgxNTdlNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0zMzAsMTAgKzMzMCw4IEBAIENh
Y2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgaWYgKCFyZXN1bHQubm9DYWNoZSkgewogICAgICAg
ICAvLyBIYW5kbGUgUHJhZ21hOiBuby1jYWNoZQogICAgICAgICAvLyBUaGlzIGlzIGRlcHJlY2F0
ZWQgYW5kIGVxdWl2YWxlbnQgdG8gQ2FjaGUtY29udHJvbDogbm8tY2FjaGUKLSAgICAgICAgLy8g
RG9uJ3QgYm90aGVyIHRva2VuaXppbmcgdGhlIHZhbHVlLCBpdCBpcyBub3QgaW1wb3J0YW50Ci0g
ICAgICAgIFN0cmluZyBwcmFnbWFWYWx1ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpQ
cmFnbWEpOwotCi0gICAgICAgIHJlc3VsdC5ub0NhY2hlID0gcHJhZ21hVmFsdWUuY29udGFpbnMo
Im5vLWNhY2hlIiwgZmFsc2UpOworICAgICAgICAvLyBEb24ndCBib3RoZXIgdG9rZW5pemluZyB0
aGUgdmFsdWU7IGhhbmRsaW5nIHRoYXQgZXhhY3RseSByaWdodCBpcyBub3QgaW1wb3J0YW50Lgor
ICAgICAgICByZXN1bHQubm9DYWNoZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpQcmFn
bWEpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIm5vLWNhY2hlIik7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggZjYzOWI4MjI5MWFjMjM1MGJhZjhjODZjMWM5Y2I5MzRmMjI1Nzg5
OS4uMDdmYjcxOGEzMTE1OWY0NGZmNjlkMjI5YjBmMjc3ODU0MmRjNjcwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTIxOSw3ICsy
MTksNyBAQCBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBkb3Vi
bGUmIGRlbGF5LCBTdHJpbmcmIHVybCkKICAgICAgICAgKytwb3M7CiAgICAgICAgIHNraXBXaGl0
ZVNwYWNlKHJlZnJlc2gsIHBvcyk7CiAgICAgICAgIHVuc2lnbmVkIHVybFN0YXJ0UG9zID0gcG9z
OwotICAgICAgICBpZiAocmVmcmVzaC5maW5kKCJ1cmwiLCB1cmxTdGFydFBvcywgZmFsc2UpID09
IHVybFN0YXJ0UG9zKSB7CisgICAgICAgIGlmIChyZWZyZXNoLmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZSgidXJsIiwgdXJsU3RhcnRQb3MpID09IHVybFN0YXJ0UG9zKSB7CiAgICAgICAgICAgICB1cmxT
dGFydFBvcyArPSAzOwogICAgICAgICAgICAgc2tpcFdoaXRlU3BhY2UocmVmcmVzaCwgdXJsU3Rh
cnRQb3MpOwogICAgICAgICAgICAgaWYgKHJlZnJlc2hbdXJsU3RhcnRQb3NdID09ICc9JykgewpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gbWVkaWFUeXBlLmxlbmd0aCgpOwogICAgIAogICAgIHdoaWxlIChwb3MgPCBsZW5n
dGgpIHsKLSAgICAgICAgcG9zID0gbWVkaWFUeXBlLmZpbmQoImNoYXJzZXQiLCBwb3MsIGZhbHNl
KTsKKyAgICAgICAgcG9zID0gbWVkaWFUeXBlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiY2hhcnNl
dCIsIHBvcyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQgfHwgcG9zID09IDApIHsKICAg
ICAgICAgICAgIGNoYXJzZXRMZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTMyLDEw
ICs1MzIsMTEgQEAgYm9vbCBwYXJzZVJhbmdlKGNvbnN0IFN0cmluZyYgcmFuZ2UsIGxvbmcgbG9u
ZyYgcmFuZ2VPZmZzZXQsIGxvbmcgbG9uZyYgcmFuZ2VFbmQKICAgICByYW5nZU9mZnNldCA9IHJh
bmdlRW5kID0gcmFuZ2VTdWZmaXhMZW5ndGggPSAtMTsKIAogICAgIC8vIFRoZSAiYnl0ZXMiIHVu
aXQgaWRlbnRpZmllciBzaG91bGQgYmUgcHJlc2VudC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciBi
eXRlc1N0YXJ0W10gPSAiYnl0ZXM9IjsgCi0gICAgaWYgKCFyYW5nZS5zdGFydHNXaXRoKGJ5dGVz
U3RhcnQsIGZhbHNlKSkKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYnl0ZXNMZW5ndGggPSA2
OworICAgIGlmICghc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyYW5nZSwgImJ5
dGVzPSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIGJ5dGVSYW5nZSA9IHJh
bmdlLnN1YnN0cmluZyhzaXplb2YoYnl0ZXNTdGFydCkgLSAxKTsKKyAgICAvLyBGSVhNRTogVGhl
IHJlc3Qgb2YgdGhpcyBzaG91bGQgdXNlIFN0cmluZ1ZpZXcuCisgICAgU3RyaW5nIGJ5dGVSYW5n
ZSA9IHJhbmdlLnN1YnN0cmluZyhieXRlc0xlbmd0aCk7CiAKICAgICAvLyBUaGUgJy0nIGNoYXJh
Y3RlciBuZWVkcyB0byBiZSBwcmVzZW50LgogICAgIGludCBpbmRleCA9IGJ5dGVSYW5nZS5maW5k
KCctJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKaW5kZXggYmE4M2Y5YzEyYjdm
NWMzNmJiOWYzNTY3ODY2ZTI1MzExYTdlZDNkNS4uNGFlY2QxOTk4MTMyOTAyMGVjNTkyZGVkMTZh
Njg1ODQ1ZjFjYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlS
dW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmNwcApAQCAtNDEs
NyArNDEsNyBAQCBCaWRpUnVuOjpCaWRpUnVuKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBzdG9w
LCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBCaWRpQ29udAogI2lmbmRlZiBOREVCVUcKICAgICBi
aWRpUnVuQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgotICAgIEFTU0VSVCghaXM8UmVuZGVy
VGV4dD4obV9yZW5kZXJlcikgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0b3ApIDw9IGRvd25j
YXN0PFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpLnRleHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKCFp
czxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RvcCkg
PD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obV9yZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpKTsKICAg
ICAvLyBTdG9yZWQgaW4gYmFzZSBjbGFzcyB0byBzYXZlIHNwYWNlLgogICAgIG1faGFzSHlwaGVu
ID0gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
aW5kZXggYWNiOWVkY2MyMmVhYTA5ODE5ZGVmNjE0NzNkZDQ4MWQxYTY4OWE4NS4uZGVkZWY4ZTVl
OGM4ZDA4Yjc2ZDc0NDQ4ZDQ5ZWU3NWU2OTUxNGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIFVSTCBIaXRUZXN0UmVz
dWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSgpID09ICJh
cHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LnNlcnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIHVy
bC5wYXRoKCkuZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkpKQorICAgIGlmIChlbGVtZW50LnNlcnZp
Y2VUeXBlKCkgPT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgKGVsZW1lbnQuc2VydmljZVR5cGUoKS5p
c0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikp
KQogICAgICAgICByZXR1cm4gdXJsOwogICAgIHJldHVybiBVUkwoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA1OGViNGRkOTRmODUxNjc2ZWQx
MjU1M2RkYTIzOGUzYWVhOTUyNjNmLi42ODI5NmQ0YzRkOGU2ZWZjZjM4Mzk1MDc2MDgyMTdkNjQ4
YjE3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBA
IC0zNzksNyArMzc5LDcgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5s
aW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgaWYgKGlz
PFJlbmRlclRleHQ+KGNoaWxkLT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgYXV0byYgdGV4
dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICBSZW5k
ZXJUZXh0JiByZW5kZXJUZXh0ID0gdGV4dEJveC5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYg
KHJlbmRlclRleHQudGV4dExlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyVGV4dC50
ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXb3JkU3BhY2luZyAm
JiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQodGV4dEJveC5zdGFydCgp
KSkpCiAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHRleHRCb3gubGluZVN0eWxl
KCkuZm9udENhc2NhZGUoKS53b3JkU3BhY2luZygpOwogICAgICAgICAgICAgICAgIG5lZWRzV29y
ZFNwYWNpbmcgPSAhaXNTcGFjZU9yTmV3bGluZShyZW5kZXJUZXh0LmNoYXJhY3RlckF0KHRleHRC
b3guZW5kKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5k
ZXggMDhlYjJhYjhhNGFhOWZkYWI3MjdiMzcyZWE1NWE4ZjI5NDRlM2VjZS4uN2Y3OTM0ZDdjYzc0
NmFkNjk5YjY1ZWU4ZmQyM2MxYmUyNDRhNzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUl0ZXJhdG9yLmgKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRl
ck9iamVjdCogYmlkaUZpcnN0SW5jbHVkaW5nRW1wdHlJbmxpbmVzKFJlbmRlckVsZW1lbnQmIHJv
b3QpCiBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUo
KQogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAgICBBU1NFUlQobV9wb3MgPD0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpLnRleHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKG1f
cG9zIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkp
OwogICAgICsrbV9wb3M7CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBAQCBpbmxpbmUgdm9pZCBJbmxp
bmVJdGVyYXRvcjo6aW5jcmVtZW50KElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAg
ICAgIGZhc3RJbmNyZW1lbnRJblRleHROb2RlKCk7Ci0gICAgICAgIGlmIChtX3BvcyA8IGRvd25j
YXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmICht
X3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIGJpZGlOZXh0IGNhbiByZXR1cm4g
bnVsbHB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4
IDJhMTcwYTk4M2I4MWZkNWQ5NTQzZWU3OTg2ODlkNTg5NGEwMDBkN2QuLjlkMTM0ODA5ZDQxNjRk
NWIzODg0OTZiYzgwYjI0YmNkNTNkZGYyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94
OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2Us
IGZsbwogCiBib29sIElubGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEg
JiYgKCpyZW5kZXJlcigpLnRleHQoKSlbc3RhcnQoKV0gPT0gJ1xuJzsKKyAgICByZXR1cm4gcmVu
ZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYgcmVuZGVy
ZXIoKS50ZXh0KClbc3RhcnQoKV0gPT0gJ1xuJzsKIH0KIAogYm9vbCBJbmxpbmVUZXh0Qm94Ojpu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICov
LCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLApAQCAtNjE3LDcgKzYxNyw3IEBAIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkg
Y29uc3QKICAgICBhdXRvIHN0YXJ0ID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3Rh
cnRQb3NpdGlvbigpOwogICAgIGF1dG8gZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9u
KCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0
OjpTZWxlY3Rpb25TdGFydCkKLSAgICAgICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCk7
CisgICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4dCgpLmxlbmd0aCgpOwogICAgIGVsc2UgaWYg
KHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKQogICAgICAgICBz
dGFydCA9IDA7CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNsYW1wZWRPZmZz
ZXQoZW5kKSB9OwpAQCAtMTA4MiwxNSArMTA4MiwxNSBAQCBTdHJpbmcgSW5saW5lVGV4dEJveDo6
dGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CiAg
ICAgICAgIGlmIChpZ25vcmVDb21iaW5lZFRleHQpCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVy
ZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgICAgICAgICByZXR1
cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAg
cmV0dXJuIGNvbWJpbmVkVGV4dC0+Y29tYmluZWRTdHJpbmdGb3JSZW5kZXJpbmcoKTsKICAgICB9
CiAgICAgaWYgKGhhc0h5cGhlbigpKSB7CiAgICAgICAgIGlmIChpZ25vcmVIeXBoZW4pCi0gICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xl
bik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3Rh
cnQsIG1fbGVuKTsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhyZW5kZXJl
cigpLnRleHQoKSkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKSwgbGluZVN0eWxlKCkuaHlwaGVu
U3RyaW5nKCkpOwogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmlu
ZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgcmV0dXJuIHJlbmRlcmVyKCkudGV4dCgpLnN1YnN0cmlu
ZyhtX3N0YXJ0LCBtX2xlbik7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCog
SW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGI5NTU4NjkxOWU3MzMyMmUxODg4MGMzMDI4Mzc3Nzhm
ODM4MWY0ZTkuLmY0OTJmMTgwMWJjZTYxMTc1MTU4YzBmNWU5M2ZlOTU3MDNjZDI5ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzU0OCw3ICszNTQ4LDcg
QEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0
JiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYKIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7Ci0gICAgQVNT
RVJUKHN0b3AgPD0gdGV4dC50ZXh0TGVuZ3RoKCkpOworICAgIEFTU0VSVChzdG9wIDw9IHRleHQu
dGV4dCgpLmxlbmd0aCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmlu
Z1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNzk3NTdlNzRjNjk3Zjg2
MmZhMGY4NjQwOGI3OTJiMmE2Y2NiZGViNi4uYjI2ZDY3MmJhMDhjNjliZWY5MjJjNzJhYzhlYWRk
YmVjMGI1ZGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJv
eC5oIgpAQCAtMzY3MSwxMyArMzY3MiwxNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJp
YWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB9CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWaXNpYmxlUmVuZGVyVGV4dChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyKQogewogICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4ocmVuZGVyZXIpOwotICAgIHJldHVybiAhcmVuZGVyVGV4dC5saW5lc0JvdW5k
aW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5kZXJUZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hp
dGVzcGFjZSgpOworICAgIHJldHVybiAhcmVuZGVyVGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNF
bXB0eSgpICYmICFyZW5kZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRN
TFNwYWNlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQpAQCAtMzc4Nyw2ICszNzg5LDcgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmFkanVzdENvbXB1dGVkRm9udFNpemVzKGZsb2F0IHNpemUsIGZsb2F0
IHZpc2libGVXaWR0aCkKICAgICAgICAgZGVzY2VuZGFudCA9IFJlbmRlck9iamVjdFRyYXZlcnNh
bDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4odGV4dCwgdGhpcyk7CiAgICAgfQogfQorCiAjZW5kaWYg
Ly8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91
dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKQpAQCAtNDI2NCwxOCArNDI2
NywxNSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgICAgICAgICAgICAgIC8vIG9mIHRo
ZSBzdHJpbmcuIElmIHRob3NlIGFyZSBnb2luZyB0byBiZSBzdHJpcHBlZCBvdXQsCiAgICAgICAg
ICAgICAgICAgLy8gdGhlbiB0aGV5IHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGluIHRoZSBicmVh
a2FibGUgY2hhcgogICAgICAgICAgICAgICAgIC8vIGNoZWNrLgotICAgICAgICAgICAgICAgIGJv
b2wgaGFzQnJlYWthYmxlQ2hhciwgaGFzQnJlYWs7Ci0gICAgICAgICAgICAgICAgZmxvYXQgYmVn
aW5NaW4sIGVuZE1pbjsKLSAgICAgICAgICAgICAgICBib29sIGJlZ2luV1MsIGVuZFdTOwotICAg
ICAgICAgICAgICAgIGZsb2F0IGJlZ2luTWF4LCBlbmRNYXg7CiAgICAgICAgICAgICAgICAgYm9v
bCBzdHJpcHBpbmdCZWdpbldTID0gc3RyaXBGcm9udFNwYWNlczsKLSAgICAgICAgICAgICAgICBy
ZW5kZXJUZXh0LnRyaW1tZWRQcmVmV2lkdGhzKGlubGluZU1heCwgYmVnaW5NaW4sIGJlZ2luV1Ms
IGVuZE1pbiwgZW5kV1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFz
QnJlYWthYmxlQ2hhciwgaGFzQnJlYWssIGJlZ2luTWF4LCBlbmRNYXgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4sIGNoaWxkTWF4LCBzdHJpcEZyb250U3Bh
Y2VzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdpZHRocyA9IHJlbmRlclRleHQudHJpbW1lZFBy
ZWZlcnJlZFdpZHRocyhpbmxpbmVNYXgsIHN0cmlwRnJvbnRTcGFjZXMpOworCisgICAgICAgICAg
ICAgICAgY2hpbGRNaW4gPSB3aWR0aHMubWluOworICAgICAgICAgICAgICAgIGNoaWxkTWF4ID0g
d2lkdGhzLm1heDsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgdGV4dCBvYmplY3Qgd2lsbCBu
b3QgYmUgcmVuZGVyZWQsIGJ1dCBpdCBtYXkgc3RpbGwgcHJvdmlkZSBhIGJyZWFraW5nIG9wcG9y
dHVuaXR5LgotICAgICAgICAgICAgICAgIGlmICghaGFzQnJlYWsgJiYgIWNoaWxkTWF4KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhdXRvV3JhcCAmJiAoYmVnaW5XUyB8fCBlbmRXUykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXdpZHRocy5oYXNCcmVhayAmJiAhY2hpbGRNYXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG9XcmFwICYmICh3aWR0aHMuYmVnaW5XUyB8fCB3aWR0
aHMuZW5kV1MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBw
cmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVNaW4gPSAwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC00Mjk0
LDE0ICs0Mjk0LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVy
cmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAg
aWYgKCFhZGRlZFRleHRJbmRlbnQgfHwgaGFzUmVtYWluaW5nTmVnYXRpdmVUZXh0SW5kZW50KSB7
CiAgICAgICAgICAgICAgICAgICAgIHRpID0gdGV4dEluZGVudC5jZWlsVG9GbG9hdCgpOwogICAg
ICAgICAgICAgICAgICAgICBjaGlsZE1pbiArPSB0aTsKLSAgICAgICAgICAgICAgICAgICAgYmVn
aW5NaW4gKz0gdGk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1pbiArPSB0aTsK
IAogICAgICAgICAgICAgICAgICAgICAvLyBJdCB0aGUgdGV4dCBpbmRlbnQgbmVnYXRpdmUgYW5k
IGxhcmdlciB0aGFuIHRoZSBjaGlsZCBtaW5pbXVtLCB3ZSByZS11c2UgdGhlIHJlbWFpbmRlcgog
ICAgICAgICAgICAgICAgICAgICAvLyBpbiBmdXR1cmUgbWluaW11bSBjYWxjdWxhdGlvbnMsIGJ1
dCB1c2luZyB0aGUgbmVnYXRpdmUgdmFsdWUgYWdhaW4gb24gdGhlIG1heGltdW0KICAgICAgICAg
ICAgICAgICAgICAgLy8gd2lsbCBsZWFkIHRvIHVuZGVyLWNvdW50aW5nIHRoZSBtYXggcHJlZiB3
aWR0aC4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9IHRpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYmVnaW5NYXggKz0gdGk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5N
YXggKz0gdGk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTQzMTYsNDggKzQzMTYsNDggQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWwKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRJbmRl
eCA9IHN0cmlwcGluZ0JlZ2luV1MgPyByZW5kZXJUZXh0LmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJp
cHBpbmdTcGFjZXMoKSA6IDA7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGhhbmdTdGFydFdp
ZHRoID0gcmVuZGVyVGV4dC5oYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aChzdGFydEluZGV4
KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gLT0gaGFuZ1N0YXJ0V2lkdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIGJlZ2luTWluIC09IGhhbmdTdGFydFdpZHRoOworICAgICAgICAgICAg
ICAgICAgICB3aWR0aHMuYmVnaW5NaW4gLT0gaGFuZ1N0YXJ0V2lkdGg7CiAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkTWF4IC09IGhhbmdTdGFydFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBi
ZWdpbk1heCAtPSBoYW5nU3RhcnRXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmJl
Z2luTWF4IC09IGhhbmdTdGFydFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBhZGRlZFN0YXJ0
UHVuY3R1YXRpb25IYW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBicmVha2FibGUgY2hhcmFjdGVy
cyBhdCBhbGwsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB0aGlzIGlzIHRoZSBlYXN5IGNhc2Uu
IFdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAvLyBtaW4g
YW5kIG1heCBhbmQgY29udGludWUuCi0gICAgICAgICAgICAgICAgaWYgKCFoYXNCcmVha2FibGVD
aGFyKQorICAgICAgICAgICAgICAgIGlmICghd2lkdGhzLmhhc0JyZWFrYWJsZUNoYXIpCiAgICAg
ICAgICAgICAgICAgICAgIGlubGluZU1pbiArPSBjaGlsZE1pbjsKICAgICAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJyZWFrYWJsZSBjaGFyYWN0
ZXIuIE5vdyB3ZSBuZWVkIHRvIGtub3cgaWYKICAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc3Rh
cnQgYW5kIGVuZCB3aXRoIHdoaXRlc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgIGlmIChiZWdp
bldTKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aHMuYmVnaW5XUykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRW5kIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lk
dGgsIGlubGluZU1pbik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0gYmVnaW5NaW47CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmxpbmVNaW4gKz0gd2lkdGhzLmJlZ2luTWluOwogICAgICAgICAgICAgICAgICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBpbmxp
bmVNaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gLT0gdGk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSBjaGlsZE1p
bjsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoZW5kV1MpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpZHRocy5lbmRXUykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZW5k
IGluIHdoaXRlc3BhY2UsIHdoaWNoIG1lYW5zIHdlIGNhbiBlbmQgb3VyIGN1cnJlbnQgbGluZS4K
ICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRo
KG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
bGluZU1pbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVha0xpbmVBZnRl
clRleHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxX
aWR0aCwgaW5saW5lTWluKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IGVu
ZE1pbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IHdpZHRocy5lbmRNaW47
CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVha0xpbmVBZnRlclRleHQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgaWYgKGhhc0JyZWFrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlubGluZU1heCArPSBi
ZWdpbk1heDsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlubGluZU1heCArPSB3aWR0aHMuYmVnaW5NYXg7CiAgICAgICAgICAgICAg
ICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwg
aW5saW5lTWF4KTsKICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gcHJlZmVy
cmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBjaGlsZE1heCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlubGluZU1heCA9IGVuZE1heDsKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ID0gd2lk
dGhzLmVuZE1heDsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgYWRkZWRTdGFydFB1bmN0dWF0aW9uSGFuZyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlCkBAIC00Mzg4LDggKzQzODgsOCBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbAogICAgIGlmIChzdHlsZVRvVXNlLmNvbGxhcHNlV2hpdGVTcGFjZSgpKQogICAg
ICAgICBzdHJpcFRyYWlsaW5nU3BhY2UoaW5saW5lTWF4LCBpbmxpbmVNaW4sIHRyYWlsaW5nU3Bh
Y2VDaGlsZCk7CiAgICAgCi0gICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIGxhc3RU
ZXh0ICYmIGxhc3RUZXh0LT50ZXh0TGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVu
ZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNoaWxkID09IGxhc3RUZXh0ID8gbGFzdFRleHQtPmxhc3RD
aGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDogbGFzdFRleHQtPnRleHRMZW5ndGgoKSAt
IDE7CisgICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RU
ZXh0LT50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0g
dHJhaWxpbmdTcGFjZUNoaWxkID09IGxhc3RUZXh0ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJ
bmRleFN0cmlwcGluZ1NwYWNlcygpIDogbGFzdFRleHQtPnRleHQoKS5sZW5ndGgoKSAtIDE7CiAg
ICAgICAgIGZsb2F0IGVuZEhhbmdXaWR0aCA9IGxhc3RUZXh0LT5oYW5nYWJsZVB1bmN0dWF0aW9u
RW5kV2lkdGgoZW5kSW5kZXgpOwogICAgICAgICBpbmxpbmVNaW4gLT0gZW5kSGFuZ1dpZHRoOwog
ICAgICAgICBpbmxpbmVNYXggLT0gZW5kSGFuZ1dpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBiNzM2ZDRjMWRiMjdj
ZmRlMGY5NWMyMWRlMDI5ZDY4ZWQxZTZlYjA2Li4xMTAwYjZmZTJmZmNkMWUyY2E4MTM0MDM5NTlk
NDE0MTE3NzMzMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMjQ0LDE1ICsyNDQsMTMgQEAgSW5saW5lRmxvd0JveCog
UmVuZGVyQmxvY2tGbG93OjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0
IExpbmVJbmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlbmRzV2l0aEFTQ0lJU3BhY2VzKGNvbnN0
IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvcywgdW5zaWduZWQgZW5kKQor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGlubGluZSBib29sIGVuZHNX
aXRoSFRNTFNwYWNlcyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQgZW5kKQogewotICAgIHdoaWxlIChpc0FTQ0lJU3BhY2UoY2hhcmFj
dGVyc1twb3NdKSkgewotICAgICAgICBwb3MrKzsKLSAgICAgICAgaWYgKHBvcyA+PSBlbmQpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3NpdGlvbjsg
aSA8IGVuZDsgKytpKSB7CisgICAgICAgIGlmICghaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1tpXSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVy
KGNvbnN0IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucykKQEAgLTI2MCwxOCArMjU4LDE0
IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihjb25zdCBCaWRpUnVuTGlz
dDxCaWRpUnVuPiYgYmlkaVJ1bnMpCiAgICAgQmlkaVJ1biogcnVuID0gYmlkaVJ1bnMubG9naWNh
bGx5TGFzdFJ1bigpOwogICAgIGlmICghcnVuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB1
bnNpZ25lZCBwb3MgPSBydW4tPnN0b3AoKTsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyID0gcnVuLT5yZW5kZXJlcigpOwotICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIp
KQorICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQgPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PihyZW5kZXJlcik7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gcmVuZGVyVGV4dC50
ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKHBvcyA+PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgaWYgKHJlbmRlclRleHQuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlbmRzV2l0
aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQuY2hhcmFjdGVyczgoKSwgcG9zLCBsZW5ndGgpOwotICAg
IHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQuY2hhcmFjdGVyczE2KCksIHBv
cywgbGVuZ3RoKTsKKyAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocnVuLT5y
ZW5kZXJlcigpKS50ZXh0KCk7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBydW4tPnN0b3AoKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgIGlmICh0ZXh0LmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gZW5kc1dpdGhIVE1MU3BhY2VzKHRleHQuY2hhcmFjdGVyczgo
KSwgcG9zaXRpb24sIGxlbmd0aCk7CisgICAgcmV0dXJuIGVuZHNXaXRoSFRNTFNwYWNlcyh0ZXh0
LmNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVuZ3RoKTsKIH0KIAogUm9vdElubGluZUJveCog
UmVuZGVyQmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRp
UnVucywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvKQpAQCAtODg5LDcgKzg4Myw3IEBAIEJpZGlS
dW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNl
Z21lbnQoUm9vdElubGluZUJvCiAgICAgICAgICAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkg
JiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4pCiAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMoKnRoaXMsIHRleHRCb3gsIHByZXZpb3VzUnVuLCBydW4tPm5leHQo
KSwgcmVuZGVyVGV4dC5zdHJpbmdWaWV3KHJ1bi0+bV9zdGFydCwgcnVuLT5tX3N0b3ApLCBydW4t
PmJveCgpLT5kaXJlY3Rpb24oKSk7CiAKLSAgICAgICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGgg
PSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKHVuc2lnbmVkIGxl
bmd0aCA9IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFydW4tPm1fc3RhcnQgJiYgbmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJl
bmRlclRleHQuY2hhcmFjdGVyQXQocnVuLT5tX3N0YXJ0KSkpCiAgICAgICAgICAgICAgICAgICAg
IHRvdGFsTG9naWNhbFdpZHRoICs9IGxpbmVTdHlsZSgqcmVuZGVyVGV4dC5wYXJlbnQoKSwgbGlu
ZUluZm8pLmZvbnRDYXNjYWRlKCkud29yZFNwYWNpbmcoKTsKICAgICAgICAgICAgICAgICAvLyBy
dW4tPm1fc3RhcnQgPT0gcnVuLT5tX3N0b3Agc2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZmYgdGhlIHJ1
biBpcyBhIHJlcGxhY2VkIHJ1biBmb3IgYmlkaTogaXNvbGF0ZS4KQEAgLTEwNTYsMTAgKzEwNTAs
MTAgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVHJhaWxpbmdTcGFj
ZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGkKIAogICAgIGNvbnN0IFJlbmRlclRleHQmIGxh
c3RUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obGFzdE9iamVjdCk7CiAgICAgdW5zaWduZWQg
Zmlyc3RTcGFjZTsKLSAgICBpZiAobGFzdFRleHQuaXM4Qml0KCkpCi0gICAgICAgIGZpcnN0U3Bh
Y2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0ZXJz
OCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkp
OworICAgIGlmIChsYXN0VGV4dC50ZXh0KCkuaXM4Qml0KCkpCisgICAgICAgIGZpcnN0U3BhY2Ug
PSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC50ZXh0KCkuY2hhcmFj
dGVyczgoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3Rv
cCgpKTsKICAgICBlbHNlCi0gICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1Nw
YWNlKGxhc3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+
c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKKyAgICAgICAgZmlyc3RTcGFjZSA9
IGZpbmRGaXJzdFRyYWlsaW5nU3BhY2UobGFzdFRleHQsIGxhc3RUZXh0LnRleHQoKS5jaGFyYWN0
ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3Rv
cCgpKTsKIAogICAgIGlmIChmaXJzdFNwYWNlID09IHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODU0LDcgKzE4NDgsNyBAQCBSb290SW5saW5l
Qm94KiBSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0
YXRlJiBsYXlvdXRTdAogICAgICAgICAgICAgICAgIGlmICghZGlydGllZEJ5RmxvYXQgJiYgKCFw
cmV2Um9vdEJveC0+ZW5kc1dpdGhCcmVhaygpCiAgICAgICAgICAgICAgICAgICAgIHx8ICFwcmV2
Um9vdEJveC0+bGluZUJyZWFrT2JqKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKGlzPFJlbmRl
clRleHQ+KCpwcmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkpCi0gICAgICAgICAgICAgICAgICAg
ICYmIHByZXZSb290Qm94LT5saW5lQnJlYWtQb3MoKSA+PSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
cHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpKS50ZXh0TGVuZ3RoKCkpKSkgeworICAgICAgICAg
ICAgICAgICAgICAmJiBwcmV2Um9vdEJveC0+bGluZUJyZWFrUG9zKCkgPj0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSkudGV4dCgpLmxlbmd0aCgpKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGxpbmUgZGlkbid0IGJyZWFr
IGNsZWFubHkgb3IgYnJva2UgYXQgYSBuZXdsaW5lCiAgICAgICAgICAgICAgICAgICAgIC8vIHRo
YXQgaGFzIGJlZW4gZGVsZXRlZCwgc28gdHJlYXQgaXQgYXMgZGlydHkgdG9vLgogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50TGluZSA9IHByZXZSb290Qm94OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggODM4NmVhZjI4NjM1YjM5M2Y0
MzAyNGQ2MWVjOTNhZjY3NDRkZTI0ZS4uOWNmNGZiOGVkYzJhMjU4NzM3ZDQzMDA2MTdmOGU5YjM2
MjE4NmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJp
bmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRl
eHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmlu
ZVRleHRJZk5lZWRlZCgpCiAgICAgCiAgICAgR2x5cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93Owog
ICAgIGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7Ci0gICAgZmxvYXQgY29tYmlu
ZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGhvcml6b250YWxGb250LCAwLCBu
dWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3
aWR0aCgwLCB0ZXh0KCkubGVuZ3RoKCksIGhvcml6b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5
cGhPdmVyZmxvdyk7CiAKICAgICBmbG9hdCBiZXN0Rml0RGVsdGEgPSBjb21iaW5lZFRleHRXaWR0
aCAtIGVtV2lkdGg7CiAgICAgYXV0byBiZXN0Rml0RGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsK
QEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dElm
TmVlZGVkKCkKICAgICAgICAgICAgIGNvbXByZXNzZWRGb250LnVwZGF0ZShmb250U2VsZWN0b3Ip
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBnbHlwaE92
ZXJmbG93LnRvcCA9IGdseXBoT3ZlcmZsb3cucmlnaHQgPSBnbHlwaE92ZXJmbG93LmJvdHRvbSA9
IDA7Ci0gICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRl
eHRMZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsK
KyAgICAgICAgICAgIGZsb2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dCgp
Lmxlbmd0aCgpLCBjb21wcmVzc2VkRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOwog
ICAgICAgICAgICAgaWYgKHJ1bldpZHRoIDw9IGVtV2lkdGgpIHsKICAgICAgICAgICAgICAgICBj
b21iaW5lZFRleHRXaWR0aCA9IHJ1bldpZHRoOwogICAgICAgICAgICAgICAgIG1faXNDb21iaW5l
ZCA9IHRydWU7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29t
YmluZVRleHRJZk5lZWRlZCgpCiAgICAgICAgICAgICBjb21wcmVzc2VkRm9udC51cGRhdGUoZm9u
dFNlbGVjdG9yKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0
ID0gZ2x5cGhPdmVyZmxvdy50b3AgPSBnbHlwaE92ZXJmbG93LnJpZ2h0ID0gZ2x5cGhPdmVyZmxv
dy5ib3R0b20gPSAwOwotICAgICAgICAgICAgZmxvYXQgcnVuV2lkdGggPSBSZW5kZXJUZXh0Ojp3
aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGNvbXByZXNzZWRGb250LCAwLCBudWxscHRyLCAmZ2x5cGhP
dmVyZmxvdyk7CisgICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRo
KDAsIHRleHQoKS5sZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92
ZXJmbG93KTsKICAgICAgICAgICAgIGlmIChydW5XaWR0aCA8PSBlbVdpZHRoKSB7CiAgICAgICAg
ICAgICAgICAgY29tYmluZWRUZXh0V2lkdGggPSBydW5XaWR0aDsKICAgICAgICAgICAgICAgICBt
X2lzQ29tYmluZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggNTk4ZmFlOWMzMzQ1NTBlNWJhOTg0Mzc4NTI5YWQ0NWQ2ZjhiMDg3OS4uMjQwNzdm
MjA0YWJkZDA4ZTc3NmJiYjBlZTllMDFkN2E3MmI3NzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAiSFRNTEZy
YW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmgiCkBAIC02NDQ3LDcgKzY0NDgsNyBAQCBzdGF0
aWMgdm9pZCBkZXRlcm1pbmVOb25MYXllckRlc2NlbmRhbnRzUGFpbnRlZENvbnRlbnQoY29uc3Qg
UmVuZGVyRWxlbWVudCYgcmVuZAogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudXNl
clNlbGVjdCgpICE9IFNFTEVDVF9OT05FKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SGFz
UGFpbnRlZENvbnRlbnQoKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJUZXh0LnRleHQoKS0+
Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlbmRlclRleHQu
dGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpIHsKICAgICAgICAg
ICAgICAgICByZXF1ZXN0LnNldEhhc1BhaW50ZWRDb250ZW50KCk7CiAKICAgICAgICAgICAgICAg
ICBpZiAocmVxdWVzdC5uZWVkVG9EZXRlcm1pbmVTdWJwaXhlbEFudGlhbGlhc2VkVGV4dFN0YXRl
KCkgJiYgc3R5bGVIYXNTbW9vdGhpbmdUZXh0TW9kZShjaGlsZC5zdHlsZSgpKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAwMzYwY2Q3ZTZjZmU2NWU4
NTk1ZWExZWIxMWI4MmZjMGIyNzlhOWFhLi40YzRkOWFiY2I1M2EzMjY2YWNhYjk2MDMyOTMzM2E2
MTc5NmVhODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CkBAIC0xMTYsMzggKzExNiw0NiBAQCBIVE1MU2VsZWN0RWxlbWVudCYgUmVuZGVyTGlzdEJveDo6
c2VsZWN0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCitzdGF0aWMgRm9udENhc2NhZGUgYm9s
ZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCit7CisgICAg
YXV0byBkZXNjcmlwdGlvbiA9IGZvbnQuZm9udERlc2NyaXB0aW9uKCk7CisgICAgZGVzY3JpcHRp
b24uc2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEZvbnRDYXNjYWRlIHsgZGVzY3JpcHRpb24sIGZvbnQubGV0dGVyU3BhY2luZygpLCBmb250
LndvcmRTcGFjaW5nKCkgfTsKKyAgICByZXN1bHQudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0
b3IoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRh
dGVGcm9tRWxlbWVudCgpCiB7CiAgICAgaWYgKG1fb3B0aW9uc0NoYW5nZWQpIHsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5s
aXN0SXRlbXMoKTsKLSAgICAgICAgaW50IHNpemUgPSBudW1JdGVtcygpOwotICAgICAgICAKICAg
ICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbaV07
CisgICAgICAgIGF1dG8mIG5vcm1hbEZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+IGJvbGRGb250OworICAgICAgICBmb3IgKGF1
dG8qIGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAg
IFN0cmluZyB0ZXh0OwotICAgICAgICAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgp
LmZvbnRDYXNjYWRlKCk7CisgICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPGNvbnN0IEZvbnRDYXNj
YWRlJigpPiBzZWxlY3RGb250ID0gWyZub3JtYWxGb250XSAoKSAtPiBjb25zdCBGb250Q2FzY2Fk
ZSYgeworICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxGb250OworICAgICAgICAgICAgfTsK
ICAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpKQogICAgICAg
ICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRl
eHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHRleHQg
PSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0gaXRlbUZvbnQuZm9udERlc2Ny
aXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KGRlc2NyaXB0
aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnRDYXNj
YWRlKGRlc2NyaXB0aW9uLCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRT
cGFjaW5nKCkpOwotICAgICAgICAgICAgICAgIGl0ZW1Gb250LnVwZGF0ZSgmZG9jdW1lbnQoKS5m
b250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdGV4dC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwg
dGV4dCwgJyAnKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlz
IExUUj8gQ2FuJ3QgdGV4dCBkaXJlY3Rpb24gYWZmZWN0IHRoZSB3aWR0aD8KLSAgICAgICAgICAg
ICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFs
bG93VHJhaWxpbmdFeHBhbnNpb24pOwotICAgICAgICAgICAgICAgIGZsb2F0IHRleHRXaWR0aCA9
IGl0ZW1Gb250LndpZHRoKHRleHRSdW4pOwotICAgICAgICAgICAgICAgIHdpZHRoID0gc3RkOjpt
YXgod2lkdGgsIHRleHRXaWR0aCk7CisgICAgICAgICAgICAgICAgc2VsZWN0Rm9udCA9IFt0aGlz
LCAmbm9ybWFsRm9udCwgJmJvbGRGb250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWJvbGRGb250KQorICAgICAgICAgICAgICAgICAgICAgICAg
Ym9sZEZvbnQgPSBib2xkZXIoZG9jdW1lbnQoKSwgbm9ybWFsRm9udCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBib2xkRm9udC52YWx1ZSgpOworICAgICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB0ZXh0ID0gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxl
KCksIHRleHQsICcgJyk7CisgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0
UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOworICAgICAgICAgICAg
d2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgc2VsZWN0Rm9udCgpLndpZHRoKHRleHRSdW4pKTsKICAg
ICAgICAgfQotICAgICAgICBtX29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYo
d2lkdGgpKTsKKyAgICAgICAgLy8gRklYTUU6IElzIGNlaWxpbmcgcmlnaHQgaGVyZSwgb3Igc2hv
dWxkIHdlIGJlIGRvaW5nIHNvbWUga2luZCBvZiByb3VuZGluZyBpbnN0ZWFkPworICAgICAgICBt
X29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oc3RkOjpjZWlsKHdpZHRoKSk7CiAgICAg
ICAgIG1fb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgc2V0SGFz
VmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAKICAgICAgICAgY29tcHV0ZUZpcnN0SW5kZXhlc1Zp
c2libGVJblBhZGRpbmdUb3BCb3R0b21BcmVhcygpOwpAQCAtNDEyLDcgKzQyMCw3IEBAIHZvaWQg
UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFi
ZWwoKTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVt
ZW50KSkKICAgICAgICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50Pigq
bGlzdEl0ZW1FbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwotICAgIGFwcGx5VGV4dFRyYW5zZm9y
bShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsKKyAgICBpdGVtVGV4dCA9IGFwcGx5VGV4dFRyYW5z
Zm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsKIAogICAgIENvbG9yIHRleHRDb2xvciA9IGl0
ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYg
KGlzT3B0aW9uRWxlbWVudCAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVt
RWxlbWVudCkuc2VsZWN0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKaW5kZXggOGFlYTczM2ViZmE2N2EyNmRkMGFmYzk3ZGEwM2Q5ZjA0N2FlNzEw
ZC4uMjM0YTdjODkyOWJmMDFlMDZkOWNkNGIzM2Q2YzFiNWUyZjUzZTNlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAg
dm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1z
IGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGly
ZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24g
c3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOwot
ICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0
b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19M
RUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9i
dXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKICAgICAgICAgaW5uZXJTdHlsZS5z
ZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgfSBlbHNlIGlm
IChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NN
ZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50
KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7Ci0gICAgICAgIGFwcGx5VGV4dFRy
YW5zZm9ybShzdHlsZSgpLCB0ZXh0LCAnICcpOworICAgICAgICB0ZXh0ID0gYXBwbHlUZXh0VHJh
bnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7CiAgICAgICAgIGlmICh0aGVtZSgpLnBvcHVwT3B0
aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkpIHsKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgb3B0
aW9uJ3MgdGV4dCBpbmRlbnQuICBXZSBjYW4ndCBjYWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1ZXMg
Zm9yIG5vdy4KICAgICAgICAgICAgIGZsb2F0IG9wdGlvbldpZHRoID0gMDsKQEAgLTQ0NiwxOSAr
NDQ2LDE4IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQg
b3B0aW9uSW5kZXgpCiAKIFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0
SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7CisgICAgYXV0byYgbGlzdEl0ZW1z
ID0gc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0gbGlz
dEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nIGl0
ZW1TdHJpbmc7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwot
ICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIGl0ZW1T
dHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJl
bFRleHQoKTsKLSAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpKQot
ICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50
KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7Ci0KLSAgICBhcHBseVRleHRUcmFu
c2Zvcm0oc3R5bGUoKSwgaXRlbVN0cmluZywgJyAnKTsKLSAgICByZXR1cm4gaXRlbVN0cmluZzsK
KyAgICBhdXRvJiBlbGVtZW50ID0gKmxpc3RJdGVtc1tsaXN0SW5kZXhdOworICAgIGlmIChpczxI
VE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgaXRlbVN0cmluZyA9IGRvd25j
YXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CisgICAg
ZWxzZSBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBpdGVtU3Ry
aW5nID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnRleHRJbmRlbnRlZFRv
UmVzcGVjdEdyb3VwTGFiZWwoKTsKKworICAgIHJldHVybiBhcHBseVRleHRUcmFuc2Zvcm0oc3R5
bGUoKSwgaXRlbVN0cmluZywgJyAnKTsKIH0KIAogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVt
TGFiZWwodW5zaWduZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggZDJjZGY0MjRkMDc2MmRmZjAyZjkyZmUwOWE0MDI5MDZkMDk5MjIxYy4uNTYzZDJj
YTM4MmVjZGVlNmNiZjIyYmVmMWExMjU3ZGIzNmZhY2E0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVh
ZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC00NiwxMyArNDcsMTMg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFy
YWN0ZXJOYW1lcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTQxLDMyICsxNDIsMzIgQEAg
c3RhdGljIEhhc2hNYXA8Y29uc3QgUmVuZGVyVGV4dCosIFdlYWtQdHI8UmVuZGVySW5saW5lPj4m
IGlubGluZVdyYXBwZXJGb3JEaXNwbGEKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIG1ha2VD
YXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywgVUNoYXIgcHJldmlvdXMpCitTdHJpbmcgY2FwaXRh
bGl6ZShjb25zdCBTdHJpbmcmIHN0cmluZywgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpCiB7CiAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gY2hhbmdlIHRoaXMgdG8gdXNlIHVfc3RyVG9UaXRsZSBpbnN0
ZWFkIG9mIHVfdG90aXRsZSBhbmQgdG8gY29uc2lkZXIgbG9jYWxlLgogCi0gICAgaWYgKHN0cmlu
Zy0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gc3RyaW5nOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLT5s
ZW5ndGgoKTsKLSAgICBjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmdJbXBsID0gKnN0cmluZy0+aW1w
bCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBhdXRvJiBz
dHJpbmdJbXBsID0gKnN0cmluZy5pbXBsKCk7CiAKICAgICBpZiAobGVuZ3RoID49IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgQ1JBU0goKTsKIAogICAgIFN0
cmluZ0J1ZmZlcjxVQ2hhcj4gc3RyaW5nV2l0aFByZXZpb3VzKGxlbmd0aCArIDEpOwotICAgIHN0
cmluZ1dpdGhQcmV2aW91c1swXSA9IHByZXZpb3VzID09IG5vQnJlYWtTcGFjZSA/ICcgJyA6IHBy
ZXZpb3VzOworICAgIHN0cmluZ1dpdGhQcmV2aW91c1swXSA9IHByZXZpb3VzQ2hhcmFjdGVyID09
IG5vQnJlYWtTcGFjZSA/ICcgJyA6IHByZXZpb3VzQ2hhcmFjdGVyOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBsZW5ndGggKyAxOyBpKyspIHsKLSAgICAgICAgLy8gUmVwbGFjZSAmbmJz
cCB3aXRoIGEgcmVhbCBzcGFjZSBzaW5jZSBJQ1Ugbm8gbG9uZ2VyIHRyZWF0cyAmbmJzcCBhcyBh
IHdvcmQgc2VwYXJhdG9yLgorICAgICAgICAvLyBSZXBsYWNlIE5PIEJSRUFLIFNQQUNFIHdpdGgg
YSByZWFsIHNwYWNlIHNpbmNlIElDVSBkb2VzIG5vdCB0cmVhdCBpdCBhcyBhIHdvcmQgc2VwYXJh
dG9yLgogICAgICAgICBpZiAoc3RyaW5nSW1wbFtpIC0gMV0gPT0gbm9CcmVha1NwYWNlKQogICAg
ICAgICAgICAgc3RyaW5nV2l0aFByZXZpb3VzW2ldID0gJyAnOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9
CiAKLSAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAg
ICBhdXRvKiBib3VuZGFyeSA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nV2l0
aFByZXZpb3VzLmNoYXJhY3RlcnMoKSwgbGVuZ3RoICsgMSkpOwogICAgIGlmICghYm91bmRhcnkp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKIAogICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKQEAgLTE4
MCw3ICsxODEsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywgVUNoYXIg
cHJldmlvdXMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0cmluZ0ltcGxbaSAtIDFdKTsK
ICAgICB9CiAKLSAgICAqc3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpOwogfQogCiBpbmxpbmUgUmVuZGVyVGV4dDo6UmVuZGVyVGV4dChOb2Rl
JiBub2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCkBAIC0xODgsMjQgKzE4OSwxNyBAQCBpbmxpbmUg
UmVuZGVyVGV4dDo6UmVuZGVyVGV4dChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAg
ICAgLCBtX2hhc1RhYihmYWxzZSkKICAgICAsIG1fbGluZXNEaXJ0eShmYWxzZSkKICAgICAsIG1f
Y29udGFpbnNSZXZlcnNlZFRleHQoZmFsc2UpCi0gICAgLCBtX2lzQWxsQVNDSUkodGV4dC5jb250
YWluc09ubHlBU0NJSSgpKQorICAgICwgbV9pc0FsbEFTQ0lJKHRleHQuaW1wbCgpLT5pc0FsbEFT
Q0lJKCkpCiAgICAgLCBtX2tub3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tGb250cyhm
YWxzZSkKICAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2woZmFsc2UpCiAgICAgLCBtX29y
aWdpbmFsVGV4dERpZmZlcnNGcm9tUmVuZGVyZWQoZmFsc2UpCiAgICAgLCBtX2hhc0lubGluZVdy
YXBwZXJGb3JEaXNwbGF5Q29udGVudHMoZmFsc2UpCi0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKLSAgICAsIG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgwKQotI2VuZGlmCi0gICAgLCBt
X21pbldpZHRoKC0xKQotICAgICwgbV9tYXhXaWR0aCgtMSkKLSAgICAsIG1fYmVnaW5NaW5XaWR0
aCgwKQotICAgICwgbV9lbmRNaW5XaWR0aCgwKQogICAgICwgbV90ZXh0KHRleHQpCiB7CiAgICAg
QVNTRVJUKCFtX3RleHQuaXNOdWxsKCkpOwogICAgIHNldElzVGV4dCgpOwogICAgIG1fY2FuVXNl
U2ltcGxlRm9udENvZGVQYXRoID0gY29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpOwot
ICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5pbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5Q2hhcmFjdGVy
Q291bnQodGV4dExlbmd0aCgpKTsKKyAgICB2aWV3KCkuZnJhbWVWaWV3KCkuaW5jcmVtZW50Vmlz
dWFsbHlOb25FbXB0eUNoYXJhY3RlckNvdW50KHRleHQuaW1wbCgpLT5sZW5ndGgoKSk7CiB9CiAK
IFJlbmRlclRleHQ6OlJlbmRlclRleHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4
dCkKQEAgLTQ2MCw3ICs0NTQsNyBAQCBQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICBpZiAoc2ltcGxlTGluZUxheW91dCgp
ICYmIHBhcmVudCgpLT5maXJzdENoaWxkKCkgPT0gcGFyZW50KCktPmxhc3RDaGlsZCgpKSB7CiAg
ICAgICAgIGF1dG8gb2Zmc2V0ID0gU2ltcGxlTGluZUxheW91dDo6dGV4dE9mZnNldEZvclBvaW50
KHBvaW50LCAqdGhpcywgKnNpbXBsZUxpbmVMYXlvdXQoKSk7CiAgICAgICAgIC8vIERpZCBub3Qg
ZmluZCBhIHZhbGlkIG9mZnNldC4gRmFsbCBiYWNrIHRvIHRoZSBub3JtYWwgbGluZSBsYXlvdXQg
YmFzZWQgUG9zaXRpb24uCi0gICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dExlbmd0aCgpKQorICAg
ICAgICBpZiAob2Zmc2V0ID09IHRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAg
ICBhdXRvIHBvc2l0aW9uID0gUG9zaXRpb24odGV4dE5vZGUoKSwgb2Zmc2V0KTsKICAgICAgICAg
QVNTRVJUKHBvc2l0aW9uID09IHBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBF
cXVpdmFsZW50KCkpOwpAQCAtNDk3LDEwICs0OTEsOCBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IFJl
bmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCB1bnNpZ25lZCBz
dAogICAgICAgICBmbG9hdCBtb25vc3BhY2VDaGFyYWN0ZXJXaWR0aCA9IGYuc3BhY2VXaWR0aCgp
OwogICAgICAgICBmbG9hdCB3ID0gMDsKICAgICAgICAgYm9vbCBpc1NwYWNlOwotICAgICAgICBB
U1NFUlQobV90ZXh0KTsKLSAgICAgICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgbGVuOyBpKysp
IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHRleHRbaV07CisgICAgICAgICAgICBjaGFyIGMgPSB0
ZXh0KClbaV07CiAgICAgICAgICAgICBpZiAoYyA8PSAnICcpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYyA9PSAnICcgfHwgYyA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgIHcgKz0gbW9u
b3NwYWNlQ2hhcmFjdGVyV2lkdGg7CkBAIC01NDQsNDEgKzUzNiwzMSBAQCBpbmxpbmUgYm9vbCBp
c0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVFbmQoVUNoYXIgYykKIAogZmxvYXQgUmVuZGVyVGV4
dDo6aGFuZ2FibGVQdW5jdHVhdGlvblN0YXJ0V2lkdGgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7
Ci0gICAgdW5zaWduZWQgbGVuID0gdGV4dExlbmd0aCgpOwotICAgIGlmICghbGVuIHx8IGluZGV4
ID49IGxlbikKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0KCkubGVuZ3RoKCk7CisgICAgaWYg
KGluZGV4ID49IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBU1NFUlQobV90ZXh0
KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgCi0gICAgaWYg
KCFpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVTdGFydCh0ZXh0W2luZGV4XSkpCisgICAgaWYg
KCFpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVTdGFydCh0ZXh0KClbaW5kZXhdKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHls
ZSgpOwotICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsK
LSAgICAgICAgCi0gICAgcmV0dXJuIHdpZHRoRnJvbUNhY2hlKGZvbnQsIGluZGV4LCAxLCAwLCAw
LCAwLCBzdHlsZSk7CisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIHJldHVy
biB3aWR0aEZyb21DYWNoZShzdHlsZS5mb250Q2FzY2FkZSgpLCBpbmRleCwgMSwgMCwgMCwgMCwg
c3R5bGUpOwogfQogCiBmbG9hdCBSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lk
dGgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgbGVuID0gdGV4dExlbmd0
aCgpOwotICAgIGlmICghbGVuIHx8IGluZGV4ID49IGxlbikKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0ZXh0KCkubGVuZ3RoKCk7CisgICAgaWYgKGluZGV4ID49IGxlbmd0aCkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9
ICptX3RleHQuaW1wbCgpOwogCi0gICAgaWYgKCFpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVF
bmQodGV4dFtpbmRleF0pKQorICAgIGlmICghaXNIYW5nYWJsZVB1bmN0dWF0aW9uQXRMaW5lRW5k
KHRleHQoKVtpbmRleF0pKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsKLSAgICAKLSAgICByZXR1cm4gd2lkdGhGcm9tQ2Fj
aGUoZm9udCwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKKworICAgIGF1dG8mIHN0eWxlID0g
dGhpcy0+c3R5bGUoKTsKKyAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUoc3R5bGUuZm9udENhc2Nh
ZGUoKSwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKIH0KIAotYm9vbCBSZW5kZXJUZXh0Ojpp
c0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNoYXIgYykgY29uc3QKK2Jvb2wgUmVuZGVyVGV4dDo6aXNI
YW5nYWJsZVN0b3BPckNvbW1hKFVDaGFyIGMpCiB7CiAgICAgcmV0dXJuIGMgPT0gMHgwMDJDIHx8
IGMgPT0gMHgwMDJFIHx8IGMgPT0gMHgwNjBDIHx8IGMgPT0gMHgwNkQ0IHx8IGMgPT0gMHgzMDAx
CiAgICAgICAgIHx8IGMgPT0gMHgzMDAyIHx8IGMgPT0gMHhGRjBDIHx8IGMgPT0gMHhGRjBFIHx8
IGMgPT0gMHhGRTUwIHx8IGMgPT0gMHhGRTUxCkBAIC01ODksMTMgKzU3MSwxMCBAQCB1bnNpZ25l
ZCBSZW5kZXJUZXh0OjpmaXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QK
IHsKICAgICBpZiAoIXN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAq
bV90ZXh0LmltcGwoKTsKLSAgICAKKwogICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIGZvciAoIDsg
aSA8IHRleHRMZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICh0ZXh0W2ldICE9ICcgJyAmJiAo
dGV4dFtpXSAhPSAnXG4nIHx8IHN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCkpICYmIHRleHRbaV0g
IT0gJ1x0JykKKyAgICBmb3IgKHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKSA7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAodGV4dCgpW2ldICE9ICcgJyAmJiAodGV4dCgp
W2ldICE9ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkgJiYgdGV4dCgpW2ldICE9
ICdcdCcpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGk7CkBAIC02MDMs
MTEwICs1ODIsOTcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Zmlyc3RDaGFyYWN0ZXJJbmRleFN0
cmlwcGluZ1NwYWNlcygpIGNvbnN0CiAKIHVuc2lnbmVkIFJlbmRlclRleHQ6Omxhc3RDaGFyYWN0
ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCF0ZXh0TGVuZ3RoKCkp
CisgICAgaWYgKCF0ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KCFzdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKQotICAgICAgICByZXR1cm4gdGV4dExlbmd0
aCgpIC0gMTsKLSAgICAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0
ID0gKm1fdGV4dC5pbXBsKCk7CisgICAgICAgIHJldHVybiB0ZXh0KCkubGVuZ3RoKCkgLSAxOwog
ICAgIAotICAgIGludCBpID0gdGV4dExlbmd0aCgpIC0gMTsKKyAgICBpbnQgaSA9IHRleHQoKS5s
ZW5ndGgoKSAtIDE7CiAgICAgZm9yICggOyBpICA+PSAwOyAtLWkpIHsKLSAgICAgICAgaWYgKHRl
eHRbaV0gIT0gJyAnICYmICh0ZXh0W2ldICE9ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5ld2xp
bmUoKSkgJiYgdGV4dFtpXSAhPSAnXHQnKQorICAgICAgICBpZiAodGV4dCgpW2ldICE9ICcgJyAm
JiAodGV4dCgpW2ldICE9ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkgJiYgdGV4
dCgpW2ldICE9ICdcdCcpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGk7
CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZXaWR0aHMoZmxvYXQgbGVhZFdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgYmVnaW5NaW5XLCBi
b29sJiBiZWdpbldTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYg
ZW5kTWluVywgYm9vbCYgZW5kV1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wmIGhhc0JyZWFrYWJsZUNoYXIsIGJvb2wmIGhhc0JyZWFrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCYgYmVnaW5NYXhXLCBmbG9hdCYgZW5kTWF4VywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIG1pblcsIGZsb2F0JiBtYXhX
LCBib29sJiBzdHJpcEZyb250U3BhY2VzKQorUmVuZGVyVGV4dDo6V2lkdGhzIFJlbmRlclRleHQ6
OnRyaW1tZWRQcmVmZXJyZWRXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBib29sJiBzdHJpcEZyb250
U3BhY2VzKQogewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7
CisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwogICAgIGJvb2wgY29sbGFwc2VXaGl0
ZVNwYWNlID0gc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CisKICAgICBpZiAoIWNvbGxhcHNl
V2hpdGVTcGFjZSkKICAgICAgICAgc3RyaXBGcm9udFNwYWNlcyA9IGZhbHNlOwogCiAgICAgaWYg
KG1faGFzVGFiIHx8IHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpKQogICAgICAgICBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhsZWFkV2lkdGgpOwogCi0gICAgYmVnaW5XUyA9ICFz
dHJpcEZyb250U3BhY2VzICYmIG1faGFzQmVnaW5XUzsKLSAgICBlbmRXUyA9IG1faGFzRW5kV1M7
CisgICAgV2lkdGhzIHdpZHRoczsKIAotICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5ndGgoKTsK
KyAgICB3aWR0aHMuYmVnaW5XUyA9ICFzdHJpcEZyb250U3BhY2VzICYmIG1faGFzQmVnaW5XUzsK
KyAgICB3aWR0aHMuZW5kV1MgPSBtX2hhc0VuZFdTOwogCi0gICAgaWYgKCFsZW4gfHwgKHN0cmlw
RnJvbnRTcGFjZXMgJiYgdGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpKSB7Ci0gICAg
ICAgIGJlZ2luTWluVyA9IDA7Ci0gICAgICAgIGVuZE1pblcgPSAwOwotICAgICAgICBiZWdpbk1h
eFcgPSAwOwotICAgICAgICBlbmRNYXhXID0gMDsKLSAgICAgICAgbWluVyA9IDA7Ci0gICAgICAg
IG1heFcgPSAwOwotICAgICAgICBoYXNCcmVhayA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwogCi0gICAgbWluVyA9
IG1fbWluV2lkdGg7Ci0gICAgbWF4VyA9IG1fbWF4V2lkdGg7CisgICAgaWYgKCFsZW5ndGggfHwg
KHN0cmlwRnJvbnRTcGFjZXMgJiYgdGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1M
U3BhY2U+KCkpKQorICAgICAgICByZXR1cm4gd2lkdGhzOwogCi0gICAgYmVnaW5NaW5XID0gbV9i
ZWdpbk1pbldpZHRoOwotICAgIGVuZE1pblcgPSBtX2VuZE1pbldpZHRoOworICAgIHdpZHRocy5t
aW4gPSBtX21pbldpZHRoOworICAgIHdpZHRocy5tYXggPSBtX21heFdpZHRoOwogCi0gICAgaGFz
QnJlYWthYmxlQ2hhciA9IG1faGFzQnJlYWthYmxlQ2hhcjsKLSAgICBoYXNCcmVhayA9IG1faGFz
QnJlYWs7CisgICAgd2lkdGhzLmJlZ2luTWluID0gbV9iZWdpbk1pbldpZHRoOworICAgIHdpZHRo
cy5lbmRNaW4gPSBtX2VuZE1pbldpZHRoOwogCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3Ry
aW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIGlmICh0ZXh0WzBdID09IHNwYWNl
IHx8ICh0ZXh0WzBdID09IG5ld2xpbmVDaGFyYWN0ZXIgJiYgIXN0eWxlLnByZXNlcnZlTmV3bGlu
ZSgpKSB8fCB0ZXh0WzBdID09ICdcdCcpIHsKLSAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxp
bmUuCi0gICAgICAgIGlmIChzdHJpcEZyb250U3BhY2VzKSB7Ci0gICAgICAgICAgICBmbG9hdCBz
cGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmc3Bh
Y2UsIDEsIHN0eWxlKSk7Ci0gICAgICAgICAgICBtYXhXIC09IHNwYWNlV2lkdGg7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbWF4VyArPSBmb250LndvcmRTcGFjaW5nKCk7CisgICAgd2lk
dGhzLmhhc0JyZWFrYWJsZUNoYXIgPSBtX2hhc0JyZWFrYWJsZUNoYXI7CisgICAgd2lkdGhzLmhh
c0JyZWFrID0gbV9oYXNCcmVhazsKKworICAgIGlmICh0ZXh0KClbMF0gPT0gJyAnIHx8ICh0ZXh0
KClbMF0gPT0gJ1xuJyAmJiAhc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRleHQoKVswXSA9
PSAnXHQnKSB7CisgICAgICAgIGF1dG8mIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBG
SVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUuCisgICAgICAgIGlmIChzdHJpcEZyb250U3Bh
Y2VzKQorICAgICAgICAgICAgd2lkdGhzLm1heCAtPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgc3R5bGUpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgd2lkdGhzLm1heCArPSBmb250LndvcmRTcGFjaW5nKCk7CiAgICAgfQogCiAgICAgc3Ry
aXBGcm9udFNwYWNlcyA9IGNvbGxhcHNlV2hpdGVTcGFjZSAmJiBtX2hhc0VuZFdTOwogCi0gICAg
aWYgKCFzdHlsZS5hdXRvV3JhcCgpIHx8IG1pblcgPiBtYXhXKQotICAgICAgICBtaW5XID0gbWF4
VzsKKyAgICBpZiAoIXN0eWxlLmF1dG9XcmFwKCkpCisgICAgICAgIHdpZHRocy5taW4gPSBzdGQ6
Om1pbih3aWR0aHMubWluLCB3aWR0aHMubWF4KTsKIAogICAgIC8vIENvbXB1dGUgb3VyIG1heCB3
aWR0aHMgYnkgc2Nhbm5pbmcgdGhlIHN0cmluZyBmb3IgbmV3bGluZXMuCi0gICAgaWYgKGhhc0Jy
ZWFrKSB7Ci0gICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmID0gc3R5bGUuZm9udENhc2NhZGUo
KTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgorICAgIGlmICh3aWR0aHMuaGFz
QnJlYWspIHsKKyAgICAgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJ
WE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICAgICAgYm9vbCBmaXJzdExpbmUgPSB0
cnVlOwotICAgICAgICBiZWdpbk1heFcgPSBtYXhXOwotICAgICAgICBlbmRNYXhXID0gbWF4VzsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBsaW5lbGVuID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChpICsgbGluZWxlbiA8
IGxlbiAmJiB0ZXh0W2kgKyBsaW5lbGVuXSAhPSAnXG4nKQotICAgICAgICAgICAgICAgIGxpbmVs
ZW4rKzsKLQotICAgICAgICAgICAgaWYgKGxpbmVsZW4pIHsKLSAgICAgICAgICAgICAgICBlbmRN
YXhXID0gd2lkdGhGcm9tQ2FjaGUoZiwgaSwgbGluZWxlbiwgbGVhZFdpZHRoICsgZW5kTWF4Vywg
MCwgMCwgc3R5bGUpOworICAgICAgICB3aWR0aHMuYmVnaW5NYXggPSB3aWR0aHMubWF4OworICAg
ICAgICB3aWR0aHMuZW5kTWF4ID0gd2lkdGhzLm1heDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaW5lTGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChpICsgbGluZUxlbmd0aCA8IGxlbmd0aCAmJiB0ZXh0
KClbaSArIGxpbmVMZW5ndGhdICE9ICdcbicpCisgICAgICAgICAgICAgICAgbGluZUxlbmd0aCsr
OworCisgICAgICAgICAgICBpZiAobGluZUxlbmd0aCkgeworICAgICAgICAgICAgICAgIHdpZHRo
cy5lbmRNYXggPSB3aWR0aEZyb21DYWNoZShmb250LCBpLCBsaW5lTGVuZ3RoLCBsZWFkV2lkdGgg
KyB3aWR0aHMuZW5kTWF4LCAwLCAwLCBzdHlsZSk7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0
TGluZSkgewogICAgICAgICAgICAgICAgICAgICBmaXJzdExpbmUgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgbGVhZFdpZHRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgYmVnaW5NYXhX
ID0gZW5kTWF4VzsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4ID0gd2lkdGhz
LmVuZE1heDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaSArPSBsaW5lbGVu
OworICAgICAgICAgICAgICAgIGkgKz0gbGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZmlyc3RMaW5lKSB7Ci0gICAgICAgICAgICAgICAgYmVnaW5NYXhXID0gMDsKKyAgICAgICAg
ICAgICAgICB3aWR0aHMuYmVnaW5NYXggPSAwOwogICAgICAgICAgICAgICAgIGZpcnN0TGluZSA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGxlYWRXaWR0aCA9IDA7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChpID09IGxlbiAtIDEpCisgICAgICAgICAgICBpZiAoaSA9PSBsZW5n
dGggLSAxKSB7CiAgICAgICAgICAgICAgICAgLy8gQSA8cHJlPiBydW4gdGhhdCBlbmRzIHdpdGgg
YSBuZXdsaW5lLCBhcyBpbiwgZS5nLiwKICAgICAgICAgICAgICAgICAvLyA8cHJlPlNvbWUgdGV4
dFxuXG48c3Bhbj5Nb3JlIHRleHQ8L3ByZT4KLSAgICAgICAgICAgICAgICBlbmRNYXhXID0gMDsK
KyAgICAgICAgICAgICAgICB3aWR0aHMuZW5kTWF4ID0gMDsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KKworICAgIHJldHVybiB3aWR0aHM7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShVQ2hhciBjLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCkBAIC04MjAsMTIgKzc4NiwxMyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgIG1f
aGFzQmVnaW5XUyA9IGZhbHNlOwogICAgIG1faGFzRW5kV1MgPSBmYWxzZTsKIAotICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZp
cnN0LWxpbmUuCisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIGF1dG8mIGZv
bnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxp
bmUuCiAgICAgZmxvYXQgd29yZFNwYWNpbmcgPSBmb250LndvcmRTcGFjaW5nKCk7Ci0gICAgdW5z
aWduZWQgbGVuID0gdGV4dExlbmd0aCgpOworICAgIGF1dG8mIHN0cmluZyA9IHRleHQoKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgYXV0byBpdGVyYXRvck1v
ZGUgPSBtYXBMaW5lQnJlYWtUb0l0ZXJhdG9yTW9kZShzdHlsZS5saW5lQnJlYWsoKSk7Ci0gICAg
TGF6eUxpbmVCcmVha0l0ZXJhdG9yIGJyZWFrSXRlcmF0b3IobV90ZXh0LCBzdHlsZS5sb2NhbGUo
KSwgaXRlcmF0b3JNb2RlKTsKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRv
cihzdHJpbmcsIHN0eWxlLmxvY2FsZSgpLCBpdGVyYXRvck1vZGUpOwogICAgIGJvb2wgbmVlZHNX
b3JkU3BhY2luZyA9IGZhbHNlOwogICAgIGJvb2wgaWdub3JpbmdTcGFjZXMgPSBmYWxzZTsKICAg
ICBib29sIGlzU3BhY2UgPSBmYWxzZTsKQEAgLTg2Miw4ICs4MjksOCBAQCB2b2lkIFJlbmRlclRl
eHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNl
dDxjb25zdCBGbwogICAgIGJvb2wga2VlcEFsbFdvcmRzID0gc3R5bGUud29yZEJyZWFrKCkgPT0g
S2VlcEFsbFdvcmRCcmVhazsKICAgICBib29sIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0ID0gaXRl
cmF0b3JNb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdDsKIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBVQ2hhciBjID0gdW5jaGVj
a2VkQ2hhcmFjdGVyQXQoaSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgIFVDaGFyIGMgPSBzdHJpbmdbaV07CiAKICAgICAgICAgYm9vbCBwcmV2
aW91c0NoYXJhY3RlcklzU3BhY2UgPSBpc1NwYWNlOwogCkBAIC04ODYsNyArODUzLDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNOZXdsaW5l
KSAmJiAhaSkKICAgICAgICAgICAgIG1faGFzQmVnaW5XUyA9IHRydWU7Ci0gICAgICAgIGlmICgo
aXNTcGFjZSB8fCBpc05ld2xpbmUpICYmIGkgPT0gbGVuIC0gMSkKKyAgICAgICAgaWYgKChpc1Nw
YWNlIHx8IGlzTmV3bGluZSkgJiYgaSA9PSBsZW5ndGggLSAxKQogICAgICAgICAgICAgbV9oYXNF
bmRXUyA9IHRydWU7CiAKICAgICAgICAgaWdub3JpbmdTcGFjZXMgfD0gc3R5bGUuY29sbGFwc2VX
aGl0ZVNwYWNlKCkgJiYgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGlzU3BhY2U7CkBAIC05
MTEsOSArODc4LDkgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgdW5zaWduZWQg
aiA9IGk7CiAgICAgICAgIHdoaWxlIChjICE9ICdcbicgJiYgIWlzU3BhY2VBY2NvcmRpbmdUb1N0
eWxlKGMsIHN0eWxlKSAmJiBjICE9ICdcdCcgJiYgKGMgIT0gc29mdEh5cGhlbiB8fCBzdHlsZS5o
eXBoZW5zKCkgPT0gSHlwaGVuc05vbmUpKSB7CiAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAg
ICBpZiAoaiA9PSBsZW4pCisgICAgICAgICAgICBpZiAoaiA9PSBsZW5ndGgpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjID0gdW5jaGVja2VkQ2hhcmFjdGVyQXQoaik7Cisg
ICAgICAgICAgICBjID0gc3RyaW5nW2pdOwogICAgICAgICAgICAgaWYgKGlzQnJlYWthYmxlKGJy
ZWFrSXRlcmF0b3IsIGosIG5leHRCcmVha2FibGUsIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFr
U2hvcnRjdXQsIGtlZXBBbGxXb3JkcykgJiYgY2hhcmFjdGVyQXQoaiAtIDEpICE9IHNvZnRIeXBo
ZW4pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoYnJlYWtBbGwpIHsK
QEAgLTkyNSw3ICs4OTIsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICB1bnNp
Z25lZCB3b3JkTGVuID0gaiAtIGk7CiAgICAgICAgIGlmICh3b3JkTGVuKSB7CiAgICAgICAgICAg
ICBmbG9hdCBjdXJyTWluV2lkdGggPSAwOwotICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGog
PCBsZW4pICYmIGlzU3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKKyAgICAgICAgICAg
IGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuZ3RoKSAmJiBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShj
LCBzdHlsZSk7CiAgICAgICAgICAgICBmbG9hdCB3OwogICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAgIGlmIChpc1NwYWNl
KQpAQCAtOTQwLDcgKzkwNyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAgICAg
ICAgIGlmICh3ID4gbWF4V29yZFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3Vm
Zml4U3RhcnQ7Ci0gICAgICAgICAgICAgICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IG1heFdv
cmRGcmFnbWVudFdpZHRoKCp0aGlzLCBzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhtX3RleHQpLnN1
YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZpeExl
bmd0aCwgc3VmZml4U3RhcnQsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOworICAgICAg
ICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgq
dGhpcywgc3R5bGUsIGZvbnQsIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoaSwgd29yZExl
biksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0
LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIAogICAgICAgICAgICAgICAgIGlmIChz
dWZmaXhTdGFydCkgewogICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdWZmaXhXaWR0aDsKQEAg
LTk3MywxMyArOTQwLDEzIEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICAg
ICAgbGFzdFdvcmRCb3VuZGFyeSA9IGo7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGJv
b2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UgPSAoaiA8IGxlbikgJiYgc3R5bGUuaXNDb2xsYXBz
aWJsZVdoaXRlU3BhY2UoYyk7Ci0gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBzdHlsZS5hdXRv
V3JhcCgpKQorICAgICAgICAgICAgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSA9IChqIDwg
bGVuZ3RoKSAmJiBzdHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShjKTsKKyAgICAgICAgICAg
IGlmIChqIDwgbGVuZ3RoICYmIHN0eWxlLmF1dG9XcmFwKCkpCiAgICAgICAgICAgICAgICAgbV9o
YXNCcmVha2FibGVDaGFyID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gQWRkIGluIHdvcmRTcGFj
aW5nIHRvIG91ciBjdXJyTWF4V2lkdGgsIGJ1dCBub3QgaWYgdGhpcyBpcyB0aGUgbGFzdCB3b3Jk
IG9uIGEgbGluZSBvciB0aGUKICAgICAgICAgICAgIC8vIGxhc3Qgd29yZCBpbiB0aGUgcnVuLgot
ICAgICAgICAgICAgaWYgKChpc1NwYWNlIHx8IGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKSAmJiAh
Y29udGFpbnNPbmx5V2hpdGVzcGFjZShqLCBsZW4taikpCisgICAgICAgICAgICBpZiAoKGlzU3Bh
Y2UgfHwgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UpICYmICFjb250YWluc09ubHlIVE1MV2hpdGVz
cGFjZShqLCBsZW5ndGggLSBqKSkKICAgICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29y
ZFNwYWNpbmc7CiAKICAgICAgICAgICAgIGlmIChmaXJzdFdvcmQpIHsKQEAgLTEwMjAsNyArOTg3
LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9h
dCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgICAgICAgICAgICAgIGN1cnJNYXhX
aWR0aCArPSBmb250LndpZHRoKHJ1biwgJmZhbGxiYWNrRm9udHMpOwogICAgICAgICAgICAgICAg
IGdseXBoT3ZlcmZsb3cucmlnaHQgPSAwOwotICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNp
bmcgPSBpc1NwYWNlICYmICFwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgJiYgaSA9PSBsZW4gLSAx
OworICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSBpc1NwYWNlICYmICFwcmV2aW91
c0NoYXJhY3RlcklzU3BhY2UgJiYgaSA9PSBsZW5ndGggLSAxOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgQVNTRVJUKGxhc3RXb3JkQm91bmRhcnkgPT0gaSk7CiAgICAgICAgICAgICBsYXN0
V29yZEJvdW5kYXJ5Kys7CkBAIC0xMDI5LDcgKzk5Niw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0
IEZvCiAKICAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZh
bHVlX29yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKLSAgICBpZiAoKG5lZWRzV29yZFNwYWNpbmcg
JiYgbGVuID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQorICAgIGlmICgo
bmVlZHNXb3JkU3BhY2luZyAmJiBsZW5ndGggPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZp
cnN0V29yZCkpCiAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKIAogICAgIG1f
bWF4V2lkdGggPSBzdGQ6Om1heChjdXJyTWF4V2lkdGgsIG1fbWF4V2lkdGgpOwpAQCAtMTA0Niwz
MyArMTAxMywzOSBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgIHNldFByZWZlcnJlZExv
Z2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGV4dDo6aXNBbGxDb2xs
YXBzaWJsZVdoaXRlc3BhY2UoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGlubGluZSBib29sIGlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxl
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dExlbmd0aCgpOwotICAgIGlmIChpczhCaXQo
KSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIGlmICghc3R5bGUuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoY2hhcmFjdGVyczgo
KVtpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICBpZiAoIXN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnNb
aV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBSZW5kZXJUZXh0Ojppc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZSgpIGNvbnN0
Cit7CisgICAgaWYgKHRleHQoKS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omlz
QWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKHRleHQoKS5jaGFyYWN0ZXJzOCgpLCB0ZXh0KCkubGVu
Z3RoKCksIHN0eWxlKCkpOworICAgIHJldHVybiBXZWJDb3JlOjppc0FsbENvbGxhcHNpYmxlV2hp
dGVzcGFjZSh0ZXh0KCkuY2hhcmFjdGVyczE2KCksIHRleHQoKS5sZW5ndGgoKSwgc3R5bGUoKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBpbmxpbmUgYm9v
bCBpc0FsbFBvc3NpYmx5Q29sbGFwc2libGVXaGl0ZXNwYWNlKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFzdHlsZS5pc0NvbGxhcHNpYmxlV2hp
dGVTcGFjZShjaGFyYWN0ZXJzMTYoKVtpXSkpCisgICAgICAgIGlmICghKGNoYXJhY3RlcnNbaV0g
PT0gJ1xuJyB8fCBjaGFyYWN0ZXJzW2ldID09ICcgJyB8fCBjaGFyYWN0ZXJzW2ldID09ICdcdCcp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
LSAgICAKLWJvb2wgUmVuZGVyVGV4dDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSh1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBsZW4pIGNvbnN0CisKK2Jvb2wgUmVuZGVyVGV4dDo6Y29udGFpbnNPbmx5
SFRNTFdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewot
ICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwo
KTsKLSAgICB1bnNpZ25lZCBjdXJyUG9zOwotICAgIGZvciAoY3VyclBvcyA9IGZyb207Ci0gICAg
ICAgICBjdXJyUG9zIDwgZnJvbSArIGxlbiAmJiAodGV4dFtjdXJyUG9zXSA9PSAnXG4nIHx8IHRl
eHRbY3VyclBvc10gPT0gJyAnIHx8IHRleHRbY3VyclBvc10gPT0gJ1x0Jyk7Ci0gICAgICAgICBj
dXJyUG9zKyspIHsgfQotICAgIHJldHVybiBjdXJyUG9zID49IChmcm9tICsgbGVuKTsKKyAgICBB
U1NFUlQoZnJvbSA8PSB0ZXh0KCkubGVuZ3RoKCkpOworICAgIEFTU0VSVChsZW5ndGggPD0gdGV4
dCgpLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoZnJvbSArIGxlbmd0aCA8PSB0ZXh0KCkubGVuZ3Ro
KCkpOworICAgIGlmICh0ZXh0KCkuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBpc0FsbFBvc3Np
Ymx5Q29sbGFwc2libGVXaGl0ZXNwYWNlKHRleHQoKS5jaGFyYWN0ZXJzOCgpICsgZnJvbSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hpdGVzcGFjZSh0ZXh0
KCkuY2hhcmFjdGVyczE2KCkgKyBmcm9tLCBsZW5ndGgpOwogfQogCiBWZWN0b3I8c3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4+IFJlbmRlclRleHQ6OmRyYWdnZWRDb250ZW50UmFuZ2VzQmV0
d2Vlbk9mZnNldHModW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29u
c3QKQEAgLTExMjMsNDQgKzEwOTYsMzYgQEAgdm9pZCBSZW5kZXJUZXh0OjpzZXRTZWxlY3Rpb25T
dGF0ZShTZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRT
ZWxlY3Rpb25TdGF0ZShzdGF0ZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6c2V0VGV4dFdpdGhP
ZmZzZXQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbiwg
Ym9vbCBmb3JjZSkKK3ZvaWQgUmVuZGVyVGV4dDo6c2V0VGV4dFdpdGhPZmZzZXQoY29uc3QgU3Ry
aW5nJiBuZXdUZXh0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBmb3Jj
ZSkKIHsKLSAgICBpZiAoIWZvcmNlICYmIG1fdGV4dCA9PSB0ZXh0KQorICAgIGlmICghZm9yY2Ug
JiYgdGV4dCgpID09IG5ld1RleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBkZWx0YSA9
IHRleHQubGVuZ3RoKCkgLSB0ZXh0TGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgZW5kID0gbGVuID8g
b2Zmc2V0ICsgbGVuIC0gMSA6IG9mZnNldDsKKyAgICBpbnQgZGVsdGEgPSBuZXdUZXh0Lmxlbmd0
aCgpIC0gdGV4dCgpLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGVuZCA9IGxlbmd0aCA/IG9mZnNl
dCArIGxlbmd0aCAtIDEgOiBvZmZzZXQ7CiAKICAgICBtX2xpbmVzRGlydHkgPSBzaW1wbGVMaW5l
TGF5b3V0KCkgfHwgbV9saW5lQm94ZXMuZGlydHlSYW5nZSgqdGhpcywgb2Zmc2V0LCBlbmQsIGRl
bHRhKTsKIAotICAgIHNldFRleHQodGV4dCwgZm9yY2UgfHwgbV9saW5lc0RpcnR5KTsKKyAgICBz
ZXRUZXh0KG5ld1RleHQsIGZvcmNlIHx8IG1fbGluZXNEaXJ0eSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0lubGluZUZsb3dPckVtcHR5VGV4dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyKQogewotICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKCFpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBTdHJpbmdJbXBsKiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
cmVuZGVyZXIpLnRleHQoKTsKLSAgICBpZiAoIXRleHQpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiAhdGV4dC0+bGVuZ3RoKCk7CisgICAgcmV0dXJuIGlzPFJlbmRlcklubGluZT4o
cmVuZGVyZXIpIHx8IChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpLnRleHQoKS5pc0VtcHR5KCkpOwogfQogCiBVQ2hhciBSZW5kZXJUZXh0
OjpwcmV2aW91c0NoYXJhY3RlcigpIGNvbnN0CiB7CiAgICAgLy8gZmluZCBwcmV2aW91cyB0ZXh0
IHJlbmRlcmVyIGlmIG9uZSBleGlzdHMKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHByZXZpb3Vz
VGV4dCA9IHRoaXM7Ci0gICAgd2hpbGUgKChwcmV2aW91c1RleHQgPSBwcmV2aW91c1RleHQtPnBy
ZXZpb3VzSW5QcmVPcmRlcigpKSkKKyAgICB3aGlsZSAoKHByZXZpb3VzVGV4dCA9IHByZXZpb3Vz
VGV4dC0+cHJldmlvdXNJblByZU9yZGVyKCkpKSB7CiAgICAgICAgIGlmICghaXNJbmxpbmVGbG93
T3JFbXB0eVRleHQoKnByZXZpb3VzVGV4dCkpCiAgICAgICAgICAgICBicmVhazsKLSAgICBVQ2hh
ciBwcmV2ID0gJyAnOwotICAgIGlmIChpczxSZW5kZXJUZXh0PihwcmV2aW91c1RleHQpKSB7Ci0g
ICAgICAgIGlmIChTdHJpbmdJbXBsKiBwcmV2aW91c1N0cmluZyA9IGRvd25jYXN0PFJlbmRlclRl
eHQ+KCpwcmV2aW91c1RleHQpLnRleHQoKSkKLSAgICAgICAgICAgIHByZXYgPSAoKnByZXZpb3Vz
U3RyaW5nKVtwcmV2aW91c1N0cmluZy0+bGVuZ3RoKCkgLSAxXTsKICAgICB9Ci0gICAgcmV0dXJu
IHByZXY7CisgICAgaWYgKCFpczxSZW5kZXJUZXh0PihwcmV2aW91c1RleHQpKQorICAgICAgICBy
ZXR1cm4gJyAnOworICAgIGF1dG8mIHByZXZpb3VzU3RyaW5nID0gZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKnByZXZpb3VzVGV4dCkudGV4dCgpOworICAgIHJldHVybiBwcmV2aW91c1N0cmluZ1twcmV2
aW91c1N0cmluZy5sZW5ndGgoKSAtIDFdOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclRleHQ6OnRv
cE9mRmlyc3RUZXh0KCkgY29uc3QKQEAgLTExNjgsMzcgKzExMzMsMzQgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJUZXh0Ojp0b3BPZkZpcnN0VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZpcnN0VGV4dEJv
eCgpLT5yb290KCkubGluZVRvcCgpOwogfQogCi12b2lkIGFwcGx5VGV4dFRyYW5zZm9ybShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIFN0cmluZyYgdGV4dCwgVUNoYXIgcHJldmlvdXNDaGFyYWN0
ZXIpCitTdHJpbmcgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcikKIHsKICAgICBzd2l0
Y2ggKHN0eWxlLnRleHRUcmFuc2Zvcm0oKSkgewogICAgIGNhc2UgVFROT05FOgotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuIHRleHQ7CiAgICAgY2FzZSBDQVBJVEFMSVpFOgotICAgICAg
ICBtYWtlQ2FwaXRhbGl6ZWQoJnRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybiBjYXBpdGFsaXplKHRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKTsg
Ly8gRklYTUU6IE5lZWQgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50LgogICAgIGNhc2UgVVBQ
RVJDQVNFOgotICAgICAgICB0ZXh0ID0gdGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxl
KHN0eWxlLmxvY2FsZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0ZXh0LmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwogICAgIGNhc2UgTE9X
RVJDQVNFOgotICAgICAgICB0ZXh0ID0gdGV4dC5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxl
KHN0eWxlLmxvY2FsZSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0ZXh0LmNv
bnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwogICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdGV4dDsKIH0KIAotdm9pZCBSZW5kZXJU
ZXh0OjpzZXRSZW5kZXJlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBSZW5kZXJUZXh0
OjpzZXRSZW5kZXJlZFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewotICAgIEFTU0VSVCgh
dGV4dC5pc051bGwoKSk7CisgICAgQVNTRVJUKCFuZXdUZXh0LmlzTnVsbCgpKTsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFRleHQgPSB0aGlzLT5vcmlnaW5hbFRleHQoKTsKIAotICAgIG1fdGV4dCA9
IHRleHQ7CisgICAgbV90ZXh0ID0gbmV3VGV4dDsKIAogICAgIGlmIChtX3VzZUJhY2tzbGFzaEFz
WWVuU3ltYm9sKQogICAgICAgICBtX3RleHQucmVwbGFjZSgnXFwnLCB5ZW5TaWduKTsKIAotICAg
IEFTU0VSVChtX3RleHQpOwotCi0gICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIG1fdGV4
dCwgcHJldmlvdXNDaGFyYWN0ZXIoKSk7CisgICAgbV90ZXh0ID0gYXBwbHlUZXh0VHJhbnNmb3Jt
KHN0eWxlKCksIG1fdGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIoKSk7CiAKICAgICBzd2l0Y2ggKHN0
eWxlKCkudGV4dFNlY3VyaXR5KCkpIHsKICAgICBjYXNlIFRTTk9ORToKQEAgLTEyMjUsOSArMTE4
Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCkKICNlbmRpZgogICAgIH0KIAotICAgIEFTU0VSVCghbV90ZXh0LmlzTnVsbCgpKTsKLQotICAg
IG1faXNBbGxBU0NJSSA9IG1fdGV4dC5jb250YWluc09ubHlBU0NJSSgpOworICAgIG1faXNBbGxB
U0NJSSA9IHRleHQoKS5pc0FsbEFTQ0lJKCk7CiAgICAgbV9jYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGggPSBjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCk7CiAgICAgbV9jYW5Vc2VTaW1w
bGlmaWVkVGV4dE1lYXN1cmluZyA9IGNvbXB1dGVDYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmlu
ZygpOwogICAgIApAQCAtMTI0OCw3ICsxMjA4LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjpzZWN1cmVU
ZXh0KFVDaGFyIG1hc2tpbmdDaGFyYWN0ZXIpCiAgICAgLy8gb2YgdGhlIGNoYXJhY3RlcnMgYXJl
IHN1cnJvZ2F0ZSBwYWlycyBvciBjb21iaW5pbmcgbWFya3MuIFRodXMsIHRoaXMgZnVuY3Rpb24K
ICAgICAvLyBkb2VzIG5vdCBhdHRlbXB0IHRvIGhhbmRsZSBlaXRoZXIgb2YgdGhvc2UuCiAKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGV4dCgpLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKQEAg
LTEyNjAsNyArMTIyMCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2VjdXJlVGV4dChVQ2hhciBtYXNr
aW5nQ2hhcmFjdGVyKQogICAgICAgICAvLyBJZiBpdCdzIGNhbGxlZCBhIHNlY29uZCB0aW1lIHdl
IGFzc3VtZSB0aGUgdGV4dCBpcyBkaWZmZXJlbnQgYW5kIGEgY2hhcmFjdGVyIHNob3VsZCBub3Qg
YmUgcmV2ZWFsZWQuCiAgICAgICAgIHJldmVhbGVkQ2hhcmFjdGVyc09mZnNldCA9IHRpbWVyLT50
YWtlT2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIoKTsKICAgICAgICAgaWYgKHJldmVhbGVk
Q2hhcmFjdGVyc09mZnNldCAmJiByZXZlYWxlZENoYXJhY3RlcnNPZmZzZXQgPD0gbGVuZ3RoKQot
ICAgICAgICAgICAgY2hhcmFjdGVyVG9SZXZlYWwgPSBtX3RleHRbLS1yZXZlYWxlZENoYXJhY3Rl
cnNPZmZzZXRdOworICAgICAgICAgICAgY2hhcmFjdGVyVG9SZXZlYWwgPSB0ZXh0KClbLS1yZXZl
YWxlZENoYXJhY3RlcnNPZmZzZXRdOwogICAgIH0KIAogICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwpA
QCAtMTI4MiwxNCArMTI0MiwxNCBAQCBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1w
bGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCi0gICAgVGV4dFJ1biBy
dW4obV90ZXh0KTsKKyAgICBUZXh0UnVuIHJ1bih0ZXh0KCkpOwogICAgIHJ1bi5zZXRDaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGgoZmFsc2UpOwogICAgIGlmIChmb250LmNvZGVQYXRoKHJ1bikgIT0g
Rm9udENhc2NhZGU6OlNpbXBsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB3
aGl0ZXNwYWNlSXNDb2xsYXBzZWQgPSBzdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHQubGVuZ3RoKCk7ICsraSkgewotICAgICAg
ICBpZiAoKCF3aGl0ZXNwYWNlSXNDb2xsYXBzZWQgJiYgbV90ZXh0W2ldID09ICdcdCcpIHx8IG1f
dGV4dFtpXSA9PSBub0JyZWFrU3BhY2UgfHwgbV90ZXh0W2ldID49IEhpcmFnYW5hTGV0dGVyU21h
bGxBKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0KCkubGVuZ3RoKCk7ICsraSkg
eworICAgICAgICBpZiAoKCF3aGl0ZXNwYWNlSXNDb2xsYXBzZWQgJiYgdGV4dCgpW2ldID09ICdc
dCcpIHx8IHRleHQoKVtpXSA9PSBub0JyZWFrU3BhY2UgfHwgdGV4dCgpW2ldID49IEhpcmFnYW5h
TGV0dGVyU21hbGxBKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEzMjQsMTAgKzEyODQsNyBAQCBTdHJpbmcgUmVuZGVyVGV4dDo6dGV4dFdp
dGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSBjb25zdAogewogICAgIGlmICgh
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCB8fCBzdHlsZSgpLnRleHRTZWN1cml0eSgpICE9IFRT
Tk9ORSkKICAgICAgICAgcmV0dXJuIHRleHQoKTsKLQotICAgIFN0cmluZyB0ZXh0ID0gb3JpZ2lu
YWxUZXh0KCk7Ci0gICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsIHByZXZpb3Vz
Q2hhcmFjdGVyKCkpOwotICAgIHJldHVybiB0ZXh0OworICAgIHJldHVybiBhcHBseVRleHRUcmFu
c2Zvcm0oc3R5bGUoKSwgb3JpZ2luYWxUZXh0KCksIHByZXZpb3VzQ2hhcmFjdGVyKCkpOwogfQog
CiB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKQEAgLTEz
NjcsMTEgKzEzMjQsMTEgQEAgY29uc3QgU2ltcGxlTGluZUxheW91dDo6TGF5b3V0KiBSZW5kZXJU
ZXh0OjpzaW1wbGVMaW5lTGF5b3V0KCkgY29uc3QKIAogZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgo
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSwg
SGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBo
T3ZlcmZsb3cpIGNvbnN0CiB7Ci0gICAgaWYgKGZyb20gPj0gdGV4dExlbmd0aCgpKQorICAgIGlm
IChmcm9tID49IHRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAo
ZnJvbSArIGxlbiA+IHRleHRMZW5ndGgoKSkKLSAgICAgICAgbGVuID0gdGV4dExlbmd0aCgpIC0g
ZnJvbTsKKyAgICBpZiAoZnJvbSArIGxlbiA+IHRleHQoKS5sZW5ndGgoKSkKKyAgICAgICAgbGVu
ID0gdGV4dCgpLmxlbmd0aCgpIC0gZnJvbTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5l
U3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogc3R5bGUoKTsKICAgICByZXR1
cm4gd2lkdGgoZnJvbSwgbGVuLCBsaW5lU3R5bGUuZm9udENhc2NhZGUoKSwgeFBvcywgZmFsbGJh
Y2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CkBAIC0xMzc5LDE0ICsxMzM2LDE0IEBAIGZsb2F0IFJl
bmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgZmxvYXQgeFBvcywg
Ym9vbCBmaXJzdExpbmUsCiAKIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbiwgY29uc3QgRm9udENhc2NhZGUmIGYsIGZsb2F0IHhQb3MsIEhhc2hTZXQ8
Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93
KSBjb25zdAogewotICAgIEFTU0VSVChmcm9tICsgbGVuIDw9IHRleHRMZW5ndGgoKSk7Ci0gICAg
aWYgKCF0ZXh0TGVuZ3RoKCkpCisgICAgQVNTRVJUKGZyb20gKyBsZW4gPD0gdGV4dCgpLmxlbmd0
aCgpKTsKKyAgICBpZiAoIXRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwogICAgIGZsb2F0IHc7
CiAgICAgaWYgKCZmID09ICZzdHlsZS5mb250Q2FzY2FkZSgpKSB7Ci0gICAgICAgIGlmICghc3R5
bGUucHJlc2VydmVOZXdsaW5lKCkgJiYgIWZyb20gJiYgbGVuID09IHRleHRMZW5ndGgoKSAmJiAo
IWdseXBoT3ZlcmZsb3cgfHwgIWdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMpKSB7CisgICAg
ICAgIGlmICghc3R5bGUucHJlc2VydmVOZXdsaW5lKCkgJiYgIWZyb20gJiYgbGVuID09IHRleHQo
KS5sZW5ndGgoKSAmJiAoIWdseXBoT3ZlcmZsb3cgfHwgIWdseXBoT3ZlcmZsb3ctPmNvbXB1dGVC
b3VuZHMpKSB7CiAgICAgICAgICAgICBpZiAoZmFsbGJhY2tGb250cykgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChnbHlwaE92ZXJmbG93KTsKICAgICAgICAgICAgICAgICBpZiAocHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KCkgfHwgIW1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxs
YmFja0ZvbnRzKSB7CkBAIC0xNDU4LDEyICsxNDE1LDEyIEBAIExheW91dFJlY3QgUmVuZGVyVGV4
dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPCiAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uSW5zaWRlKSB7CiAgICAg
ICAgIC8vIFdlIGFyZSBmdWxseSBzZWxlY3RlZC4KICAgICAgICAgc3RhcnRQb3MgPSAwOwotICAg
ICAgICBlbmRQb3MgPSB0ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZFBvcyA9IHRleHQoKS5sZW5n
dGgoKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGFydFBvcyA9IHZpZXcoKS5zZWxlY3Rpb24o
KS5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGVuZFBvcyA9IHZpZXcoKS5zZWxlY3Rpb24oKS5l
bmRQb3NpdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25T
dGFydCkKLSAgICAgICAgICAgIGVuZFBvcyA9IHRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIGVu
ZFBvcyA9IHRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgZWxzZSBpZiAoc2VsZWN0aW9uU3RhdGUo
KSA9PSBTZWxlY3Rpb25FbmQpCiAgICAgICAgICAgICBzdGFydFBvcyA9IDA7CiAgICAgfQpAQCAt
MTUzOSwzNSArMTQ5NiwzMyBAQCBib29sIFJlbmRlclRleHQ6Omhhc1JlbmRlcmVkVGV4dCgpIGNv
bnN0CiAKIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldChpbnQgY3VycmVudCkgY29uc3QK
IHsKLSAgICBpZiAoaXNBbGxBU0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkKKyAgICBpZiAobV9p
c0FsbEFTQ0lJIHx8IHRleHQoKS5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAx
OwogCi0gICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IobV90ZXh0LCBUZXh0QnJl
YWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOworICAgIENhY2hlZFRleHRCcmVh
a0l0ZXJhdG9yIGl0ZXJhdG9yKHRleHQoKSwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0
LCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZh
bHVlX29yKGN1cnJlbnQgLSAxKTsKIH0KIAogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0
Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1f
dGV4dC5pc051bGwoKSk7Ci0KLSAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvciht
X3RleHQsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUsIG51bGxBdG9tKCkpOworICAg
IENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yKHRleHQoKSwgVGV4dEJyZWFrSXRlcmF0
b3I6Ok1vZGU6OkRlbGV0ZSwgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNl
ZGluZyhjdXJyZW50KS52YWx1ZV9vcigwKTsKIH0KIAogaW50IFJlbmRlclRleHQ6Om5leHRPZmZz
ZXQoaW50IGN1cnJlbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQWxsQVNDSUkoKSB8fCBtX3RleHQu
aXM4Qml0KCkpCisgICAgaWYgKG1faXNBbGxBU0NJSSB8fCB0ZXh0KCkuaXM4Qml0KCkpCiAgICAg
ICAgIHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0
ZXJhdG9yKG1fdGV4dCwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSgp
KTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVh
a0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9y
LmZvbGxvd2luZyhjdXJyZW50KS52YWx1ZV9vcihjdXJyZW50ICsgMSk7CiB9CiAKIGJvb2wgUmVu
ZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CiB7Ci0gICAg
aWYgKGlzQWxsQVNDSUkoKSB8fCBtX3RleHQuaXM4Qml0KCkpCisgICAgaWYgKG1faXNBbGxBU0NJ
SSB8fCB0ZXh0KCkuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBG
b250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
KCkpID09IEZvbnRDYXNjYWRlOjpTaW1wbGU7CisgICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjaGFy
YWN0ZXJSYW5nZUNvZGVQYXRoKHRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpID09IEZv
bnRDYXNjYWRlOjpTaW1wbGU7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZl
YWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0
ZXIpCkBAIC0xNTgyLDEzICsxNTM3LDEzIEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlS
ZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0
cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gc3RvcCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9
IHN0b3AudmFsdWVfb3IodGV4dExlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9
IHN0b3AudmFsdWVfb3IodGV4dCgpLmxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gbGVu
Z3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJU
KHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBTdHJpbmdWaWV3KGNoYXJhY3RlcnM4KCkgKyBzdGFydCwgZGVzdGluYXRpb24gLSBzdGFydCk7
Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRp
b24gLSBzdGFydCk7CisgICAgaWYgKHRleHQoKS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHsg
dGV4dCgpLmNoYXJhY3RlcnM4KCkgKyBzdGFydCwgZGVzdGluYXRpb24gLSBzdGFydCB9OworICAg
IHJldHVybiB7IHRleHQoKS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBkZXN0aW5hdGlvbiAtIHN0
YXJ0IH07CiB9CiAKIFJlbmRlcklubGluZSogUmVuZGVyVGV4dDo6aW5saW5lV3JhcHBlckZvckRp
c3BsYXlDb250ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBk
ODZmMGI0Yjg0ZjRiMTQ3NDlhNWRjYjY4YzgzNzRmZWRjNWNlYWVmLi5mNDYyOTBmNWRlYWIwYWVi
ZTljN2M4MjQwZDBkNmYzOTQ1NjY4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKICAqIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NDMsOCArNDMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0KCk7CiAKLSAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBUZXh0KiB0ZXh0Tm9kZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGlzVGV4
dEZyYWdtZW50KCkgY29uc3Q7CkBAIC02Myw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0
dGFjaFRleHRCb3goSW5saW5lVGV4dEJveCYgYm94KSB7IG1fbGluZUJveGVzLmF0dGFjaChib3gp
OyB9CiAgICAgdm9pZCByZW1vdmVUZXh0Qm94KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVC
b3hlcy5yZW1vdmUoYm94KTsgfQogCi0gICAgU3RyaW5nSW1wbCogdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dC5pbXBsKCk7IH0KKyAgICBTdHJpbmdJbXBsJiB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gKm1fdGV4dC5pbXBsKCk7IH0gLy8gU2luY2UgbV90ZXh0IGNhbiBuZXZlciBiZSBudWxsLCBy
ZXR1cm5pbmcgdGhpcyB0eXBlIG1lYW5zIGNhbGxlcnMgd29uJ3QgbnVsbCBjaGVjay4KICAgICBT
dHJpbmcgdGV4dFdpdGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2woKSBjb25zdDsK
IAogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xp
bmVCb3hlcy5jcmVhdGVBbmRBcHBlbmRMaW5lQm94KCp0aGlzKTsgfQpAQCAtNzIsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QgZmluYWw7CiAgICAgVmVjdG9y
PEludFJlY3Q+IGFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAs
IHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9
IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2b2lkIGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4m
LCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb2xsZWN0
U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgZmluYWw7CkBAIC04MCwzNSArNzgs
MzggQEAgcHVibGljOgogCiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVRdWFkc0NsaXBw
ZWRUb0VsbGlwc2lzKCkgY29uc3Q7CiAKLSAgICBQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciopIG92ZXJyaWRlOworICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKSBmaW5hbDsKIAotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
LmltcGwoKS0+aXM4Qml0KCk7IH0KLSAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25z
dCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOyB9Ci0gICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmNoYXJhY3Rl
cnMxNigpOyB9CiAgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQpIGNvbnN0OwotICAgIFVD
aGFyIHVuY2hlY2tlZENoYXJhY3RlckF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICBVQ2hhciBvcGVy
YXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIHVuY2hlY2tlZENoYXJhY3RlckF0KGkp
OyB9Ci0gICAgdW5zaWduZWQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBs
KCktPmxlbmd0aCgpOyB9IC8vIG5vbiB2aXJ0dWFsIGltcGxlbWVudGF0aW9uIG9mIGxlbmd0aCgp
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdGV4dCgpLmxlbmd0
aCgpOyB9CisKICAgICB2b2lkIHBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0Qm94Jik7CiAKLSAg
ICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29uc3Qg
Rm9udENhc2NhZGUmLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tG
b250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9hdCB3
aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RM
aW5lID0gZmFsc2UsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5
cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB4UG9zLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IG51bGxwdHIsIEdseXBoT3ZlcmZs
b3cqID0gbnVsbHB0cikgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lID0gZmFsc2Us
IEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gbnVsbHB0ciwgR2x5cGhPdmVy
ZmxvdyogPSBudWxscHRyKSBjb25zdDsKIAogICAgIGZsb2F0IG1pbkxvZ2ljYWxXaWR0aCgpIGNv
bnN0OwogICAgIGZsb2F0IG1heExvZ2ljYWxXaWR0aCgpIGNvbnN0OwogCi0gICAgdm9pZCB0cmlt
bWVkUHJlZldpZHRocyhmbG9hdCBsZWFkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCYgYmVnaW5NaW5XLCBib29sJiBiZWdpbldTLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQmIGVuZE1pblcsIGJvb2wmIGVuZFdTLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCYgaGFzQnJlYWthYmxlQ2hhciwgYm9vbCYgaGFzQnJlYWssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCYgYmVnaW5NYXhXLCBmbG9hdCYgZW5kTWF4VywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBtaW5XLCBmbG9hdCYgbWF4VywgYm9vbCYgc3Ry
aXBGcm9udFNwYWNlcyk7CisgICAgc3RydWN0IFdpZHRocyB7CisgICAgICAgIGZsb2F0IG1pbiB7
IDAgfTsKKyAgICAgICAgZmxvYXQgbWF4IHsgMCB9OworICAgICAgICBmbG9hdCBiZWdpbk1pbiB7
IDAgfTsKKyAgICAgICAgZmxvYXQgZW5kTWluIHsgMCB9OworICAgICAgICBmbG9hdCBiZWdpbk1h
eCB7IDAgfTsKKyAgICAgICAgZmxvYXQgZW5kTWF4IHsgMCB9OworICAgICAgICBib29sIGJlZ2lu
V1MgeyBmYWxzZSB9OworICAgICAgICBib29sIGVuZFdTIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBoYXNCcmVha2FibGVDaGFyIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBoYXNCcmVhayB7IGZh
bHNlIH07CisgICAgfTsKKyAgICBXaWR0aHMgdHJpbW1lZFByZWZlcnJlZFdpZHRocyhmbG9hdCBs
ZWFkV2lkdGgsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpOworCiAgICAgZmxvYXQgaGFuZ2FibGVQ
dW5jdHVhdGlvblN0YXJ0V2lkdGgodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIGZsb2F0IGhh
bmdhYmxlUHVuY3R1YXRpb25FbmRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgdW5z
aWduZWQgZmlyc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIGNvbnN0OwogICAgIHVu
c2lnbmVkIGxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIGNvbnN0OwotICAgIGJv
b2wgaXNIYW5nYWJsZVN0b3BPckNvbW1hKFVDaGFyKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBp
c0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNoYXIpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgSW50UmVjdCBsaW5lc0JvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBs
aW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKQEAgLTExOSwyMiArMTIwLDE3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuLCBib29sIGZvcmNlID0gZmFsc2UpOwogCiAgICAg
Ym9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSkgZmluYWw7Ci0gICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSkgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCB1
bnNpZ25lZCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0g
MCkgb3ZlcnJpZGU7CiAKLSAgICBMYXlvdXRSZWN0IGNvbGxlY3RTZWxlY3Rpb25SZWN0c0Zvckxp
bmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGNsaXBUb1Zpc2libGVDb250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzKTsKKyAg
ICBMYXlvdXRSZWN0IGNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVD
b250ZW50LCBWZWN0b3I8TGF5b3V0UmVjdD4mKTsKIAogICAgIExheW91dFVuaXQgbWFyZ2luTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpbkxl
ZnQoKSwgMCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luUmlnaHQoKSwgMCk7IH0KIAotICAg
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgZmluYWw7Ci0KICAgICBJbmxp
bmVUZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5maXJz
dCgpOyB9CiAgICAgSW5saW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBt
X2xpbmVCb3hlcy5sYXN0KCk7IH0KIAotICAgIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGlu
dCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IGZpbmFsOworICAgIGludCBjYXJldE1heE9mZnNldCgp
IGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRz
VW50aWwodW5zaWduZWQpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNSZW5kZXJlZENoYXJhY3Rl
ck9mZnNldCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0NhcmV0T2Zmc2V0KHVu
c2lnbmVkKSBjb25zdDsKQEAgLTE1OSwxMSArMTU1LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSk7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94
PiBjcmVhdGVUZXh0Qm94KCk7IC8vIFN1YmNsYXNzZWQgYnkgUmVuZGVyU1ZHSW5saW5lVGV4dC4K
KyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVUZXh0Qm94
KCk7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IGNhbmRpZGF0ZUNv
bXB1dGVkVGV4dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNp
emU7IH0KLSAgICB2b2lkIHNldENhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoZmxvYXQgcykgeyBt
X2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUgPSBzOyB9CisgICAgdm9pZCBzZXRDYW5kaWRhdGVD
b21wdXRlZFRleHRTaXplKGZsb2F0IHNpemUpIHsgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXpl
ID0gc2l6ZTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGVuc3VyZUxpbmVCb3hlcygpOwpAQCAtMTc0
LDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgdG9wT2ZGaXJzdFRleHQoKSBj
b25zdDsKICAgICAKLSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UodW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbGVuKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNw
YWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCiAgICAgYm9v
bCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmc7IH0KIApAQCAtMTk3LDIxICsxOTMsMjQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBSZW5kZXJUZXh0KE5vZGUmLCBjb25zdCBTdHJpbmcmKTsKIAor
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qg
UmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0U2VsZWN0
aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIGZpbmFsOworICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGZpbmFsOworICAgIExheW91
dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgdW5zaWduZWQgY2FyZXRPZmZzZXQsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIG92ZXJyaWRlOworICAg
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgZmluYWw7CisKICAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxj
b25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKTsKIAogICAgIGJvb2wg
Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0OwogICAgIAotICAgIC8vIE1h
a2UgbGVuZ3RoKCkgcHJpdmF0ZSBzbyB0aGF0IGNhbGxlcnMgdGhhdCBoYXZlIGEgUmVuZGVyVGV4
dCoKLSAgICAvLyB3aWxsIHVzZSB0aGUgbW9yZSBlZmZpY2llbnQgdGV4dExlbmd0aCgpIGluc3Rl
YWQsIHdoaWxlCi0gICAgLy8gY2FsbGVycyB3aXRoIGEgUmVuZGVyT2JqZWN0KiBjYW4gY29udGlu
dWUgdG8gdXNlIGxlbmd0aCgpLgotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRleHRMZW5ndGgoKTsgfQotCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25z
dCBMYXlvdXRQb2ludCYsIEhpdFRlc3RBY3Rpb24pIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZmxvYXQgd2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9u
dENhc2NhZGUmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBIYXNo
U2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyosIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Q7Ci0gICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FsbEFTQ0lJOyB9CiAgICAgYm9vbCBjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2wo
KSBjb25zdDsKIAogICAgIHZvaWQgc2VjdXJlVGV4dChVQ2hhciBtYXNrKTsKQEAgLTI0NCwyOCAr
MjQzLDIzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRoZSB0ZXh0IHNpemluZyBz
dHJ1Y3R1cmVzIGluIERvY3VtZW50IGluc3RlYWQuIFRoYXQgd291bGQgc2F2ZSBzb21lIG1lbW9y
eS4KLSAgICBmbG9hdCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemU7CisgICAgZmxvYXQgbV9j
YW5kaWRhdGVDb21wdXRlZFRleHRTaXplIHsgMCB9OwogI2VuZGlmCi0gICAgZmxvYXQgbV9taW5X
aWR0aDsKLSAgICBmbG9hdCBtX21heFdpZHRoOwotICAgIGZsb2F0IG1fYmVnaW5NaW5XaWR0aDsK
LSAgICBmbG9hdCBtX2VuZE1pbldpZHRoOworICAgIGZsb2F0IG1fbWluV2lkdGggeyAtMSB9Owor
ICAgIGZsb2F0IG1fbWF4V2lkdGggeyAtMSB9OworICAgIGZsb2F0IG1fYmVnaW5NaW5XaWR0aCB7
IDAgfTsKKyAgICBmbG9hdCBtX2VuZE1pbldpZHRoIHsgMCB9OwogCiAgICAgU3RyaW5nIG1fdGV4
dDsKIH07CiAKLWlubGluZSBVQ2hhciBSZW5kZXJUZXh0Ojp1bmNoZWNrZWRDaGFyYWN0ZXJBdCh1
bnNpZ25lZCBpKSBjb25zdAotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGkgPCB0ZXh0TGVuZ3RoKCkpOwotICAgIHJldHVybiBpczhCaXQoKSA/IGNoYXJhY3RlcnM4KClb
aV0gOiBjaGFyYWN0ZXJzMTYoKVtpXTsKLX0KK1N0cmluZyBhcHBseVRleHRUcmFuc2Zvcm0oY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBTdHJpbmcmLCBVQ2hhciBwcmV2aW91c0NoYXJhY3Rlcik7
CitTdHJpbmcgY2FwaXRhbGl6ZShjb25zdCBTdHJpbmcmLCBVQ2hhciBwcmV2aW91c0NoYXJhY3Rl
cik7CitMaW5lQnJlYWtJdGVyYXRvck1vZGUgbWFwTGluZUJyZWFrVG9JdGVyYXRvck1vZGUoTGlu
ZUJyZWFrKTsKIAogaW5saW5lIFVDaGFyIFJlbmRlclRleHQ6OmNoYXJhY3RlckF0KHVuc2lnbmVk
IGkpIGNvbnN0CiB7Ci0gICAgaWYgKGkgPj0gdGV4dExlbmd0aCgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHJldHVybiB1bmNoZWNrZWRDaGFyYWN0ZXJBdChpKTsKKyAgICByZXR1cm4gaSA+
PSBsZW5ndGgoKSA/IDAgOiB0ZXh0KClbaV07CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJTdHls
ZSYgUmVuZGVyVGV4dDo6c3R5bGUoKSBjb25zdApAQCAtMjk4LDEwICsyOTIsNiBAQCBpbmxpbmUg
Q29sb3IgUmVuZGVyVGV4dDo6c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdAogICAg
IHJldHVybiBwYXJlbnQoKS0+c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKTsKIH0KIAotdm9p
ZCBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmLCBTdHJpbmcmLCBVQ2hhcik7
Ci12b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqLCBVQ2hhciBwcmV2aW91cyk7Ci1MaW5lQnJl
YWtJdGVyYXRvck1vZGUgbWFwTGluZUJyZWFrVG9JdGVyYXRvck1vZGUoTGluZUJyZWFrKTsKLSAg
ICAKIGlubGluZSBSZW5kZXJUZXh0KiBUZXh0OjpyZW5kZXJlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KE5vZGU6OnJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAppbmRleCBmMTViZWVjN2Rj
MGRlM2RhY2IwZTc2ZWI5ZTU0MTcxNTkzYjg4NGU1Li5kZDlhY2M3ZDEwMzI3NzQ2OGQ4YzhlNWMy
NjdlYzBkZDBiMWVkNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcApAQCAtODAsMTIgKzgwLDExIEBAIHZvaWQgUmVuZGVyVGV4dEZyYWdt
ZW50Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlclRleHQ6OndpbGxCZURlc3Ryb3llZCgp
OwogfQogCi12b2lkIFJlbmRlclRleHRGcmFnbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGJvb2wgZm9yY2UpCit2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6c2V0VGV4dChjb25zdCBT
dHJpbmcmIG5ld1RleHQsIGJvb2wgZm9yY2UpCiB7Ci0gICAgUmVuZGVyVGV4dDo6c2V0VGV4dCh0
ZXh0LCBmb3JjZSk7Ci0KKyAgICBSZW5kZXJUZXh0OjpzZXRUZXh0KG5ld1RleHQsIGZvcmNlKTsK
ICAgICBtX3N0YXJ0ID0gMDsKLSAgICBtX2VuZCA9IHRleHRMZW5ndGgoKTsKKyAgICBtX2VuZCA9
IHRleHQoKS5sZW5ndGgoKTsKICAgICBpZiAoIW1fZmlyc3RMZXR0ZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2ZpcnN0TGV0dGVyLT5yZW1vdmVGcm9tUGFyZW50QW5kRGVzdHJveSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4
IDc1ZTIxYzVkZjM5NDgwNmJhODQzNDIyZmZhODU4YzYyNjdiZTg4ZGIuLmJkMDI0M2FkOTQwYThm
ODMyMzE5MDE1MmFlN2MxZDIxOGZlODQxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBpbnQgUmVu
ZGVyVGV4dExpbmVCb3hlczo6Y2FyZXRNYXhPZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVy
ZXIpIGNvbnN0CiB7CiAgICAgYXV0byBib3ggPSBtX2xhc3Q7CiAgICAgaWYgKCFib3gpCi0gICAg
ICAgIHJldHVybiByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgICAgIHJldHVybiByZW5kZXJl
ci50ZXh0KCkubGVuZ3RoKCk7CiAKICAgICBpbnQgbWF4T2Zmc2V0ID0gYm94LT5zdGFydCgpICsg
Ym94LT5sZW4oKTsKICAgICBmb3IgKGJveCA9IGJveC0+cHJldlRleHRCb3goKTsgYm94OyBib3gg
PSBib3gtPnByZXZUZXh0Qm94KCkpCkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb25BZnRlckFkanVzdGluZ09mZnNldEZvckJpRGko
Y29uc3QgSW4KIAogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRMaW5lQm94ZXM6OnBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZmlyc3QgfHwgIXJlbmRlcmVyLnRleHRMZW5ndGgo
KSkKKyAgICBpZiAoIW1fZmlyc3QgfHwgIXJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsK
IAogICAgIExheW91dFVuaXQgcG9pbnRMaW5lRGlyZWN0aW9uID0gbV9maXJzdC0+aXNIb3Jpem9u
dGFsKCkgPyBwb2ludC54KCkgOiBwb2ludC55KCk7CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJUZXh0JiByZW5kZXJl
ciwgUmVuZGVyT2JqZWN0OjoKICAgICBhdXRvIHN0YXJ0ID0gcmVuZGVyZXIudmlldygpLnNlbGVj
dGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKICAgICBhdXRvIGVuZCA9IHJlbmRlcmVyLnZpZXcoKS5z
ZWxlY3Rpb24oKS5lbmRQb3NpdGlvbigpOwogICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvblN0YXJ0KSB7Ci0gICAgICAgIGVuZCA9IHJlbmRlcmVyLnRleHRMZW5ndGgoKTsK
KyAgICAgICAgZW5kID0gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICAvLyB0byBo
YW5kbGUgc2VsZWN0aW9uIGZyb20gZW5kIG9mIHRleHQgdG8gZW5kIG9mIGxpbmUKICAgICAgICAg
aWYgKHN0YXJ0ICYmIHN0YXJ0ID09IGVuZCkKICAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gMTsK
QEAgLTU2OCw3ICs1NjgsNyBAQCBWZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0TGluZUJveGVz
OjphYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLAogCiAgICAgICAgIC8v
IFNob3J0ZW4gdGhlIHdpZHRoIG9mIHRoaXMgdGV4dCBib3ggaWYgaXQgZW5kcyBpbiBhbiBlbGxp
cHNpcy4KICAgICAgICAgLy8gRklYTUU6IGVsbGlwc2lzUmVjdEZvckJveCBzaG91bGQgc3dpdGNo
IHRvIHJldHVybiBGbG9hdFJlY3Qgc29vbiB3aXRoIHRoZSBzdWJwaXhlbGxheW91dCBicmFuY2gu
Ci0gICAgICAgIEludFJlY3QgZWxsaXBzaXNSZWN0ID0gKG9wdGlvbiA9PSBDbGlwVG9FbGxpcHNp
cykgPyBlbGxpcHNpc1JlY3RGb3JCb3goKmJveCwgMCwgcmVuZGVyZXIudGV4dExlbmd0aCgpKSA6
IEludFJlY3QoKTsKKyAgICAgICAgSW50UmVjdCBlbGxpcHNpc1JlY3QgPSAob3B0aW9uID09IENs
aXBUb0VsbGlwc2lzKSA/IGVsbGlwc2lzUmVjdEZvckJveCgqYm94LCAwLCByZW5kZXJlci50ZXh0
KCkubGVuZ3RoKCkpIDogSW50UmVjdCgpOwogICAgICAgICBpZiAoIWVsbGlwc2lzUmVjdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCiAgICAgICAgICAgICAgICAgYm91bmRhcmllcy5zZXRXaWR0aChlbGxpcHNp
c1JlY3QubWF4WCgpIC0gYm91bmRhcmllcy54KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDFlYjQ2Nzc3ODFlMTNlNjc5NDg3MGQ3MGUy
YWY1YjJjNzZjNTEwMGIuLmM4MzZkMWVjNWY0Njk0ZGZlZDZjYWExMzEzZjJmODQ2OGFjOWNiMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAg
LTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yRm9u
dEFuZFRleHQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBJbgogICAgIGJvb2wgZmxvd0lz
SnVzdGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gSlVTVElGWTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRleHRSZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBEbyBub3QgcmV0dXJuIHVudGlsIGFmdGVyIGNoZWNraW5nIGFs
bCBjaGlsZHJlbi4KLSAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpKQorICAg
ICAgICBpZiAodGV4dFJlbmRlcmVyLnRleHQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dUZXh0SXNFbXB0eSwgcmVhc29ucywgaW5j
bHVkZVJlYXNvbnMpOwogICAgICAgICBpZiAodGV4dFJlbmRlcmVyLmlzQ29tYmluZVRleHQoKSkK
ICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd1RleHRJc0Nv
bWJpbmVUZXh0LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCmluZGV4IGE5MTYw
NDVlNGJhZTg1NjkwYzUyMDZiNjdmNTI1MGI3ZjI1OGJmNWYuLmIyOTIzNWI2Mzc0YzdjMzU4MGVk
NTNhMjBjM2E4Yzk5NjVhZTBmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgc3Rh
dGljIHZvaWQgcHJpbnRUZXh0Rm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCB1bnNpZ25lZCYgY2hhcmFjdGUKIHN0YXRpYyB1bnNpZ25lZCB0ZXh0TGVuZ3RoRm9yU3VidHJl
ZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGlmIChpczxSZW5kZXJUZXh0
PihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJl
cikudGV4dExlbmd0aCgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVu
ZGVyZXIpLnRleHQoKS5sZW5ndGgoKTsKICAgICBpZiAoIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRl
cmVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IDA7CkBA
IC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHVuc2lnbmVkIHRleHRMZW5ndGhGb3JTdWJ0cmVlKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlM
ZWFmUmVuZGVyQmxvY2tGbG93cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBIYXNoU2V0
PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQogewogICAgIGlmIChpczxS
ZW5kZXJUZXh0PihyZW5kZXJlcikpIHsKLSAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcikudGV4dExlbmd0aCgpKQorICAgICAgICBpZiAoIWRvd25jYXN0PFJlbmRlclRl
eHQ+KHJlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIC8vIEZpbmQgUmVuZGVyQmxvY2tGbG93IGFuY2VzdG9yLgogICAgICAgICBmb3IgKGNvbnN0
IGF1dG8qIGN1cnJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1
cnJlbnQtPnBhcmVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAKaW5kZXggMThlNWI2NGJkOTc2MWRl
MTlmMTI5ZjBkOGNjZmEzYmFhZGM0M2M3Ny4uMjliMzZhMGYzMjc1YTVlNjAwMGMyMzA3OThmMjE1
MDg5NGRkZWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGbG93Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMg
VmVjdG9yPEZsb3dDb250ZW50czo6U2VnbWVudD4gaW5pdGlhbGl6ZVNlZ21lbnRzKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxS
ZW5kZXJPYmplY3Q+KGZsb3cpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZCkp
IHsKICAgICAgICAgICAgIGF1dG8mIHRleHRDaGlsZCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGNo
aWxkKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSB0ZXh0Q2hpbGQudGV4dCgp
LT5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSB0ZXh0Q2hpbGQu
dGV4dCgpLmxlbmd0aCgpOwogICAgICAgICAgICAgc2VnbWVudHMuYXBwZW5kKEZsb3dDb250ZW50
czo6U2VnbWVudCB7IHN0YXJ0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24gKyB0ZXh0TGVuZ3RoLCB0
ZXh0Q2hpbGQudGV4dCgpLAogICAgICAgICAgICAgICAgIHRleHRDaGlsZCwgdGV4dENoaWxkLmNh
blVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCkgfSk7CiAgICAgICAgICAgICBzdGFydFBvc2l0
aW9uICs9IHRleHRMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMDZiNjFjYzc1NjVmMWI5ZDI3ZTBm
ZjI1MDhhYzA2Mjg2MzdkYzYzMi4uZTU0MzUyZGZiNmI5MGNjMjk0ZjhhNDEwYzhkNTliYTJjNWI1
ODgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHVuc2lnbmVkIHRleHRPZmZz
ZXRGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyCiAgICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKGZsb3csIGxheW91dCk7CiAg
ICAgYXV0byBpdCA9IHJlc29sdmVyLnJ1bkZvclBvaW50KHBvaW50KTsKICAgICBpZiAoaXQgPT0g
cmVzb2x2ZXIuZW5kKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0TGVuZ3RoKCk7Cisg
ICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgYXV0byBydW4gPSAq
aXQ7CiAgICAgYXV0byYgc3R5bGUgPSBmbG93LnN0eWxlKCk7CiAgICAgVGV4dFJ1biB0ZXh0UnVu
KHJ1bi50ZXh0KCksIHJ1bi5sb2dpY2FsTGVmdCgpLCBydW4uZXhwYW5zaW9uKCksIHJ1bi5leHBh
bnNpb25CZWhhdmlvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCmluZGV4IDA2NDFmMzc3YzAzNzRhMjc0MTkyMmQwNzJi
MmUwZTU1MjdjMDNmYzYuLjNlOGI4N2NiYTU0NzM2ZWZjOTY0NTYwMGIwYTk4NzQxMjdlYjRlZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuaApAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSB1bnNpZ25lZCBmaW5kQ2FyZXRN
aW5pbXVtT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMYXlvdXQmIGxheW91dCkKIGlu
bGluZSB1bnNpZ25lZCBmaW5kQ2FyZXRNYXhpbXVtT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAoIWxheW91dC5ydW5Db3Vu
dCgpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICByZXR1
cm4gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogICAgIGF1dG8mIGxhc3QgPSBsYXlvdXQucnVu
QXQobGF5b3V0LnJ1bkNvdW50KCkgLSAxKTsKICAgICByZXR1cm4gbGFzdC5lbmQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IDA1
NjYwMWU1ZGY1ZGQ1MzkzNDcyNGVhN2RlYjhjODNkZGIyMDA0MmMuLjdmMWJhMWM0ZTRhNWMyNjBl
ZDY4YjQ0MGYzZWRkODQ3OTJiOWFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0zODksNyArMzg5LDcgQEAgaW5saW5lIGJvb2wg
c2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbihSZW5kZXJPYmplY3QqIGNoaWxkKQogICAgIGlm
ICghY2hpbGQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIFdoZW4gZGVjaWRpbmcgd2hl
dGhlciB3ZSdyZSBhdCB0aGUgZWRnZSBvZiBhbiBpbmxpbmUsIGFkamFjZW50IGNvbGxhcHNlZCB3
aGl0ZXNwYWNlIGlzIHRoZSBzYW1lIGFzIG5vIHNpYmxpbmcgYXQgYWxsLgotICAgIGlmIChpczxS
ZW5kZXJUZXh0PigqY2hpbGQpICYmICFkb3duY2FzdDxSZW5kZXJUZXh0PigqY2hpbGQpLnRleHRM
ZW5ndGgoKSkKKyAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmNoaWxkKSAmJiAhZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKmNoaWxkKS50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCiAgICAgaWYgKGlzPFJlbmRlckxp
bmVCcmVhaz4oKmNoaWxkKSAmJiBjaGlsZC0+cGFyZW50KCktPnN0eWxlKCkuYm94RGVjb3JhdGlv
bkJyZWFrKCkgPT0gRENMT05FKQpAQCAtNDgyLDcgKzQ4Miw3IEBAIGlubGluZSBib29sIHNob3Vs
ZFNraXBXaGl0ZXNwYWNlQWZ0ZXJTdGFydE9iamVjdChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBS
ZW5kZXJPCiAgICAgd2hpbGUgKG5leHQgJiYgbmV4dC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQogICAgICAgICBuZXh0ID0gYmlkaU5leHRTa2lwcGluZ0VtcHR5SW5saW5lcyhi
bG9jaywgbmV4dCk7CiAKLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4obmV4dCkgJiYgZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKm5leHQpLnRleHRMZW5ndGgoKSA+IDApIHsKKyAgICBpZiAoaXM8UmVuZGVy
VGV4dD4obmV4dCkgJiYgZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpLnRleHQoKS5sZW5ndGgo
KSA+IDApIHsKICAgICAgICAgUmVuZGVyVGV4dCYgbmV4dFRleHQgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqbmV4dCk7CiAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4dFRleHQuY2hhcmFjdGVy
QXQoMCk7CiAgICAgICAgIGlmIChuZXh0VGV4dC5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0ZVNw
YWNlKG5leHRDaGFyKSkgewpAQCAtNTkyLDcgKzU5Miw3IEBAIGlubGluZSBmbG9hdCBmaXJzdFBv
c2l0aXZlV2lkdGgoY29uc3QgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIAog
aW5saW5lIGJvb2wgaXRlcmF0b3JJc0JleW9uZEVuZE9mUmVuZGVyQ29tYmluZVRleHQoY29uc3Qg
SW5saW5lSXRlcmF0b3ImIGl0ZXIsIFJlbmRlckNvbWJpbmVUZXh0JiByZW5kZXJlcikKIHsKLSAg
ICByZXR1cm4gaXRlci5yZW5kZXJlcigpID09ICZyZW5kZXJlciAmJiBpdGVyLm9mZnNldCgpID49
IHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAgICByZXR1cm4gaXRlci5yZW5kZXJlcigpID09ICZy
ZW5kZXJlciAmJiBpdGVyLm9mZnNldCgpID49IHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKIH0K
IAogaW5saW5lIHZvaWQgbmV4dENoYXJhY3RlcihVQ2hhciYgY3VycmVudENoYXJhY3RlciwgVUNo
YXImIGxhc3RDaGFyYWN0ZXIsIFVDaGFyJiBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpCkBAIC02MjEs
NyArNjIxLDcgQEAgQUxXQVlTX0lOTElORSBmbG9hdCB0ZXh0V2lkdGgoUmVuZGVyVGV4dCYgdGV4
dCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb24KICAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSB0ZXh0LnN0eWxlKCk7CiAKICAgICBHbHlwaE92ZXJmbG93IGdseXBoT3ZlcmZs
b3c7Ci0gICAgaWYgKGlzRml4ZWRQaXRjaCB8fCAoIWZyb20gJiYgbGVuID09IHRleHQudGV4dExl
bmd0aCgpKSB8fCBzdHlsZS5oYXNUZXh0Q29tYmluZSgpKQorICAgIGlmIChpc0ZpeGVkUGl0Y2gg
fHwgKCFmcm9tICYmIGxlbiA9PSB0ZXh0LnRleHQoKS5sZW5ndGgoKSkgfHwgc3R5bGUuaGFzVGV4
dENvbWJpbmUoKSkKICAgICAgICAgcmV0dXJuIHRleHQud2lkdGgoZnJvbSwgbGVuLCBmb250LCB4
UG9zLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cpOwogCiAgICAgaWYgKGxheW91dCkK
QEAgLTc2NSw3ICs3NjUsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRl
eHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgIGJvb2wgY2Fu
SGFuZ1B1bmN0dWF0aW9uQXRTdGFydCA9IHN0eWxlLmhhbmdpbmdQdW5jdHVhdGlvbigpICYgRmly
c3RIYW5naW5nUHVuY3R1YXRpb247CiAgICAgYm9vbCBjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCA9
IHN0eWxlLmhhbmdpbmdQdW5jdHVhdGlvbigpICYgTGFzdEhhbmdpbmdQdW5jdHVhdGlvbjsKICAg
ICBib29sIGNhbkhhbmdTdG9wT3JDb21tYUF0TGluZUVuZCA9IHN0eWxlLmhhbmdpbmdQdW5jdHVh
dGlvbigpICYgQWxsb3dFbmRIYW5naW5nUHVuY3R1YXRpb247Ci0gICAgaW50IGVuZFB1bmN0dWF0
aW9uSW5kZXggPSBjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCAmJiBtX2NvbGxhcHNlV2hpdGVTcGFj
ZSA/IHJlbmRlclRleHQubGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgOiByZW5k
ZXJUZXh0LnRleHRMZW5ndGgoKSAtIDE7CisgICAgaW50IGVuZFB1bmN0dWF0aW9uSW5kZXggPSBj
YW5IYW5nUHVuY3R1YXRpb25BdEVuZCAmJiBtX2NvbGxhcHNlV2hpdGVTcGFjZSA/IHJlbmRlclRl
eHQubGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgOiByZW5kZXJUZXh0LnRleHQo
KS5sZW5ndGgoKSAtIDE7CiAgICAgdW5zaWduZWQgbGFzdFNwYWNlID0gbV9jdXJyZW50Lm9mZnNl
dCgpOwogICAgIGZsb2F0IHdvcmRTcGFjaW5nID0gbV9jdXJyZW50U3R5bGUtPmZvbnRDYXNjYWRl
KCkud29yZFNwYWNpbmcoKTsKICAgICBmbG9hdCBsYXN0U3BhY2VXb3JkU3BhY2luZyA9IDA7CkBA
IC04MTAsNyArODEwLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0
KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAvLyB3b3JkcyB3
aXRoIHRoZWlyIHRyYWlsaW5nIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KICAgICBU
ZXh0TGF5b3V0KiB0ZXh0TGF5b3V0ID0gbV9yZW5kZXJUZXh0SW5mby5sYXlvdXQuZ2V0KCk7CiAg
ICAgV29yZFRyYWlsaW5nU3BhY2Ugd29yZFRyYWlsaW5nU3BhY2Uoc3R5bGUsICF0ZXh0TGF5b3V0
KTsKLSAgICBmb3IgKDsgbV9jdXJyZW50Lm9mZnNldCgpIDwgcmVuZGVyVGV4dC50ZXh0TGVuZ3Ro
KCk7IG1fY3VycmVudC5mYXN0SW5jcmVtZW50SW5UZXh0Tm9kZSgpKSB7CisgICAgZm9yICg7IG1f
Y3VycmVudC5vZmZzZXQoKSA8IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpOyBtX2N1cnJlbnQu
ZmFzdEluY3JlbWVudEluVGV4dE5vZGUoKSkgewogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFj
dGVySXNTcGFjZSA9IG1fY3VycmVudENoYXJhY3RlcklzU3BhY2U7CiAgICAgICAgIGJvb2wgcHJl
dmlvdXNDaGFyYWN0ZXJJc1dTID0gbV9jdXJyZW50Q2hhcmFjdGVySXNXUzsKICAgICAgICAgVUNo
YXIgYyA9IG1fY3VycmVudC5jdXJyZW50KCk7CkBAIC04NDAsNyArODQwLDcgQEAgaW5saW5lIGJv
b2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFz
dXJlbWVudHMsIGJvb2wKIAogICAgICAgICBpZiAoKGJyZWFrQWxsIHx8IGJyZWFrV29yZHMpICYm
ICFtaWRXb3JkQnJlYWsgJiYgKCFtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IHN0eWxlLndo
aXRlU3BhY2UoKSAhPSBQUkVfV1JBUCkpIHsKICAgICAgICAgICAgIHdyYXBXICs9IGNoYXJXaWR0
aDsKLSAgICAgICAgICAgIGJvb2wgbWlkV29yZEJyZWFrSXNCZWZvcmVTdXJyb2dhdGVQYWlyID0g
VTE2X0lTX0xFQUQoYykgJiYgbV9jdXJyZW50Lm9mZnNldCgpICsgMSA8IHJlbmRlclRleHQudGV4
dExlbmd0aCgpICYmIFUxNl9JU19UUkFJTChyZW5kZXJUZXh0W21fY3VycmVudC5vZmZzZXQoKSAr
IDFdKTsKKyAgICAgICAgICAgIGJvb2wgbWlkV29yZEJyZWFrSXNCZWZvcmVTdXJyb2dhdGVQYWly
ID0gVTE2X0lTX0xFQUQoYykgJiYgVTE2X0lTX1RSQUlMKHJlbmRlclRleHQuY2hhcmFjdGVyQXQo
bV9jdXJyZW50Lm9mZnNldCgpICsgMSkpOwogICAgICAgICAgICAgY2hhcldpZHRoID0gdGV4dFdp
ZHRoKHJlbmRlclRleHQsIG1fY3VycmVudC5vZmZzZXQoKSwgbWlkV29yZEJyZWFrSXNCZWZvcmVT
dXJyb2dhdGVQYWlyID8gMiA6IDEsIGZvbnQsIG1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSArIHdy
YXBXLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBmYWxsYmFja0ZvbnRzLCB0
ZXh0TGF5b3V0KTsKICAgICAgICAgICAgIG1pZFdvcmRCcmVhayA9IG1fd2lkdGguY29tbWl0dGVk
V2lkdGgoKSArIHdyYXBXICsgY2hhcldpZHRoID4gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpOwog
ICAgICAgICB9CkBAIC05MjksNyArOTI5LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0
OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAg
ICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIGh5cGhlbmF0ZSBhdCB0aGUgZmluYWwg
YnJlYWsgb2YgYSBibG9jaywgc2luY2UgdGhpcyBtZWFucyB0aGVyZSBpcwogICAgICAgICAgICAg
ICAgICAgICAvLyBubyBtb3JlIGNvbnRlbnQsIGFuZCBhIGh5cGhlbmF0ZWQgc2luZ2xlIHdvcmQg
d291bGQgZW5kIHVwIG9uIGEgbGluZSBieSBpdHNlbGYuIFRoaXMgbG9va3MKICAgICAgICAgICAg
ICAgICAgICAgLy8gYmFkIHNvIGp1c3QgZG9uJ3QgYWxsb3cgaXQuCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgIW1fd2lkdGguZml0c09uTGluZSgpICYmIChtX25leHRP
YmplY3QgfHwgIXJlbmRlclRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZShtX2N1cnJlbnQub2Zm
c2V0KCksIHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0gbV9jdXJyZW50Lm9mZnNldCgpKSB8fCBp
c0xpbmVFbXB0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkh5cGhlbmF0ZSAmJiAh
bV93aWR0aC5maXRzT25MaW5lKCkgJiYgKG1fbmV4dE9iamVjdCB8fCAhcmVuZGVyVGV4dC5jb250
YWluc09ubHlIVE1MV2hpdGVzcGFjZShtX2N1cnJlbnQub2Zmc2V0KCksIHJlbmRlclRleHQudGV4
dCgpLmxlbmd0aCgpIC0gbV9jdXJyZW50Lm9mZnNldCgpKSB8fCBpc0xpbmVFbXB0eSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5wdXNoKFsmXShJbmxpbmVJ
dGVyYXRvciYgbW9kaWZ5TWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlIeXBo
ZW5hdGluZyhyZW5kZXJUZXh0LCBmb250LCBzdHlsZS5sb2NhbGUoKSwgY29uc2VjdXRpdmVIeXBo
ZW5hdGVkTGluZXMsIG1fYmxvY2tTdHlsZS5oeXBoZW5hdGlvbkxpbWl0TGluZXMoKSwgc3R5bGUu
aHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwg
bGFzdFNwYWNlLCBtX2N1cnJlbnQub2Zmc2V0KCksIG1fd2lkdGguY3VycmVudFdpZHRoKCkgLSBh
ZGRpdGlvbmFsVGVtcFdpZHRoLCBtX3dpZHRoLmF2YWlsYWJsZVdpZHRoKCksIGlzRml4ZWRQaXRj
aCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBtb2RpZnlNZSwg
bV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpLCBtX2xpbmVCcmVha2VyLm1faHlwaGVu
YXRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTk2NSw3ICs5NjUsNyBAQCBp
bmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYg
d29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uID0gbGFzdENoYXJhY3RlckZyb21QcmV2aW91
c1JlbmRlclRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXM8UmVu
ZGVyVGV4dD4ocmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KCpyZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgPj0gMSAmJiB0
ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAt
IDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxhc3RCcmVha2lu
Z1Bvc2l0b24udmFsdWUoKSA+PSAxICYmIHRleHRSZW5kZXJlci50ZXh0KCkubGVuZ3RoKCkgPiAo
bGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpIC0gMSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uID0gdGV4dFJlbmRlcmVy
LmNoYXJhY3RlckF0KGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAtIDEpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hh
cmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbikKQEAgLTEwNzMsNyArMTA3Myw3IEBAIGlubGlu
ZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3Jk
TWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICBpZiAobV9uZXh0T2JqZWN0ICYmIG1fc3Rh
cnRPZklnbm9yZWRTcGFjZXMub2Zmc2V0KCkgJiYgbV9uZXh0T2JqZWN0LT5pc0JSKCkgJiYgKG1f
YmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBSSUdIVCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFsaWdu
KCkgPT0gV0VCS0lUX1JJR0hUKSkgewogICAgICAgICAgICAgICAgIG1fc3RhcnRPZklnbm9yZWRT
cGFjZXMuc2V0T2Zmc2V0KG1fc3RhcnRPZklnbm9yZWRTcGFjZXMub2Zmc2V0KCkgLSAxKTsKICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGp1c3QgYSBzaW5nbGUgdHJhaWxpbmcgc3BhY2Ug
c3RhcnQgaWdub3JpbmcgaXQgbm93IHNvIGl0IGNvbGxhcHNlcyBhd2F5LgotICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQub2Zmc2V0KCkgPT0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSAx
KQorICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQub2Zmc2V0KCkgPT0gcmVuZGVyVGV4dC50
ZXh0KCkubGVuZ3RoKCkgLSAxKQogICAgICAgICAgICAgICAgICAgICBtX2xpbmVXaGl0ZXNwYWNl
Q29sbGFwc2luZ1N0YXRlLnN0YXJ0SWdub3JpbmdTcGFjZXMobV9zdGFydE9mSWdub3JlZFNwYWNl
cyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEzMTMsMTMgKzEzMTMsMTMgQEAgaW5s
aW5lIElubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0
aW9uRm9yVHJhaWxpbmdXb3JkKCkKICAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKICAgICBSZW5k
ZXJUZXh0JiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmxpbmVCcmVhay5yZW5k
ZXJlcigpKTsKICAgICAvLyBEb24ndCBldmVuIGJvdGhlciBtZWFzdXJpbmcgaWYgb3VyIHJlbWFp
bmluZyBsaW5lIGhhcyBtYW55IGNoYXJhY3RlcnMKLSAgICBpZiAocmVuZGVyVGV4dC50ZXh0TGVu
Z3RoKCkgPT0gbGluZUJyZWFrLm9mZnNldCgpIHx8IHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0g
bGluZUJyZWFrLm9mZnNldCgpID4gbG9uZ1RyYWlsaW5nV29yZExlbmd0aCkKKyAgICBpZiAocmVu
ZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgPT0gbGluZUJyZWFrLm9mZnNldCgpIHx8IHJlbmRlclRl
eHQudGV4dCgpLmxlbmd0aCgpIC0gbGluZUJyZWFrLm9mZnNldCgpID4gbG9uZ1RyYWlsaW5nV29y
ZExlbmd0aCkKICAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKICAgICBib29sIGNhblVzZUxpbmVC
cmVha1Nob3J0Y3V0ID0gbV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5tb2RlKCkg
PT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpEZWZhdWx0OwogICAgIGJvb2wgYnJlYWtOQlNQID0g
bV9hdXRvV3JhcCAmJiBtX2N1cnJlbnRTdHlsZS0+bmJzcE1vZGUoKSA9PSBTUEFDRTsKICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBsaW5lQnJlYWsu
bmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CiAgICAgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5m
by5saW5lQnJlYWtJdGVyYXRvciwgbGluZUJyZWFrLm9mZnNldCgpICsgMSwgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBtX2N1cnJlbnRT
dHlsZS0+d29yZEJyZWFrKCkgPT0gS2VlcEFsbFdvcmRCcmVhayk7Ci0gICAgaWYgKCFuZXh0QnJl
YWthYmxlUG9zaXRpb24gfHwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLnZhbHVlKCkgIT0gcmVuZGVy
VGV4dC50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKCFuZXh0QnJlYWthYmxlUG9zaXRpb24gfHwgbmV4
dEJyZWFrYWJsZVBvc2l0aW9uLnZhbHVlKCkgIT0gcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBsaW5lQnJlYWs7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
ID0gbGluZVN0eWxlKHJlbmRlclRleHQsIG1fbGluZUluZm8pOwogICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsKQEAgLTEzMjksNyArMTMyOSw3IEBAIGlu
bGluZSBJbmxpbmVJdGVyYXRvciBCcmVha2luZ0NvbnRleHQ6Om9wdGltYWxMaW5lQnJlYWtMb2Nh
dGlvbkZvclRyYWlsaW5nV29yZCgpCiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBjYW5k
aWRhdGUgPSBtX2xpbmVCcmVha0hpc3RvcnkuZ2V0KGkpOwogICAgICAgICBpZiAoY2FuZGlkYXRl
LnJlbmRlcmVyKCkgIT0gbGluZUJyZWFrLnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4g
YmVzdDsKLSAgICAgICAgZmxvYXQgd2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgY2FuZGlk
YXRlLm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAtIGNhbmRpZGF0ZS5vZmZzZXQo
KSwgZm9udCwgMCwgZm9udC5pc0ZpeGVkUGl0Y2goKSwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGR1
bW15Rm9udHMpOworICAgICAgICBmbG9hdCB3aWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBj
YW5kaWRhdGUub2Zmc2V0KCksIHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0gY2FuZGlkYXRl
Lm9mZnNldCgpLCBmb250LCAwLCBmb250LmlzRml4ZWRQaXRjaCgpLCBtX2NvbGxhcHNlV2hpdGVT
cGFjZSwgZHVtbXlGb250cyk7CiAgICAgICAgIGlmICh3aWR0aCA+IG1fd2lkdGguYXZhaWxhYmxl
V2lkdGgoKSkKICAgICAgICAgICAgIHJldHVybiBiZXN0OwogICAgICAgICBpZiAod2lkdGggLyBt
X3dpZHRoLmF2YWlsYWJsZVdpZHRoKCkgPiBvcHRpbWFsVHJhaWxpbmdMaW5lUmF0aW8pIC8vIFN1
YnNlcXVlbnQgbGluZSBpcyBsb25nIGVub3VnaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAKaW5kZXggMTFjZTJiNmY2MTQwOGU4NzU5YmU5
ZDdiZmU0ZGVjYjEzNzE3OGJmNS4uNTRmMGI1MzQwMzQyZjgwM2NhOGZiNjQwODhkZDk0YTQyNzUw
NDI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdP
YmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGluZ09i
amVjdHMuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgVHJhaWxpbmdPYmplY3RzOjp1cGRhdGVX
aGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRpb25zRm9yVHJhaWxpbmdCb3hlcyhMaW5lCiAgICAg
ICAgIEFTU0VSVChtX3doaXRlc3BhY2UtPmlzVGV4dCgpKTsKICAgICAgICAgQVNTRVJUKGNvbGxh
cHNlRmlyc3RTcGFjZSA9PSBDb2xsYXBzZUZpcnN0U3BhY2UpOwogICAgICAgICAvLyBBZGQgYSBu
ZXcgZW5kIHRyYW5zaXRpb24gdGhhdCBzdG9wcyByaWdodCBhdCB0aGUgdmVyeSBlbmQuCi0gICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fd2hpdGVzcGFjZS0+dGV4dExlbmd0aCgpOworICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRlc3BhY2UtPnRleHQoKS5sZW5ndGgoKTsKICAgICAg
ICAgdW5zaWduZWQgcG9zID0gbGVuZ3RoID49IDIgPyBsZW5ndGggLSAyIDogVUlOVF9NQVg7CiAg
ICAgICAgIElubGluZUl0ZXJhdG9yIGVuZE1pZCgwLCBtX3doaXRlc3BhY2UsIHBvcyk7CiAgICAg
ICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0YXJ0SWdub3JpbmdTcGFjZXMoZW5k
TWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRmVuY2VkLmNwcAppbmRleCBlYzFhMDEyNWYwMDkxNDk3Mjk0MGQzZmJlN2U4M2M4NTg1
NDdlMjIyLi4yOGZhZmRiNTNmMzcyMTYwZWY0OTdmOWFjZjdjYmI4OGQwNTZkNDliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVG
cm9tRWxlbWVudCgpCiAgICAgYXV0byYgc2VwYXJhdG9ycyA9IGZlbmNlZC5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpzZXBhcmF0b3JzQXR0cik7CiAgICAgaWYg
KCFzZXBhcmF0b3JzLmlzTnVsbCgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY2hhcmFjdGVy
czsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzZXBhcmF0b3JzLmxlbmd0
aCgpOyBpKyspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlcGFyYXRvcnMu
bGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKHNlcGFy
YXRvcnNbaV0pKQogICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuYXBwZW5kKHNlcGFyYXRvcnNb
aV0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCAyOWZkYTQ2MTQxOWMwMmUyYmI5MWQxOGUxNmNk
ZTJmOGJkMTgxNTE5Li4zYmFjOWNhNWQwYWUzM2E1MDU4MjM5NzNkMTEzZjQ2NWZiZDk5MzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
VGV4dC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnRSZWN0IFJlbmRlclNWR0lubGluZVRleHQ6
OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFy
YWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9uKSBjb25zdAogewogICAgIEFTU0VS
VChwb3NpdGlvbiA+PSAwKTsKLSAgICBBU1NFUlQocG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+
KHRleHRMZW5ndGgoKSkpOworICAgIEFTU0VSVChwb3NpdGlvbiA8IHN0YXRpY19jYXN0PGludD4o
dGV4dCgpLmxlbmd0aCgpKSk7CiAKICAgICAvLyBFYWNoIDx0ZXh0UGF0aD4gZWxlbWVudCBzdGFy
dHMgYSBuZXcgdGV4dCBjaHVuaywgcmVnYXJkbGVzcyBvZiBhbnkgeC95IHZhbHVlcy4KICAgICBp
ZiAoIXBvc2l0aW9uICYmIHBhcmVudCgpLT5pc1NWR1RleHRQYXRoKCkgJiYgIXByZXZpb3VzU2li
bGluZygpKQpAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wgUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y2hh
cmFjdGVyU3RhcnRzTmV3VGV4dENodW5rKGludCBwb3NpdGlvbikgY29uc3QKIAogVmlzaWJsZVBv
c2l0aW9uIFJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopCiB7Ci0gICAgaWYg
KCFmaXJzdFRleHRCb3goKSB8fCAhdGV4dExlbmd0aCgpKQorICAgIGlmICghZmlyc3RUZXh0Qm94
KCkgfHwgdGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3Np
dGlvbigwLCBET1dOU1RSRUFNKTsKIAogICAgIGZsb2F0IGJhc2VsaW5lID0gbV9zY2FsZWRGb250
LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNw
cAppbmRleCAyYzA2OGI5YzM5OGE2MzQ2OWY3N2I3MGM0OWI4ODVjZjUwOTU5OTAwLi41ZTk5OTM4
NjI5ZGIzOWMzMGY2NjE1MjMyYmU4Mjc0ZjQyNzU4N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXIuY3BwCkBAIC04MCwxNyArODAsMjAgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXI6OnJlYnVpbGRNZXRyaWNzRm9yVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGkKIAog
c3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KGNvbnN0IFJlbmRl
clNWR0lubGluZVRleHQmIHRleHQsIHVuc2lnbmVkJiBhdENoYXJhY3RlciwgYm9vbCYgbGFzdENo
YXJhY3Rlcldhc1NwYWNlKQogeworICAgIGF1dG8mIHN0cmluZyA9IHRleHQudGV4dCgpOworICAg
IGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGlmICh0ZXh0LnN0eWxlKCkud2hp
dGVTcGFjZSgpID09IFBSRSkgewotICAgICAgICBhdENoYXJhY3RlciArPSB0ZXh0LnRleHRMZW5n
dGgoKTsKKyAgICAgICAgYXRDaGFyYWN0ZXIgKz0gbGVuZ3RoOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgZm9yICh1bnNpZ25lZCB0ZXh0UG9zaXRpb24gPSAwLCB0ZXh0TGVuZ3RoID0g
dGV4dC50ZXh0TGVuZ3RoKCk7IHRleHRQb3NpdGlvbiA8IHRleHRMZW5ndGg7ICsrdGV4dFBvc2l0
aW9uKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSB0ZXh0W3RleHRQ
b3NpdGlvbl07Ci0gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICcgJyAmJiBsYXN0Q2hh
cmFjdGVyV2FzU3BhY2UpCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGEgY29tcGxldGUgd2hp
dGVzcGFjZSBjb2xsYXBzaW5nIGltcGxlbWVudGF0aW9uOyBpdCBkb2Vzbid0IGhhbmRsZSBuZXds
aW5lcyBvciB0YWJzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07CisgICAgICAgIGlmIChjaGFy
YWN0ZXIgPT0gJyAnICYmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSA9IGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJyAnOworICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UgPSBjaGFyYWN0ZXIgPT0gJyAn
OwogICAgICAgICArK2F0Q2hhcmFjdGVyOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCmluZGV4IDY2MGU4NmEz
MmE4MWQ0ZGU0YzNjYjUyNjMyNjJhZTIzZmJjYTU1OGMuLjIzMzM3MDFkMjQzNmQxMDQwODcyOTZj
ZTI5MzdmMzFjMWE0MDY1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgU1ZH
VGV4dExheW91dEVuZ2luZTo6Y3VycmVudExvZ2ljYWxDaGFyYWN0ZXJBdHRyaWJ1dGVzKFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1CiAgICAgbG9naWNhbEF0dHJpYnV0ZXMgPSBtX2xheW91dEF0dHJpYnV0
ZXNbbV9sYXlvdXRBdHRyaWJ1dGVzUG9zaXRpb25dOwogICAgIEFTU0VSVChsb2dpY2FsQXR0cmli
dXRlcyk7CiAKLSAgICBpZiAobV9sb2dpY2FsQ2hhcmFjdGVyT2Zmc2V0ICE9IGxvZ2ljYWxBdHRy
aWJ1dGVzLT5jb250ZXh0KCkudGV4dExlbmd0aCgpKQorICAgIGlmIChtX2xvZ2ljYWxDaGFyYWN0
ZXJPZmZzZXQgIT0gbG9naWNhbEF0dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0KCkubGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgKyttX2xheW91dEF0dHJpYnV0ZXNQb3NpdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAppbmRl
eCA4NmU0YmYyZjNkNTFlY2ZkYzJmODhhYzA1NTg0ODI4YjcyZWVhZjc2Li5mZDg5MDIyOTRiNmEw
MDRjYTUwNTg2ZjU3YWJhNjQ0YjZlMDNlNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBTVkdUZXh0
UXVlcnk6Om1vZGlmeVN0YXJ0RW5kUG9zaXRpb25zUmVzcGVjdGluZ0xpZ2F0dXJlcyhEYXRhKiBx
dWVyeURhdGEsIHUKICAgICB1bnNpZ25lZCB0ZXh0TWV0cmljc1NpemUgPSB0ZXh0TWV0cmljc1Zh
bHVlcy5zaXplKCk7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9IDA7Ci0gICAgdW5z
aWduZWQgcG9zaXRpb25TaXplID0gbGF5b3V0QXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHRMZW5n
dGgoKTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvblNpemUgPSBsYXlvdXRBdHRyaWJ1dGVzLT5jb250
ZXh0KCkudGV4dCgpLmxlbmd0aCgpOwogCiAgICAgYm9vbCBhbHRlclN0YXJ0UG9zaXRpb24gPSB0
cnVlOwogICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNzMzMTEwOWFmNWEwNWZhNzM4MTRmZTM2
YmJlMjc2MTE3MzQ2NDRiYy4uY2MzOWYyMjNkZjFlNzc4OTg5ZDMyNjJlMWU1NDkyYjVlZjM0Nzhj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgpAQCAtMTc1
LDcgKzE3Niw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29u
dGFpbmVyTm9kZSYgcm9vdCkKICAgICAgICAgICAgIGF1dG8mIHRleHQgPSBkb3duY2FzdDxUZXh0
Pihub2RlKTsKICAgICAgICAgICAgIGF1dG8qIHRleHRVcGRhdGUgPSBtX3N0eWxlVXBkYXRlLT50
ZXh0VXBkYXRlKHRleHQpOwogICAgICAgICAgICAgYm9vbCBkaWRDcmVhdGVQYXJlbnQgPSBwYXJl
bnQoKS51cGRhdGVzICYmIHBhcmVudCgpLnVwZGF0ZXMtPnVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6
OkRldGFjaDsKLSAgICAgICAgICAgIGJvb2wgbWF5TmVlZFVwZGF0ZVdoaXRlc3BhY2VPbmx5UmVu
ZGVyZXIgPSByZW5kZXJpbmdQYXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVy
ICYmIHRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICAgICAgYm9vbCBtYXlO
ZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudCgpLmRpZENy
ZWF0ZU9yRGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICAgICAgICAgIGlmIChkaWRDcmVhdGVQYXJlbnQg
fHwgdGV4dFVwZGF0ZSB8fCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlcikKICAg
ICAgICAgICAgICAgICB1cGRhdGVUZXh0UmVuZGVyZXIodGV4dCwgdGV4dFVwZGF0ZSk7CiAKQEAg
LTQwOCw3ICs0MDksNyBAQCBib29sIFJlbmRlclRyZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJc05l
ZWRlZChjb25zdCBUZXh0JiB0ZXh0Tm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYg
KCF0ZXh0Tm9kZS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdGV4
dE5vZGUuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgIGlmICghdGV4dE5vZGUuZGF0YSgp
LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJpbmdQYXJlbnQucHJldmlvdXNDaGls
ZFJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApp
bmRleCA4MzRjMGUzZDk4ZThiMmRlNWQ5ODBhZmFmZTc2MzVmMjQzN2UxZjBkLi41OTdjZWRkN2Mw
YWFkM2U2NzMwZmIzODA1MTU2YTU1MDc5MzAzODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAK
QEAgLTI1MSw4ICsyNTEsOCBAQCBib29sIFNWR1Rlc3RzOjpoYXNGZWF0dXJlRm9yTGVnYWN5Qmlu
ZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gVGhpcyBp
cyB3aGF0IHRoZSBET01JbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBub3cgZG9lcyBpbiBKYXZhU2Ny
aXB0IGFzIGlzIG5vdyBzdWdnZXN0ZWQgaW4gdGhlIERPTSBzcGVjaWZpY2F0aW9uLgogICAgIC8v
IFRoZSBiZWhhdmlvciBpbXBsZW1lbnRlZCBiZWxvdyBpcyBxdWlya3ksIGJ1dCBwcmVzZXJ2ZXMg
d2hhdCBXZWJLaXQgaGFzIGRvbmUgZm9yIGF0IGxlYXN0IHRoZSBsYXN0IGZldyB5ZWFycy4KIAot
ICAgIGJvb2wgaGFzU1ZHMTBGZWF0dXJlUHJlZml4ID0gZmVhdHVyZS5zdGFydHNXaXRoKCJvcmcu
dzNjLmRvbS5zdmciLCBmYWxzZSkgfHwgZmVhdHVyZS5zdGFydHNXaXRoKCJvcmcudzNjLnN2ZyIs
IGZhbHNlKTsKLSAgICBib29sIGhhc1NWRzExRmVhdHVyZVByZWZpeCA9IGZlYXR1cmUuc3RhcnRz
V2l0aCgiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnIiwgZmFsc2UpOworICAgIGJvb2wgaGFzU1ZH
MTBGZWF0dXJlUHJlZml4ID0gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmZWF0
dXJlLCAib3JnLnczYy5kb20uc3ZnIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShmZWF0dXJlLCAib3JnLnczYy5zdmciKTsKKyAgICBib29sIGhhc1NWRzExRmVhdHVyZVBy
ZWZpeCA9IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgImh0dHA6
Ly93d3cudzMub3JnL3RyL3N2ZyIpOwogCiAgICAgLy8gV2UgZG9uJ3QgZXZlbiB0cnkgdG8gaGFu
ZGxlIGZlYXR1cmUgbmFtZXMgdGhhdCBkb24ndCBsb29rIGxpa2UgdGhlIFNWRyBvbmVzLCBzbyBq
dXN0IHJldHVybiB0cnVlIGZvciBhbGwgb2YgdGhvc2UuCiAgICAgaWYgKCEoaGFzU1ZHMTBGZWF0
dXJlUHJlZml4IHx8IGhhc1NWRzExRmVhdHVyZVByZWZpeCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYzMx
MzEzNWFlZTA4N2Y2ODFjZWM2MGQ0YjViYmVkOTk3NGMxYTM0YS4uYTM3ZDYxNTE2YTYyODAwZjVh
NDMxYjg5MWM3MjczNGYwOTAzNWJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMzk5LDIyICszOTksMjAg
QEAgc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKIAotICAgIC8vIE9uIG5vbi1X
aW5kb3dzIHBsYXRmb3JtcyBsaWJ4bWwgYXNrcyBmb3IgdGhpcyBVUkwsIHRoZQotICAgIC8vICJY
TUxfWE1MX0RFRkFVTFRfQ0FUQUxPRyIsIG9uIGluaXRpYWxpemF0aW9uLgorICAgIC8vIE9uIG5v
bi1XaW5kb3dzIHBsYXRmb3JtcyBsaWJ4bWwgYXNrcyBmb3IgdGhpcyBVUkwsIHRoZSAiWE1MX1hN
TF9ERUZBVUxUX0NBVEFMT0ciLCBvbiBpbml0aWFsaXphdGlvbi4KICAgICBpZiAodXJsU3RyaW5n
ID09ICJmaWxlOi8vL2V0Yy94bWwvY2F0YWxvZyIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIE9uIFdpbmRvd3MsIGxpYnhtbCBjb21wdXRlcyBhIFVSTCByZWxhdGl2ZSB0byB3aGVy
ZSBpdHMgRExMIHJlc2lkZXMuCi0gICAgaWYgKHVybFN0cmluZy5zdGFydHNXaXRoKCJmaWxlOi8v
LyIsIGZhbHNlKSAmJiB1cmxTdHJpbmcuZW5kc1dpdGgoIi9ldGMvY2F0YWxvZyIsIGZhbHNlKSkK
KyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJm
aWxlOi8vLyIpICYmIHVybFN0cmluZy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIvZXRjL2Nh
dGFsb2ciKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gVGhlIG1vc3QgY29tbW9u
IERURC4gIFRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gaGFtbWVyaW5nIHd3dy53M2Mub3JnCi0g
ICAgLy8gYnkgcmVxdWVzdGluZyB0aGlzIFVSTCBmb3IgZXZlcnkgWEhUTUwgZG9jdW1lbnQuCi0g
ICAgaWYgKHVybFN0cmluZy5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbCIs
IGZhbHNlKSkKKyAgICAvLyBUaGUgbW9zdCBjb21tb24gRFRELiBUaGVyZSBpc24ndCBtdWNoIHBv
aW50IGluIGhhbW1lcmluZyB3d3cudzNjLm9yZyBieSByZXF1ZXN0aW5nIHRoaXMgZm9yIGV2ZXJ5
IFhIVE1MIGRvY3VtZW50LgorICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHVybFN0cmluZywgImh0dHA6Ly93d3cudzMub3JnL3RyL3hodG1sIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIFNpbWlsYXJseSwgdGhlcmUgaXNuJ3QgbXVjaCBwb2ludCBp
biByZXF1ZXN0aW5nIHRoZSBTVkcgRFRELgotICAgIGlmICh1cmxTdHJpbmcuc3RhcnRzV2l0aCgi
aHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHIiwgZmFsc2UpKQorICAgIGlmIChzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybFN0cmluZywgImh0dHA6Ly93d3cudzMub3Jn
L2dyYXBoaWNzL3N2ZyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBUaGUgbGli
eG1sIGRvZXNuJ3QgZ2l2ZSB1cyBhIGxvdCBvZiBjb250ZXh0IGZvciBkZWNpZGluZyB3aGV0aGVy
IHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKaW5kZXggMWViNzkzZDllZmUyN2VjMzYwNDhmMTVlNGFkYTEwMGE1MGZjODg5NC4u
ZmQ3YmE3OGI2Mzc5ODQ3ODMwZWRjZGU5ZWRkNDczOWI0N2ZkOTg2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMjIx
LDEzICsyMjEsOSBAQCBzdGF0aWMgUmV0cmlldmVEZWNpc2lvbiBtYWtlUmV0cmlldmVEZWNpc2lv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcQogICAgIHJldHVybiBSZXRyaWV2
ZURlY2lzaW9uOjpZZXM7CiB9CiAKLXN0YXRpYyBib29sIGlzTWVkaWFNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQorc3RhdGljIGJvb2wgaXNNZWRpYU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKLSAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIiwgLypjYXNl
U2Vuc2l0aXZlKi8gZmFsc2UpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobWltZVR5
cGUuc3RhcnRzV2l0aCgiYXVkaW8vIiwgLypjYXNlU2Vuc2l0aXZlKi8gZmFsc2UpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpOwogfQogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkVG90YWxSZXNvdXJjZVNpemVGcm9tQ29udGVudFJhbmdl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmlu
ZGV4IDNjNDk5MWNjNzU5ZDJmYjc1ODRkM2RhY2M0MTA0NTM2YjIwMWE2ZTQuLjhmYTgxZDEwOWE0
YzczY2QwYjMxOTViODhmZjVlM2RiMTU3YzM4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgc3RhdGljIHZvaWQgaGFzaFN0cmluZyhTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0
cmluZykKICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7CisgICAg
aWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgbnVsbEJ5dGUgPSAwOwogICAgICAgICBzaGExLmFkZEJ5dGVzKHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBzaGExLmFkZEJ5dGVzKCZu
dWxsQnl0ZSwgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVQb2xpY2llcy5jcHAKaW5kZXggMDFjZTgxM2MzYmM5MTI0Y2YyMmUyZmQ3MzQ1MDUwY2I4
NzJjNjMzNi4uMjc0MjkzNGJkNGY0YTQ5YzJlMzI0OTMzODY2Yzg2ZmYwNDdkZjFiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVQb2xpY2llc1NldEN1
c3RvbUhlYWRlckZpZWxkcyhXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgbmFtZSA9
IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoa2V5cy5nZXQo
KSwgaSkpOwogICAgICAgICBhdXRvIGZpZWxkID0gV2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkOjpj
cmVhdGUodG9JbXBsKG5hbWUpLT5zdHJpbmcoKSwgdG9JbXBsKHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnksIG5hbWUpKSktPnN0cmlu
ZygpKTsKLSAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLT5uYW1lKCkuc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKCJYLSIpKQorICAgICAgICBpZiAoZmllbGQgJiYgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWVsZC0+bmFtZSgpLCAieC0iKSkKICAgICAgICAgICAgIGZp
ZWxkcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqZmllbGQpKTsKICAgICB9CiAgICAgdG9JbXBs
KHdlYnNpdGVQb2xpY2llcyktPnNldEN1c3RvbUhlYWRlckZpZWxkcyhXVEZNb3ZlKGZpZWxkcykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVQb2xpY2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlUG9saWNpZXMubW0KaW5kZXggY2IyZTU2NjhlNjJhNGM3YzAxZWFmZjhmZDQyMTkxZWJmNjBj
YWFlYi4uZDdhYTI1YTRlZDVjZjA2OTQ1YjE2Y2E0M2JjYmViNzFkZWZiYWQ3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGlj
aWVzLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgLSAodm9pZClzZXRDdXN0b21IZWFkZXJGaWVsZHM6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWZpZWxkcwogICAgIAogICAg
IGZvciAoTlNTdHJpbmcqIG5hbWUgaW4gZmllbGRzKSB7CiAgICAgICAgIGF1dG8gZmllbGQgPSBX
ZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShuYW1lLCBbZmllbGRzIG9iamVjdEZvcktl
eTpuYW1lXSk7Ci0gICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC0+bmFtZSgpLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiWC0iKSkKKyAgICAgICAgaWYgKGZpZWxkICYmIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmllbGQtPm5hbWUoKSwgIngtIikpCiAgICAgICAgICAg
ICBwYXJzZWRGaWVsZHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmZpZWxkKSk7CiAgICAgfQog
ICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldEN1c3RvbUhlYWRlckZpZWxkcyhXVEZNb3ZlKHBhcnNl
ZEZpZWxkcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NWIwNWFhZjJlMDljYzkzNzI5MzE1Y2ZhZTQzMTZmMzc2YWJiYmQxMC4uNzU5MGQ1MTdkZDc2NzJj
ZGZlYmUzYTZmZmE5NTdmYTY1YzBiZjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC02MjUyLDcgKzYyNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
UwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0
cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewotICAgIGlmICghc3VnZ2VzdGVkRmls
ZW5hbWUuZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkpCisgICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFt
ZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV1RGTW92ZShzdWdnZXN0ZWRGaWxl
bmFtZSksIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vcGRmIiksIFdURk1vdmUob3JpZ2luYXRp
bmdVUkwpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggZGZlZjU4YjA4NTliYTU3ZWNhNjJmZGQxNzhhMWU0ZTFiM2Q2MDY1Yi4uMDBjMWE3
MjlhZTI4ODI2OGU3NGYyZWIwMzgzOGRjNjdkZmRhNjVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OTAsNyArNDkwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZl
QXBwbGljYXRpb25SYXcoY29uc3QKICAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxT
dHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9QQVJBTShv
cmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKLSAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNX
aXRoKCIucGRmIiwgZmFsc2UpKSB7CisgICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5u
b3Qgc2F2ZSBmaWxlIHdpdGhvdXQgLnBkZiBleHRlbnNpb24gdG8gdGhlIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzMsNyArNTMzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKGNvbnN0IFN0cmluZyYKIHsKICAgICBTdHJpbmcgcGRmRmlsZW5hbWUgPSBtX3RlbXBv
cmFyeVBERkZpbGVzLmdldChwZGZVVUlEKTsKIAotICAgIGlmICghcGRmRmlsZW5hbWUuZW5kc1dp
dGgoIi5wZGYiLCBmYWxzZSkpCisgICAgaWYgKCFwZGZGaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKCIucGRmIikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtbTlNXb3Jrc3BhY2Ug
c2hhcmVkV29ya3NwYWNlXSBvcGVuRmlsZTpwZGZGaWxlbmFtZV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVjNzA5MjRjZTkxODMwNWZmNmFl
MGU4MzJjZTk2MzZmNWVjZjAyOWIuLmFhMmZlZjk4Y2E4NWNmYmE0ZWE1NDQxZjBhZGQ0Y2QxYjFm
OTVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC04MDAsNyArODAwLDcgQEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2lu
KFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkUKICAgICBpZiAoaXNC
bG9ja2VkUGx1Z2luIHx8ICFwbHVnaW5Qcm9jZXNzVG9rZW4pIHsKICNpZiBFTkFCTEUoUERGS0lU
X1BMVUdJTikKICAgICAgICAgU3RyaW5nIHBhdGggPSBwYXJhbWV0ZXJzLnVybC5wYXRoKCk7Ci0g
ICAgICAgIGlmIChzaG91bGRVc2VQREZQbHVnaW4oKSAmJiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZPclBvc3RTY3JpcHRNSU1FVHlwZShwYXJhbWV0ZXJzLm1pbWVUeXBlKSB8fCAocGFyYW1ldGVy
cy5taW1lVHlwZS5pc0VtcHR5KCkgJiYgKHBhdGguZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkgfHwg
cGF0aC5lbmRzV2l0aCgiLnBzIiwgZmFsc2UpKSkpKSB7CisgICAgICAgIGlmIChzaG91bGRVc2VQ
REZQbHVnaW4oKSAmJiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlw
ZShwYXJhbWV0ZXJzLm1pbWVUeXBlKSB8fCAocGFyYW1ldGVycy5taW1lVHlwZS5pc0VtcHR5KCkg
JiYgKHBhdGguZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpIHx8IHBhdGguZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBzIikpKSkpIHsKICAgICAgICAgICAgIGF1dG8gcGRmUGx1
Z2luID0gUERGUGx1Z2luOjpjcmVhdGUoZnJhbWUpOwogICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUocGRmUGx1Z2luKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAyMDI0NjI1MjlkNGFkNzhhNGU5ZjZm
NzVkM2ZmMTNjOWZjNTRlNWM1Li44YmQ5N2Y2YTQxYjRlZjBlZmRjYjk0MGE5ODgwYTVlNzBkMDg3
MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0CiAg
ICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRU
ZXh0OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cgcmVw
bGFjZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgotICAgICAg
ICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRh
YmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5jb250YWlu
c09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93
ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVs
ZCAmJiAhc2VsZWN0ZWRUZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7
CiAgICAgfQogICAgIHBvc3RMYXlvdXREYXRhLmluc2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5v
ZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gfHwgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbjsK
ICAgICBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCmluZGV4IDFmOWJhZWNl
MDY5NTBkOTYyNWY0N2I3OWMwNjA2MGMwNjY4YjZiOWMuLjZkNDc0YTI2YzUyMmFlNzE3ZDliYjdh
MjA4ZDIzNmFiMzhlNTc5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hp
c3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lk
IEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nT2JqZWN0KGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBt
X2J5dGVDb3VudCArPSBtYXJrZXJQbHVzTGVuZ3RoQnl0ZUNvdW50KGxlbmd0aCkgKyBsZW5ndGg7
Ci0gICAgaWYgKCFzdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSkKKyAgICBpZiAoIXN0cmluZy5p
c0FsbEFTQ0lJKCkpCiAgICAgICAgIG1fYnl0ZUNvdW50ICs9IGxlbmd0aDsKIH0KIApAQCAtNjkx
LDcgKzY5MSw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kU3Ry
aW5nT2JqZWN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHN0YXJ0T2JqZWN0KCk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIGlmIChzdHJpbmcuY29u
dGFpbnNPbmx5QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXNBbGxBU0NJSSgpKSB7CiAgICAg
ICAgIGlmIChsZW5ndGggPD0gbWF4TGVuZ3RoSW5NYXJrZXJCeXRlKQogICAgICAgICAgICAgYXBw
ZW5kQnl0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihhc2NpaVN0cmluZ01hcmtlckJ5dGUg
fCBsZW5ndGgpKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDU2ZjZkZWMw
YjdmNTJlZWVhZmVkYTY3MTU3YzM2ZTc2YTliNmNhZjQuLmI3YmNhNDViMTYwOWE3ODE0YzcyMDdk
YjJmMGNiNTQxZWUwNmI4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0zNTQsNyArMzU0LDcgQEAg
c3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxz
KQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKICAg
ICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExhYmVscyA9IG5pbDsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4+IHJlZ0V4cHM7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHci
LCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJF
eHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiBy
ZXN1bHQ7CiAgICAgaWYgKCFyZWdFeHBMYWJlbHMpCkBAIC0zODksNyArMzg5LDcgQEAgc3RhdGlj
IFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAg
ICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgICAgIH0KICAg
ICAgICAgcGF0dGVybi5hcHBlbmQoJyknKTsKLSAgICAgICAgcmVzdWx0ID0gbmV3IFJlZ3VsYXJF
eHByZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAg
ICAgIHJlc3VsdCA9IG5ldyBSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpT
Qzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiAgICAgfQogCiAgICAgLy8gYWRkIHJlZ2V4
cCB0byB0aGUgY2FjaGUsIG1ha2luZyBzdXJlIGl0IGlzIGF0IHRoZSBmcm9udCBmb3IgTFJVIG9y
ZGVyaW5nCkBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIE5TU3RyaW5nICptYXRjaExhYmVsc0Fn
YWluc3RTdHJpbmcoTlNBcnJheSAqbGFiZWxzLCBjb25zdCBTdHJpbmcmIHN0cmluZ1QKICAgICBT
dHJpbmcgbXV0YWJsZVN0cmluZ1RvTWF0Y2ggPSBzdHJpbmdUb01hdGNoOwogICAgIAogICAgIC8v
IE1ha2UgbnVtYmVycyBhbmQgXydzIGluIGZpZWxkIG5hbWVzIGJlaGF2ZSBsaWtlIHdvcmQgYm91
bmRhcmllcywgZS5nLiwgImFkZHJlc3MyIgotICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0
Y2gsIFJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiLCBUZXh0Q2FzZVNlbnNpdGl2ZSksICIgIik7Cisg
ICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgUmVndWxhckV4cHJlc3Npb24oIlxcZCIp
LCAiICIpOwogICAgIG11dGFibGVTdHJpbmdUb01hdGNoLnJlcGxhY2UoJ18nLCAnICcpOwogICAg
IAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAgPSByZWdFeHBGb3JMYWJlbHMobGFiZWxz
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3
OTU1MTgwMGQ5MjJjYjNiZWY3NjVhZjBhMDgyYTdlNTk3MmFiMTYxLi4yOWNhYzc5MzVmMDYyOWIx
OTNiZDkzYWE1ZWMzYjk5ZDc1MzVmMDdhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTEtMjAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBXVEY6OlN0cmluZyBvcGVy
YXRpb25zIHRoYXQgZG8gdW5uZWNlc3NhcnkgVW5pY29kZSBvcGVyYXRpb25zIGluc3RlYWQgb2Yg
QVNDSUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTkwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoY2hhbmdlV2lu
ZG93U2NhbGVJZk5lZWRlZCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6dXJsQ29udGFpbnMgY29uc3QpOiBEaXR0by4KKwogMjAxNy0xMS0yMCAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gRGlzYWJsZSBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMgaW4gRmVhdHVyZUxpc3QucG0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA1MTY5ZTY5NmM3MjIy
ZjVhMmZlNDhlY2VlN2I1ZGJiZTJhMGU1M2EzLi40ZDFjNmVlOWYxNmI4YWM0YzhhNDM4Zjk0YTc4
YjRiOTAwNWQzNzBiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCkBAIC0xNTkyLDkgKzE1OTIsOSBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXaW5kb3dTY2FsZUlm
TmVlZGVkKGNvbnN0IGNoYXIqIHRlc3RQYXRoT3JVUikKICAgICBXVEY6OlN0cmluZyBsb2NhbFBh
dGhPclVybCA9IFN0cmluZyh0ZXN0UGF0aE9yVVIpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZh
Y3RvciA9IFtbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGJhY2tpbmdTY2FsZUZhY3Rvcl07
CiAgICAgZmxvYXQgcmVxdWlyZWRTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKGxvY2FsUGF0aE9y
VXJsLmZpbmRJZ25vcmluZ0Nhc2UoIi9oaWRwaS0zeC0iKSAhPSBub3RGb3VuZCkKKyAgICBpZiAo
bG9jYWxQYXRoT3JVcmwuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLTN4LSIpKQog
ICAgICAgICByZXF1aXJlZFNjYWxlRmFjdG9yID0gMzsKLSAgICBlbHNlIGlmIChsb2NhbFBhdGhP
clVybC5maW5kSWdub3JpbmdDYXNlKCIvaGlkcGktIikgIT0gbm90Rm91bmQpCisgICAgZWxzZSBp
ZiAobG9jYWxQYXRoT3JVcmwuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLSIpKQog
ICAgICAgICByZXF1aXJlZFNjYWxlRmFjdG9yID0gMjsKICAgICBpZiAoY3VycmVudFNjYWxlRmFj
dG9yID09IHJlcXVpcmVkU2NhbGVGYWN0b3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYzg4YmIxODU1OWUxNTBkYzhjYzYy
YTJmOTcyZWJhMmYzMzUyMzc3My4uMmNhN2U1MjNjYzJlMzdiZGQwODM2NmExNGYyYWVlODI0NGZh
M2ZmOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgV0tVUkxSZWYgVGVzdEludm9jYXRpb246OnVybCgpIGNvbnN0CiAKIGJvb2wg
VGVzdEludm9jYXRpb246OnVybENvbnRhaW5zKGNvbnN0IGNoYXIqIHNlYXJjaFN0cmluZykgY29u
c3QKIHsKLSAgICByZXR1cm4gbV91cmxTdHJpbmcuY29udGFpbnMoc2VhcmNoU3RyaW5nLCBmYWxz
ZSk7CisgICAgcmV0dXJuIG1fdXJsU3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc2Vh
cmNoU3RyaW5nKTsKIH0KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6c2V0SXNQaXhlbFRlc3QoY29u
c3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327400</attachid>
            <date>2017-11-21 04:47:57 -0800</date>
            <delta_ts>2017-11-21 06:40:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171121044756.patch</filename>
            <type>text/plain</type>
            <size>425069</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTA5NzY3MzEwZjZlNzAzNDFkN2FlMDA2MDNhZjkwMTQ0ODI4NWUxLi5kYWFjZGViMTViZGMwZWZj
NjkxYTVhYjFkYmVlYzE4ZDc3ZDY2YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXVtGVExd
IFN1cHBvcnQgTWFwU2V0IC8gU2V0QWRkIGludHJpbnNpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjE2MTM1NDUxYmExMjE2
NTY5YWFmNWRmMzdhMzFhNDQwMjY0NGZiMy4uZjNlMTkzNTA0NmJkN2I3NzViODM0MDIwODAxZTlh
ZjQ3YWZmMWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlv
bnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
dGV4dC9BU0NJSUZhc3RQYXRoLmg6IE1vdmVkIHRoZSB1c2luZyBmb3IgY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJIGhlcmUgc2luY2UKKyAgICAgICAgdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgaGVyZS4K
KworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOiBSZW1vdmVkIG92ZXJsb2FkcyBv
ZiBjb250YWlucywgZmluZCwgc3RhcnRzV2l0aCwgYW5kCisgICAgICAgIGVuZHNXaXRoIHRoYXQg
dGFrZSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZXkgc2hvdWxkIGJlICJjYXNlIHNl
bnNpdGl2ZSIuCisgICAgICAgIFdoZW4gZmFsc2UsIHRoaXMgd2FzIGRvaW5nIFVuaWNvZGUgY2Fz
ZSBmb2xkaW5nLCBhbmQgbm8gY2FsbGVycyBuZWVkZWQgdGhhdC4KKyAgICAgICAgQWxzbyB0d2Vh
a2VkIGZvcm1hdHRpbmcgYW5kIGFyZ3VtZW50IG5hbWVzLgorCisgICAgICAgICogd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOiBBZGRlZCBhbiBpbmNsdWRlIG9mIExDaGFyLmgg
c2luY2UgdGhpcyBmaWxlCisgICAgICAgIHVzZXMgdGhhdC4gQWxzbyB0d2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSk6IERlbGV0ZWQuIERlc3Bp
dGUgaXRzIG5hbWUgc291bmRpbmcgbGlrZQorICAgICAgICBpdCB1c2VkIHRoZSBmdWxsIFVuaWNv
ZGUgd2hpdGVzcGFjZSBkZWZpbml0aW9uLCB0aGlzIGFjdHVhbGx5IGNoZWNrZWQgaXNBU0NJSVNw
YWNlLgorICAgICAgICBDYWxsZXJzIG5vdyBhbGwgdXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMg
aW5zdGVhZCB3aXRoIHRoZSB3aGl0ZXNwYWNlIGRlZmluaXRpb24KKyAgICAgICAgdGhhdCBpcyBh
cHByb3ByaWF0ZSB0byBlYWNoIGNhbGwgc2l0ZS4KKyAgICAgICAgKFdURjo6bGF0aW4xQ2FzZUZv
bGRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsQ29tcGF0aWJpbGl0eUNhc2Vs
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2Fz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsSW5uZXIpOiBSZW1vdmVkIGJvb2xlYW4gY2FzZVNl
bnNpdGl2ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6
IERpdHRvLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCk6IERpdHRvLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBNb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2aXR5
IG91dCBpbnRvIGEgZGlmZmVyZW50IGhlYWRlci4KKyAgICAgICAgTW92ZWQgQVNDSUlGYXN0UGF0
aC5oIGluY2x1ZGUgaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3ZlZCBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzCisgICAgICAgIGZyZWUgZnVuY3Rpb24gaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3Zl
ZCBsb3RzIG9mIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xhc3MKKyAgICAgICAgZGVmaW5pdGlv
bnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyIHRvIHJlYWQuIFNvcnRlZCB0
aGluZ3MgYSBiaXQuCisgICAgICAgIFR3ZWFrZWQgZm9ybWF0dGluZy4gTWFya2VkIGNvbnN0cnVj
dG9yIHRoYXQgdGFrZXMgb25lIGFyZ3VtZW50IGV4cGxpY2l0LiBBZGRlZAorICAgICAgICBhbiBp
c0VtcHR5IGZ1bmN0aW9uIGxpa2UgdGhlIG9uZSBpbiBTdHJpbmcuIFJlbW92ZWQgdGhlIGhhc0F0
TGVhc3RPbmVSZWYKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgZG9lc24ndCBvZmZlciBhIGJl
bmVmaXQgb3ZlciB0aGUgcmVmQ291bnQgZnVuY3Rpb24uIFJlbmFtZWQKKyAgICAgICAgY29weUNo
YXJzIHRvIGNvcHlDaGFyYWN0ZXJzLiBBZGRlZCBpc0FsbEFTQ0lJLCBpc0FsbExhdGluMSBhbmQK
KyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBmdW5jdGlvbnMuIFJlbW92ZWQgYm9vbGVh
biBjYXNlU2Vuc2l0aXZlIGFyZ3VtZW50cworICAgICAgICBmcm9tIHZhcmlvdXMgZnVuY3Rpb25z
LiBSZW1vdmVkIGZpbmRJZ25vcmluZ0Nhc2UgYW5kIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLgor
ICAgICAgICBBZGRlZCBhIEZJWE1FIHRvIGNvZGVQb2ludENvbXBhcmUgYWJvdXQgdGhlIHdheSBp
dCB0cmVhdHMgbnVsbCBhbmQgZW1wdHkgc3RyaW5ncworICAgICAgICBhcyBlcXVhbC4gQ2hhbmdl
ZCBsZW5ndGggYXJndW1lbnQgaW4gcmVtb3ZlIHRvIHVuc2lnbmVkIHRvIG1hdGNoIG90aGVyIGxl
bmd0aHMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnJlbW92ZUludGVybmFsKTogQ2hhbmdlZCBsZW5ndGggYXJndW1lbnQgdG8gYmUg
dW5zaWduZWQuCisgICAgICAgIChXVEY6OmNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMpOiBV
c2UgZW1wdHlTdHJpbmcuCisgICAgICAgIChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkIGNvbnN0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggdG8gU3RyaW5n
SW1wbC5oLiBNb3ZlZCBsb3RzIG9mCisgICAgICAgIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xh
c3MgZGVmaW5pdGlvbnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyCisgICAg
ICAgIHRvIHJlYWQsIG1hZGUgb3RoZXJzIG9uZS1saW5lcnMuIFJlbW92ZWQgdGhlIFN0cmluZzo6
YXQgZnVuY3Rpb24gYnV0IGtlcHQgdGhlCisgICAgICAgIFN0cmluZzo6Y2hhcmFjdGVyQXQgZnVu
Y3Rpb247IHRoZSB0d28gd2VyZSBpZGVudGljYWwuIFJlbW92ZWQgYm9vbGVhbgorICAgICAgICBj
YXNlU2Vuc2l0aXZlIGFyZ3VtZW50cyBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zLiBSZW1vdmVkIGZp
bmRJZ25vcmluZ0Nhc2UgYW5kCisgICAgICAgIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLiBSZW5h
bWVkIGNvbnRhaW5zT25seUFTQ0lJIHRvIGlzQWxsQVNDSUkgYW5kCisgICAgICAgIGNvbnRhaW5z
T25seUxhdGluMSB0byBpc0FsbExhdGluMSB0byBtYXRjaCB0aGUgbmFtaW5nIG9mIGlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnMuCisgICAgICAgIE1vdmVkIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25z
IG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbmVkIGFib3ZlIGZ1cnRoZXIKKyAgICAgICAgZG93
biwgYWZ0ZXIgdGhpbmdzIGxpa2UgdGhlIEFTQ0lJTGl0ZXJhbCBjbGFzcyBhbmQgdmFyaW91cyBm
dW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6IFVwZGF0ZWQgbmFtZSBvZiBjb3B5Q2hhcnMuCisKIDIwMTctMTEtMTkgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBUT1VD
SF9JQ09OX0xPQURJTkcgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkyMGY0NWRlZGQ0Mjlj
YzU5OWNjYjQwMWE5N2ZjMDdjYzc0MjM2NC4uZDFlYThiYmY4MjYyMzA5MjIxZTk5MzE3YjE0NTc4
YTRjOGQ2NDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyNiBAQAorMjAxNy0xMS0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5n
IG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVh
ZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Omhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6IFVzZSBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyk6IFVzZSBpc0FsbEFTQ0lJLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRMZW5ndGhGb3JUZXh0UmFuZ2UgY29uc3QpOiBVc2Ug
dGV4dCgpLmxlbmd0aCgpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJ
blJhbmdlKTogVXNlIGlzSFRNTFNwYWNlIGluc3RlYWQgb2YKKyAgICAgICAgaXNTcGFjZU9yTmV3
bGluZSBzaW5jZSB0aGUgY29kZSBpcyB0cnlpbmcgdG8gc2tpcCBjb2xsYXBzaWJsZSBIVE1MIHNw
YWNlcywgbm90CisgICAgICAgIGFyYml0cmFyeSBVbmljb2RlIHdoaXRlc3BhY2UuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJz
KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+IGZvciB0
aGUgc2FtZSByZWFzb24gYXMgYWJvdmUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9i
amVjdENvbnRhaW5zVGV4dCBjb25zdCk6IFVzZQorICAgICAgICBuZXcgZmluZFBsYWluVGV4dCBm
dW5jdGlvbiBleHBvcnRlZCBmcm9tIFRleHRJdGVyYXRvciBzbyB0aGlzIGNhbiBzaGFyZSB0aGUK
KyAgICAgICAgc2FtZSBzZWFyY2ggbWF0Y2hpbmcgbG9naWMgdXNlZCB0byBmaW5kIHRleHQgaW4g
d2VicGFnZXMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RU
ZXh0KTogVXNlIGNhcGl0YWxpemUgYW5kIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgcmF0aGVy
IHRoYW4gbWFrZUNhcGl0YWxpemUgbW9kaWZ5aW5nIGEgc3RyaW5nIGluIHBsYWNlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KTogVXNlIGlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+CisgICAgICAgIGZvciB0aGUgc2FtZSByZWFzb24gYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdUb0J5dGVTdHJpbmcpOiBVc2UgaXNBbGxMYXRpbjEuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpjb250YWluc09ubHlBU0NJSVdpdGhOb1VwcGVyY2FzZSk6IFVzZQor
ICAgICAgICBTdHJpbmdWaWV3Ojpjb2RlVW5pdHMgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorCisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICBVc2UgaXNBbGxB
U0NJSS4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6YWRk
UGF0dGVybik6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3Jt
YXQgY29uc3QpOiBVc2UgcHJvdG9jb2xJcyBhbmQKKyAgICAgICAgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIGNzcy9ET01DU1NOYW1lc3BhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dmFsdWVXaXRob3V0SW1wb3J0YW50KTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3cpOiBVc2UgaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0NTU1NwYWNlPiwKKyAgICAgICAgZm9yIHRoZSBwcmVmbGlnaHQsIHdo
aWNoIG1hdGNoZXMgd2hhdCB0aGUgYWN0dWFsIHBhcnNpbmcgY29kZSB1c2VzLgorCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSBjb25zdCk6IERlbGV0ZWQuIENhbGxlcnMgY2FuCisg
ICAgICAgIGVmZmljaWVudGx5IGdldCBhdCB0aGUgZGF0YSBhbmQgZG8gdGhpcyBraW5kIG9mIGNo
ZWNrIG9uIHRoZSBkYXRhIGRpcmVjdGx5LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplVHlwZSk6IFVzZSBzdGFydHNXaXRoIHNpbmNl
IHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBjb252ZXJ0ZWQKKyAgICAgICAgdG8gQVNDSUkgbG93ZXJj
YXNlLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGNvbnN0KTogVXNlIGlzSFRNTFNwYWNl
IHNpbmNlCisgICAgICAgIHNpbmNlIHRoZSBjb2RlIGlzIHRyeWluZyB0byBjaGVjayBmb3IgY29s
bGFwc2libGUgSFRNTCBzcGFjZXMsIG5vdCBnZW5lcmFsCisgICAgICAgIFVuaWNvZGUgc3BhY2Vz
LiBPdGhlciBjYWxsIHNpdGVzIG9mIGlzU3BhY2VPck5ld2xpbmUgbmVlZCB0byBiZSBjaGVja2Vk
IGZvcgorICAgICAgICB0aGlzLCBidXQgSSBkaWQgbm90IGZpeCB0aGVtIGFsbCBhdCB0aGlzIHRp
bWUuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKTogVXNlIG5vQnJl
YWtTcGFjZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29uc3QpOiBVc2UgdGV4
dCgpLmxlbmd0aCgpIGluc3RlYWQKKyAgICAgICAgb2YgdGV4dExlbmd0aC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCBjb25zdCk6IFVzZSBu
b0JyZWFrU3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVj
dGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dE5vZGVPZmZzZXRJbkZsb3cpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGFwc2VkU3BhY2VMZW5ndGgpOiBVcGRhdGVkIHNpbmNlIFJlbmRlclRl
eHQ6OnRleHQgbm93IHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6IEFkZGVkLiBVc2VzIFNl
YXJjaEJ1ZmZlciB0byBzZWFyY2ggZm9yIG9uZSBzdHJpbmcKKyAgICAgICAgd2l0aGluIGFub3Ro
ZXIuIEV4cG9ydGVkIHNvIGFjY2Vzc2liaWxpdHkgY29kZSBjYW4gZG8gdGhpcyBvcGVyYXRpb24u
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDogVXBkYXRlZCBmb3IgdGhlIGFib3Zl
LgorCisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6IFVzZSBub0Jy
ZWFrU3BhY2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kU3RhcnRPZlBhcmFncmFwaCk6IFVwZGF0ZWQgc2luY2UgUmVuZGVyVGV4
dDo6dGV4dCBub3cgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRFbmRPZlBhcmFncmFwaCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0
KTogVXNlIFN0cmluZzo6Y2hhcmFjdGVyQXQgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorICAgICAg
ICBVc2UgY2FwaXRhbGl6ZSBpbnN0ZWFkIG9mIG1ha2VDYXBpdGFsaXplZC4KKworICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaXBNaWNyb3NvZnRQcmVmaXgpOiBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogaHRtbC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERh
dGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KTogVXNlCisgICAgICAgIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL0Jhc2VUZXh0
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0SW5wdXRUeXBlOjpwYXR0
ZXJuTWlzbWF0Y2ggY29uc3QpOiBSZW1vdmVkIGV4cGxpY2l0CisgICAgICAgIFRleHRDYXNlU2Vu
c2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0aGUgZGVmYXVsdCwgYW5kIG5lZWRlZCB0byB0b3VjaCB0
aGlzIGFueXdheQorICAgICAgICBiZWNhdXNlIHRoZSBlbnVtZXJhdGlvbiBpcyBub3cgaW4gYSBk
aWZmZXJlbnQgbmFtZXNwYWNlLgorCisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkRW1haWxBZGRyZXNzKTogVXBkYXRlZCB0byB1c2Ug
SlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aGFz
RmFsbGJhY2tDb250ZW50IGNvbnN0KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnNo
b3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6aGFzVmFsaWRDbGFzc0lkKTogVXNlIHByb3RvY29sSXMuCisgICAgICAgIChXZWJDb3Jl
OjpwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSk6IFVzZSBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPi4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpz
ZXRDb21wYXRpYmlsaXR5TW9kZUZyb21Eb2N0eXBlKToKKyAgICAgICAgVXNlIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdENoYXJzZXQpOiBV
c2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjppc0NvbnRhaW5lZEluUmVx
dWVzdCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpo
YXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKTogRG9uJ3QgcGFzcyB0aGUgbGVuZ3RoIHRvCisgICAg
ICAgIHRoZSBTdHJpbmc6OnN0YXJ0c1dpdGggZnVuY3Rpb24uIFRoZXJlIGhhcyBuZXZlciBiZWVu
IGEgdmVyc2lvbiBvZiB0aGF0IGZ1bmN0aW9uCisgICAgICAgIHRoYXQgdGFrZXMgdGhlIGxlbmd0
aCwgdGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzIHRoZSBsZW5ndGggc2luY2UgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGhhbmRsZXMgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MgbGlrZSB0aGUgb25lIGhl
cmUsIGFuZCBpbiB0aGUgcGFzdCB0aGUgbGVuZ3RoCisgICAgICAgIGhhcyBiZWVuIGdldHRpbmcg
Y29udmVydGVkIHRvIGEgYm9vbGVhbiBtYWtpbmcgdGhlIGNvbXBhcmlzb24gYmUgY2FzZSBzZW5z
aXRpdmUuCisgICAgICAgIFJlbW92aW5nIHRoZSBhcmd1bWVudCBlbnRpcmVseSBsZWF2ZXMgaXQg
Y2FzZSBzZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxl
bWVudCk6IFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UKKyAgICAgICAgYW5kIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKTogVXNl
IEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zT25s
eUhUTUxXaGl0ZXNwYWNlKTogTWFkZSB0aGlzIGEgbm9uLW1lbWJlciBmdW5jdGlvbgorICAgICAg
ICBhbmQgcmVpbXBsZW1lbnRlZCB1c2luZyBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPigpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RD
aGlsZCk6IFVzZSBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQcmV2aW91c1NpYmxpbmcpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxkTm9kZUNvdW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0
RE9NTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZFJlbW92ZURPTU5vZGUpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZp
bGUpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIHBhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2U2NFV0aWxpdGllczo6YnRvYSk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKTogUmVt
b3ZlZCBUZXh0Q2FzZVNlbnNpdGl2ZSBhcmd1bWVudCBzaW5jZQorICAgICAgICB0aGF0IGlzIG5v
dyB0aGUgZGVmYXVsdCBhbmQgYWxzbyB1c2VkIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6IE1vcmUgb2Yg
dGhlIHNhbWUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCk6
IFVzZQorICAgICAgICB0ZXh0KCkubGVuZ3RoKCkuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbElu
SFRUUEZhbWlseSk6IFVzZQorICAgICAgICBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9zdCBjb25zdCk6Cisg
ICAgICAgIFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzIGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlTm9u
Y2VTb3VyY2UpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGggY29uc3QpOiBVc2Ugbm9CcmVha1NwYWNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFR5cGU6OnBhcmFtZXRlciBjb25zdCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkRm9udE1JTUVUeXBlKTogVXNlCisgICAgICAg
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZSk6IFVzZQorICAgICAgICBt
aW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKTogVXNl
CisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0FsbEFTQ0lJKTog
UmVuYW1lZCBmcm9tIGNvbnRhaW5zT25seUFTQ0lJLgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RW5jb2RlZEhvc3RuYW1lKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNPbmx5QVNDSUkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKTogVXNlIFN0
cmluZ0ltcGw6OmlzQWxsQVNDSUkuIENoYW5nZWQKKyAgICAgICAgdG8gdGFrZSBTdHJpbmdJbXBs
JiB0byBndWFyYW50ZWUgd2Ugd29uJ3Qga2VlcCBkb2luZyBudWxsIGNoZWNrcyBzaW5jZQorICAg
ICAgICB0aGUgY2FsbGVyIGFscmVhZHkgY2hlY2tzIGZvciBudWxsLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KTogUGFzcyBTdHJpbmdJbXBsJi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UK
KyAgICAgICAgYW5kIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkS2V5U3lzdGVtUkUpOiBVc2UgSlND
OjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpzaW1pbGFyRm9udCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlIGZvcgorICAg
ICAgICB0aGUgR2VlemEgZm9udCBzcGVjaWFsIGNhc2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkUmVqZWN0TUlNRVR5cGUpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyk6IFJlbW92ZWQKKyAgICAgICAgVGV4dENhc2VTZW5z
aXRpdmUgc2luY2UgaXQgbm93IGlzIHRoZSBkZWZhdWx0LgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4pOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOiBVc2UgaXNBbGxBU0NJ
SS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyk6IFVzZSBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoKTogVXNlIGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDaGFyc2V0SW5NZWRpYVR5
cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmFuZ2UpOiBVc2Ugc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEZy
b21DRkhUTUwpOiBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6
ZnJhZ21lbnRGcm9tQ0ZIVE1MKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVuKTogVXNlIHRleHQoKS5s
ZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCBjb25zdCk6IFVzZQorICAg
ICAgICBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94
UmFuZ2VJbklubGluZURpcmVjdGlvbik6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUl0ZXJhdG9yOjppbmNyZW1lbnQpOiBEdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmlzTGlu
ZUJyZWFrIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5v
dyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
OjpzZWxlY3Rpb25TdGFydEVuZCBjb25zdCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojp0ZXh0IGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5k
ZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJs
ZVJlbmRlclRleHQpOiBVc2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyB0cmltbWVkUHJlZmVy
cmVkV2lkdGhzIHRoYXQgcmV0dXJucyBhIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHRoZQorICAgICAg
ICBvbGQgb25lIHdpdGggbG90cyBvZiBhcmd1bWVudHMuIEFsc28gdXNlIHRleHQoKS5sZW5ndGgo
KS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmVuZHNXaXRoSFRNTFNwYWNlcyk6IFJlbmFtZWQgYW5kIGNoYW5nZWQgdG8g
dXNlIGlzSFRNTFNwYWNlCisgICAgICAgIGluc3RlYWQgb2YgaXNBU0NJSVNwYWNlLgorICAgICAg
ICAoV2ViQ29yZTo6cmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKTogVXNlIGVuZHNXaXRoSFRNTFNw
YWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICBVcGRhdGVkIGZvciBoY2FuZ2Vz
IHRvIFJlbmRlclRleHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRs
ZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb21iaW5l
VGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCk6IFVzZQorICAgICAgICBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25z
dCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Ym9sZGVyKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KTogUmV3cm90ZSB0bwor
ICAgICAgICBvbmx5IGNvbXB1dGUgdGhlIGJvbGRlciBmb250IG9uY2UgcmF0aGVyIHRoYW4gZm9y
IGV2ZXJ5IGl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1G
b3JlZ3JvdW5kKTogVXBkYXRlZCBmb3IKKyAgICAgICAgY2hhbmdlIHRvIGFwcGx5VGV4dFRyYW5z
Zm9ybS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSk6IFVwZGF0ZWQgZm9y
IGNoYW5nZQorICAgICAgICB0byBSZW5kZXJUZXh0Ojp0ZXh0LgorICAgICAgICAoUmVuZGVyTWVu
dUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0bworICAgICAg
ICBhcHBseVRleHRUcmFuc2Zvcm0uCisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQg
Y29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNhcGl0YWxpemUpOiBSZW5hbWVkIGZyb20gbWFrZUNhcGl0YWxpemVk
LiBDaGFuZ2VkIHRvCisgICAgICAgIHRha2UgYW5kIHJldHVybiBhIFN0cmluZyBpbnN0ZWFkIG9m
IHRha2luZyBhIFN0cmluZyouCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJU
ZXh0KTogVXNlIGlzQWxsQVNDSUkuIEFsc28gbW92ZWQKKyAgICAgICAgaW5pdGlhbGl6YXRpb24g
b2YgbW9zdCBub24tYml0ZmllbGQgbWVtYmVycyB0byB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBVc2UgdGV4dCgp
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25T
dGFydFdpZHRoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpo
YW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmlyc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcyBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bGFzdENoYXJhY3Rl
ckluZGV4U3RyaXBwaW5nU3BhY2VzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVycmVkV2lkdGhzKTogQ2hhbmdlZCB0byByZXR1cm4gdmFs
dWVzCisgICAgICAgIGluIGEgc3RydWN0dXJlIGluc3RlYWQgb2YgdGFraW5nIGxvdHMgb2YgYXJn
dW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMpOiBVcGRhdGVkIHRvIHVzZQorICAgICAgICB0aGUgdGV4dCgpIGZ1bmN0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNl
IGNvbnN0KTogVXBkYXRlZCB0bworICAgICAgICB1c2UgYSB0aWdodGVyIGxvb3AuCisgICAgICAg
IChXZWJDb3JlOjppc0FsbFBvc3NpYmx5Q29sbGFwc2libGVXaGl0ZXNwYWNlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSBj
b25zdCk6IFVwZGF0ZWQgdG8KKyAgICAgICAgdXNlIGEgdGlnaHRlciBsb29wLiBSZW5hbWVkIGZy
b20gY29udGFpbnNPbmx5V2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OnNldFRleHRXaXRoT2Zmc2V0KTogVXBkYXRlZCB0byAgdXNlIHRleHQoKS4KKyAgICAgICAgKFdl
YkNvcmU6OmlzSW5saW5lRmxvd09yRW1wdHlUZXh0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8g
cmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzQ2hhcmFjdGVyIGNv
bnN0KTogR290IHJpZCBvZiB1bm5lZWRlZAorICAgICAgICBudWxsIGNoZWNrIGFuZCBzaW1wbGlm
aWVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNmb3JtKTogQ2hhbmdlZCB0byBy
ZXR1cm4gYSBTdHJpbmcgcmF0aGVyCisgICAgICAgIHRoYW4gbW9kaWZ5aW5nIG9uZSB0aGF0IGlz
IHBhc3NlZCBpbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4
dCk6IFVwZGF0ZWQgdXNlIG9mIGFwcGx5VGV4dFRyYW5zZm9ybS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OnNlY3VyZVRleHQpOiBNb3JlIG9mIHRoZSBzYW1lLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENv
bnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6d2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQgY29uc3QpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dh
cmREZWxldGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
bmV4dE9mZnNldCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyBjb25zdCk6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDogTWFkZSBzb21lIG1vcmUgbWVtYmVycyBwcml2YXRl
IGFuZCBmaW5hbC4KKyAgICAgICAgVXBkYXRlZCBmb3IgYWJvdmUsIGluY2x1ZGluZyBhZGRpbmcg
dGhlIFdpZHRocyBzdHJ1Y3R1cmUuIEdvdCByaWQgb2YgdGhlCisgICAgICAgIHRleHRMZW5ndGgg
ZnVuY3Rpb24sIHdoaWNoIGV4aXN0ZWQgYXMgYSB3b3JrYXJvdW5kIGJlZm9yZSB3ZSBjb3VsZCBt
YXJrCisgICAgICAgIGEgZnVuY3Rpb24gbGlrZSBsZW5ndGggZmluYWwuIE1hZGUgdGhlIHRleHQg
ZnVuY3Rpb24gcmV0dXJuIGEgU3RyaW5nSW1wbCYsCisgICAgICAgIHdoaWNoIGlzIGdvb2Qgc2lu
Y2UgdGhlIG1fdGV4dCBzdHJpbmcgaXMgbmV2ZXIgbnVsbCwgYW5kIHNvIGNhbGxlcnMgZW5kCisg
ICAgICAgIHVwIHVzaW5nIFN0cmluZ0ltcGwgZGlyZWN0bHkgYW5kIHNhdmluZyBudWxsIGNoZWNr
cy4gUmVtb3ZlZCBmdW5jdGlvbnMKKyAgICAgICAgdGhhdCBhcmUgbm90IG5lZWRlZCwgaW5jbHVk
aW5nIGlzOEJpdCwgY2hhcmFjdGVyczgsIGNoYXJhY3RlcnMxNiwKKyAgICAgICAgdW5jaGVja2Vk
Q2hhcmFjdGVyQXQsIG9wZXJhdG9yW10sIGFuZCBpc0FsbEFTQ0lJLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0RnJhZ21lbnQ6OnNldFRleHQpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50IGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25T
dGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6YWJz
b2x1dGVRdWFkcyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZv
ckZvbnRBbmRUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRDb3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0
TGVuZ3RoRm9yU3VidHJlZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6Y29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MpOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojppbml0aWFsaXplU2VnbWVudHMpOiBEaXR0by4K
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZmluZENhcmV0TWF4aW11bU9mZnNldCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjppdGVyYXRvcklzQmV5b25kRW5kT2ZSZW5kZXJDb21iaW5l
VGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFdpZHRoKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9y
VHJhaWxpbmdXb3JkKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6dXBkYXRlV2hp
dGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9uc0ZvclRyYWlsaW5nQm94ZXMpOiBEaXR0by4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQpOiBSZW1v
dmVkIHN0cmF5IHVzZSBvZiAidW5zaWduZWQgaW50Ii4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsgY29uc3QpOiBVc2UgdGV4dCgp
Lmxlbmd0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRp
b25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NSZW5kZXJT
VkdJbmxpbmVUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmU6OmN1
cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRRdWVy
eTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzIGNvbnN0KTogRGl0
dG8uCisKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZSk6IFVzZSBpc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJc05lZWRlZCk6IERpdHRvLgorCisgICAgICAgICogc3Zn
L1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpoYXNGZWF0dXJlRm9y
TGVnYWN5QmluZGluZ3MpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4K
KyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzaG91bGRBbGxvd0V4dGVybmFsTG9hZCk6IERpdHRvLgorCiAyMDE3LTEx
LTIxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dW5pbnRlbnRpb25hbGx5IGNvbW1pdHRlZCAub3JpZyBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZGJhOWEy
NmUxMGI2YjU2YzMyNTQ0ZTFlMzFhNzBiNWVhYTkxYjI1Li5lZjZjZGYxZTc2ODdiM2Y2ZWYzYjY5
MjRmNDg1YThlN2ZlY2ExN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTExLTIw
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpT
dHJpbmcgb3BlcmF0aW9ucyB0aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBp
bnN0ZWFkIG9mIEFTQ0lJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzk5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6aXNNZWRpYU1JTUVUeXBlKTogVXNlIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNo
U3RyaW5nKTogVXNlIGlzQWxsQVNDSUkuLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVQb2xpY2llcy5jcHA6CisgICAgICAgIChXS1dlYnNpdGVQb2xpY2llc1NldEN1c3RvbUhl
YWRlckZpZWxkcyk6IFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAg
ICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbUhlYWRlckZpZWxkczpdKTogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKTogVXNlIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9y
YXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5h
dGl2ZUFwcGxpY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEaXR0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVc2UgaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4uCisKIDIwMTctMTEtMjAgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjE5LjIgcmVsZWFzZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZGU0YzE3NzVkMzcwNDg4ZDgxODU5OTNhMmM0
YzI2OTg3MTA0MGEzLi5jMTg1YzY3NzcwMzVlNzU5MDU2OGI0OWQ3NzYxMTEyYjliY2U3NWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMjAg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBXVEY6OlN0
cmluZyBvcGVyYXRpb25zIHRoYXQgZG8gdW5uZWNlc3NhcnkgVW5pY29kZSBvcGVyYXRpb25zIGlu
c3RlYWQgb2YgQVNDSUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3OTkwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmluYXJ5
UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVTdHJpbmdPYmplY3QpOiBVc2UgaXNBbGxBU0NJSS4KKyAg
ICAgICAgKEJpbmFyeVByb3BlcnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVjdCk6
IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAg
ICAgICAocmVnRXhwRm9yTGFiZWxzKTogUmVtb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2ZSBzaW5jZSBp
dCBpcyBub3cgdGhlIGRlZmF1bHQuCisgICAgICAgIChtYXRjaExhYmVsc0FnYWluc3RTdHJpbmcp
OiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCiAyMDE3LTExLTE5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgVE9VQ0hfSUNPTl9MT0FESU5HIGZlYXR1cmUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmluZGV4IGI0Y2VjNmI0ZTk5
ODA4ODk5MmZhZjE1Yjc3OGY4NzgxYWNlNGI2MjcuLjc5NGU3ZmE3M2NhMmY5M2I3Y2Q5ZTg1YTVl
ZjkyNWEzNmY5MDAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTgxLDE0ICs4MSwxNCBAQCBVbmlxdWVkU3RyaW5n
SW1wbCogRGVzaXJlZElkZW50aWZpZXJzOjphdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICAg
ICAgcmVzdWx0ID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaW5kZXgpLmltcGwoKTsKICAgICBl
bHNlCiAgICAgICAgIHJlc3VsdCA9IG1fYWRkZWRJZGVudGlmaWVyc1tpbmRleCAtIG1fY29kZUJs
b2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCldOwotICAgIEFTU0VSVChyZXN1bHQtPmhhc0F0TGVh
c3RPbmVSZWYoKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+cmVmQ291bnQoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBEZXNpcmVkSWRlbnRpZmllcnM6OnJlYWxseUFkZChWTSYgdm0s
IENvbW1vbkRhdGEqIGNvbW1vbkRhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcCA6IG1fYWRkZWRJ
ZGVudGlmaWVycykgewotICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExlYXN0T25lUmVmKCkpOwor
ICAgICAgICBBU1NFUlQocmVwLT5yZWZDb3VudCgpKTsKICAgICAgICAgY29tbW9uRGF0YS0+ZGZn
SWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCByZXApKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDg0MzcwYjFhY2RlYmVj
ZjgzY2VmNGQ5NjgwM2RjMTA4YmZiNmQwZDguLjNiMzY3ZmY3YWUyMmQwMDA4YmVlOWRlYzMzMTY4
OWI0NWYyZmJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMzUs
NyArMzM1LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQnJl
YWtwb2ludENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgaW4KIHN0YXRpYyBib29sIG1hdGNoZXMo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQog
ewogICAgIGlmIChpc1JlZ2V4KSB7Ci0gICAgICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24gcmVnZXgocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgICAgICBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4pOwogICAgICAgICByZXR1cm4gcmVnZXgu
bWF0Y2godXJsKSAhPSAtMTsKICAgICB9CiAgICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGZkZWRhMWQxMzg1
OThkYjBlMDI4ZDZiMjU1Y2FiMTc1MDY5MTZjNDguLmNmZTU2ZjY1ODk0ZjBhMmEyYzljZTQwMzFm
NzZhMmUwYzhiZjE0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4TGVuZ3Ro
Rm9yT25TdGFja1Jlc29sdmUgPSAyMDQ4Owogdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3Bl
SW50ZXJuYWw4KExDaGFyKiBidWZmZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkp
IHsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKAorICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycygKICAgICAgICAgICAgIGJ1ZmZlciwgc3Vic3RyaW5nQmFzZSgpLT5tX3Zh
bHVlLmNoYXJhY3RlcnM4KCkgKyBzdWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpy
ZXNvbHZlUm9wZUludGVybmFsOE5vU3Vic3RyaW5nKExDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzX21heEludGVybmFsUm9wZUxlbmd0aCAmJiBmaWJlcihp
KTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwmIGZpYmVyU3RyaW5nID0gKmZpYmVy
KGkpLT5tX3ZhbHVlLmltcGwoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmliZXJTdHJp
bmcubGVuZ3RoKCk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmli
ZXJTdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJhY3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CiAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9CiAgICAgQVNTRVJUKChidWZmZXIg
KyBsZW5ndGgoKSkgPT0gcG9zaXRpb24pOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSlNSb3Bl
U3RyaW5nOjpyZXNvbHZlUm9wZUludGVybmFsOE5vU3Vic3RyaW5nKExDaGFyKiBidWZmZXIpIGNv
bnN0CiB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDE2KFVDaGFyKiBidWZm
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJzKAorICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycygKICAgICAg
ICAgICAgIGJ1ZmZlciwgc3Vic3RyaW5nQmFzZSgpLT5tX3ZhbHVlLmNoYXJhY3RlcnMxNigpICsg
c3Vic3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE2OSw5ICsxNjksOSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDE2
Tm9TdWJzdHJpbmcoVUNoYXIqIGJ1ZmZlcikgY29uc3QKICAgICAgICAgY29uc3QgU3RyaW5nSW1w
bCYgZmliZXJTdHJpbmcgPSAqZmliZXIoaSktPm1fdmFsdWUuaW1wbCgpOwogICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBmaWJlclN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgaWYgKGZpYmVyU3Ry
aW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9u
LCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hh
cmFjdGVyczE2KCksIGxlbmd0aCk7CiAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9
CiAgICAgQVNTRVJUKChidWZmZXIgKyBsZW5ndGgoKSkgPT0gcG9zaXRpb24pOwpAQCAtMzM1LDcg
KzMzNSw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciog
YnVmZmVyKSBjb25zdAogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY3VycmVu
dEZpYmVyLT5sZW5ndGgoKTsKICAgICAgICAgcG9zaXRpb24gLT0gbGVuZ3RoOwotICAgICAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBjaGFyYWN0ZXJzLCBsZW5n
dGgpOwogICAgIH0KIAogICAgIEFTU0VSVChidWZmZXIgPT0gcG9zaXRpb24pOwpAQCAtMzYzLDkg
KzM2Myw5IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKiBi
dWZmZXIpIGNvbnN0CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY3VycmVudEZp
YmVyQXNSb3BlLT5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSBsZW5ndGg7
CiAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgp
ICsgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5n
dGgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJzKHBvc2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBs
ZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhw
b3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgY3VycmVudEZpYmVyQXNS
b3BlLT5maWJlcihpKTsgKytpKQpAQCAtMzc3LDkgKzM3Nyw5IEBAIHZvaWQgSlNSb3BlU3RyaW5n
OjpyZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7CiAgICAgICAgIHBvc2l0aW9uIC09IGxlbmd0
aDsKICAgICAgICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBzdHJpbmctPmNo
YXJhY3RlcnM4KCksIGxlbmd0aCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBzdHJpbmct
PmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogICAgIH0KIAogICAgIEFTU0VSVChidWZmZXIgPT0g
cG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKaW5kZXggYWRiZmFkMjExOWUwYzY5NDcxODVmMjFjOWMyYzM0MjFkNzQzNzEx
NS4uOGUyYTZlYmE0NWQwMTRmZjE3MjZlYWRhYTk4MTY1MjkyZmI0YTdkYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0zNDEs
NyArMzQxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmlu
Z3MoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmMKICAgICAgICAgaW50IGJ1ZmZlclBv
cyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CiAg
ICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9z
LCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBv
cywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAg
ICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0zNjAsNyArMzYwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1Nw
bGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmMKICAgICBpbnQg
YnVmZmVyUG9zID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykg
ewogICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsK
LSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNv
dXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJj
ZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAg
ICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAgICB9CiAgICAgfQpAQCAtNDEzLDEzICs0MTMs
MTMgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtYXhDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaSA8IHJhbmdlQ291bnQpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1
ZmZlclBvcywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVu
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVy
ICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBz
cmNMZW4pOwogICAgICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpIDwgc2VwYXJhdG9y
Q291bnQpIHsKICAgICAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0u
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1
ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOwor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBi
dWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKICAgICAgICAg
ICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNlcExlbjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC00NDAsMTggKzQ0MCwxOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSgog
ICAgICAgICBpZiAoaSA8IHJhbmdlQ291bnQpIHsKICAgICAgICAgICAgIGlmIChpbnQgc3JjTGVu
ID0gc3Vic3RyaW5nUmFuZ2VzW2ldLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChzb3Vy
Y2UuaXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhi
dWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3RyaW5nUmFuZ2Vz
W2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsg
c3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1
ZmZlclBvcywgc291cmNlLmNoYXJhY3RlcnMxNigpICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0
aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmlu
Z1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBidWZmZXJQb3Mg
Kz0gc3JjTGVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChpIDwgc2Vw
YXJhdG9yQ291bnQpIHsKICAgICAgICAgICAgIGlmIChpbnQgc2VwTGVuID0gc2VwYXJhdG9yc1tp
XS5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGlmIChzZXBhcmF0b3JzW2ldLmlzOEJpdCgp
KQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7CisgICAgICAgICAg
ICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywg
c2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1
ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzMTYoKSwgc2VwTGVuKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9z
LCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnMxNigpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAg
IGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3OTks
NyArMTc5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0lu
Y2x1ZGVzSW1wbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5jb250YWlucyhzZWFyY2hT
dHJpbmcsIHRydWUsIHN0YXJ0KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHN0cmluZ1RvU2VhcmNoSW4uZmluZChzZWFyY2hTdHJpbmcsIHN0YXJ0KSAhPSBub3RGb3Vu
ZCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0lu
Y2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9S
ZWd1bGFyRXhwcmVzc2lvbi5oCmluZGV4IDI4NDI3NzQzY2RmNmEzOGE5YTdhMGQyZWI3MTIzNjFm
YzExN2I4ODMuLjIwNzM5MGI1ZTllNzFhYTY2YTgyZWE0NTE2MzFiMWVjNDQ4NWNiMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaApAQCAtMjks
MTUgKzI5LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLWVudW0g
TXVsdGlsaW5lTW9kZSB7Ci0gICAgTXVsdGlsaW5lRGlzYWJsZWQsCi0gICAgTXVsdGlsaW5lRW5h
YmxlZAotfTsKK2VudW0gTXVsdGlsaW5lTW9kZSB7IE11bHRpbGluZURpc2FibGVkLCBNdWx0aWxp
bmVFbmFibGVkIH07CitlbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2
ZSwgVGV4dENhc2VJbnNlbnNpdGl2ZSB9OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZWd1
bGFyRXhwcmVzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgUmVndWxhckV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiwgVGV4dENhc2VTZW5zaXRpdml0eSwg
TXVsdGlsaW5lTW9kZSA9IE11bHRpbGluZURpc2FibGVkKTsKKyAgICBleHBsaWNpdCBSZWd1bGFy
RXhwcmVzc2lvbihjb25zdCBTdHJpbmcmLCBUZXh0Q2FzZVNlbnNpdGl2aXR5ID0gVGV4dENhc2VT
ZW5zaXRpdmUsIE11bHRpbGluZU1vZGUgPSBNdWx0aWxpbmVEaXNhYmxlZCk7CiAgICAgflJlZ3Vs
YXJFeHByZXNzaW9uKCk7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBSZWd1bGFyRXhw
cmVzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRo
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaAppbmRleCBlYjU0ODI4YTI4
ZWFkYTQwOTc0NWM4MWRlZDM3MWRiMjY2MmZiNTc2Li4yNjQyYTViYmViMmQwYjYzNDU3NThmMmY0
MWI4YWNkZmZiNjhmNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaApAQCAtMTk0
LDQgKzE5NCw2IEBAIGlubGluZSB2b2lkIGNvcHlMQ2hhcnNGcm9tVUNoYXJTb3VyY2UoTENoYXIq
IGRlc3RpbmF0aW9uLCBjb25zdCBVQ2hhciogc291cmNlLCBzCiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCit1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKKwogI2VuZGlmIC8vIEFTQ0lJ
RmFzdFBhdGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggNzY1OGUwNTEyNTU5
NDBmMTk5OTlhMjI5YzYyM2Q5OGViZWYzMmE4Mi4uYjg2M2FiMDMzMTY4YWQ4NTIyNTQ4ZWE1MWQ0
YmRlZDA3OTU1YmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2LCAyMDA4LCAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03
Miw4ICs3Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dW5zaWdu
ZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxU
YWcpCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUg
QXRvbWljU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENv
bnN0cnVjdEZyb21MaXRlcmFsVGFnKQogICAgICAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0lt
cGw6OmFkZExpdGVyYWwoY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKSkKICAgICB7CiAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKGNoYXJhY3RlckNvdW50ID4gMSwgQXRvbWljU3RyaW5nRnJv
bUxpdGVyYWxOb3RFbXB0eSk7CkBAIC0xMTIsNTEgKzExMSwyNyBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAg
ICAgLy8gSWYgd2UgbmVlZCBtb3JlIG92ZXJsb2FkcyBvZiB0aGUgbnVtYmVyIGZ1bmN0aW9uLCB3
ZSBjYW4gYWRkIGFsbCB0aGUgb3RoZXJzIHRoYXQgU3RyaW5nIGhhcywgYnV0IHRoZXNlIHNlZW0g
dG8gZG8gZm9yIG5vdy4KIAotICAgIGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuY29udGFpbnMoYyk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFy
KiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBt
X3N0cmluZy5jb250YWlucyhzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlu
cyhzKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5z
aXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHMsIGNhc2VT
ZW5zaXRpdmUpOyB9Ci0gICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzKTsgfQotCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3Rh
cnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKGMsIHN0YXJ0KTsgfQotICAgIHNp
emVfdCBmaW5kKGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBzdGFydCA9IDAsIGJvb2wgY2FzZVNl
bnRpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQocywg
c3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBz
LCB1bnNpZ25lZCBzdGFydCA9IDAsIGJvb2wgY2FzZVNlbnRpdGl2ZSA9IHRydWUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQocywgc3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9
Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHMsIHN0YXJ0T2Zmc2V0KTsgfQotICAgIHNpemVfdCBmaW5kKENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsg
fQotCi0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aChzKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHMpOyB9Ci0gICAgYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAg
ICB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9Ci0gICAg
Ym9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21h
dGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0
aXZlKTsgfQotCi0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQotICAgIGJvb2wgZW5kc1dp
dGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9Ci0gICAgYm9vbCBl
bmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5n
LmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0
aD4KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBi
b29sIGNvbnRhaW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29u
dGFpbnMoY2hhcmFjdGVyKTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQorICAgIGJvb2wg
Y29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNv
bnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorCisgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVy
LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFj
dGVyLCBzdGFydCk7IH0KKyAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFy
dCk7IH0KKyAgICBzaXplX3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQpOyB9Cisg
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAg
ICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVND
SUlDYXNlKHN0cmluZywgc3RhcnRPZmZzZXQpOyB9CisgICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CisKKyAgICBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLnN0YXJ0c1dpdGgoc3RyaW5nKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFy
dHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChV
Q2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFj
dGVyKTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0c1dp
dGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5zdGFydHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpOyB9CisKKyAgICBib29sIGVuZHNX
aXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0
aChzdHJpbmcpOyB9CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIGVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgoY2hhcmFjdGVyKTsgfQorICAgIHRlbXBsYXRl
PHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgp
W21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGg8bWF0Y2hMZW5n
dGg+KHByZWZpeCk7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBBdG9taWNTdHJpbmcg
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgQXRvbWljU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3Q7CkBAIC0xNzIs
MTMgKzE0NywxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGKQogICAgIEF0b21pY1N0cmluZyhDRlN0
cmluZ1JlZik7CiAjZW5kaWYKKwogI2lmZGVmIF9fT0JKQ19fCiAgICAgQXRvbWljU3RyaW5nKE5T
U3RyaW5nKik7CiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmc7IH0KICNlbmRpZgogCi0gICAgLy8gQXRvbWljU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVy
biBhIG51bGwgc3RyaW5nIGlmCi0gICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxp
ZCBVVEYtOCBzZXF1ZW5jZXMuCisgICAgLy8gQXRvbWljU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJl
dHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRG
LTggc2VxdWVuY2VzLgogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hh
ciosIHNpemVfdCk7CiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFy
Kik7CiAKQEAgLTIyOSw1MyArMjA0LDUzIEBAIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0
cmluZygpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBM
Q2hhciogcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGlu
ZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nKQorICAgIDog
bV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBB
dG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzKQotICAgIDogbV9zdHJpbmco
QXRvbWljU3RyaW5nSW1wbDo6YWRkKHMpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKGNvbnN0IGNoYXIqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6
OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmco
Y29uc3QgTENoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0
cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RyaW5n
KEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCiB7CiB9CiAKLWlubGluZSBB
dG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3Ro
KQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMsIGxlbmd0aCkpCitpbmxp
bmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZywg
bGVuZ3RoKSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0
IFVDaGFyKiBzKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMpKQoraW5s
aW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcpCisgICAg
OiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5l
IEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkKLSAgICA6
IG1fc3RyaW5nKGltcCkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhBdG9taWNT
dHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhzdHJpbmcpCiB7CiB9CiAKLWlubGlu
ZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiBp
bXApCi0gICAgOiBtX3N0cmluZyhXVEZNb3ZlKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9z
dHJpbmcoV1RGTW92ZShzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9t
aWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1w
bDo6YWRkKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5nSW1w
bCogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykp
CiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdGF0aWNT
dHJpbmdJbXBsKiBpbXApCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoaW1w
KSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdGF0aWNTdHJpbmdJ
bXBsKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5n
KSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzLmltcGwoKSkpCitp
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nLmltcGwoKSkpCiB7CiB9
CiAKQEAgLTI5MCwxNyArMjY1LDIxIEBAIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmlu
ZyhVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogfQogCiAjaWYgVVNFKENGKQotaW5saW5lIEF0b21p
Y1N0cmluZzo6QXRvbWljU3RyaW5nKENGU3RyaW5nUmVmIHMpCi0gICAgOiAgbV9zdHJpbmcoQXRv
bWljU3RyaW5nSW1wbDo6YWRkKHMpKQorCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJp
bmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQorICAgIDogIG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6
OmFkZChzdHJpbmcpKQogewogfQorCiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCi1pbmxpbmUg
QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoTlNTdHJpbmcqIHMpCi0gICAgOiBtX3N0cmluZyhB
dG9taWNTdHJpbmdJbXBsOjphZGQoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXMpKQorCitpbmxpbmUg
QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoTlNTdHJpbmcqIHN0cmluZykKKyAgICA6IG1fc3Ry
aW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZCgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nKSkK
IHsKIH0KKwogI2VuZGlmCiAKIC8vIERlZmluZSBleHRlcm5hbCBnbG9iYWwgdmFyaWFibGVzIGZv
ciB0aGUgY29tbW9ubHkgdXNlZCBhdG9taWMgc3RyaW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKaW5kZXggNjE5NDJlN2ZjNGIyNWNhMWI5
MDU2MjQwMTc5ZDgxN2ZhYWY1YjliZi4uOWRiODMwM2M4MzAxYjk3YzQzMDgyMDgyNmZhNDZhOTJj
ZTljZTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmgKQEAgLTIyLDE0ICsyMiwxMyBAQAogI2lmbmRlZiBJbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uX2gKICNkZWZpbmUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAKKyNpbmNsdWRl
IDx3dGYvdGV4dC9MQ2hhci5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBQb3NpdGl2ZU9y
TmVnYXRpdmVOdW1iZXIgewotICAgIFBvc2l0aXZlTnVtYmVyLAotICAgIE5lZ2F0aXZlTnVtYmVy
Ci19OworZW51bSBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIgeyBQb3NpdGl2ZU51bWJlciwgTmVn
YXRpdmVOdW1iZXIgfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb25UcmFpdDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvblRyYWl0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
bnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlwZSwg
dHlwZW5hbWUgQWRkaXRpb25hbEFyZ3VtZW50VHlwZT4KIHN0YXRpYyB0eXBlbmFtZSBJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdJbXBs
KFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyLCBBZGRpdGlvbmFsQXJndW1lbnRUeXBlIGFkZGl0
aW9uYWxBcmd1bWVudCkKQEAgLTYzLDcgKzYyLDYgQEAgaW5saW5lIHR5cGVuYW1lIEludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb25UcmFpdDxUPjo6UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ1Vuc2kK
ICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBv
c2l0aXZlTnVtYmVyPihudW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7CiB9CiAKLQogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwg
UG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGU+CiBzdGF0aWMgdm9pZCB3cml0ZU51
bWJlclRvQnVmZmVySW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQ2hhcmFjdGVyVHlw
ZSogZGVzdGluYXRpb24pCiB7CkBAIC05Nyw3ICs5NSw2IEBAIGlubGluZSB2b2lkIHdyaXRlTnVt
YmVyVG9CdWZmZXJVbnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQ2hhcmFjdGVy
VHlwCiAgICAgcmV0dXJuIHdyaXRlTnVtYmVyVG9CdWZmZXJJbXBsPENoYXJhY3RlclR5cGUsIFVu
c2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlTnVtYmVyPihudW1iZXIsIGRlc3RpbmF0aW9uKTsK
IH0KIAotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU9y
TmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlwZT4KIHN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZk51bWJl
ckFzU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKIHsKQEAgLTEyOCw3ICsx
MjUsNiBAQCBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ1Vuc2lnbmVkKFVu
c2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyKQogICAgIHJldHVybiBsZW5ndGhPZk51bWJlckFzU3Ry
aW5nSW1wbDxVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyKTsKIH0K
IAotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIEludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDE3ZjM5YjRiNjg5NGZl
ZWI1YjJjNzMyMzE5ZDJjZTdkMDI1YjU0MC4uZmFkNTA3NTBkYWZjY2VkNGIxYjViMTM2OGZhOTIy
ZTEwYWU5ZTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xNjIsNyArMTYy
LDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ24KIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuICplbXB0eSgpOwotCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1w
bChjaGFyYWN0ZXJzLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKSk7CiB9CiAKQEAg
LTE3MCwxMiArMTY5LDEwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduCiB7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKLQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0cmluZ0ltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWlu
ZykpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBs
ZW5ndGgsIENoYXJUeXBlKiYgZGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZElu
dGVybmFsKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomIGRhdGEpCiB7CiAgICAgaWYg
KCFsZW5ndGgpIHsKICAgICAgICAgZGF0YSA9IDA7CkBAIC0xODQsMjAgKzE4MSwxOSBAQCBpbmxp
bmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5h
bCh1bnNpZ25lZCBsZW5ndGgsCiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5h
bE5vbkVtcHR5KGxlbmd0aCwgZGF0YSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXpl
ZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0
aCwgQ2hhcmFjdGVyVHlwZSomIGRhdGEpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCk7CiAKICAgICAv
LyBBbGxvY2F0ZSBhIHNpbmdsZSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIFN0
cmluZ0ltcGwKICAgICAvLyBzdHJ1Y3QgYXMgd2VsbCBhcyB0aGUgZGF0YSB3aGljaCBpdCBjb250
YWlucy4gVGhpcyByZW1vdmVzIG9uZQogICAgIC8vIGhlYXAgYWxsb2NhdGlvbiBmcm9tIHRoaXMg
Y2FsbC4KLSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJUeXBlKSkpCisgICAgaWYg
KGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9m
KFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAgICAgICAgIENSQVNIKCk7
Ci0gICAgU3RyaW5nSW1wbCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmlu
Z01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxDaGFyVHlwZT4obGVuZ3RoKSkpOworICAgIFN0cmluZ0lt
cGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdNYWxsb2MoYWxsb2Nh
dGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkpOwogCi0gICAgZGF0YSA9IHN0cmluZy0+
dGFpbFBvaW50ZXI8Q2hhclR5cGU+KCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENo
YXJUeXBlPihzdHJpbmcsIGxlbmd0aCk7CisgICAgZGF0YSA9IHN0cmluZy0+dGFpbFBvaW50ZXI8
Q2hhcmFjdGVyVHlwZT4oKTsKKyAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhcmFjdGVy
VHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTIx
MCw4ICsyMDYsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkKICAgICByZXR1cm4gY3JlYXRlVW5p
bml0aWFsaXplZEludGVybmFsKGxlbmd0aCwgZGF0YSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0
ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIENoYXJUeXBlKiYgZGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFsKFJlZjxT
dHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5
cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChvcmlnaW5hbFN0cmluZy0+aGFzT25lUmVmKCkpOwog
ICAgIEFTU0VSVChvcmlnaW5hbFN0cmluZy0+YnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVySW50
ZXJuYWwpOwpAQCAtMjIyLDE0ICsyMTcsMTQgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpyZWFsbG9jYXRlSW50ZXJuYWwoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWwKICAg
ICB9CiAKICAgICAvLyBTYW1lIGFzIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoKSBleGNlcHQgaGVyZSB3
ZSB1c2Ugc3RyaW5nUmVhbGxvYy4KLSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJU
eXBlKSkpCisgICAgaWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAg
ICAgICAgIENSQVNIKCk7CiAKICAgICBvcmlnaW5hbFN0cmluZy0+flN0cmluZ0ltcGwoKTsKLSAg
ICBhdXRvKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nUmVhbGxvYygm
b3JpZ2luYWxTdHJpbmcubGVha1JlZigpLCBhbGxvY2F0aW9uU2l6ZTxDaGFyVHlwZT4obGVuZ3Ro
KSkpOworICAgIGF1dG8qIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdS
ZWFsbG9jKCZvcmlnaW5hbFN0cmluZy5sZWFrUmVmKCksIGFsbG9jYXRpb25TaXplPENoYXJhY3Rl
clR5cGU+KGxlbmd0aCkpKTsKIAotICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJU
eXBlPigpOwotICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBs
ZW5ndGgpOworICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJhY3RlclR5cGU+KCk7
CisgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KHN0cmluZywgbGVu
Z3RoKTsKIH0KIAogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUmVmPFN0
cmluZ0ltcGw+JiYgb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRh
KQpAQCAtMjQ0LDE1ICsyMzksMTMgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxs
b2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmUKICAgICByZXR1
cm4gcmVhbGxvY2F0ZUludGVybmFsKFdURk1vdmUob3JpZ2luYWxTdHJpbmcpLCBsZW5ndGgsIGRh
dGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUludGVybmFsKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNo
YXJhY3RlcnMgfHwgIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwotCi0gICAgQ2hh
clR5cGUqIGRhdGE7CisgICAgQ2hhcmFjdGVyVHlwZSogZGF0YTsKICAgICBhdXRvIHN0cmluZyA9
IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KGxlbmd0aCwgZGF0YSk7Ci0gICAg
bWVtY3B5KGRhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCAqIHNpemVvZihDaGFyVHlwZSkpOworICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIHN0
cmluZzsKIH0KIApAQCAtMjc1LDcgKzI2OCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduCiAg
ICAgYXV0byBzdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5n
dGgsIGRhdGEpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSAmIDB4ZmYwMCkKKyAgICAgICAgaWYgKGNoYXJhY3Rl
cnNbaV0gJiAweEZGMDApCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlKGNoYXJhY3RlcnMsIGxl
bmd0aCk7CiAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyc1tp
XSk7CiAgICAgfQpAQCAtMjk4LDI5ICsyOTEsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y3JlYXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcs
IGxlbmd0aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
Ci17Ci0gICAgLy8gRklYTUU6IFNob3VsZCByZW5hbWUgdGhpcyB0byBjb250YWluc09ubHlBU0NJ
SVdoaXRlc3BhY2UuCi0gICAgLy8gTW9zdCBXZWJLaXQgY2FsbGVycyBpbnN0ZWFkIHdhbnQgY29u
dGFpbnNPbmx5SFRNTFdoaXRlc3BhY2Ugd2hpY2gsIHVubGlrZSB0aGlzLAotICAgIC8vIHdvdWxk
ICpub3QqIHRyZWF0IFUrMDAwQiBMSU5FIFRBQlVMQVRJT04gYXMgYSBzcGFjZS4KLQotICAgIGlm
IChpczhCaXQoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgVUNoYXIgYyA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICBp
ZiAoIWlzQVNDSUlTcGFjZShjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IG1fZGF0YTE2W2ld
OwotICAgICAgICBpZiAoIWlzQVNDSUlTcGFjZShjKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpzdWJzdHJpbmcodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBp
ZiAoc3RhcnQgPj0gbV9sZW5ndGgpCkBAIC0zODEsMTEgKzM1MSw4IEBAIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICBpZiAo
IShvcmVkICYgfjB4N0YpKSB7CiAgICAgICAgIFVDaGFyKiBkYXRhMTY7CiAgICAgICAgIGF1dG8g
bmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBk
YXRhMTYpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIFVDaGFyIGMgPSBtX2RhdGExNltpXTsKLSAgICAgICAg
ICAgIGRhdGExNltpXSA9IHRvQVNDSUlMb3dlcihjKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRhdGExNltp
XSA9IHRvQVNDSUlMb3dlcihtX2RhdGExNltpXSk7CiAgICAgICAgIHJldHVybiBuZXdJbXBsOwog
ICAgIH0KIApAQCAtNDUyLDkgKzQxOSw5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICAgICAgLy8gRG8gYSBmYXN0ZXIg
bG9vcCBmb3IgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KICAg
ICAgICAgdW5zaWduZWQgb3JlZCA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAg
ICAgb3JlZCB8PSBjOwotICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJVXBwZXIoYyk7Cisg
ICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAgb3Jl
ZCB8PSBjaGFyYWN0ZXI7CisgICAgICAgICAgICBkYXRhOFtpXSA9IHRvQVNDSUlVcHBlcihjaGFy
YWN0ZXIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghKG9yZWQgJiB+MHg3RikpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3SW1wbDsKQEAgLTQ2NiwxMSArNDMzLDExIEBAIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICAgICAg
Ly8gIDEuIFNvbWUgTGF0aW4tMSBjaGFyYWN0ZXJzIHdoZW4gY29udmVydGVkIHRvIHVwcGVyIGNh
c2UgYXJlIDE2IGJpdCBjaGFyYWN0ZXJzLgogICAgICAgICAvLyAgMi4gTG93ZXIgY2FzZSBzaGFy
cC1TIGNvbnZlcnRzIHRvICJTUyIgKHR3byBjaGFyYWN0ZXJzKQogICAgICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0
YThbaV07Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSBzbWFsbExldHRlclNoYXJwUykp
CisgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGNoYXJhY3RlciA9PSBzbWFsbExldHRlclNoYXJwUykpCiAgICAgICAgICAg
ICAgICAgKytudW1iZXJTaGFycFNDaGFyYWN0ZXJzOwotICAgICAgICAgICAgQVNTRVJUKHVfdG91
cHBlcihjKSA8PSAweEZGRkYpOwotICAgICAgICAgICAgVUNoYXIgdXBwZXIgPSB1X3RvdXBwZXIo
Yyk7CisgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGNoYXJhY3RlcikgPD0gMHhGRkZGKTsK
KyAgICAgICAgICAgIFVDaGFyIHVwcGVyID0gdV90b3VwcGVyKGNoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkodXBwZXIgPiAweEZGKSkgewogICAgICAgICAgICAgICAgIC8vIFNp
bmNlIHRoaXMgdXBwZXItY2FzZWQgY2hhcmFjdGVyIGRvZXMgbm90IGZpdCBpbiBhbiA4LWJpdCBz
dHJpbmcsIHdlIG5lZWQgdG8gdGFrZSB0aGUgMTYtYml0IHBhdGguCiAgICAgICAgICAgICAgICAg
Z290byB1cGNvbnZlcnQ7CkBAIC00ODcsMTMgKzQ1NCwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIExDaGFy
KiBkZXN0ID0gZGF0YTg7CiAKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAg
aWYgKGMgPT0gc21hbGxMZXR0ZXJTaGFycFMpIHsKKyAgICAgICAgICAgIExDaGFyIGNoYXJhY3Rl
ciA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IHNtYWxsTGV0dGVy
U2hhcnBTKSB7CiAgICAgICAgICAgICAgICAgKmRlc3QrKyA9ICdTJzsKICAgICAgICAgICAgICAg
ICAqZGVzdCsrID0gJ1MnOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQodV90b3VwcGVyKGMpIDw9IDB4RkYpOwotICAgICAgICAgICAgICAgICpkZXN0KysgPSBz
dGF0aWNfY2FzdDxMQ2hhcj4odV90b3VwcGVyKGMpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dV90b3VwcGVyKGNoYXJhY3RlcikgPD0gMHhGRik7CisgICAgICAgICAgICAgICAgKmRlc3QrKyA9
IHN0YXRpY19jYXN0PExDaGFyPih1X3RvdXBwZXIoY2hhcmFjdGVyKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtNTEwLDkgKzQ3Nyw5IEBAIHVwY29udmVydDoKICAgICAvLyBEbyBh
IGZhc3RlciBsb29wIGZvciB0aGUgY2FzZSB3aGVyZSBhbGwgdGhlIGNoYXJhY3RlcnMgYXJlIEFT
Q0lJLgogICAgIHVuc2lnbmVkIG9yZWQgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IHNvdXJjZTE2W2ldOwotICAgICAgICBvcmVk
IHw9IGM7Ci0gICAgICAgIGRhdGExNltpXSA9IHRvQVNDSUlVcHBlcihjKTsKKyAgICAgICAgVUNo
YXIgY2hhcmFjdGVyID0gc291cmNlMTZbaV07CisgICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyOwor
ICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyKTsKICAgICB9CiAgICAg
aWYgKCEob3JlZCAmIH4weDdGKSkKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC02MzQsOCAr
NjAxLDcgQEAgU2xvd1BhdGg6CiAgICAgICAgIGlmICghbmVlZDE2Qml0Q2hhcmFjdGVycykgewog
ICAgICAgICAgICAgTENoYXIqIGRhdGE4OwogICAgICAgICAgICAgYXV0byBmb2xkZWQgPSBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTgpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhaWxpbmdJbmRleDsgKytpKQotICAgICAg
ICAgICAgICAgIGRhdGE4W2ldID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGE4LCBtX2RhdGE4LCBmYWlsaW5nSW5kZXgpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZmFpbGluZ0luZGV4OyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKICAgICAgICAgICAgICAgICBpZiAoaXNB
U0NJSShjaGFyYWN0ZXIpKQpAQCAtNzA3LDggKzY3Myw3IEBAIEFMV0FZU19JTkxJTkUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYgaW1wbCwg
Y29uCiBTbG93UGF0aDoKICAgICBDaGFyYWN0ZXJUeXBlKiBuZXdEYXRhOwogICAgIGF1dG8gbmV3
SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KGxlbmd0aCwgbmV3RGF0
YSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhaWxpbmdJbmRleDsgKytpKQotICAg
ICAgICBuZXdEYXRhW2ldID0gZGF0YVtpXTsKKyAgICBjb3B5Q2hhcmFjdGVycyhuZXdEYXRhLCBk
YXRhLCBmYWlsaW5nSW5kZXgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICBuZXdEYXRhW2ldID0gdHlwZSA9PSBDYXNlQ29udmVy
dFR5cGU6Okxvd2VyID8gdG9BU0NJSUxvd2VyKGRhdGFbaV0pIDogdG9BU0NJSVVwcGVyKGRhdGFb
aV0pOwogICAgIHJldHVybiBuZXdJbXBsOwpAQCAtNzYwLDkgKzcyNSw5IEBAIGNsYXNzIFVDaGFy
UHJlZGljYXRlIHsKIHB1YmxpYzoKICAgICBpbmxpbmUgVUNoYXJQcmVkaWNhdGUoQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciBmdW5jdGlvbik6IG1fZnVuY3Rpb24oZnVuY3Rpb24pIHsgfQogCi0g
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBjaCkgY29uc3QKKyAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvcigpKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Z1bmN0aW9uKGNoKTsKKyAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24oY2hhcmFjdGVyKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC03NzEsOSArNzM2LDkgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
U3BhY2VPck5ld2xpbmVQcmVkaWNhdGUgewogcHVibGljOgotICAgIGlubGluZSBib29sIG9wZXJh
dG9yKCkoVUNoYXIgY2gpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShj
aCk7CisgICAgICAgIHJldHVybiBpc1NwYWNlT3JOZXdsaW5lKGNoYXJhY3Rlcik7CiAgICAgfQog
fTsKIApAQCAtNzg3LDExICs3NTIsMTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0
cmlwV2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UKICAgICBy
ZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZShpc1doaXRlU3BhY2Up
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSog
Y2hhcmFjdGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoKQogewotICAgIGNvbnN0IENo
YXJUeXBlKiBmcm9tID0gY2hhcmFjdGVyczsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbWVuZCA9
IGZyb20gKyBtX2xlbmd0aDsKKyAgICBhdXRvKiBmcm9tID0gY2hhcmFjdGVyczsKKyAgICBhdXRv
KiBmcm9tZW5kID0gZnJvbSArIG1fbGVuZ3RoOwogICAgIAogICAgIC8vIEFzc3VtZSB0aGUgY29t
bW9uIGNhc2Ugd2lsbCBub3QgcmVtb3ZlIGFueSBjaGFyYWN0ZXJzCiAgICAgd2hpbGUgKGZyb20g
IT0gZnJvbWVuZCAmJiAhZmluZE1hdGNoKCpmcm9tKSkKQEAgLTc5OSwxMiArNzYzLDEyIEBAIEFM
V0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMo
Y29uc3QgQ2hhclR5cGUqIGNoYXJhCiAgICAgaWYgKGZyb20gPT0gZnJvbWVuZCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIAotICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xl
bmd0aCk7Ci0gICAgQ2hhclR5cGUqIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CisgICAgU3RyaW5n
QnVmZmVyPENoYXJhY3RlclR5cGU+IGRhdGEobV9sZW5ndGgpOworICAgIGF1dG8qIHRvID0gZGF0
YS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgb3V0YyA9IGZyb20gLSBjaGFyYWN0ZXJzOwog
ICAgIAogICAgIGlmIChvdXRjKQotICAgICAgICBtZW1jcHkodG8sIGNoYXJhY3RlcnMsIG91dGMg
KiBzaXplb2YoQ2hhclR5cGUpKTsKKyAgICAgICAgY29weUNoYXJhY3RlcnModG8sIGNoYXJhY3Rl
cnMsIG91dGMpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgd2hpbGUgKGZyb20gIT0g
ZnJvbWVuZCAmJiBmaW5kTWF0Y2goKmZyb20pKQpAQCAtODI3LDE3ICs3OTEsMTYgQEAgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0ciBmaW5kTWF0Y2gKICAgICByZXR1cm4gcmVtb3ZlQ2hhcmFjdGVycyhjaGFyYWN0ZXJz
MTYoKSwgZmluZE1hdGNoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFz
cyBVQ2hhclByZWRpY2F0ZT4KLWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2lt
cGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGljYXRlKQor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IGlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVy
c1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGljYXRlKQogewotICAgIFN0cmluZ0J1ZmZlcjxD
aGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7CisgICAgU3RyaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
IGRhdGEobV9sZW5ndGgpOwogCi0gICAgY29uc3QgQ2hhclR5cGUqIGZyb20gPSBjaGFyYWN0ZXJz
PENoYXJUeXBlPigpOwotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0gZnJvbSArIG1fbGVu
Z3RoOworICAgIGF1dG8qIGZyb20gPSBjaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCk7CisgICAg
YXV0byogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0aDsKICAgICBpbnQgb3V0YyA9IDA7CiAgICAg
Ym9vbCBjaGFuZ2VkVG9TcGFjZSA9IGZhbHNlOwogICAgIAotICAgIENoYXJUeXBlKiB0byA9IGRh
dGEuY2hhcmFjdGVycygpOworICAgIGF1dG8qIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CiAgICAg
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiBw
cmVkaWNhdGUoKmZyb20pKSB7CkBAIC05NjIsNTQgKzkyNSw2IEBAIGZsb2F0IFN0cmluZ0ltcGw6
OnRvRmxvYXQoYm9vbCogb2spCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgb2spOwogfQogCi0vLyBUYWJsZSBpcyBiYXNlZCBvbiBmdHA6Ly9m
dHAudW5pY29kZS5vcmcvUHVibGljL1VOSURBVEEvQ2FzZUZvbGRpbmcudHh0Ci1zdGF0aWMgY29u
c3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZdID0gewotICAgIDB4MDAwMCwgMHgwMDAx
LCAweDAwMDIsIDB4MDAwMywgMHgwMDA0LCAweDAwMDUsIDB4MDAwNiwgMHgwMDA3LCAweDAwMDgs
IDB4MDAwOSwgMHgwMDBhLCAweDAwMGIsIDB4MDAwYywgMHgwMDBkLCAweDAwMGUsIDB4MDAwZiwK
LSAgICAweDAwMTAsIDB4MDAxMSwgMHgwMDEyLCAweDAwMTMsIDB4MDAxNCwgMHgwMDE1LCAweDAw
MTYsIDB4MDAxNywgMHgwMDE4LCAweDAwMTksIDB4MDAxYSwgMHgwMDFiLCAweDAwMWMsIDB4MDAx
ZCwgMHgwMDFlLCAweDAwMWYsCi0gICAgMHgwMDIwLCAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAw
eDAwMjQsIDB4MDAyNSwgMHgwMDI2LCAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMmEsIDB4
MDAyYiwgMHgwMDJjLCAweDAwMmQsIDB4MDAyZSwgMHgwMDJmLAotICAgIDB4MDAzMCwgMHgwMDMx
LCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgs
IDB4MDAzOSwgMHgwMDNhLCAweDAwM2IsIDB4MDAzYywgMHgwMDNkLCAweDAwM2UsIDB4MDAzZiwK
LSAgICAweDAwNDAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAw
NjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4MDA2YSwgMHgwMDZiLCAweDAwNmMsIDB4MDA2
ZCwgMHgwMDZlLCAweDAwNmYsCi0gICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAw
eDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4
MDA1YiwgMHgwMDVjLCAweDAwNWQsIDB4MDA1ZSwgMHgwMDVmLAotICAgIDB4MDA2MCwgMHgwMDYx
LCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgs
IDB4MDA2OSwgMHgwMDZhLCAweDAwNmIsIDB4MDA2YywgMHgwMDZkLCAweDAwNmUsIDB4MDA2ZiwK
LSAgICAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAw
NzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3YSwgMHgwMDdiLCAweDAwN2MsIDB4MDA3
ZCwgMHgwMDdlLCAweDAwN2YsCi0gICAgMHgwMDgwLCAweDAwODEsIDB4MDA4MiwgMHgwMDgzLCAw
eDAwODQsIDB4MDA4NSwgMHgwMDg2LCAweDAwODcsIDB4MDA4OCwgMHgwMDg5LCAweDAwOGEsIDB4
MDA4YiwgMHgwMDhjLCAweDAwOGQsIDB4MDA4ZSwgMHgwMDhmLAotICAgIDB4MDA5MCwgMHgwMDkx
LCAweDAwOTIsIDB4MDA5MywgMHgwMDk0LCAweDAwOTUsIDB4MDA5NiwgMHgwMDk3LCAweDAwOTgs
IDB4MDA5OSwgMHgwMDlhLCAweDAwOWIsIDB4MDA5YywgMHgwMDlkLCAweDAwOWUsIDB4MDA5ZiwK
LSAgICAweDAwYTAsIDB4MDBhMSwgMHgwMGEyLCAweDAwYTMsIDB4MDBhNCwgMHgwMGE1LCAweDAw
YTYsIDB4MDBhNywgMHgwMGE4LCAweDAwYTksIDB4MDBhYSwgMHgwMGFiLCAweDAwYWMsIDB4MDBh
ZCwgMHgwMGFlLCAweDAwYWYsCi0gICAgMHgwMGIwLCAweDAwYjEsIDB4MDBiMiwgMHgwMGIzLCAw
eDAwYjQsIDB4MDNiYywgMHgwMGI2LCAweDAwYjcsIDB4MDBiOCwgMHgwMGI5LCAweDAwYmEsIDB4
MDBiYiwgMHgwMGJjLCAweDAwYmQsIDB4MDBiZSwgMHgwMGJmLAotICAgIDB4MDBlMCwgMHgwMGUx
LCAweDAwZTIsIDB4MDBlMywgMHgwMGU0LCAweDAwZTUsIDB4MDBlNiwgMHgwMGU3LCAweDAwZTgs
IDB4MDBlOSwgMHgwMGVhLCAweDAwZWIsIDB4MDBlYywgMHgwMGVkLCAweDAwZWUsIDB4MDBlZiwK
LSAgICAweDAwZjAsIDB4MDBmMSwgMHgwMGYyLCAweDAwZjMsIDB4MDBmNCwgMHgwMGY1LCAweDAw
ZjYsIDB4MDBkNywgMHgwMGY4LCAweDAwZjksIDB4MDBmYSwgMHgwMGZiLCAweDAwZmMsIDB4MDBm
ZCwgMHgwMGZlLCAweDAwZGYsCi0gICAgMHgwMGUwLCAweDAwZTEsIDB4MDBlMiwgMHgwMGUzLCAw
eDAwZTQsIDB4MDBlNSwgMHgwMGU2LCAweDAwZTcsIDB4MDBlOCwgMHgwMGU5LCAweDAwZWEsIDB4
MDBlYiwgMHgwMGVjLCAweDAwZWQsIDB4MDBlZSwgMHgwMGVmLAotICAgIDB4MDBmMCwgMHgwMGYx
LCAweDAwZjIsIDB4MDBmMywgMHgwMGY0LCAweDAwZjUsIDB4MDBmNiwgMHgwMGY3LCAweDAwZjgs
IDB4MDBmOSwgMHgwMGZhLCAweDAwZmIsIDB4MDBmYywgMHgwMGZkLCAweDAwZmUsIDB4MDBmZiwK
LX07Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25z
dCBMQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICB3aGls
ZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgaWYgKGxhdGluMUNhc2VGb2xkVGFibGVbKmErK10gIT0g
bGF0aW4xQ2FzZUZvbGRUYWJsZVsqYisrXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBh
dGliaWxpdHlDYXNlbGVzcyhjb25zdCBVQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgaWYgKHVfZm9sZENh
c2UoKmErKywgVV9GT0xEX0NBU0VfREVGQVVMVCkgIT0gbGF0aW4xQ2FzZUZvbGRUYWJsZVsqYisr
XSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBM
Q2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4g
ZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoYiwgYSwgbGVuZ3RoKTsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKGNvbnN0IFVDaGFyKiBhLCBjb25z
dCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiAhdV9tZW1jYXNlY21w
KGEsIGIsIGxlbmd0aCwgVV9GT0xEX0NBU0VfREVGQVVMVCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJ
bXBsOjpmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWdu
ZWQgc3RhcnQpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTA4OSw1MCArMTAwNCw2IEBAIHNp
emVfdCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQg
aW5kZXgpCiAgICAgcmV0dXJuIGluZGV4ICsgaTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkK
LXsKLSAgICAvLyBDaGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5z
dAotICAgIGlmICghbWF0Y2hTdHJpbmcpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICBz
aXplX3QgbWF0Y2hTdHJpbmdMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4obWF0Y2hTdHJpbmcpKTsKLSAgICBpZiAobWF0Y2hTdHJpbmdMZW5ndGggPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgdW5z
aWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZ0xlbmd0aDsKLSAgICBpZiAoIW1hdGNoTGVu
Z3RoKQotICAgICAgICByZXR1cm4gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCgpKTsKLQotICAgIC8v
IENoZWNrIGluZGV4ICYgbWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgotICAgIGlmIChpbmRleCA+
IGxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNo
TGVuZ3RoID0gbGVuZ3RoKCkgLSBpbmRleDsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBzZWFyY2hM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVt
YmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9u
bHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3Ro
OwotCi0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBzZWFyY2hDaGFy
YWN0ZXJzID0gY2hhcmFjdGVyczgoKSArIGluZGV4OwotCi0gICAgICAgIHVuc2lnbmVkIGkgPSAw
OwotICAgICAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENoYXJh
Y3RlcnMgKyBpLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgICAgICBpZiAo
aSA9PSBkZWx0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgICAg
ICArK2k7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGluZGV4ICsgaTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBVQ2hhciogc2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpICsgaW5kZXg7
Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNh
c2VsZXNzKHNlYXJjaENoYXJhY3RlcnMgKyBpLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpKSB7
Ci0gICAgICAgIGlmIChpID09IGRlbHRhKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwot
ICAgICAgICArK2k7Ci0gICAgfQotICAgIHJldHVybiBpbmRleCArIGk7Ci19Ci0KIHNpemVfdCBT
dHJpbmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nKQogewogICAgIC8vIENoZWNr
IGZvciBudWxsIHN0cmluZyB0byBtYXRjaCBhZ2FpbnN0CkBAIC0xMTgxLDUwICsxMDUyLDYgQEAg
c2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVk
IGluZGV4KQogICAgIHJldHVybiBmaW5kQ29tbW9uKCp0aGlzLCAqbWF0Y2hTdHJpbmcsIGluZGV4
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1l
IE1hdGNoQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSWdu
b3JpbmdDYXNlSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVy
cywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIGlu
ZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQotewotICAg
IC8vIGRlbHRhIGlzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0
YSA9PSAwIG1lYW5zIHRlc3Qgb25seSBvbmNlLgotICAgIHVuc2lnbmVkIGRlbHRhID0gc2VhcmNo
TGVuZ3RoIC0gbWF0Y2hMZW5ndGg7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAvLyBrZWVw
IGxvb3BpbmcgdW50aWwgd2UgbWF0Y2gKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNh
c2VsZXNzKHNlYXJjaENoYXJhY3RlcnMgKyBpLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3Ro
KSkgewotICAgICAgICBpZiAoaSA9PSBkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLSAgICAgICAgKytpOwotICAgIH0KLSAgICByZXR1cm4gaW5kZXggKyBpOwotfQotCi1zaXpl
X3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywg
dW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5n
IHRvIG1hdGNoIGFnYWluc3QKLSAgICBpZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4g
bm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy0+bGVuZ3Ro
KCk7Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4
LCBsZW5ndGgoKSk7Ci0KLSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiBy
YW5nZS4KLSAgICBpZiAoaW5kZXggPiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwotICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGxlbmd0aCgpIC0gaW5kZXg7Ci0gICAgaWYg
KG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0K
LSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkK
LSAgICAgICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSAr
IGluZGV4LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwg
bWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJh
Y3RlcnM4KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgc2Vh
cmNoTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1hdGNoU3RyaW5nLT5p
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJz
MTYoKSArIGluZGV4LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIHNlYXJjaExl
bmd0aCwgbWF0Y2hMZW5ndGgpOwotCi0gICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihj
aGFyYWN0ZXJzMTYoKSArIGluZGV4LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4
LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykgY29uc3QK
IHsKICAgICByZXR1cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hT
dHJpbmcsIDApOwpAQCAtMTI0OSwxMSArMTA3NiwxMSBAQCBzaXplX3QgU3RyaW5nSW1wbDo6Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25l
ZAogICAgIHJldHVybiA6OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqbWF0Y2hT
dHJpbmcsIHN0YXJ0T2Zmc2V0KTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5k
KFVDaGFyIGMsIHVuc2lnbmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5k
KFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwg
YywgaW5kZXgpOwotICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBt
X2xlbmd0aCwgYywgaW5kZXgpOworICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFy
YWN0ZXJzOCgpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBpbmRleCk7CisgICAgcmV0dXJuIFdURjo6
cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1h
dGNoQ2hhcmFjdGVyVHlwZT4KQEAgLTEzMTYsMTAwICsxMTQzLDQ4IEBAIHNpemVfdCBTdHJpbmdJ
bXBsOjpyZXZlcnNlRmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgp
CiAgICAgcmV0dXJuIHJldmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5n
LT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hDaGFy
YWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlSW5uZXIoY29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVycywg
Y29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIGluZGV4
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0
aCkKIHsKLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8g
dGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0
YSA9IHN0ZDo6bWluKGluZGV4LCBsZW5ndGggLSBtYXRjaExlbmd0aCk7CisgICAgQVNTRVJUKG1h
dGNoTGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7CisgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ICsg
bWF0Y2hMZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIC8vIGtlZXAgbG9vcGluZyB1
bnRpbCB3ZSBtYXRjaAotICAgIHdoaWxlICghZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Moc2Vh
cmNoQ2hhcmFjdGVycyArIGRlbHRhLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewot
ICAgICAgICBpZiAoIWRlbHRhKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAg
ICAtLWRlbHRhOwotICAgIH0KLSAgICByZXR1cm4gZGVsdGE7CisgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgc3RhcnRP
ZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNo
TGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRP
ZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNo
TGVuZ3RoKTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNl
KFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK0FMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykKIHsKLSAgICAvLyBD
aGVjayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAotICAgIGlmICgh
bWF0Y2hTdHJpbmcpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRj
aExlbmd0aCA9IG1hdGNoU3RyaW5nLT5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBvdXJMZW5ndGgg
PSBsZW5ndGgoKTsKLSAgICBpZiAoIW1hdGNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RkOjpt
aW4oaW5kZXgsIG91ckxlbmd0aCk7Ci0KLSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3Ro
IGFyZSBpbiByYW5nZS4KLSAgICBpZiAobWF0Y2hMZW5ndGggPiBvdXJMZW5ndGgpCi0gICAgICAg
IHJldHVybiBub3RGb3VuZDsKLQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBpZiAobWF0
Y2hTdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGlu
ZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5k
SWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMx
NigpLCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1h
dGNoU3RyaW5nLT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdD
YXNlSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRl
eCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0KLSAgICByZXR1cm4gcmV2ZXJzZUZpbmRJZ25v
cmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigp
LCBpbmRleCwgb3VyTGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoLCBib29sIGNhc2VTZW5zaXRpdmUpCi17Ci0gICAgQVNTRVJUKHN0cmluZ0ltcGwpOwotICAg
IEFTU0VSVChtYXRjaExlbmd0aCA8PSBzdHJpbmdJbXBsLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJU
KHN0YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwotCi0g
ICAgaWYgKGNhc2VTZW5zaXRpdmUpIHsKLSAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgp
KQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnM4KCkgKyBz
dGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwg
bWF0Y2hMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC0+Y2hhcmFjdGVy
czE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNo
U3RyaW5nKSwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLSAgICBpZiAoc3RyaW5nSW1wbC0+aXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzdHJpbmdJbXBs
LT5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxDb21wYXRp
YmlsaXR5Q2FzZWxlc3Moc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgp
OwotfQotCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5n
SW1wbCYgc3RyaW5nSW1wbCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IFN0cmluZ0ltcGwm
IG1hdGNoU3RyaW5nKQotewotICAgIGlmIChzdGFydE9mZnNldCA+IHN0cmluZ0ltcGwubGVuZ3Ro
KCkpCisgICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpID4gc3RyaW5nSW1wbC5sZW5n
dGgoKSkKKyAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgPiBzdHJpbmcubGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFy
dE9mZnNldCA+IHN0cmluZ0ltcGwubGVuZ3RoKCkpCisgICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0
aCgpICsgc3RhcnRPZmZzZXQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChzdHJpbmdJbXBsLmlzOEJpdCgpKSB7CisgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkgewogICAgICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNo
U3RyaW5nLmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0
dXJuIGVxdWFsKHN0cmluZ0ltcGwuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAg
cmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3Ry
aW5nLmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJu
IGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogICAgIGlmIChtYXRj
aFN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwuY2hhcmFj
dGVyczE2KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hT
dHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3RlcnMx
NigpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVu
Z3RoKCkpOworICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9m
ZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsK
IH0KIAotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqIHN0cikg
Y29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJp
bmcpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdHIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHIpOworICAgIHJldHVybiBzdHJpbmcg
JiYgOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHJpbmcpOwogfQogCi1ib29sIFN0cmluZ0lt
cGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYgc3RyKSBjb25zdAorYm9vbCBTdHJpbmdJ
bXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykgY29uc3QKIHsKLSAgICBy
ZXR1cm4gOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsIHN0cik7CisgICAgcmV0dXJuIDo6V1RGOjpz
dGFydHNXaXRoKCp0aGlzLCBzdHJpbmcpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFwcmVmaXgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiA6OldU
Rjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKKyAgICByZXR1
cm4gcHJlZml4ICYmIDo6V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICpw
cmVmaXgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsJiBwcmVmaXgpIGNvbnN0CkBAIC0xNDIyLDEyICsxMTk3LDkgQEAg
Ym9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKICAgICBy
ZXR1cm4gbV9sZW5ndGggJiYgKCp0aGlzKVswXSA9PSBjaGFyYWN0ZXI7CiB9CiAKLWJvb2wgU3Ry
aW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0
Y2hMZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3Rh
cnRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKG1hdGNoTGVuZ3RoKTsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBs
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlcXVhbElubmVyKHRo
aXMsIDAsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0aCwgY2FzZVNlbnNpdGl2ZSk7CisgICAgcmV0
dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5uZXIoKnRoaXMsIDAsIG1hdGNo
U3RyaW5nLCBtYXRjaExlbmd0aCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhTdGFy
dGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3QKQEAgLTE0MzcsMTAgKzEyMDksNyBAQCBib29sIFN0cmluZ0ltcGw6Omhhc0luZml4
U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3Rhcgog
CiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIHN1ZmZpeCkKIHsKLSAgICBp
ZiAoIXN1ZmZpeCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIDo6V1RGOjpl
bmRzV2l0aCgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5k
c1dpdGgoKnRoaXMsICpzdWZmaXgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0
cmluZ0ltcGwmIHN1ZmZpeCkKQEAgLTE0NDgsMjIgKzEyMTcsOSBAQCBib29sIFN0cmluZ0ltcGw6
OmVuZHNXaXRoKFN0cmluZ0ltcGwmIHN1ZmZpeCkKICAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRo
KCp0aGlzLCBzdWZmaXgpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0lt
cGwqIG1hdGNoU3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCi17Ci0gICAgQVNTRVJUKG1hdGNo
U3RyaW5nKTsKLSAgICBpZiAobV9sZW5ndGggPj0gbWF0Y2hTdHJpbmctPm1fbGVuZ3RoKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9sZW5ndGggLSBtYXRjaFN0cmluZy0+bV9sZW5ndGg7
Ci0gICAgICAgIHJldHVybiAoY2FzZVNlbnNpdGl2ZSA/IGZpbmQobWF0Y2hTdHJpbmcsIHN0YXJ0
KSA6IGZpbmRJZ25vcmluZ0Nhc2UobWF0Y2hTdHJpbmcsIHN0YXJ0KSkgPT0gc3RhcnQ7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIHN1ZmZpeCkgY29uc3QKIHsKLSAgICBpZiAo
IXN1ZmZpeCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIDo6V1RGOjplbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqc3VmZml4KTsKKyAgICByZXR1cm4gc3VmZml4
ICYmIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqc3VmZml4KTsKIH0K
IAogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwmIHN1ZmZpeCkgY29uc3QKQEAgLTE0NzYsNjYgKzEyMzIsNTkgQEAgYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGVuZ3Ro
ICYmICgqdGhpcylbbV9sZW5ndGggLSAxXSA9PSBjaGFyYWN0ZXI7CiB9CiAKLWJvb2wgU3RyaW5n
SW1wbDo6ZW5kc1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVu
Z3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRo
KGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKIHsK
LSAgICBBU1NFUlQobWF0Y2hMZW5ndGgpOwotICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBsZW5n
dGgoKSAtIG1hdGNoTGVuZ3RoOwotICAgIHJldHVybiBlcXVhbElubmVyKHRoaXMsIHN0YXJ0T2Zm
c2V0LCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUpOworICAgIHJldHVy
biBtYXRjaExlbmd0aCA8PSBsZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCBsZW5ndGgoKSAt
IG1hdGNoTGVuZ3RoLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpOwogfQogCiBib29sIFN0cmlu
Z0ltcGw6Omhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVu
c2lnbmVkIGVuZE9mZnNldCkgY29uc3QKIHsKLSAgICBpZiAoZW5kT2Zmc2V0IDwgbWF0Y2hTdHJp
bmcubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZXF1YWxJbm5l
cigqdGhpcywgZW5kT2Zmc2V0IC0gbWF0Y2hTdHJpbmcubGVuZ3RoKCksIG1hdGNoU3RyaW5nKTsK
KyAgICByZXR1cm4gZW5kT2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgpICYmIGVxdWFsSW5u
ZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZyk7
CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIG9sZEMsIFVD
aGFyIG5ld0MpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KQogewotICAgIGlmIChvbGRDID09IG5ld0MpCisgICAgaWYg
KHRhcmdldCA9PSByZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIHVuc2ln
bmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSAhPSBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVD
aGFyIGMgPSBpczhCaXQoKSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXTsKLSAgICAgICAgaWYg
KGMgPT0gb2xkQykKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gaXM4Qml0KCkgPyBtX2RhdGE4
W2ldIDogbV9kYXRhMTZbaV07CisgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChpID09IG1fbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAKICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG9sZEMgPiAw
eGZmKQotICAgICAgICAgICAgLy8gTG9va2luZyBmb3IgYSAxNiBiaXQgY2hhciBpbiBhbiA4IGJp
dCBzdHJpbmcsIHdlJ3JlIGRvbmUuCisgICAgICAgIGlmICh0YXJnZXQgPiAweEZGKSB7CisgICAg
ICAgICAgICAvLyBMb29raW5nIGZvciBhIDE2LWJpdCBjaGFyYWN0ZXIgaW4gYW4gOC1iaXQgc3Ry
aW5nLCBzbyB3ZSdyZSBkb25lLgogICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG5ld0MgPD0gMHhmZikgeworICAgICAgICBpZiAocmVwbGFjZW1lbnQg
PD0gMHhGRikgewogICAgICAgICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAgICAgICBMQ2hhciBv
bGRDaGFyID0gc3RhdGljX2Nhc3Q8TENoYXI+KG9sZEMpOwotICAgICAgICAgICAgTENoYXIgbmV3
Q2hhciA9IHN0YXRpY19jYXN0PExDaGFyPihuZXdDKTsKKyAgICAgICAgICAgIExDaGFyIG9sZENo
YXIgPSBzdGF0aWNfY2FzdDxMQ2hhcj4odGFyZ2V0KTsKKyAgICAgICAgICAgIExDaGFyIG5ld0No
YXIgPSBzdGF0aWNfY2FzdDxMQ2hhcj4ocmVwbGFjZW1lbnQpOwogCiAgICAgICAgICAgICBhdXRv
IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwg
ZGF0YSk7CiAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIExDaGFyIGNoID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgICAgICBp
ZiAoY2ggPT0gb2xkQ2hhcikKLSAgICAgICAgICAgICAgICAgICAgY2ggPSBuZXdDaGFyOwotICAg
ICAgICAgICAgICAgIGRhdGFbaV0gPSBjaDsKKyAgICAgICAgICAgICAgICBMQ2hhciBjaGFyYWN0
ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gb2xkQ2hh
cikKKyAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyID0gbmV3Q2hhcjsKKyAgICAgICAgICAg
ICAgICBkYXRhW2ldID0gY2hhcmFjdGVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIG5ld0ltcGw7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBUaGVyZSBpcyB0aGUgcG9zc2li
aWxpdHkgd2UgbmVlZCB0byB1cCBjb252ZXJ0IGZyb20gOCB0byAxNiBiaXQsCi0gICAgICAgIC8v
IGNyZWF0ZSBhIDE2IGJpdCBzdHJpbmcgZm9yIHRoZSByZXN1bHQuCiAgICAgICAgIFVDaGFyKiBk
YXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxO
b25FbXB0eShtX2xlbmd0aCwgZGF0YSk7CiAKICAgICAgICAgZm9yIChpID0gMDsgaSAhPSBtX2xl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjaCA9IG1fZGF0YThbaV07Ci0gICAgICAg
ICAgICBpZiAoY2ggPT0gb2xkQykKLSAgICAgICAgICAgICAgICBjaCA9IG5ld0M7Ci0gICAgICAg
ICAgICBkYXRhW2ldID0gY2g7CisgICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4
W2ldOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCisgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyID0gcmVwbGFjZW1lbnQ7CisgICAgICAgICAgICBkYXRhW2ldID0gY2hhcmFj
dGVyOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC0xNTQ1LDU2ICsx
Mjk0LDUwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIG9sZEMs
IFVDaGFyIG5ld0MpCiAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVy
bmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEpOwogCiAgICAgZm9yIChpID0gMDsgaSAhPSBtX2xl
bmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoID0gbV9kYXRhMTZbaV07Ci0gICAgICAgIGlm
IChjaCA9PSBvbGRDKQotICAgICAgICAgICAgY2ggPSBuZXdDOwotICAgICAgICBkYXRhW2ldID0g
Y2g7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IG1fZGF0YTE2W2ldOworICAgICAgICBpZiAo
Y2hhcmFjdGVyID09IHRhcmdldCkKKyAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2VtZW50
OworICAgICAgICBkYXRhW2ldID0gY2hhcmFjdGVyOwogICAgIH0KICAgICByZXR1cm4gbmV3SW1w
bDsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UodW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwgU3RyaW5nSW1wbCogc3RyKQorUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aFRvUmVwbGFjZSwgU3RyaW5nSW1wbCogc3RyaW5nKQogewogICAgIHBvc2l0aW9uID0g
c3RkOjptaW4ocG9zaXRpb24sIGxlbmd0aCgpKTsKICAgICBsZW5ndGhUb1JlcGxhY2UgPSBzdGQ6
Om1pbihsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24pOwotICAgIHVuc2lnbmVk
IGxlbmd0aFRvSW5zZXJ0ID0gc3RyID8gc3RyLT5sZW5ndGgoKSA6IDA7CisgICAgdW5zaWduZWQg
bGVuZ3RoVG9JbnNlcnQgPSBzdHJpbmcgPyBzdHJpbmctPmxlbmd0aCgpIDogMDsKICAgICBpZiAo
IWxlbmd0aFRvUmVwbGFjZSAmJiAhbGVuZ3RoVG9JbnNlcnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKIAogICAgIGlmICgobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UpID49IChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBsZW5ndGhUb0luc2VydCkpCiAgICAgICAgIENS
QVNIKCk7CiAKLSAgICBpZiAoaXM4Qml0KCkgJiYgKCFzdHIgfHwgc3RyLT5pczhCaXQoKSkpIHsK
KyAgICBpZiAoaXM4Qml0KCkgJiYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pczhCaXQoKSkpIHsKICAg
ICAgICAgTENoYXIqIGRhdGE7CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7
Ci0gICAgICAgIG1lbWNweShkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbiAqIHNpemVvZihMQ2hhcikp
OwotICAgICAgICBpZiAoc3RyKQotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiwg
c3RyLT5tX2RhdGE4LCBsZW5ndGhUb0luc2VydCAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICBt
ZW1jcHkoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTggKyBwb3NpdGlv
biArIGxlbmd0aFRvUmVwbGFjZSwKLSAgICAgICAgICAgICAgIChsZW5ndGgoKSAtIHBvc2l0aW9u
IC0gbGVuZ3RoVG9SZXBsYWNlKSAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFj
dGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CisgICAgICAgIGlmIChzdHJpbmcpCisgICAg
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+bV9kYXRhOCwg
bGVuZ3RoVG9JbnNlcnQpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24g
KyBsZW5ndGhUb0luc2VydCwgbV9kYXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBs
ZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5l
d0ltcGw7CiAgICAgfQogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UgKyBsZW5ndGhUb0luc2Vy
dCwgZGF0YSk7CiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcG9zaXRpb247ICsraSkKLSAgICAgICAgICAgIGRhdGFbaV0gPSBtX2RhdGE4W2ldOwor
ICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgZWxz
ZQotICAgICAgICBtZW1jcHkoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uICogc2l6ZW9mKFVDaGFy
KSk7Ci0gICAgaWYgKHN0cikgewotICAgICAgICBpZiAoc3RyLT5pczhCaXQoKSkKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGhUb0luc2VydDsgKytpKQotICAgICAg
ICAgICAgICAgIGRhdGFbaSArIHBvc2l0aW9uXSA9IHN0ci0+bV9kYXRhOFtpXTsKKyAgICAgICAg
Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKKyAgICBpZiAoc3RyaW5n
KSB7CisgICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQorICAgICAgICAgICAgY29weUNoYXJh
Y3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiwgc3RyLT5t
X2RhdGExNiwgbGVuZ3RoVG9JbnNlcnQgKiBzaXplb2YoVUNoYXIpKTsKLSAgICB9Ci0gICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKSAt
IHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlOyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBw
b3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0XSA9IG1fZGF0YThbaSArIHBvc2l0aW9uICsgbGVuZ3Ro
VG9SZXBsYWNlXTsKLSAgICB9IGVsc2UgewotICAgICAgICBtZW1jcHkoZGF0YSArIHBvc2l0aW9u
ICsgbGVuZ3RoVG9JbnNlcnQsIGNoYXJhY3RlcnMxNigpICsgcG9zaXRpb24gKyBsZW5ndGhUb1Jl
cGxhY2UsCi0gICAgICAgICAgICAobGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFj
ZSkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBw
b3NpdGlvbiwgc3RyaW5nLT5tX2RhdGExNiwgbGVuZ3RoVG9JbnNlcnQpOwogICAgIH0KKyAgICBp
ZiAoaXM4Qml0KCkpCisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxl
bmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0
aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2UpOworICAgIGVsc2UKKyAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTE2ICsg
cG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhU
b1JlcGxhY2UpOwogICAgIHJldHVybiBuZXdJbXBsOwogfQogCkBAIC0xNjAyLDEwICsxMzQ1LDgg
QEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgU3Ry
aW5nSW1wbCogcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwotCiAgICAgaWYgKHJlcGxhY2VtZW50LT5pczhCaXQoKSkKICAgICAgICAg
cmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcGxhY2VtZW50
LT5sZW5ndGgoKSk7Ci0KICAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC0+
bV9kYXRhMTYsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7CiB9CiAKQEAgLTE2NDgsMTUgKzEzODks
MTUgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwg
Y29uc3QgTENoYXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgICAgICB3aGlsZSAoKHNyY1NlZ21l
bnRFbmQgPSBmaW5kKHBhdHRlcm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRT
dGFydDsKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3Jj
U2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVu
dFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBzcmNT
ZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxh
Y2VtZW50LCByZXBTdHJMZW5ndGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgICAgIGNvcHlD
aGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgpOwog
ICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1Nl
Z21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyAxOwogICAgICAgICB9CiAKICAgICAgICAgc3Jj
U2VnbWVudExlbmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICBtZW1j
cHkoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVu
dExlbmd0aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsg
ZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsK
IAogICAgICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBs
LmdldCgpLmxlbmd0aCgpKTsKIApAQCAtMTY2OCwxOCArMTQwOSwxNyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFj
ZW1lbnQsIHVucwogCiAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBz
cmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICBzcmNTZWdtZW50TGVuZ3Ro
ID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEg
KyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3Ro
ICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZz
ZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAg
ICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlcFN0ckxlbmd0aDsgKytpKQotICAgICAgICAgICAgZGF0YVtpICsgZHN0
T2Zmc2V0XSA9IHJlcGxhY2VtZW50W2ldOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsg
ZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoKTsKIAogICAgICAgICBkc3RPZmZz
ZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50
RW5kICsgMTsKICAgICB9CiAKICAgICBzcmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNT
ZWdtZW50U3RhcnQ7Ci0gICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3Jj
U2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQs
IHNyY1NlZ21lbnRMZW5ndGgpOwogCiAgICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRM
ZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE3MjUsMTkgKzE0NjUsMTcg
QEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29u
c3QgVUNoYXIqIHJlcGxhY2VtZW50LCB1bnMKIAogICAgICAgICB3aGlsZSAoKHNyY1NlZ21lbnRF
bmQgPSBmaW5kKHBhdHRlcm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFy
dDsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgZGF0YVtpICsgZHN0T2Zmc2V0XSA9IG1fZGF0YThbaSAr
IHNyY1NlZ21lbnRTdGFydF07CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0
T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAog
ICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgICAgICBt
ZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCk7CiAKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBy
ZXBTdHJMZW5ndGg7CiAgICAgICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5k
ICsgMTsKICAgICAgICAgfQogCiAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAt
IHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY1Nl
Z21lbnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2Rh
dGE4W2kgKyBzcmNTZWdtZW50U3RhcnRdOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsg
ZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsK
IAogICAgICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBs
LmdldCgpLmxlbmd0aCgpKTsKIApAQCAtMTc0OSwxNyArMTQ4NywxNyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFj
ZW1lbnQsIHVucwogCiAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBz
cmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICBzcmNTZWdtZW50TGVuZ3Ro
ID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEg
KyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3Ro
ICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZz
ZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAg
ICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgbWVtY3B5KGRhdGEg
KyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsK
KyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJl
cFN0ckxlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAg
ICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAgICAgfQogCiAgICAgc3Jj
U2VnbWVudExlbmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgIG1lbWNweShk
YXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExl
bmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZz
ZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAg
IEFTU0VSVChkc3RPZmZzZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5ld0ltcGwuZ2V0KCkubGVu
Z3RoKCkpOwogCkBAIC0xODE4LDE1ICsxNTU2LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50
CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobmV3U2l6ZSwgZGF0
YSk7CiAgICAgICAgIHdoaWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2Vn
bWVudFN0YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGgg
PSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICAgICAgbWVtY3B5KGRh
dGEgKyBkc3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5n
dGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBk
c3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwog
ICAgICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgICAgICBt
ZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0
aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRz
dE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgICAg
ICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICAgICAgc3JjU2VnbWVudFN0YXJ0
ID0gc3JjU2VnbWVudEVuZCArIHBhdHRlcm5MZW5ndGg7CiAgICAgICAgIH0KIAogICAgICAgICBz
cmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1l
bWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdt
ZW50TGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEg
KyBkc3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgp
OwogCiAgICAgICAgIEFTU0VSVChkc3RPZmZzZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5ld0lt
cGwuZ2V0KCkubGVuZ3RoKCkpOwogCkBAIC0xODM5LDIwICsxNTc3LDE4IEBAIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwq
IHJlcGxhY2VtZW50CiAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0g
c3JjU2VnbWVudFN0YXJ0OwogICAgICAgICBpZiAoc3JjSXM4Qml0KSB7CiAgICAgICAgICAgICAv
LyBDYXNlIDMuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3JjU2VnbWVu
dExlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2Rh
dGE4W2kgKyBzcmNTZWdtZW50U3RhcnRdOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0
aCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBDYXNlIDIgJiA0LgotICAgICAg
ICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0
LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hh
cmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3Jj
U2VnbWVudExlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21l
bnRMZW5ndGg7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudElzOEJpdCkgewogICAgICAgICAgICAg
Ly8gQ2FzZXMgMiAmIDMuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVw
U3RyTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgZGF0YVtpICsgZHN0T2Zmc2V0XSA9IHJl
cGxhY2VtZW50LT5tX2RhdGE4W2ldOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSAr
IGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBDYXNlIDQKLSAgICAgICAgICAgIG1lbWNweShkYXRh
ICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcFN0ckxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAg
IGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNy
Y1NlZ21lbnRFbmQgKyBwYXR0ZXJuTGVuZ3RoOwpAQCAtMTg2MSwxMSArMTU5NywxMCBAQCBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJp
bmdJbXBsKiByZXBsYWNlbWVudAogICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAtIHNy
Y1NlZ21lbnRTdGFydDsKICAgICBpZiAoc3JjSXM4Qml0KSB7CiAgICAgICAgIC8vIENhc2UgMy4K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY1NlZ21lbnRMZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdtZW50
U3RhcnRdOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4
ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBDYXNlcyAyICYgNC4KLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1f
ZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsg
c3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQo
ZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsK
QEAgLTE4NzgsOCArMTYxMyw3IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgU3RyaW5nSW1wbCogYikKICAgICByZXR1cm4gZXF1YWxDb21tb24oYSwgYik7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLWlubGluZSBib29sIGVxdWFsSW50ZXJuYWwoY29u
c3QgU3RyaW5nSW1wbCogYSwgY29uc3QgQ2hhclR5cGUqIGIsIHVuc2lnbmVkIGxlbmd0aCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogYiwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghYSkKICAgICAgICAgcmV0dXJuICFiOwpAQCAtMTk1NCwxMSArMTY4
OCw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1w
bCogYikKIAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIGEs
IGNvbnN0IFN0cmluZ0ltcGwqIGIpCiB7Ci0gICAgaWYgKGEgPT0gYikKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKCFhIHx8ICFiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oKmEsICpiKTsKKyAgICByZXR1cm4gYSA9
PSBiIHx8IChhICYmIGIgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSgqYSwgKmIpKTsKIH0KIAog
Ym9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiBhLCBj
b25zdCBTdHJpbmdJbXBsKiBiKQpAQCAtMTk3MSw3ICsxNzAxLDcgQEAgYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBs
KiBiKQogVUNoYXJEaXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24o
Ym9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXJEaXJlY3Rpb24gY2hhckRpcmVj
dGlvbiA9IHVfY2hhckRpcmVjdGlvbihpczhCaXQoKSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltp
XSk7CisgICAgICAgIGF1dG8gY2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihpczhCaXQo
KSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXSk7CiAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9u
ID09IFVfTEVGVF9UT19SSUdIVCkgewogICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5KQogICAgICAgICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7
CkBAIC0yMDEzLDEzICsxNzQzLDEzIEBAIHNpemVfdCBTdHJpbmdJbXBsOjpzaXplSW5CeXRlcygp
IGNvbnN0CiAgICAgcmV0dXJuIHNpemUgKyBzaXplb2YoKnRoaXMpOwogfQogCi0vLyBIZWxwZXIg
dG8gd3JpdGUgYSB0aHJlZS1ieXRlIFVURi04IGNvZGUgcG9pbnQgdG8gdGhlIGJ1ZmZlciwgY2Fs
bGVyIG11c3QgY2hlY2sgcm9vbSBpcyBhdmFpbGFibGUuCi1zdGF0aWMgaW5saW5lIHZvaWQgcHV0
VVRGOFRyaXBsZShjaGFyKiYgYnVmZmVyLCBVQ2hhciBjaCkKKy8vIEhlbHBlciB0byB3cml0ZSBh
IHRocmVlLWJ5dGUgVVRGLTggY29kZSBwb2ludCBpbnRvIHRoZSBidWZmZXI7IGNhbGxlciBtdXN0
IGVuc3VyZSByb29tIGlzIGF2YWlsYWJsZS4KK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRVVEY4VHJp
cGxlKGNoYXIqJiBidWZmZXIsIFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICBBU1NFUlQoY2ggPj0g
MHgwODAwKTsKLSAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNoID4+IDEyKSAm
IDB4MEYpIHwgMHhFMCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+
PiA2KSAmIDB4M0YpIHwgMHg4MCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
KGNoICYgMHgzRikgfCAweDgwKTsKKyAgICBBU1NFUlQoY2hhcmFjdGVyID49IDB4MDgwMCk7Cisg
ICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaGFyYWN0ZXIgPj4gMTIpICYgMHgw
RikgfCAweEUwKTsKKyAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNoYXJhY3Rl
ciA+PiA2KSAmIDB4M0YpIHwgMHg4MCk7CisgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hh
cj4oKGNoYXJhY3RlciAmIDB4M0YpIHwgMHg4MCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6dXRm
OEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY2hhciomIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIENvbnZlcnNpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCmluZGV4IDEzMDg2NmNmMmEwZDBmNGExOGQ2MTgyMzJmNmVhMTVhNDIxZjcy
ZjAuLjNmYmVlMDRiYTU0MWRlMzJlZGI0ZTA5Mzk5YTVmZmEwZGRlZGE0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9Db252ZXJzaW9uTW9kZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ01hbGxvYy5oPgpAQCAtNTcsNyArNTgsNiBAQCBj
bGFzcyBTeW1ib2xJbXBsOwogY2xhc3MgU3ltYm9sUmVnaXN0cnk7CiAKIHN0cnVjdCBDU3RyaW5n
VHJhbnNsYXRvcjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0Rh
dGFUcmFuc2xhdG9yOwogc3RydWN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiBz
dHJ1Y3QgTENoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IFN0cmluZ0hhc2g7CkBAIC02Niwy
MiArNjYsMjEgQEAgc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIAogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCdWZm
ZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhh
c2hBbmRDaGFyYWN0ZXJzVHJhbnNsYXRvcjsKIAotZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5IHsK
LSAgICBUZXh0Q2FzZVNlbnNpdGl2ZSwKLSAgICBUZXh0Q2FzZUluc2Vuc2l0aXZlCi19OworLy8g
RGVmaW5lIFNUUklOR19TVEFUUyB0byAxIHR1cm4gb24gcnVudGltZSBzdGF0aXN0aWNzIGZvciBz
dHJpbmcgc2l6ZXMgYW5kIG1lbW9yeSB1c2FnZS4KKyNkZWZpbmUgU1RSSU5HX1NUQVRTIDAKIAog
dHlwZWRlZiBib29sICgqQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikoVUNoYXIpOwogdHlwZWRl
ZiBib29sICgqSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpKFVDaGFyKTsKIAotLy8gRGVmaW5lIFNU
UklOR19TVEFUUyB0byAxIHR1cm4gb24gcnVuIHRpbWUgc3RhdGlzdGljcyBvZiBzdHJpbmcgc2l6
ZXMgYW5kIG1lbW9yeSB1c2FnZQotI2RlZmluZSBTVFJJTkdfU1RBVFMgMAordGVtcGxhdGU8Ym9v
bCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29s
IGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHNpemVfdCBsZW5n
dGgpOwogCiAjaWYgU1RSSU5HX1NUQVRTCisKIHN0cnVjdCBTdHJpbmdTdGF0cyB7Ci0gICAgaW5s
aW5lIHZvaWQgYWRkOEJpdFN0cmluZyh1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNTdWJTdHJpbmcg
PSBmYWxzZSkKKyAgICB2b2lkIGFkZDhCaXRTdHJpbmcodW5zaWduZWQgbGVuZ3RoLCBib29sIGlz
U3ViU3RyaW5nID0gZmFsc2UpCiAgICAgewogICAgICAgICArK21fdG90YWxOdW1iZXJTdHJpbmdz
OwogICAgICAgICArK21fbnVtYmVyOEJpdFN0cmluZ3M7CkBAIC04OSw3ICs4OCw3IEBAIHN0cnVj
dCBTdHJpbmdTdGF0cyB7CiAgICAgICAgICAgICBtX3RvdGFsOEJpdERhdGEgKz0gbGVuZ3RoOwog
ICAgIH0KIAotICAgIGlubGluZSB2b2lkIGFkZDE2Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQorICAgIHZvaWQgYWRkMTZCaXRTdHJpbmcodW5zaWdu
ZWQgbGVuZ3RoLCBib29sIGlzU3ViU3RyaW5nID0gZmFsc2UpCiAgICAgewogICAgICAgICArK21f
dG90YWxOdW1iZXJTdHJpbmdzOwogICAgICAgICArK21fbnVtYmVyMTZCaXRTdHJpbmdzOwpAQCAt
MTIwLDcgKzExOSw5IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAjZGVmaW5lIFNUUklOR19TVEFU
U19SRU1PVkVfU1RSSU5HKHN0cmluZykgU3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5yZW1vdmVT
dHJpbmcoc3RyaW5nKQogI2RlZmluZSBTVFJJTkdfU1RBVFNfUkVGX1NUUklORyhzdHJpbmcpICsr
U3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5tX3JlZkNhbGxzOwogI2RlZmluZSBTVFJJTkdfU1RB
VFNfREVSRUZfU1RSSU5HKHN0cmluZykgKytTdHJpbmdJbXBsOjpzdHJpbmdTdGF0cygpLm1fZGVy
ZWZDYWxsczsKKwogI2Vsc2UKKwogI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5H
KGxlbmd0aCkgKCh2b2lkKTApCiAjZGVmaW5lIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcy
KGxlbmd0aCwgaXNTdWJTdHJpbmcpICgodm9pZCkwKQogI2RlZmluZSBTVFJJTkdfU1RBVFNfQURE
XzE2QklUX1NUUklORyhsZW5ndGgpICgodm9pZCkwKQpAQCAtMTI5LDQyICsxMzAsMTggQEAgc3Ry
dWN0IFN0cmluZ1N0YXRzIHsKICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFTU9WRV9TVFJJTkcoc3Ry
aW5nKSAoKHZvaWQpMCkKICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSAo
KHZvaWQpMCkKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORyhzdHJpbmcpICgodm9p
ZCkwKQorCiAjZW5kaWYKIAogY2xhc3MgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdHJpbmdJbXBsU2hhcGUpOwogcHJvdGVjdGVkOgotICAgIFN0cmluZ0ltcGxT
aGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBMQ2hhciogZGF0
YTgsIHVuc2lnbmVkIGhhc2hBbmRGbGFncykKLSAgICAgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50
KQotICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2RhdGE4KGRhdGE4KQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7IH0KLQotICAgIFN0
cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBV
Q2hhciogZGF0YTE2LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCi0gICAgICAgIDogbV9yZWZDb3Vu
dChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9kYXRh
MTYoZGF0YTE2KQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7
IH0KKyAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOworICAgIFN0cmluZ0ltcGxT
aGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGhhc2hBbmRGbGFncyk7CiAKICAgICBlbnVtIENvbnN0cnVjdFdpdGhDb25zdEV4cHJU
YWcgeyBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByIH07Ci0gICAgCi0gICAgdGVtcGxhdGU8dW5zaWdu
ZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25l
ZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hh
cmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4
cHJUYWcpCi0gICAgICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCi0gICAgICAgICwgbV9kYXRhOENoYXIoY2hhcmFjdGVycykKLSAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1
bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RX
aXRoQ29uc3RFeHByVGFnKQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YTE2Q2hhcihjaGFyYWN0ZXJzKQot
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7IH0KKyAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1
bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVy
cylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhD
b25zdEV4cHJUYWcpOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25z
dGV4cHIgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IGNoYXIxNl90ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBo
YXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpOwogCiAgICAgdW5zaWduZWQg
bV9yZWZDb3VudDsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKQEAgLTE4MSwyNiArMTU4LDI1IEBA
IHByb3RlY3RlZDoKIAogY2xhc3MgU3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJpbmdJbXBsKTsgV1RGX01BS0VfU1RSSU5H
X0FMTE9DQVRFRDsKKworICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOworICAgIGZy
aWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOworICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICBmcmllbmQgY2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7Cisg
ICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOworICAgIGZyaWVuZCBjbGFzcyBT
eW1ib2xJbXBsOworCiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpI
YXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hB
bmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gZnJpZW5kIHN0cnVjdCBXVEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRv
cjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6TENoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZy
aWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3Qg
V1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnQ6
OkRhdGE7Ci0gICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAg
IGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotICAgIGZyaWVuZCBjbGFzcyBTeW1ib2xJ
bXBsOwotICAgIGZyaWVuZCBjbGFzcyBQcml2YXRlU3ltYm9sSW1wbDsKLSAgICBmcmllbmQgY2xh
c3MgUmVnaXN0ZXJlZFN5bWJvbEltcGw7Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIHN0cnVjdCBXVEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRDaGFyYWN0ZXJzVHJh
bnNsYXRvcjsKKwogcHVibGljOgotICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKLSAgICAgICAg
QnVmZmVySW50ZXJuYWwsCi0gICAgICAgIEJ1ZmZlck93bmVkLAotICAgICAgICBCdWZmZXJTdWJz
dHJpbmcsCi0gICAgfTsKKyAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7IEJ1ZmZlckludGVybmFs
LCBCdWZmZXJPd25lZCwgQnVmZmVyU3Vic3RyaW5nIH07CiAKICAgICAvLyBUaGUgYm90dG9tIDYg
Yml0cyBpbiB0aGUgaGFzaCBhcmUgZmxhZ3MuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1
bnNpZ25lZCBzX2ZsYWdDb3VudCA9IDY7CkBAIC0yMjIsOTQgKzE5OCwyOSBAQCBwcml2YXRlOgog
ICAgICAgICBTdHJpbmdTeW1ib2wgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sLCAvLyBz
eW1ib2wsIG5vbi1hdG9taWMKICAgICB9OwogCi0gICAgLy8gRklYTUU6IHRoZXJlIGhhcyB0byBi
ZSBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCiAgICAgZW51bSBGb3JjZThCaXQgeyBGb3Jj
ZThCaXRDb25zdHJ1Y3RvciB9OwotICAgIC8vIENyZWF0ZSBhIG5vcm1hbCA4LWJpdCBzdHJpbmcg
d2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICBTdHJpbmdJbXBsKHVu
c2lnbmVkIGxlbmd0aCwgRm9yY2U4Qml0KQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3Jl
ZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIHRhaWxQb2ludGVyPExDaGFyPigpLCBzX2hhc2hGbGFn
OEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwogCi0gICAgICAg
IFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICAvLyBD
cmVhdGUgYSBub3JtYWwgOC1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVy
SW50ZXJuYWwpCisgICAgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgsIEZvcmNlOEJpdCk7CiAK
ICAgICAvLyBDcmVhdGUgYSBub3JtYWwgMTYtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3Jh
Z2UgKEJ1ZmZlckludGVybmFsKQotICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoKQotICAg
ICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIHRhaWxQ
b2ludGVyPFVDaGFyPigpLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX2RhdGExNik7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7Ci0KLSAg
ICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAg
ICBleHBsaWNpdCBTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDcmVhdGUg
YSBTdHJpbmdJbXBsIGFkb3B0aW5nIG93bmVyc2hpcCBvZiB0aGUgcHJvdmlkZWQgYnVmZmVyIChC
dWZmZXJPd25lZCkKLSAgICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxMQ2hhcj4gY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5j
cmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMubGVha1B0cigpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZl
ciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
ZGF0YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFU
U19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKE1hbGxv
Y1B0cjxMQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIGVudW0gQ29u
c3RydWN0V2l0aG91dENvcHlpbmdUYWcgeyBDb25zdHJ1Y3RXaXRob3V0Q29weWluZyB9OwotICAg
IFN0cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29u
c3RydWN0V2l0aG91dENvcHlpbmdUYWcpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVm
Q291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5nTm9ybWFsIHwgQnVmZmVy
SW50ZXJuYWwpCi0gICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NF
UlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1f
bGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQotICAgICAgICA6
IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMs
IHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9kYXRhOCk7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7
Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Ci0gICAg
fQorICAgIFN0cmluZ0ltcGwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVj
dFdpdGhvdXRDb3B5aW5nVGFnKTsKKyAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CiAKICAgICAvLyBDcmVhdGUg
YSBTdHJpbmdJbXBsIGFkb3B0aW5nIG93bmVyc2hpcCBvZiB0aGUgcHJvdmlkZWQgYnVmZmVyIChC
dWZmZXJPd25lZCkKLSAgICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4gY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5j
cmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMubGVha1B0cigpLCBTdHJpbmdOb3JtYWwgfCBCdWZm
ZXJPd25lZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGExNik7Ci0gICAgICAgIEFTU0VS
VChtX2xlbmd0aCk7Ci0KLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9s
ZW5ndGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4sIHVuc2lnbmVk
IGxlbmd0aCk7CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBh
IHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyA4LWJpdCBTdHJpbmdJbXBsIChCdWZmZXJTdWJzdHJp
bmcpCi0gICAgU3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShz
X3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBBU1NFUlQo
bV9sZW5ndGgpOwotICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVm
ZmVyU3Vic3RyaW5nKTsKLQotICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtS
ZWYoKTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwg
dHJ1ZSk7Ci0gICAgfQorICAgIFN0cmluZ0ltcGwoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgsIFJlZjxTdHJpbmdJbXBsPiYmKTsKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzdHJp
bmdzIHRoYXQgYXJlIGEgc3Vic3RyaW5nIG9mIGFuIGV4aXN0aW5nIDE2LWJpdCBTdHJpbmdJbXBs
IChCdWZmZXJTdWJzdHJpbmcpCi0gICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQotICAgICAgICA6IFN0
cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0
cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXM4
Qml0KCkpOwotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5n
dGgpOwotICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vi
c3RyaW5nKTsKLQotICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsK
LQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUp
OwotICAgIH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBS
ZWY8U3RyaW5nSW1wbD4mJik7CiAKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIHZvaWQgZGVzdHJveShTdHJpbmdJbXBsKik7CkBAIC0zMTcsNzEgKzIyOCwyNiBAQCBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGlu
ZUNhcGFjaXR5PiYgdmVjdG9yKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZThCaXRJZlBv
c3NpYmxlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwotICAgIH0KKyAgICB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJp
dElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQ
b3NzaWJsZShjb25zdCBVQ2hhciopOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciop
OwotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3Qg
Y2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihz
KSk7IH0KLQotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVT
dWJzdHJpbmdTaGFyaW5nSW1wbChTdHJpbmdJbXBsJiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSByZXAubGVuZ3Ro
KCkpOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgY2hhciogc3RyaW5nKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KHN0cmluZykpOyB9CiAKLSAgICAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm4gKmVtcHR5KCk7CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJp
bmdTaGFyaW5nSW1wbChTdHJpbmdJbXBsJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOwogCi0gICAgICAgIGF1dG8qIG93bmVyUmVwID0gKChyZXAuYnVmZmVyT3duZXJzaGlwKCkg
PT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXApOworICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCYpW2NoYXJhY3RlckNvdW50XSk7CiAKLSAg
ICAgICAgLy8gV2UgYWxsb2NhdGUgYSBidWZmZXIgdGhhdCBjb250YWlucyBib3RoIHRoZSBTdHJp
bmdJbXBsIHN0cnVjdCBhcyB3ZWxsIGFzIHRoZSBwb2ludGVyIHRvIHRoZSBvd25lciBzdHJpbmcu
Ci0gICAgICAgIGF1dG8qIHN0cmluZ0ltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3Ry
aW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPFN0cmluZ0ltcGwqPigxKSkpOwotICAgICAgICBpZiAo
cmVwLmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGws
IHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwocmVwLm1fZGF0YTggKyBvZmZzZXQsIGxlbmd0aCwgKm93
bmVyUmVwKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJ
bXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGExNiArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXAp
KTsKLSAgICB9CisgICAgLy8gRklYTUU6IFJlcGxhY2UgY2FsbHMgdG8gdGhlc2Ugb3ZlcmxvYWRz
IG9mIGNyZWF0ZUZyb21MaXRlcmFsIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGluc3RlYWQuCisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3Qg
Y2hhciopOwogCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCi0gICAgewotICAgICAgICBDT01Q
SUxFX0FTU0VSVChjaGFyYWN0ZXJDb3VudCA+IDEsIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbE5vdEVt
cHR5KTsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVu
c2lnbmVkKH4wKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmlu
Z0ltcGxGcm9tTGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKLQotICAgICAgICByZXR1cm4gY3JlYXRl
V2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMp
LCBjaGFyYWN0ZXJDb3VudCAtIDEpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9u
IG9mZiBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY3JlYXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4K
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVG
cm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21M
aXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNo
YXIqJiBkYXRhKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEFMV0FZU19JTkxJ
TkUgUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoLCBUKiYgb3V0cHV0KQotICAgIHsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAg
ICAgIG91dHB1dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHkoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoVCkpKSB7Ci0gICAgICAg
ICAgICBvdXRwdXQgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLSAgICAgICAgU3RyaW5nSW1wbCogcmVzdWx0SW1wbCA9IHN0YXRpY19jYXN0PFN0cmlu
Z0ltcGwqPih0cnlTdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8VD4obGVuZ3RoKSkpOwotICAg
ICAgICBpZiAoIXJlc3VsdEltcGwpIHsKLSAgICAgICAgICAgIG91dHB1dCA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBvdXRwdXQgPSBy
ZXN1bHRJbXBsLT50YWlsUG9pbnRlcjxUPigpOwotCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RJ
bnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwotICAgIH0KKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomKTsK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomKTsKIAogICAgIC8v
IFJlYWxsb2NhdGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9u
bHkgb3duZWQgYnkgdGhlIFJlZiwKICAgICAvLyBhbmQgdGhlIGJ1ZmZlciBvd25lcnNoaXAgbXVz
dCBiZSBCdWZmZXJJbnRlcm5hbC4gSnVzdCBsaWtlIHRoZSBpbnB1dCBwb2ludGVyIG9mIHJlYWxs
b2MoKSwKQEAgLTM5Niw4MyArMjYyLDMxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQg
bWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0
YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmlu
Z0ltcGwsIG1fZGF0YTgpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eT4KLSAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ1ZlY3RvcjxD
aGFyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYg
dmVjdG9yKQotICAgIHsKLSAgICAgICAgaWYgKHNpemVfdCBzaXplID0gdmVjdG9yLnNpemUoKSkg
ewotICAgICAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOwotICAgICAgICAgICAgaWYgKHNp
emUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAg
ICAgQ1JBU0goKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwo
dmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgc2l6ZSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biAqZW1wdHkoKTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW5DYXBhY2l0eT4KKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ1ZlY3Rv
cjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT4mJik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+JiYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mJik7
CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAg
IHN0YXRpYyBwdHJkaWZmX3QgbGVuZ3RoTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cmluZ0ltcGwsIG1fbGVuZ3RoKTsgfQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2xlbmd0aDsgfQogCisgICAgYm9vbCBpczhC
aXQoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVy
OyB9CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7
IEFTU0VSVChpczhCaXQoKSk7IHJldHVybiBtX2RhdGE4OyB9CiAgICAgQUxXQVlTX0lOTElORSBj
b25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QgeyBBU1NFUlQoIWlzOEJpdCgpKTsgcmV0
dXJuIG1fZGF0YTE2OyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAg
QUxXQVlTX0lOTElORSBjb25zdCBDaGFyVHlwZSAqY2hhcmFjdGVycygpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJh
Y3RlcnMoKSBjb25zdDsKIAotICAgIHNpemVfdCBjb3N0KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IC8vIEZvciBzdWJzdHJpbmdzLCByZXR1cm4gdGhlIGNvc3Qgb2YgdGhlIGJhc2Ugc3RyaW5nLgot
ICAgICAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKQotICAgICAg
ICAgICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7Ci0KLSAgICAgICAgLy8gTm90
ZTogd2UgbXVzdCBub3QgYWx0ZXIgdGhlIG1faGFzaEFuZEZsYWdzIGZpZWxkIGluIGluc3RhbmNl
cyBvZiBTdGF0aWNTdHJpbmdJbXBsLgotICAgICAgICAvLyBXZSBlbnN1cmUgdGhpcyBieSBwcmUt
c2V0dGluZyB0aGUgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgYml0IGluIGFsbCBpbnN0YW5jZXMg
b2YKLSAgICAgICAgLy8gU3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmlu
Z0ltcGwgaW5zdGFuY2VzIHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKLSAgICAgICAgLy8g
MCBoZXJlIGFuZCBhdm9pZCBtb2RpZnlpbmcgbV9oYXNoQW5kRmxhZ3MuCi0gICAgICAgIGlmICht
X2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0KQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0RpZFJlcG9ydENv
c3Q7Ci0gICAgICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsKLSAgICAgICAgaWYgKCFpczhC
aXQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA8PD0gMTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IGNvc3REdXJpbmdHQygpCi0gICAgewotICAgICAgICBp
ZiAoaXNTdGF0aWMoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAg
aWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgICAgIHJl
dHVybiBkaXZpZGVSb3VuZGVkVXAoc3Vic3RyaW5nQnVmZmVyKCktPmNvc3REdXJpbmdHQygpLCBy
ZWZDb3VudCgpKTsKLSAgICAgICAgCi0gICAgICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsK
LSAgICAgICAgaWYgKCFpczhCaXQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA8PD0gMTsKLSAgICAg
ICAgcmV0dXJuIGRpdmlkZVJvdW5kZWRVcChyZXN1bHQsIHJlZkNvdW50KCkpOwotICAgIH0KKyAg
ICBzaXplX3QgY29zdCgpIGNvbnN0OworICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKTsKIAogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAg
IFN0cmluZ0tpbmQgc3RyaW5nS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmlu
Z0tpbmQ+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza1N0cmluZ0tpbmQpOyB9CiAgICAgYm9v
bCBpc1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0
cmluZ0tpbmRJc1N5bWJvbDsgfQogICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBt
X2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KLQotICAgIHZv
aWQgc2V0SXNBdG9taWMoYm9vbCBpc0F0b21pYykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNT
dGF0aWMoKSk7Ci0gICAgICAgIEFTU0VSVCghaXNTeW1ib2woKSk7Ci0gICAgICAgIGlmIChpc0F0
b21pYykgewotICAgICAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tp
bmRJc0F0b21pYzsKLSAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRv
bWljKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzICY9IH5z
X2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOwotICAgICAgICAgICAgQVNTRVJUKHN0cmluZ0tp
bmQoKSA9PSBTdHJpbmdOb3JtYWwpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgc2V0SXNB
dG9taWMoYm9vbCk7CiAKICNpZiBTVFJJTkdfU1RBVFMKICAgICBib29sIGlzU3ViU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nOyB9CkBA
IC00ODksNDQgKzMwMywxNSBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBoaWdoIGJpdHMgb2YgJ2hh
c2gnIGFyZSBhbHdheXMgZW1wdHksIGJ1dCB3ZSBwcmVmZXIgdG8gc3RvcmUgb3VyIGZsYWdzCiAg
ICAgLy8gaW4gdGhlIGxvdyBiaXRzIGJlY2F1c2UgaXQgbWFrZXMgdGhlbSBzbGlnaHRseSBtb3Jl
IGVmZmljaWVudCB0byBhY2Nlc3MuCiAgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0
IHdoZW4gc2V0dGluZyBhbmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgotICAgIHZvaWQgc2V0SGFz
aCh1bnNpZ25lZCBoYXNoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFoYXNIYXNoKCkp
OwotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwotICAgICAgICAvLyBNdWx0aXBsZSBjbGll
bnRzIGFzc3VtZSB0aGF0IFN0cmluZ0hhc2hlciBpcyB0aGUgY2Fub25pY2FsIHN0cmluZyBoYXNo
IGZ1bmN0aW9uLgotICAgICAgICBBU1NFUlQoaGFzaCA9PSAoaXM4Qml0KCkgPyBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTgsIG1fbGVuZ3RoKSA6IFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKSkp
OwotICAgICAgICBBU1NFUlQoIShoYXNoICYgKHNfZmxhZ01hc2sgPDwgKDggKiBzaXplb2YoaGFz
aCkgLSBzX2ZsYWdDb3VudCkpKSk7IC8vIFZlcmlmeSB0aGF0IGVub3VnaCBoaWdoIGJpdHMgYXJl
IGVtcHR5LgotICAgICAgICAKLSAgICAgICAgaGFzaCA8PD0gc19mbGFnQ291bnQ7Ci0gICAgICAg
IEFTU0VSVCghKGhhc2ggJiBtX2hhc2hBbmRGbGFncykpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2gg
bG93IGJpdHMgYXJlIGVtcHR5IGFmdGVyIHNoaWZ0LgotICAgICAgICBBU1NFUlQoaGFzaCk7IC8v
IFZlcmlmeSB0aGF0IDAgaXMgYSB2YWxpZCBzZW50aW5lbCBoYXNoIHZhbHVlLgotCi0gICAgICAg
IG1faGFzaEFuZEZsYWdzIHw9IGhhc2g7IC8vIFN0b3JlIGhhc2ggd2l0aCBmbGFncyBpbiBsb3cg
Yml0cy4KLSAgICB9CisgICAgdm9pZCBzZXRIYXNoKHVuc2lnbmVkKSBjb25zdDsKIAotICAgIHVu
c2lnbmVkIHJhd0hhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaEFuZEZs
YWdzID4+IHNfZmxhZ0NvdW50OwotICAgIH0KKyAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgPj4gc19mbGFnQ291bnQ7IH0KIAogcHVibGljOgotICAg
IGJvb2wgaGFzSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmF3SGFzaCgpICE9
IDA7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChoYXNIYXNoKCkpOwotICAgICAgICByZXR1cm4gcmF3SGFzaCgpOwotICAg
IH0KKyAgICBib29sIGhhc0hhc2goKSBjb25zdCB7IHJldHVybiAhIXJhd0hhc2goKTsgfQogCi0g
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaGFzSGFzaCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSGFzaCgpOwotICAgICAgICByZXR1cm4gaGFzaFNs
b3dDYXNlKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0IHsgQVNT
RVJUKGhhc0hhc2goKSk7IHJldHVybiByYXdIYXNoKCk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QgeyByZXR1cm4gaGFzSGFzaCgpID8gcmF3SGFzaCgpIDogaGFzaFNsb3dDYXNlKCk7IH0K
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjb25jdXJyZW50SGFzaCgpIGNvbnN0
OwogCkBAIC01MzUsNDAgKzMyMCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3RhdGljKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZDb3VudCAmIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7
IH0KIAotICAgIGlubGluZSBzaXplX3QgcmVmQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcmVmQ291bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OwotICAgIH0KLSAgICAKLSAg
ICBpbmxpbmUgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
cmVmQ291bnQgPT0gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICB9CisgICAgc2l6ZV90IHJlZkNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudCAvIHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0K
KyAgICBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQgPT0gc19yZWZD
b3VudEluY3JlbWVudDsgfQogICAgIAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3Ig
YXNzZXJ0aW9ucy4KLSAgICBpbmxpbmUgYm9vbCBoYXNBdExlYXN0T25lUmVmKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhIW1fcmVmQ291bnQ7Ci0gICAgfQotCi0gICAgaW5saW5lIHZv
aWQgcmVmKCkKLSAgICB7Ci0gICAgICAgIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKCp0aGlzKTsK
LQotICAgICAgICBtX3JlZkNvdW50ICs9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgfQotCi0g
ICAgaW5saW5lIHZvaWQgZGVyZWYoKQotICAgIHsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0RFUkVG
X1NUUklORygqdGhpcyk7Ci0KLSAgICAgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZD
b3VudCAtIHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgICAgIGlmICghdGVtcFJlZkNvdW50KSB7
Ci0gICAgICAgICAgICBTdHJpbmdJbXBsOjpkZXN0cm95KHRoaXMpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fcmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7Ci0gICAg
fQorICAgIHZvaWQgcmVmKCk7CisgICAgdm9pZCBkZXJlZigpOwogCiAgICAgY2xhc3MgU3RhdGlj
U3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3RhdGljU3RyaW5nSW1wbCk7CkBAIC02MDAsNjQgKzM1NiwyOSBAQCBwdWJs
aWM6CiAgICAgICAgIC8vICAgICAgIFN0cmluZ0ltcGw6Omhhc2goKSBvbmx5IHNldHMgYSBuZXcg
aGFzaCBpZmYgIWhhc0hhc2goKS4KICAgICAgICAgLy8gICAgICAgQWRkaXRpb25hbGx5LCBTdHJp
bmdJbXBsOjpzZXRIYXNoKCkgYXNzZXJ0cyBoYXNIYXNoKCkgYW5kICFpc1N0YXRpYygpLgogCi0g
ICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgICAgICBjb25zdGV4
cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291
bnRdLCBTdHJpbmdLaW5kIHN0cmluZ0tpbmQgPSBTdHJpbmdOb3JtYWwpCi0gICAgICAgICAgICA6
IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0ZXJD
b3VudCAtIDEsIGNoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5h
bCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFy
YWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
PgotICAgICAgICBjb25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5kID0gU3RyaW5n
Tm9ybWFsKQotICAgICAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0
YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAotICAgICAgICAgICAg
ICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFs
IHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJh
Y3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikKLSAgICAgICAg
ewotICAgICAgICB9Ci0KLSAgICAgICAgb3BlcmF0b3IgU3RyaW5nSW1wbCYoKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMp
OwotICAgICAgICB9CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBj
b25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFj
dGVyQ291bnRdLCBTdHJpbmdLaW5kID0gU3RyaW5nTm9ybWFsKTsKKyAgICAgICAgdGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGNvbnN0ZXhwciBTdGF0aWNTdHJpbmdJbXBsKGNvbnN0
IGNoYXIxNl90ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5kID0gU3Ry
aW5nTm9ybWFsKTsKKyAgICAgICAgb3BlcmF0b3IgU3RyaW5nSW1wbCYoKTsKICAgICB9OwogCiAg
ICAgV1RGX0VYUE9SVERBVEEgc3RhdGljIFN0YXRpY1N0cmluZ0ltcGwgc19hdG9taWNFbXB0eVN0
cmluZzsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzX2F0b21pY0VtcHR5U3RyaW5nKTsg
fQogCiAgICAgLy8gRklYTUU6IERvZXMgdGhpcyByZWFsbHkgYmVsb25nIGluIFN0cmluZ0ltcGw/
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGNvcHlDaGFycyhUKiBkZXN0
aW5hdGlvbiwgY29uc3QgVCogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQotICAgIHsK
LSAgICAgICAgaWYgKG51bUNoYXJhY3RlcnMgPT0gMSkgewotICAgICAgICAgICAgKmRlc3RpbmF0
aW9uID0gKnNvdXJjZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBt
ZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihUKSk7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRl
c3RpbmF0aW9uLCBjb25zdCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQot
ICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsr
aSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc291cmNlW2ldOwotICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBjb3B5Q2hhcmFjdGVy
cyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc291cmNl
LCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsKKyAgICBzdGF0aWMgdm9pZCBjb3B5Q2hhcmFjdGVy
cyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNo
YXJhY3RlcnMpOwogCiAgICAgLy8gU29tZSBzdHJpbmcgZmVhdHVyZXMsIGxpa2UgcmVmY291bnRp
bmcgYW5kIHRoZSBhdG9taWNpdHkgZmxhZywgYXJlIG5vdAogICAgIC8vIHRocmVhZC1zYWZlLiBX
ZSBhY2hpZXZlIHRocmVhZCBzYWZldHkgYnkgaXNvbGF0aW9uLCBnaXZpbmcgZWFjaCB0aHJlYWQK
ICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0cmluZy4KICAgICBSZWY8U3RyaW5nSW1wbD4g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0
cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFY
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKTsKIAotICAgIFVDaGFyIGF0KHVuc2lnbmVkIGkpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9sZW5ndGgp
OwotICAgICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9kYXRhOFtpXTsK
LSAgICAgICAgcmV0dXJuIG1fZGF0YTE2W2ldOwotICAgIH0KKyAgICBVQ2hhciBhdCh1bnNpZ25l
ZCkgY29uc3Q7CiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVy
biBhdChpKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0
YXJ0aW5nQXQodW5zaWduZWQpOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgY29u
dGFpbnNPbmx5V2hpdGVzcGFjZSgpOwotCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCk7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCk7CkBAIC02OTIsNDkgKzQxMyw0NCBAQCBwdWJsaWM6CiAgICAgUmVm
PFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7
CiAKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQUxXQVlT
X0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSog
Y2hhcmFjdGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoY29u
c3QgQ2hhcmFjdGVyVHlwZSosIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOworCisgICAgYm9v
bCBpc0FsbEFTQ0lJKCkgY29uc3Q7CisgICAgYm9vbCBpc0FsbExhdGluMSgpIGNvbnN0OworICAg
IHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIs
IHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHVu
c2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNp
Z25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChD
aGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIHNpemVf
dCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5M
SU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1
cm4gZmluZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfQorICAg
IEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBp
bmRleCA9IDApIHsgcmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHN0
cmluZyksIGluZGV4KTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChT
dHJpbmdJbXBsKik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kKFN0cmlu
Z0ltcGwqLCB1bnNpZ25lZCBpbmRleCk7Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwotICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90
IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJl
dHVybiBmaW5kSWdub3JpbmdDYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwg
aW5kZXgpOyB9Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmlu
ZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBV
SU5UX01BWCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmluZEln
bm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQg
aW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Ry
aW5nSW1wbCYpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ0ltcGwmKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBi
b29sIGNhc2VTZW5zaXRpdmUpIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyBzdGFydHNXaXRoKHN0
cikgOiAocmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSA9PSAwKTsgfQogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4
KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJu
IHN0YXJ0c1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5z
aWduZWQgbWF0Y2hMZW5ndGgpIGNvbnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVu
Z3RoPiBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBj
b25zdCB7IHJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJp
bmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCopOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwmKTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlKTsKICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChVQ2hhcikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClb
bWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBl
bmRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSwgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQg
bWF0Y2hMZW5ndGgpIGNvbnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBi
b29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyBy
ZXR1cm4gZW5kc1dpdGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEpOyB9CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGJvb2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5z
aWduZWQgZW5kT2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwpAQCAtNzQzLDEzICs0NTksMTQgQEAg
cHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAg
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVw
bGFjZW1lbnRMZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1w
bD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQg
bGVuLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJ
bXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ0ltcGwq
KTsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpOwog
CiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmco
KTsKICNlbmRpZgorCiAjaWZkZWYgX19PQkpDX18KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
b3BlcmF0b3IgTlNTdHJpbmcgKigpOwogI2VuZGlmCkBAIC03NjAsMTIgKzQ3Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxCdWZmZXJPd25lcnNoaXA+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFz
a0J1ZmZlck93bmVyc2hpcCk7IH0KICAgICAKLSAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQotICAgICAgICAgICAgcmVsZWFz
ZUFzc2VydENhZ2VkKCk7Ci0gICAgfQotICAgIAorICAgIHZvaWQgYXNzZXJ0Q2FnZWQoKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25z
dDsKIAogcHJvdGVjdGVkOgpAQCAtNzc0LDk2ICs0ODYsMzUgQEAgcHJvdGVjdGVkOgogICAgIGVu
dW0gQ3JlYXRlU3ltYm9sVGFnIHsgQ3JlYXRlU3ltYm9sIH07CiAKICAgICAvLyBVc2VkIHRvIGNy
ZWF0ZSBuZXcgc3ltYm9sIHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyA4LWJpdCBbW0Rlc2Ny
aXB0aW9uXV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4K
LSAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmlu
Z1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQo
KSk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84
QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0
ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gVXNl
ZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgMTYtYml0
IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVmZmVyIChCdWZmZXJTdWJz
dHJpbmcpLgotICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3Jl
ZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ1N5bWJvbCB8IEJ1ZmZl
clN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwotICAgICAgICBB
U1NFUlQobV9kYXRhMTYpOwotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIo
bV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywg
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gTnVsbCBzeW1ib2wuCi0g
ICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBl
KHNfcmVmQ291bnRJbmNyZW1lbnQsIDAsIGVtcHR5KCktPmNoYXJhY3RlcnM4KCksIHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAg
ICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Ci0gICAgfQor
ICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gdGFp
bEVsZW1lbnRDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAodGFpbE9mZnNldDxUPigpICsg
dGFpbEVsZW1lbnRDb3VudCAqIHNpemVvZihUKSkudW5zYWZlR2V0KCk7Ci0gICAgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxz
aXplX3Q+IHRhaWxFbGVtZW50Q291bnQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBzdGF0aWMgc2l6ZV90IHRhaWxPZmZzZXQoKQotICAgIHsKLSNpZiBDT01QSUxFUihNU1ZDKQot
ICAgICAgICAvLyBNU1ZDIGRvZXNuJ3Qgc3VwcG9ydCBhbGlnbm9mIHlldC4KLSAgICAgICAgcmV0
dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFQpPihzaXplb2YoU3RyaW5nSW1wbCkpOwot
I2Vsc2UKLSAgICAgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zm
c2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1f
aGFzaEFuZEZsYWdzKSk7Ci0jZW5kaWYKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RhdGljIHNpemVfdCB0YWlsT2Zmc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCByZXF1aXJl
c0NvcHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1
ZmZlckludGVybmFsKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKGlz
OEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZGF0YTggPT0gdGFpbFBvaW50ZXI8TENoYXI+
KCk7Ci0gICAgICAgIHJldHVybiBtX2RhdGExNiA9PSB0YWlsUG9pbnRlcjxVQ2hhcj4oKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGNvbnN0IFQqIHRhaWxQb2ludGVy
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25z
dCBUKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykgKyB0YWlsT2Zmc2V0
PFQ+KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogdGFpbFBv
aW50ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Ci0gICAg
fQotCi0gICAgU3RyaW5nSW1wbCogY29uc3QmIHN1YnN0cmluZ0J1ZmZlcigpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsK
LQotICAgICAgICByZXR1cm4gKnRhaWxQb2ludGVyPFN0cmluZ0ltcGwqPigpOwotICAgIH0KLQot
ICAgIFN0cmluZ0ltcGwqJiBzdWJzdHJpbmdCdWZmZXIoKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgcmV0dXJu
ICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsKLSAgICB9CisgICAgYm9vbCByZXF1aXJlc0Nv
cHkoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiB0YWlsUG9pbnRl
cigpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIHRhaWxQb2ludGVyKCk7Cisg
ICAgU3RyaW5nSW1wbCogY29uc3QmIHN1YnN0cmluZ0J1ZmZlcigpIGNvbnN0OworICAgIFN0cmlu
Z0ltcGwqJiBzdWJzdHJpbmdCdWZmZXIoKTsKIAogICAgIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnRU
eXBlIHsgVXBwZXIsIExvd2VyIH07Ci0gICAgdGVtcGxhdGU8Q2FzZUNvbnZlcnRUeXBlIHR5cGUs
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29udmVydEFT
Q0lJQ2FzZShTdHJpbmdJbXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHN0cmlw
TWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlm
eU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVy
bmFsKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1
bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5
KHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBs
PiYmLCB1bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBl
KiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0QVNDSUlDYXNlKFN0cmlu
Z0ltcGwmLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQpOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFy
YWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlLCB0eXBlbmFtZSBVQ2hhclByZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHNpbXBsaWZ5TWF0
Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVy
bmFsKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWwodW5zaWduZWQsIENoYXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50
ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCwgQ2hhcmFjdGVyVHlwZSomKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJ
bnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiwgdW5zaWduZWQsIENoYXJhY3RlclR5cGUqJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29u
c3Q7CiAKICAgICAvLyBUaGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBh
IHN0YXRpYyAoaW1tb3J0YWwpIHN0cmluZy4KQEAgLTg3NSwxMyArNTI2LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiBwdWJsaWM6Ci0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgYXNzZXJ0SGFzaElz
Q29ycmVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzSGFzaCgpKTsKLSAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nSGFzaCgpID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpKTsKLSAgICB9Ci0jZW5kaWYKKyAg
ICB2b2lkIGFzc2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdDsKIH07CiAKIHVzaW5nIFN0YXRpY1N0
cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsOwpAQCAtOTAwLDE3ICs1NDUs
NiBAQCBWYWx1ZUNoZWNrPFN0cmluZ0ltcGwqPiB7CiB9OwogI2VuZGlmCiAKLXRlbXBsYXRlIDw+
Ci1BTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRl
cm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0
Q29uc3RydWN0b3IpKTsgfQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPFVDaGFyPihTdHJpbmdJbXBsKiBpbXBs
LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGltcGwp
IFN0cmluZ0ltcGwobGVuZ3RoKSk7IH0KLQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgY29u
c3QgTENoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4g
Y2hhcmFjdGVyczgoKTsgfQotCi10ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBjb25zdCBVQ2hh
ciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0
ZXJzMTYoKTsgfQotCiBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbChjb25zdCBTdHJp
bmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CkBAIC05MzQsNyArNTY4LDMxIEBA
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0
aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwogCi1pbmxpbmUgc2l6ZV90
IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApCitzaXpl
X3QgZmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKK3NpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRl
eCA9IDApOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJz
ZUZpbmRMaW5lVGVybWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpOworc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
LCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpOworc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworCit0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mLCBTdHJpbmdJbXBsKik7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUxLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMj4gaW50IGNvZGVQb2ludENv
bXBhcmUoY29uc3QgQ2hhcmFjdGVyVHlwZTEqLCB1bnNpZ25lZCBsZW5ndGgxLCBjb25zdCBDaGFy
YWN0ZXJUeXBlMiosIHVuc2lnbmVkIGxlbmd0aDIpOworaW50IGNvZGVQb2ludENvbXBhcmUoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKKworLy8gRklYTUU6IFNob3VsZCBy
ZW5hbWUgdGhpcyB0byBtYWtlIGNsZWFyIGl0IHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBv
ZiB3aGl0ZXNwYWNlLgorLy8gTW9zdCBXZWJLaXQgY2FsbGVycyBkb24ndCB3YW50IHRoYXQgd291
bGQgdXNlIGlzQVNDSUlTcGFjZSBvciBpc0hUTUxTcGFjZSBpbnN0ZWFkLgorYm9vbCBpc1NwYWNl
T3JOZXdsaW5lKFVDaGFyKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5z
aWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKik7
CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIHN0cmluZywgdW5zaWduZWQgbGVu
Z3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0cmluZ0ltcGwo
bGVuZ3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOyB9Cit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPFVDaGFyPihT
dHJpbmdJbXBsKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9Cit0ZW1wbGF0ZTw+IEFM
V0FZU19JTkxJTkUgY29uc3QgTENoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkg
Y29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczgoKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0
dXJuIGNoYXJhY3RlcnMxNigpOyB9CisKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1h
dGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4KQogewogICAgIHdoaWxlIChpbmRleCA8IGxlbmd0
aCkgewogICAgICAgICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2luZGV4XSkpCkBAIC05
NDQsNyArNjAyLDcgQEAgaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3QKICAgICByZXR1cm4gbm90Rm91
bmQ7CiB9CiAKLWlubGluZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVu
c2lnbmVkIGluZGV4ID0gMCkKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIGluZGV4KQogewogICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewog
ICAgICAgICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2luZGV4XSkpCkBAIC05NTQsMjQg
KzYxMiwyMiBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdAogICAgIHJldHVybiBub3RGb3VuZDsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBzaXplX3QgcmV2
ZXJzZUZpbmRMaW5lVGVybWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0
b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBpbmRleCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwogICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCiAgICAgICAgIGluZGV4ID0gbGVuZ3RoIC0gMTsK
LSAgICBDaGFyYWN0ZXJUeXBlIGMgPSBjaGFyYWN0ZXJzW2luZGV4XTsKLSAgICB3aGlsZSAoKGMg
IT0gJ1xuJykgJiYgKGMgIT0gJ1xyJykpIHsKKyAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3Rl
cnNbaW5kZXhdOworICAgIHdoaWxlIChjaGFyYWN0ZXIgIT0gJ1xuJyAmJiBjaGFyYWN0ZXIgIT0g
J1xyJykgewogICAgICAgICBpZiAoIWluZGV4LS0pCiAgICAgICAgICAgICByZXR1cm4gbm90Rm91
bmQ7Ci0gICAgICAgIGMgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgY2hhcmFjdGVyID0g
Y2hhcmFjdGVyc1tpbmRleF07CiAgICAgfQogICAgIHJldHVybiBpbmRleDsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJU
eXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUg
bWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CkBAIC05ODQsMTIgKzY0MCwxMiBAQCBpbmxpbmUgc2l6ZV90
IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgQ2hhcgogICAgIHJldHVybiBpbmRleDsKIH0KIAotQUxXQVlTX0lOTElORSBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENo
YXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCitBTFdBWVNfSU5M
SU5FIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgcmV0
dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8VUNoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFj
dGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQoraW5saW5lIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYgfjB4
RkYpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKQEAgLTEwMjEsNDUgKzY3NywzMCBAQCB0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxs
aXR5KGNvbnN0IFZlY3RvcjxVQwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
MSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+Ci1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUo
dW5zaWduZWQgbDEsIHVuc2lnbmVkIGwyLCBjb25zdCBDaGFyYWN0ZXJUeXBlMSogYzEsIGNvbnN0
IENoYXJhY3RlclR5cGUyKiBjMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBs
MiA/IGwxIDogbDI7Ci0gICAgdW5zaWduZWQgcG9zID0gMDsKLSAgICB3aGlsZSAocG9zIDwgbG1p
biAmJiAqYzEgPT0gKmMyKSB7Ci0gICAgICAgICsrYzE7Ci0gICAgICAgICsrYzI7Ci0gICAgICAg
ICsrcG9zOworaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IENoYXJhY3RlclR5cGUx
KiBjaGFyYWN0ZXJzMSwgdW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIqIGNo
YXJhY3RlcnMyLCB1bnNpZ25lZCBsZW5ndGgyKQoreworICAgIHVuc2lnbmVkIGNvbW1vbkxlbmd0
aCA9IHN0ZDo6bWluKGxlbmd0aDEsIGxlbmd0aDIpOworCisgICAgdW5zaWduZWQgcG9zaXRpb24g
PSAwOworICAgIHdoaWxlIChwb3NpdGlvbiA8IGNvbW1vbkxlbmd0aCAmJiAqY2hhcmFjdGVyczEg
PT0gKmNoYXJhY3RlcnMyKSB7CisgICAgICAgICsrY2hhcmFjdGVyczE7CisgICAgICAgICsrY2hh
cmFjdGVyczI7CisgICAgICAgICsrcG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKHBvcyA8IGxt
aW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CisgICAgaWYgKHBv
c2l0aW9uIDwgY29tbW9uTGVuZ3RoKQorICAgICAgICByZXR1cm4gKGNoYXJhY3RlcnMxWzBdID4g
Y2hhcmFjdGVyczJbMF0pID8gMSA6IC0xOwogCi0gICAgaWYgKGwxID09IGwyKQorICAgIGlmIChs
ZW5ndGgxID09IGxlbmd0aDIpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIChsMSA+
IGwyKSA/IDEgOiAtMTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlOChjb25zdCBT
dHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQotewotICAgIHJl
dHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgo
KSwgc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgoKSk7Ci19Ci0K
LWlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZTE2KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEs
IGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzIpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUoc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmxlbmd0aCgpLCBzdHJpbmcxLT5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczE2KCkpOwotfQotCi1pbmxpbmUgaW50IGNvZGVQ
b2ludENvbXBhcmU4VG8xNihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJ
bXBsKiBzdHJpbmcyKQotewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxl
bmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5n
Mi0+Y2hhcmFjdGVyczE2KCkpOworICAgIHJldHVybiAobGVuZ3RoMSA+IGxlbmd0aDIpID8gMSA6
IC0xOwogfQogCiBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCog
c3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikKIHsKKyAgICAvLyBGSVhNRTogU2hv
dWxkIG51bGwgc3RyaW5ncyBjb21wYXJlIGFzIGxlc3MgdGhhbiBlbXB0eSBzdHJpbmdzIHJhdGhl
ciB0aGFuIGVxdWFsIHRvIHRoZW0/CiAgICAgaWYgKCFzdHJpbmcxKQogICAgICAgICByZXR1cm4g
KHN0cmluZzIgJiYgc3RyaW5nMi0+bGVuZ3RoKCkpID8gLTEgOiAwOwotCiAgICAgaWYgKCFzdHJp
bmcyKQogICAgICAgICByZXR1cm4gc3RyaW5nMS0+bGVuZ3RoKCkgPyAxIDogMDsKIApAQCAtMTA2
NywyMyArNzA4LDIyIEBAIGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJ
bXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyCiAgICAgYm9vbCBzdHJpbmcy
SXM4Qml0ID0gc3RyaW5nMi0+aXM4Qml0KCk7CiAgICAgaWYgKHN0cmluZzFJczhCaXQpIHsKICAg
ICAgICAgaWYgKHN0cmluZzJJczhCaXQpCi0gICAgICAgICAgICByZXR1cm4gY29kZVBvaW50Q29t
cGFyZTgoc3RyaW5nMSwgc3RyaW5nMik7Ci0gICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJl
OFRvMTYoc3RyaW5nMSwgc3RyaW5nMik7CisgICAgICAgICAgICByZXR1cm4gY29kZVBvaW50Q29t
cGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+
Y2hhcmFjdGVyczgoKSwgc3RyaW5nMi0+bGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3Ry
aW5nMi0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmxlbmd0aCgpKTsKICAgICB9CiAgICAgaWYg
KHN0cmluZzJJczhCaXQpCi0gICAgICAgIHJldHVybiAtY29kZVBvaW50Q29tcGFyZThUbzE2KHN0
cmluZzIsIHN0cmluZzEpOwotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlMTYoc3RyaW5nMSwg
c3RyaW5nMik7CisgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgoKSwgc3Ry
aW5nMi0+bGVuZ3RoKCkpOworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczE2KCks
IHN0cmluZzItPmxlbmd0aCgpKTsKIH0KIAotaW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGluZShV
Q2hhciBjKQoraW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhciBjaGFyYWN0ZXIpCiB7
CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFjZSgpIGZvciBiYXNpYyBMYXRpbi0xLgogICAgIC8vIFRo
aXMgd2lsbCBpbmNsdWRlIG5ld2xpbmVzLCB3aGljaCBhcmVuJ3QgaW5jbHVkZWQgaW4gVW5pY29k
ZSBEaXJXUy4KLSAgICByZXR1cm4gYyA8PSAweDdGID8gaXNBU0NJSVNwYWNlKGMpIDogdV9jaGFy
RGlyZWN0aW9uKGMpID09IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKKyAgICByZXR1cm4gaXNBU0NJ
SShjaGFyYWN0ZXIpID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24o
Y2hhcmFjdGVyKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRl
ZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmlu
Zyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZyk7CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IDA7CkBAIC0xMDk0LDYgKzczNCwzOCBAQCBpbmxpbmUgdW5zaWdu
ZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJp
bmcpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwogfQogCitpbmxp
bmUgU3RyaW5nSW1wbFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3Mp
CisgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
ICwgbV9kYXRhOChkYXRhOCkKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sK
K30KKworaW5saW5lIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJl
ZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBkYXRhMTYsIHVuc2lnbmVkIGhh
c2hBbmRGbGFncykKKyAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCisgICAgLCBtX2RhdGExNihkYXRhMTYpCisgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNo
QW5kRmxhZ3MpCit7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxp
bmUgY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJl
ZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRh
ZykKKyAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisg
ICAgLCBtX2RhdGE4Q2hhcihjaGFyYWN0ZXJzKQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFu
ZEZsYWdzKQoreworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5l
IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZD
b3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJh
Y3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHBy
VGFnKQorICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkK
KyAgICAsIG1fZGF0YTE2Q2hhcihjaGFyYWN0ZXJzKQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFz
aEFuZEZsYWdzKQoreworfQorCiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXF1aXJlc0NvcHkoKSkgewpAQCAtMTEw
Nyw2ICs3NzksMzg5IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKICAgICByZXR1cm4gY3JlYXRlKG1fZGF0YTE2LCBtX2xlbmd0aCk7CiB9
CiAKK2lubGluZSBib29sIFN0cmluZ0ltcGw6OmlzQWxsQVNDSUkoKSBjb25zdAoreworICAgIGlm
IChpczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjppc0Fs
bExhdGluMSgpIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBhdXRvKiBjaGFyYWN0ZXJzID0gY2hhcmFjdGVyczE2KCk7CisgICAgVUNoYXIgb3Jl
ZCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKQorICAgICAg
ICBvcmVkIHw9IGNoYXJhY3RlcnNbaV07CisgICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7Cit9
CisKK3RlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBDaGFy
YWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1NwZWNpYWxDaGFyYWN0
ZXIoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hh
cik+IGlubGluZSBib29sIFN0cmluZ0ltcGw6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25z
dAoreworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKTsK
KyAgICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3Rl
cj4oY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0
cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpCisgICAgOiBTdHJpbmdJbXBsU2hh
cGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxMQ2hhcj4oKSwgc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKK3sKKyAg
ICBBU1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19T
VEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6
U3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZD
b3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9ybWFs
IHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICBBU1NFUlQo
bV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgp
OworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNv
dW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMubGVha1B0cigpLCBzX2hhc2hGbGFnOEJp
dEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQoreworICAgIEFTU0VSVChtX2Rh
dGE4KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF84QklU
X1NUUklORyhtX2xlbmd0aCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRD
b3B5aW5nVGFnKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxl
bmd0aCwgY2hhcmFjdGVycywgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAg
QVNTRVJUKG1fZGF0YTE2KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NU
QVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6
U3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25z
dHJ1Y3RXaXRob3V0Q29weWluZ1RhZykKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50
SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAg
IEFTU0VSVChtX2xlbmd0aCk7CisKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1f
bGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jUHRyPFVD
aGFyPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUo
c19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgU3RyaW5n
Tm9ybWFsIHwgQnVmZmVyT3duZWQpCit7CisgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICBBU1NF
UlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5n
dGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQorICAgIDog
U3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywg
c19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCit7
CisgICAgQVNTRVJUKGlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJU
KG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVy
U3Vic3RyaW5nKTsKKworICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gJmJhc2UubGVha1JlZigpOwor
CisgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOworfQor
CitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQorICAgIDogU3RyaW5nSW1w
bFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5nTm9y
bWFsIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgIEFT
U0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQoYmFzZS0+
YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHN1YnN0cmluZ0J1
ZmZlcigpID0gJmJhc2UubGVha1JlZigpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9T
VFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFj
aXR5PiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3Np
YmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCit7CisgICAg
cmV0dXJuIGNyZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkp
OworfQorCitBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVT
dWJzdHJpbmdTaGFyaW5nSW1wbChTdHJpbmdJbXBsJiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLmxlbmd0aCgpKTsKKwor
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gKmVtcHR5KCk7CisKKyAgICBhdXRvKiBv
d25lclJlcCA9ICgocmVwLmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyBy
ZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwKTsKKworICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVm
ZmVyIHRoYXQgY29udGFpbnMgYm90aCB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QgYXMgd2VsbCBhcyB0
aGUgcG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nLgorICAgIGF1dG8qIHN0cmluZ0ltcGwgPSBz
dGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPFN0cmlu
Z0ltcGwqPigxKSkpOworICAgIGlmIChyZXAuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGE4ICsg
b2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChO
b3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGExNiArIG9mZnNldCwgbGVu
Z3RoLCAqb3duZXJSZXApKTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+
IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCit7CisgICAgQ09N
UElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RF
bXB0eSk7CisgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2ln
bmVkKH4wKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmluZ0lt
cGxGcm9tTGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKKworICAgIHJldHVybiBjcmVhdGVXaXRob3V0
Q29weWluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGNoYXJh
Y3RlckNvdW50IC0gMSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYgb3V0cHV0KQoreworICAg
IGlmICghbGVuZ3RoKSB7CisgICAgICAgIG91dHB1dCA9IG51bGxwdHI7CisgICAgICAgIHJldHVy
biBlbXB0eSgpOworICAgIH0KKworICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFj
dGVyVHlwZSkpKSB7CisgICAgICAgIG91dHB1dCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBhdXRvKiByZXN1bHRJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5n
SW1wbCo+KHRyeVN0cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5n
dGgpKSk7CisgICAgaWYgKCFyZXN1bHRJbXBsKSB7CisgICAgICAgIG91dHB1dCA9IG51bGxwdHI7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBvdXRwdXQgPSByZXN1bHRJbXBs
LT50YWlsUG9pbnRlcjxDaGFyYWN0ZXJUeXBlPigpOworCisgICAgcmV0dXJuIGNvbnN0cnVjdElu
dGVybmFsPENoYXJhY3RlclR5cGU+KHJlc3VsdEltcGwsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CitpbmxpbmUgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmFkb3B0KFN0cmluZ1ZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mJiB2ZWN0b3IpCit7CisgICAg
aWYgKHNpemVfdCBzaXplID0gdmVjdG9yLnNpemUoKSkgeworICAgICAgICBBU1NFUlQodmVjdG9y
LmRhdGEoKSk7CisgICAgICAgIGlmIChzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RyaW5nSW1wbCh2ZWN0b3IucmVsZWFzZUJ1ZmZlcigpLCBzaXplKSk7CisgICAgfQor
ICAgIHJldHVybiAqZW1wdHkoKTsKK30KKworaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpjb3N0
KCkgY29uc3QKK3sKKyAgICAvLyBGb3Igc3Vic3RyaW5ncywgcmV0dXJuIHRoZSBjb3N0IG9mIHRo
ZSBiYXNlIHN0cmluZy4KKyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nKQorICAgICAgICByZXR1cm4gc3Vic3RyaW5nQnVmZmVyKCktPmNvc3QoKTsKKworICAgIC8v
IE5vdGU6IHdlIG11c3Qgbm90IGFsdGVyIHRoZSBtX2hhc2hBbmRGbGFncyBmaWVsZCBpbiBpbnN0
YW5jZXMgb2YgU3RhdGljU3RyaW5nSW1wbC4KKyAgICAvLyBXZSBlbnN1cmUgdGhpcyBieSBwcmUt
c2V0dGluZyB0aGUgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgYml0IGluIGFsbCBpbnN0YW5jZXMg
b2YKKyAgICAvLyBTdGF0aWNTdHJpbmdJbXBsLiBBcyBhIHJlc3VsdCwgU3RhdGljU3RyaW5nSW1w
bCBpbnN0YW5jZXMgd2lsbCBhbHdheXMgcmV0dXJuIGEgY29zdCBvZgorICAgIC8vIDAgaGVyZSBh
bmQgYXZvaWQgbW9kaWZ5aW5nIG1faGFzaEFuZEZsYWdzLgorICAgIGlmIChtX2hhc2hBbmRGbGFn
cyAmIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1f
aGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0OworICAgIHNpemVfdCByZXN1
bHQgPSBtX2xlbmd0aDsKKyAgICBpZiAoIWlzOEJpdCgpKQorICAgICAgICByZXN1bHQgPDw9IDE7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpjb3N0
RHVyaW5nR0MoKQoreworICAgIGlmIChpc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgIHJl
dHVybiBkaXZpZGVSb3VuZGVkVXAoc3Vic3RyaW5nQnVmZmVyKCktPmNvc3REdXJpbmdHQygpLCBy
ZWZDb3VudCgpKTsKKworICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsKKyAgICBpZiAoIWlz
OEJpdCgpKQorICAgICAgICByZXN1bHQgPDw9IDE7CisgICAgcmV0dXJuIGRpdmlkZVJvdW5kZWRV
cChyZXN1bHQsIHJlZkNvdW50KCkpOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpzZXRJ
c0F0b21pYyhib29sIGlzQXRvbWljKQoreworICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CisgICAg
QVNTRVJUKCFpc1N5bWJvbCgpKTsKKyAgICBpZiAoaXNBdG9taWMpIHsKKyAgICAgICAgbV9oYXNo
QW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgQVNTRVJU
KHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdBdG9taWMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
aGFzaEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOworICAgICAgICBB
U1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ05vcm1hbCk7CisgICAgfQorfQorCitpbmxpbmUg
dm9pZCBTdHJpbmdJbXBsOjpzZXRIYXNoKHVuc2lnbmVkIGhhc2gpIGNvbnN0Cit7CisgICAgLy8g
VGhlIGhpZ2ggYml0cyBvZiAnaGFzaCcgYXJlIGFsd2F5cyBlbXB0eSwgYnV0IHdlIHByZWZlciB0
byBzdG9yZSBvdXIgZmxhZ3MKKyAgICAvLyBpbiB0aGUgbG93IGJpdHMgYmVjYXVzZSBpdCBtYWtl
cyB0aGVtIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvIGFjY2Vzcy4KKyAgICAvLyBTbywgd2Ug
c2hpZnQgbGVmdCBhbmQgcmlnaHQgd2hlbiBzZXR0aW5nIGFuZCBnZXR0aW5nIG91ciBoYXNoIGNv
ZGUuCisKKyAgICBBU1NFUlQoIWhhc0hhc2goKSk7CisgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsK
KyAgICAvLyBNdWx0aXBsZSBjbGllbnRzIGFzc3VtZSB0aGF0IFN0cmluZ0hhc2hlciBpcyB0aGUg
Y2Fub25pY2FsIHN0cmluZyBoYXNoIGZ1bmN0aW9uLgorICAgIEFTU0VSVChoYXNoID09IChpczhC
aXQoKSA/IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhOCwg
bV9sZW5ndGgpIDogU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2Rh
dGExNiwgbV9sZW5ndGgpKSk7CisgICAgQVNTRVJUKCEoaGFzaCAmIChzX2ZsYWdNYXNrIDw8ICg4
ICogc2l6ZW9mKGhhc2gpIC0gc19mbGFnQ291bnQpKSkpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2gg
aGlnaCBiaXRzIGFyZSBlbXB0eS4KKworICAgIGhhc2ggPDw9IHNfZmxhZ0NvdW50OworICAgIEFT
U0VSVCghKGhhc2ggJiBtX2hhc2hBbmRGbGFncykpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggbG93
IGJpdHMgYXJlIGVtcHR5IGFmdGVyIHNoaWZ0LgorICAgIEFTU0VSVChoYXNoKTsgLy8gVmVyaWZ5
IHRoYXQgMCBpcyBhIHZhbGlkIHNlbnRpbmVsIGhhc2ggdmFsdWUuCisKKyAgICBtX2hhc2hBbmRG
bGFncyB8PSBoYXNoOyAvLyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93IGJpdHMuCit9CisK
K2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OnJlZigpCit7CisgICAgU1RSSU5HX1NUQVRTX1JFRl9T
VFJJTkcoKnRoaXMpOworCisgICAgbV9yZWZDb3VudCArPSBzX3JlZkNvdW50SW5jcmVtZW50Owor
fQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpkZXJlZigpCit7CisgICAgU1RSSU5HX1NUQVRT
X0RFUkVGX1NUUklORygqdGhpcyk7CisKKyAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBtX3Jl
ZkNvdW50IC0gc19yZWZDb3VudEluY3JlbWVudDsKKyAgICBpZiAoIXRlbXBSZWZDb3VudCkgewor
ICAgICAgICBTdHJpbmdJbXBsOjpkZXN0cm95KHRoaXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSB2b2lkIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKENo
YXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzb3VyY2UsIHVu
c2lnbmVkIG51bUNoYXJhY3RlcnMpCit7CisgICAgaWYgKG51bUNoYXJhY3RlcnMgPT0gMSkgewor
ICAgICAgICAqZGVzdGluYXRpb24gPSAqc291cmNlOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBudW1DaGFyYWN0ZXJzICogc2l6ZW9mKENo
YXJhY3RlclR5cGUpKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFN0cmluZ0ltcGw6OmNvcHlD
aGFyYWN0ZXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgTENoYXIqIHNvdXJjZSwgdW5zaWdu
ZWQgbnVtQ2hhcmFjdGVycykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2hh
cmFjdGVyczsgKytpKQorICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKK30KKwor
aW5saW5lIFVDaGFyIFN0cmluZ0ltcGw6OmF0KHVuc2lnbmVkIGkpIGNvbnN0Cit7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKKyAgICByZXR1cm4g
aXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV07Cit9CisKK2lubGluZSB2b2lkIFN0
cmluZ0ltcGw6OmFzc2VydENhZ2VkKCkgY29uc3QKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkKKyAgICAgICAgcmVsZWFzZUFzc2VydENhZ2VkKCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBs
OjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50
LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9s
IHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgQVNTRVJU
KG1fZGF0YTgpOworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0
cnVlKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFn
LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5n
SW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5n
U3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAg
IEFTU0VSVChtX2RhdGExNik7CisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1f
bGVuZ3RoLCB0cnVlKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoQ3JlYXRl
U3ltYm9sVGFnKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIDAs
IGVtcHR5KCktPmNoYXJhY3RlcnM4KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3lt
Ym9sIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgQVNT
RVJUKG1fZGF0YTgpOworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3Ro
LCB0cnVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJ
bXBsOjphbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gdGFpbEVsZW1lbnRDb3VudCkKK3sK
KyAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2Yo
VCkpLnVuc2FmZUdldCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgc2l6ZV90
IFN0cmluZ0ltcGw6OnRhaWxPZmZzZXQoKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgLy8g
TVNWQyBkb2Vzbid0IHN1cHBvcnQgYWxpZ25vZiB5ZXQuCisgICAgcmV0dXJuIHJvdW5kVXBUb011
bHRpcGxlT2Y8c2l6ZW9mKFQpPihzaXplb2YoU3RyaW5nSW1wbCkpOworI2Vsc2UKKyAgICByZXR1
cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKFQpPihvZmZzZXRvZihTdHJpbmdJbXBsLCBt
X2hhc2hBbmRGbGFncykgKyBzaXplb2YoU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3MpKTsKKyNl
bmRpZgorfQorCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjpyZXF1aXJlc0NvcHkoKSBjb25zdAor
eworICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBtX2RhdGE4
ID09IHRhaWxQb2ludGVyPExDaGFyPigpOworICAgIHJldHVybiBtX2RhdGExNiA9PSB0YWlsUG9p
bnRlcjxVQ2hhcj4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0IFQq
IFN0cmluZ0ltcGw6OnRhaWxQb2ludGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRo
aXMpICsgdGFpbE9mZnNldDxUPigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IFQqIFN0cmluZ0ltcGw6OnRhaWxQb2ludGVyKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8VCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNl
dDxUPigpKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGwqIGNvbnN0JiBTdHJpbmdJbXBsOjpzdWJz
dHJpbmdCdWZmZXIoKSBjb25zdAoreworICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBC
dWZmZXJTdWJzdHJpbmcpOworCisgICAgcmV0dXJuICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4o
KTsKK30KKworaW5saW5lIFN0cmluZ0ltcGwqJiBTdHJpbmdJbXBsOjpzdWJzdHJpbmdCdWZmZXIo
KQoreworICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOwor
CisgICAgcmV0dXJuICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsKK30KKworaW5saW5lIHZv
aWQgU3RyaW5nSW1wbDo6YXNzZXJ0SGFzaElzQ29ycmVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGV4aXN0aW5nSGFzaCgpID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMoY2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpKTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IGlubGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1w
bDo6U3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291
bnRdLCBTdHJpbmdLaW5kIHN0cmluZ0tpbmQpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZD
b3VudEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAor
ICAgICAgICBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwg
c3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVy
YWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3Ry
dWN0V2l0aENvbnN0RXhwcikKK3sKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGlubGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6U3RhdGlj
U3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwg
U3RyaW5nS2luZCBzdHJpbmdLaW5kKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAgICAg
ICAgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgfCBzdHJpbmdLaW5kIHwgQnVmZmVySW50ZXJuYWwg
fCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFj
dGVycykgPDwgc19mbGFnQ291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByKQoreworfQorCitp
bmxpbmUgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6b3BlcmF0b3IgU3RyaW5nSW1wbCYo
KQoreworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4odGhpcyk7Cit9
CisKIC8vIFN0cmluZ0hhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nSW1wbCogYW5k
IFJlZlB0cjxTdHJpbmdJbXBsPgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOwogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nSW1wbCo+IHsKQEAgLTEx
NTYsMTQgKzEyMTEsMTAgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJu
ICZpbXBsOyBcCiAgICAgfSgpKQogCi0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0YXRpY1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVx
dWFsOwotdXNpbmcgV1RGOjpUZXh0Q2FzZVNlbnNpdGl2aXR5OwotdXNpbmcgV1RGOjpUZXh0Q2Fz
ZVNlbnNpdGl2ZTsKLXVzaW5nIFdURjo6VGV4dENhc2VJbnNlbnNpdGl2ZTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDJhMjI1NWE2YzUyOWY0MWI3NDdkMGQ1MTVkOWYx
NDVlMGZmNGUyZDIuLjE4MTNlYzMwODdkNGRmMGMzYWFmMzg0YTU5ZmFjNDhmYzY5ZWEzNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC00NTEsMTYgKzQ1MSwxNiBAQCBpbmxpbmUgYm9v
bCBTdHJpbmdWaWV3Ojpjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiBpbmxpbmUgdm9p
ZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChMQ2hhciogZGVzdGluYXRp
b24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzOEJpdCgpKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgp
OwogfQogCiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChVQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9s
ZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
Y2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczE2KCksIG1fbGVuZ3Ro
KTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVy
czE2KCksIG1fbGVuZ3RoKTsKIH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlVwY29udmVydGVkQ2hh
cmFjdGVyczo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAwZTk5NTAyMWY4ZWZlOGJhZGVkYjc4Yjk4
MDlmYzJlMGQzMWQ0NjdhLi5lMzE1ZGFjMzdkMWIzNGU1ZDIwYTBhMDE2MWYwMjQ1MmY4MTJiNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtNDgsMTIgKzQ4LDEwIEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB9CiAKIC8vIENvbnN0cnVjdCBh
IHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4K
LVN0cmluZzo6U3RyaW5nKGNvbnN0IFVDaGFyKiBzdHIpCitTdHJpbmc6OlN0cmluZyhjb25zdCBV
Q2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxlbmd0aE9mTnVs
bFRlcm1pbmF0ZWRTdHJpbmcoc3RyKSk7CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQor
ICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUobnVsbFRlcm1pbmF0ZWRTdHJpbmcs
IGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcobnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0K
IAogLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCkBAIC02OSwxNyArNjcs
MTcgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOwogfQogCi0vLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2Uu
Ci1TdHJpbmc6OlN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycykKKy8vIENvbnN0cnVjdCBh
IHN0cmluZyB3aXRoIExhdGluLTEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2Uu
CitTdHJpbmc6OlN0cmluZyhjb25zdCBMQ2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcpCiB7Ci0g
ICAgaWYgKGNoYXJhY3RlcnMpCi0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShj
aGFyYWN0ZXJzKTsKKyAgICBpZiAobnVsbFRlcm1pbmF0ZWRTdHJpbmcpCisgICAgICAgIG1faW1w
bCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShudWxsVGVybWluYXRlZFN0cmluZyk7CiB9CiAKLVN0cmlu
Zzo6U3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCitTdHJpbmc6OlN0cmluZyhjb25zdCBj
aGFyKiBudWxsVGVybWluYXRlZFN0cmluZykKIHsKLSAgICBpZiAoY2hhcmFjdGVycykKLSAgICAg
ICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSk7CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQorICAgICAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KG51bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKIFN0cmluZzo6U3RyaW5nKEFTQ0lJTGl0
ZXJhbCBjaGFyYWN0ZXJzKQpAQCAtODcsMzUgKzg1LDM2IEBAIFN0cmluZzo6U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCBjaGFyYWN0ZXJzKQogewogfQogCi12b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgc3RyKQordm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5n
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVj
aCBzbyB0aGF0IHdlIG1pZ2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEku
CiAKLSAgICBpZiAoc3RyLmlzRW1wdHkoKSkKLSAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3Ry
Lm1faW1wbCkgewotICAgICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgICAgICBpZiAobV9pbXBs
LT5pczhCaXQoKSAmJiBzdHIubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICAgICAgICAgIExD
aGFyKiBkYXRhOwotICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgo
KSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVy
czgoKSwgbV9pbXBsLT5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICAgICAgICAg
IG1lbWNweShkYXRhICsgbV9pbXBsLT5sZW5ndGgoKSwgc3RyLmNoYXJhY3RlcnM4KCksIHN0ci5s
ZW5ndGgoKSAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICAgICAgICAgIG1faW1wbCA9IFdURk1v
dmUobmV3SW1wbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgVUNoYXIqIGRhdGE7Ci0gICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbV9pbXBsLT5sZW5ndGgoKSkKLSAg
ICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsgc3RyLmxlbmd0aCgp
LCBkYXRhKTsKLSAgICAgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoZGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KHN0cikuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgICAgICAgICAg
bV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBt
X2ltcGwgPSBzdHIubV9pbXBsOworICAgIGlmICghbV9pbXBsKSB7CisgICAgICAgIG1faW1wbCA9
IG90aGVyU3RyaW5nLm1faW1wbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChv
dGhlclN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbGVuZ3Ro
ID0gbV9pbXBsLT5sZW5ndGgoKTsKKyAgICBhdXRvIG90aGVyTGVuZ3RoID0gb3RoZXJTdHJpbmcu
bV9pbXBsLT5sZW5ndGgoKTsKKyAgICBpZiAob3RoZXJMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBsZW5ndGgpCisgICAgICAgIENSQVNIKCk7CisKKyAgICBp
ZiAobV9pbXBsLT5pczhCaXQoKSAmJiBvdGhlclN0cmluZy5tX2ltcGwtPmlzOEJpdCgpKSB7Cisg
ICAgICAgIExDaGFyKiBkYXRhOworICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCArIG90aGVyTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAg
U3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBs
ZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsgbGVuZ3Ro
LCBvdGhlclN0cmluZy5tX2ltcGwtPmNoYXJhY3RlcnM4KCksIG90aGVyTGVuZ3RoKTsKKyAgICAg
ICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBVQ2hhciogZGF0YTsKKyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCArIG90aGVyTGVuZ3RoLCBkYXRhKTsKKyAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOworICAgIFN0cmluZ1ZpZXco
Km90aGVyU3RyaW5nLm1faW1wbCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIGxl
bmd0aCk7CisgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIAogdm9pZCBTdHJpbmc6
OmFwcGVuZChMQ2hhciBjaGFyYWN0ZXIpCkBAIC0xMzQsNyArMTMzLDcgQEAgdm9pZCBTdHJpbmc6
OmFwcGVuZChMQ2hhciBjaGFyYWN0ZXIpCiAgICAgICAgIENSQVNIKCk7CiAgICAgTENoYXIqIGRh
dGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCht
X2ltcGwtPmxlbmd0aCgpICsgMSwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIG1faW1wbC0+Y2hh
cmFjdGVyczgoKSwgbV9pbXBsLT5sZW5ndGgoKSk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKICAg
ICBkYXRhW21faW1wbC0+bGVuZ3RoKCldID0gY2hhcmFjdGVyOwogICAgIG1faW1wbCA9IFdURk1v
dmUobmV3SW1wbCk7CiB9CkBAIC0yMjcsOCArMjI2LDggQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChj
b25zdCBMQ2hhciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAgICBhdXRv
IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxl
bmd0aFRvQXBwZW5kLCBkYXRhKTsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEs
IG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgc3RyTGVuZ3RoKTsKLSAgICAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9B
cHBlbmQpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBtX2ltcGwt
PmNoYXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
YWN0ZXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBl
bmQpOwogICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjM3LDggKzIzNiw4IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnNUb0FwcGVuZCwgdW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgICAg
IENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsK
LSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKSwg
c3RyTGVuZ3RoKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0aCwg
Y2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7CisgICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKKyAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJz
VG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwp
OwogfQogCkBAIC0yNjQsMTAgKzI2MywxMCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQogICAgIFVD
aGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc3RyTGVuZ3RoICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgIGlmIChtX2ltcGwt
PmlzOEJpdCgpKQotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgY2hhcmFjdGVy
czgoKSwgc3RyTGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0
YSwgY2hhcmFjdGVyczgoKSwgc3RyTGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFycyhkYXRhLCBjaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKLSAgICBTdHJp
bmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFjdGVyc1RvQXBwZW5kLCBs
ZW5ndGhUb0FwcGVuZCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEs
IGNoYXJhY3RlcnMxNigpLCBzdHJMZW5ndGgpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQp
OwogICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CiB9CiAKQEAgLTI4NSw0MSArMjg0LDMz
IEBAIHZvaWQgU3RyaW5nOjp0cnVuY2F0ZSh1bnNpZ25lZCBwb3NpdGlvbikKICAgICAgICAgbV9p
bXBsID0gbV9pbXBsLT5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSB2b2lkIFN0cmluZzo6cmVtb3ZlSW50ZXJuYWwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgcG9zaXRpb24sIGludCBs
ZW5ndGhUb1JlbW92ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB2
b2lkIFN0cmluZzo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVtb3ZlKQogewogICAgIENo
YXJhY3RlclR5cGUqIGRhdGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgoKSAtIGxlbmd0aFRvUmVtb3ZlLCBkYXRhKTsKLSAgICBtZW1j
cHkoZGF0YSwgY2hhcmFjdGVycywgcG9zaXRpb24gKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpOwot
ICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIGNoYXJhY3RlcnMgKyBwb3NpdGlvbiArIGxlbmd0
aFRvUmVtb3ZlLAotICAgICAgICAobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSAtIHBvc2l0aW9u
KSAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Ci0KKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhkYXRhLCBjaGFyYWN0ZXJzLCBwb3NpdGlvbik7CisgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBjaGFyYWN0ZXJzICsgcG9zaXRpb24gKyBsZW5ndGhU
b1JlbW92ZSwgbGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSAtIHBvc2l0aW9uKTsKICAgICBtX2lt
cGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCi12b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2lnbmVk
IHBvc2l0aW9uLCBpbnQgbGVuZ3RoVG9SZW1vdmUpCit2b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2ln
bmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlbW92ZSkKIHsKLSAgICBpZiAobGVuZ3Ro
VG9SZW1vdmUgPD0gMCkKKyAgICBpZiAoIWxlbmd0aFRvUmVtb3ZlKQogICAgICAgICByZXR1cm47
Ci0gICAgaWYgKHBvc2l0aW9uID49IGxlbmd0aCgpKQorICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+
bGVuZ3RoKCk7CisgICAgaWYgKHBvc2l0aW9uID49IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoVG9SZW1vdmUpID4gbGVuZ3RoKCkg
LSBwb3NpdGlvbikKLSAgICAgICAgbGVuZ3RoVG9SZW1vdmUgPSBsZW5ndGgoKSAtIHBvc2l0aW9u
OwotCi0gICAgaWYgKGlzOEJpdCgpKSB7CisgICAgbGVuZ3RoVG9SZW1vdmUgPSBzdGQ6Om1pbihs
ZW5ndGhUb1JlbW92ZSwgbGVuZ3RoIC0gcG9zaXRpb24pOworICAgIGlmIChpczhCaXQoKSkKICAg
ICAgICAgcmVtb3ZlSW50ZXJuYWwoY2hhcmFjdGVyczgoKSwgcG9zaXRpb24sIGxlbmd0aFRvUmVt
b3ZlKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVtb3ZlSW50ZXJuYWwoY2hh
cmFjdGVyczE2KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7CisgICAgZWxzZQorICAgICAg
ICByZW1vdmVJbnRlcm5hbChjaGFyYWN0ZXJzMTYoKSwgcG9zaXRpb24sIGxlbmd0aFRvUmVtb3Zl
KTsKIH0KIAotU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
bGVuKSBjb25zdAorU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpIAotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c3Vic3RyaW5nKHBvcywgbGVuKTsKKyAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlr
ZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdWJzdHJpbmco
cG9zaXRpb24sIGxlbmd0aCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzdWJz
dHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QK
QEAgLTMzMiwxMDAgKzMyMyw5NSBAQCBTdHJpbmcgU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1w
bCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIAogICAgIGlmICghb2Zm
c2V0ICYmIGxlbmd0aCA9PSBzdHJpbmdMZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKCpt
X2ltcGwsIG9mZnNldCwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN1
YnN0cmluZ1NoYXJpbmdJbXBsKCptX2ltcGwsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogU3RyaW5n
IFN0cmluZzo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBp
bmxpbmVkPwotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIG1faW1wbC0+Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogU3RyaW5nIHsgfTsKIH0K
IAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtl
IGl0LCBiZSBpbmxpbmVkPwotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKKyAgICBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIDogU3RyaW5n
IHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2Fs
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7Cisg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxp
a2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRv
TG93ZXJjYXNlV2l0aG91dExvY2FsZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZXg4
Qml0KHVuc2lnbmVkIGZhaWxpbmdJbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb0xvd2Vy
Y2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChmYWlsaW5nSW5kZXgp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVy
cyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZl
cnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChmYWls
aW5nSW5kZXgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvVXBw
ZXJjYXNlV2l0aG91dExvY2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9VcHBlcmNhc2VX
aXRob3V0TG9jYWxlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQg
dGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpIDogU3RyaW5nIHsgfTsK
IH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9M
b3dlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVk
PworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2Nh
bGUobG9jYWxlSWRlbnRpZmllcikgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpj
b252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcikgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUobG9j
YWxlSWRlbnRpZmllcik7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQg
dGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShsb2NhbGVJZGVudGlmaWVyKSA6
IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OnN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1
cm4gbV9pbXBsLT5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
ZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICAv
LyBGSVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyBhIG5ldyBuYW1lLiBGb3Igb25lIHRoaW5nLCAi
d2hpdGVzcGFjZSIgaXMgYSBzaW5nbGUKKyAgICAvLyB3b3JkIHNvIHRoZSAicyIgc2hvdWxkIGJl
IGxvd2VyY2FzZS4gRm9yIGFub3RoZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20gdGhpcyBuYW1lCisg
ICAgLy8gdGhhdCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgVW5pY29kZSBkZWZpbml0aW9uIG9mIHdo
aXRlc3BhY2UuIE1vc3QgV2ViS2l0IGNhbGxlcnMKKyAgICAvLyBkb24ndCB3YW50IHRoYXQgYW5k
IGV2ZW50dWFsbHkgd2Ugc2hvdWxkIGNvbnNpZGVyIGRlbGV0aW5nIHRoaXMuCisgICAgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBT
dHJpbmcgU3RyaW5nOjpzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNX
aGl0ZVNwYWNlKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSk7
CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJz
IGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMg
YSBuZXcgbmFtZS4gSXQgc3RyaXBzIGxlYWRpbmcgYW5kIHRyYWlsaW5nCisgICAgLy8gY2hhcmFj
dGVycyB0aGF0IG1hdGNoIGEgcHJlZGljYXRlOyBub3QgbmVjZXNzYXJpbHkgIndoaXRlIHNwYWNl
Ii4KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdHJpcFdoaXRlU3BhY2UoaXNXaGl0ZVNw
YWNlKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICByZXR1cm4gbV9pbXBsLT5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5s
aW5lZD8KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyBhIG5ldyBuYW1lLiBGb3Ig
b25lIHRoaW5nLCAid2hpdGVzcGFjZSIgaXMgYSBzaW5nbGUKKyAgICAvLyB3b3JkIHNvIHRoZSAi
cyIgc2hvdWxkIGJlIGxvd2VyY2FzZS4gRm9yIGFub3RoZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20g
dGhpcyBuYW1lCisgICAgLy8gdGhhdCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgVW5pY29kZSBkZWZp
bml0aW9uIG9mIHdoaXRlc3BhY2UuIE1vc3QgV2ViS2l0IGNhbGxlcnMKKyAgICAvLyBkb24ndCB3
YW50IHRoYXQgYW5kIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIGNvbnNpZGVyIGRlbGV0aW5nIHRoaXMu
CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKCkgOiBTdHJp
bmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNw
YWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c2ltcGxpZnlXaGl0
ZVNwYWNlKGlzV2hpdGVTcGFjZSk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9u
LCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSkgOiBTdHJpbmcg
eyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpyZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIgZmluZE1hdGNoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+cmVtb3ZlQ2hhcmFjdGVycyhm
aW5kTWF0Y2gpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBt
YW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPnJlbW92ZUNoYXJhY3RlcnMoZmluZE1hdGNoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmlu
ZyBTdHJpbmc6OmZvbGRDYXNlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmZvbGRDYXNlKCk7CisgICAgLy8g
RklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQs
IGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zm9sZENhc2UoKSA6IFN0
cmluZyB7IH07CiB9CiAKIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYgcmVzdWx0KSBjb25z
dApAQCAtNDY1LDggKzQ1MSw3IEBAIFZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV1RGX0FU
VFJJQlVURV9QUklOVEYoMSwgMCkKLXN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1hdEFuZEFy
Z3VtZW50cyhjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKK1dURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDApIHN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhj
b25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIHsKICAgICB2YV9saXN0IGFyZ3NDb3B5
OwogICAgIHZhX2NvcHkoYXJnc0NvcHksIGFyZ3MpOwpAQCAtNDc4LDE0ICs0NjMsMTIgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGNvbnN0IGNoYXIgKmZvcm1h
dCwgdmFfbGlzdCBhcmdzKQogCiAjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKICAgICBpZiAo
c3Ryc3RyKGZvcm1hdCwgIiVAIikpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmb3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotCi0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3Jt
YXRBbmRBcmd1bWVudHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0
KCksIGFyZ3MpKTsKLQorICAgICAgICBhdXRvIGNmRm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvcm1hdCwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgY2ZG
b3JtYXQuZ2V0KCksIGFyZ3MpKTsKICAgICAgICAgdmFfZW5kKGFyZ3MpOwogICAgICAgICByZXR1
cm4gcmVzdWx0LmdldCgpOwogICAgIH0KLSNlbmRpZiAvLyBVU0UoQ0YpICYmICFPUyhXSU5ET1dT
KQorI2VuZGlmCiAKICAgICAvLyBEbyB0aGUgZm9ybWF0IG9uY2UgdG8gZ2V0IHRoZSBsZW5ndGgu
CiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTQ5Nyw3ICs0ODAsNyBAQCBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFy
Z3MpCiAgICAgdmFfZW5kKGFyZ3MpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAwKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgaWYg
KHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtNTI3LDcgKzUxMCw2
IEBAIFN0cmluZyBTdHJpbmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICB2
YV9zdGFydChhcmdzLCBmb3JtYXQpOwogICAgIFN0cmluZyByZXN1bHQgPSBjcmVhdGVXaXRoRm9y
bWF0QW5kQXJndW1lbnRzKGZvcm1hdCwgYXJncyk7CiAgICAgdmFfZW5kKGFyZ3MpOwotICAgIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTcwMCwxMSArNjgyLDExIEBAIGZsb2F0IFN0cmlu
Zzo6dG9GbG9hdChib29sKiBvaykgY29uc3QKIH0KIAogI2lmIENPTVBJTEVSX1NVUFBPUlRTKENY
WF9SRUZFUkVOQ0VfUVVBTElGSUVEX0ZVTkNUSU9OUykKKwogU3RyaW5nIFN0cmluZzo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QgJgogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5KCk7CisgICAgLy8gRklYTUU6
IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlu
bGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJp
bmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjppc29sYXRlZENvcHkoKSAmJgpAQCAtNzEyLDM2
ICs2OTQsMjcgQEAgU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICBpZiAoaXNT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkpIHsKICAgICAgICAgLy8gU2luY2Ugd2Uga25vdyB0
aGF0IG91ciBzdHJpbmcgaXMgYSB0ZW1wb3JhcnkgdGhhdCB3aWxsIGJlIGRlc3Ryb3llZAogICAg
ICAgICAvLyB3ZSBjYW4ganVzdCBzdGVhbCB0aGUgbV9pbXBsIGZyb20gaXQsIHRodXMgYXZvaWRp
bmcgYSBjb3B5LgotICAgICAgICByZXR1cm4gU3RyaW5nKFdURk1vdmUoKnRoaXMpKTsKKyAgICAg
ICAgcmV0dXJuIHsgV1RGTW92ZSgqdGhpcykgfTsKICAgICB9CiAKLSAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1faW1wbC0+aXNvbGF0ZWRD
b3B5KCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJp
bmcgeyB9OwogfQorCiAjZWxzZQorCiBTdHJpbmcgU3RyaW5nOjppc29sYXRlZENvcHkoKSBjb25z
dAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5KCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1
bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJpbmcgeyB9OwogfQorCiAj
ZW5kaWYKIAogYm9vbCBTdHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFpbXBsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEF0b21pY1N0cmluZ3MgYXJlIG5v
dCBzYWZlIHRvIHNlbmQgYmV0d2VlbiB0aHJlYWRzIGFzIH5TdHJpbmdJbXBsKCkKICAgICAvLyB3
aWxsIHRyeSB0byByZW1vdmUgdGhlbSBmcm9tIHRoZSB3cm9uZyBBdG9taWNTdHJpbmdUYWJsZS4K
LSAgICBpZiAoaW1wbCgpLT5pc0F0b21pYygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGltcGwoKS0+aGFzT25lUmVmKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gaXNFbXB0eSgpIHx8IChtX2ltcGwtPmhhc09uZVJlZigpICYm
ICFtX2ltcGwtPmlzQXRvbWljKCkpOwogfQogCiB2b2lkIFN0cmluZzo6c3BsaXQoY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0CkBAIC04NDgsMTAgKzgyMSw3IEBAIENTdHJpbmcgU3RyaW5nOjpsYXRpbjEo
KSBjb25zdAogCiBDU3RyaW5nIFN0cmluZzo6dXRmOChDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25z
dAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0g
ICAgCi0gICAgcmV0dXJuIG1faW1wbC0+dXRmOChtb2RlKTsKKyAgICByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT51dGY4KG1vZGUpIDogQ1N0cmluZyB7ICIiLCAwIH07CiB9CiAKIENTdHJpbmcgU3Ry
aW5nOjp1dGY4KCkgY29uc3QKQEAgLTg4MCw3ICs4NTAsNyBAQCBTdHJpbmcgU3RyaW5nOjptYWtl
MTZCaXRGcm9tOEJpdFNvdXJjZShjb25zdCBMQ2hhciogc291cmNlLCBzaXplX3QgbGVuZ3RoKQog
ICAgIFVDaGFyKiBkZXN0aW5hdGlvbjsKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGVzdGluYXRpb24pOwogICAgIAotICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFycyhkZXN0aW5hdGlvbiwgc291cmNlLCBsZW5ndGgpOworICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGxlbmd0aCk7CiAgICAgCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk0OSw4ICs5MTksOCBAQCBzdGF0aWMgYm9vbCBpc0No
YXJhY3RlckFsbG93ZWRJbkJhc2UoVUNoYXIgYywgaW50IGJhc2UpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyVHlw
ZT4KLXN0YXRpYyBpbmxpbmUgSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJU
eXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5s
aW5lIEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCiB7CiAgICAgc3RhdGljIGNvbnN0
IEludGVncmFsVHlwZSBpbnRlZ3JhbE1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdyYWxU
eXBlPjo6bWF4KCk7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTaWduZWQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPEludGVncmFsVHlwZT46OmlzX3NpZ25lZDsKQEAgLTk4NCw3ICs5NTQsNyBAQCBz
dGF0aWMgaW5saW5lIEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyVHlwZSog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYgogICAgIHdoaWxlIChsZW5ndGggJiYgaXNDaGFyYWN0ZXJB
bGxvd2VkSW5CYXNlKCpkYXRhLCBiYXNlKSkgewogICAgICAgICAtLWxlbmd0aDsKICAgICAgICAg
SW50ZWdyYWxUeXBlIGRpZ2l0VmFsdWU7Ci0gICAgICAgIENoYXJUeXBlIGMgPSAqZGF0YTsKKyAg
ICAgICAgYXV0byBjID0gKmRhdGE7CiAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoYykpCiAgICAg
ICAgICAgICBkaWdpdFZhbHVlID0gYyAtICcwJzsKICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScp
CkBAIC0xMDI1LDggKzk5NSw4IEBAIGJ5ZToKICAgICByZXR1cm4gaXNPayA/IHZhbHVlIDogMDsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotc3RhdGljIHVuc2lnbmVkIGxlbmd0
aE9mQ2hhcmFjdGVyc0FzSW50ZWdlcihjb25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgdW5zaWduZWQgbGVu
Z3RoT2ZDaGFyYWN0ZXJzQXNJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgc2l6ZV90IGkgPSAwOwogCkBAIC0xMTUxLDggKzExMjEsOCBAQCBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIGJvb2wqIG9rKQogCiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxp
bmdKdW5rLCBBbGxvd1RyYWlsaW5nSnVuayB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGUsIFRyYWlsaW5nSnVua1BvbGljeSBwb2xpY3k+Ci1zdGF0aWMgaW5saW5lIGRvdWJsZSB0b0Rv
dWJsZVR5cGUoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBz
aXplX3QmIHBhcnNlZExlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFRy
YWlsaW5nSnVua1BvbGljeSBwb2xpY3k+CitzdGF0aWMgaW5saW5lIGRvdWJsZSB0b0RvdWJsZVR5
cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIHNp
emVfdCYgcGFyc2VkTGVuZ3RoKQogewogICAgIHNpemVfdCBsZWFkaW5nU3BhY2VzTGVuZ3RoID0g
MDsKICAgICB3aGlsZSAobGVhZGluZ1NwYWNlc0xlbmd0aCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3Bh
Y2UoZGF0YVtsZWFkaW5nU3BhY2VzTGVuZ3RoXSkpCkBAIC0xMjE5LDcgKzExODksOCBAQCBjb25z
dCBTdHJpbmcmIGVtcHR5U3RyaW5nKCkKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjaWZuZGVmIE5E
RUJVRwotLy8gRm9yIHVzZSBpbiB0aGUgZGVidWdnZXIKKworLy8gRm9yIHVzZSBpbiB0aGUgZGVi
dWdnZXIuCiBTdHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKik7CiBWZWN0b3I8Y2hhcj4gYXNjaWlE
ZWJ1ZyhTdHJpbmdJbXBsKiBpbXBsKTsKIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZyYg
c3RyaW5nKTsKQEAgLTEyMzEsNyArMTIwMiw3IEBAIHZvaWQgU3RyaW5nOjpzaG93KCkgY29uc3QK
IAogU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcykKIHsKLSAgICAvLyBsZWFrcyBtZW1vcnkh
CisgICAgLy8gSW50ZW50aW9uYWxseSBsZWFrcyBtZW1vcnkhCiAgICAgcmV0dXJuIG5ldyBTdHJp
bmcocyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDNhOTdiMTY3ODc5MzA1OTA2
ZDY1YjcwZjlhMWQ1MTVmYjYyODFjY2EuLjJmMjlhYTUxYzg3MTBmYzU1YWIyMzRiMjNjMTVjMGI2
ZWYxMWJlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMjcsNyArMjcsNiBAQAogCiAj
aW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAg
LTgwLDcgKzc5LDcgQEAgZW51bSBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSB7IEtlZXBU
cmFpbGluZ1plcm9zLCBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MgfTsKIGNsYXNzIFN0cmluZyB7CiBw
dWJsaWM6CiAgICAgLy8gQ29uc3RydWN0IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBm
cm9tIGFuIGVtcHR5IHN0cmluZy4KLSAgICBTdHJpbmcoKSB7IH0KKyAgICBTdHJpbmcoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpOwpAQCAtMTI1LDIyICsxMjQsMTYgQEAgcHVibGljOgogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyB0aGUgImJpZyIgdmVyc2lvbiwgYXMgaXQgcHV0IHRoZSBsZW5n
dGggaW4gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGdlbmVyYXRlIGJpZ2dlciBjb2RlLgogICAgIGVu
dW0gQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcgeyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OwotICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIFN0cmluZyhjb25zdCBjaGFy
ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykg
OiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWw8Y2hhcmFjdGVyQ291bnQ+KGNo
YXJhY3RlcnMpKSB7IH0KLQotICAgIC8vIFdlIGhhdmUgdG8gZGVjbGFyZSB0aGUgY29weSBjb25z
dHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHdlbGwsIG90aGVyd2lzZQot
ICAgIC8vIHRoZXknbGwgYmUgaW1wbGljaXRseSBkZWxldGVkIGJ5IGFkZGluZyB0aGUgbW92ZSBj
b25zdHJ1Y3RvciBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFN0cmluZyhjb25z
dCBTdHJpbmcmIG90aGVyKQotICAgICAgICA6IG1faW1wbChvdGhlci5tX2ltcGwpCi0gICAgeyB9
Ci0gICAgU3RyaW5nKFN0cmluZyYmIG90aGVyKQotICAgICAgICA6IG1faW1wbChXVEZNb3ZlKG90
aGVyLm1faW1wbCkpCi0gICAgeyB9Ci0gICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5n
JiBvdGhlcikgeyBtX2ltcGwgPSBvdGhlci5tX2ltcGw7IHJldHVybiAqdGhpczsgfQotICAgIFN0
cmluZyYgb3BlcmF0b3I9KFN0cmluZyYmIG90aGVyKSB7IG1faW1wbCA9IFdURk1vdmUob3RoZXIu
bV9pbXBsKTsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3Iu
Ci0gICAgQUxXQVlTX0lOTElORSB+U3RyaW5nKCkgeyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyQ291bnQ+IFN0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVy
Q291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWw8Y2hhcmFjdGVyQ291bnQ+KGNoYXJhY3RlcnMpKSB7IH0KKworICAgIC8v
IEZJWE1FOiBXaHkgZG8gd2UgaGF2ZSB0byBkZWZpbmUgdGhlc2UgZXhwbGljaXRseSBnaXZlbiB0
aGF0IHdlIGp1c3Qgd2FudCB0aGUgZGVmYXVsdCB2ZXJzaW9ucz8KKyAgICAvLyBXZSBoYXZlIHZl
cmlmaWVkIGVtcGlyaWNhbGx5IHRoYXQgd2UgZG8uCisgICAgU3RyaW5nKGNvbnN0IFN0cmluZyYp
ID0gZGVmYXVsdDsKKyAgICBTdHJpbmcoU3RyaW5nJiYpID0gZGVmYXVsdDsKKyAgICBTdHJpbmcm
IG9wZXJhdG9yPShjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nJiBvcGVyYXRv
cj0oU3RyaW5nJiYpID0gZGVmYXVsdDsKKworICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygpID0g
ZGVmYXVsdDsKIAogICAgIHZvaWQgc3dhcChTdHJpbmcmIG8pIHsgbV9pbXBsLnN3YXAoby5tX2lt
cGwpOyB9CiAKQEAgLTE1MCw0NiArMTQzLDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGFkb3B0KFN0cmluZ1ZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mJiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFk
b3B0KFdURk1vdmUodmVjdG9yKSk7IH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1faW1wbDsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwg
fHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9pbXBsIHx8IG1faW1wbC0+aXNFbXB0eSgpOyB9CiAKICAgICBTdHJpbmdJbXBsKiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IHJlbGVhc2VJbXBsKCkgeyByZXR1cm4gV1RGTW92ZShtX2ltcGwpOyB9CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgfQotCi0g
ICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICgh
bV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlz
OEJpdCgpKTsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICB9Ci0K
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBs
LT5pczhCaXQoKSk7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwotICAg
IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
Pmxlbmd0aCgpIDogMDsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y2hhcmFjdGVyczgoKSA6IG51bGxwdHI7IH0KKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5jaGFyYWN0ZXJzMTYoKSA6IG51bGxwdHI7IH0KIAogICAgIC8vIFJldHVybiBjaGFyYWN0ZXJz
OCgpIG9yIGNoYXJhY3RlcnMxNigpIGRlcGVuZGluZyBvbiBDaGFyYWN0ZXJUeXBlLgotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotICAgIGlubGluZSBjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0OwogCiAgICAg
Ym9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CiAKLSAgICB1
bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKSAq
IChpczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKLSAgICB9CisgICAg
dW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmxl
bmd0aCgpICogKGlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpIDogMDsg
fQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKQEAgLTE5Nywx
NiArMTY1LDExIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1
dGY4KENvbnZlcnNpb25Nb2RlKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0
cmluZyB1dGY4KCkgY29uc3Q7CiAKLSAgICBVQ2hhciBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07
Ci0gICAgfQotICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGF0KGluZGV4KTsgfQorICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKKyAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVy
biBjaGFyYWN0ZXJBdChpbmRleCk7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgU3RyaW5nIG51bWJlcihpbnQpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
U3RyaW5nIG51bWJlcih1bnNpZ25lZCBpbnQpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKQEAgLTIxOSwxMTkgKzE4Miw2
NCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVt
YmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAK
ICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRj
aCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KLSAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZChjLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3Ry
aW5nJiBzdHIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChz
dHIuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBz
dHIsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmZpbmQoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmlu
ZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpKSA6
IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcmIHN0ciwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0ci5pbXBsKCksIHN0YXJ0T2Zm
c2V0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0
aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3Rh
cnQgPSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3Ry
LCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3Rlciwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQo
Y2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQorCisgICAgc2l6ZV90IGZpbmQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJp
bmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZp
bmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IG5vdEZv
dW5kOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0
cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IG5v
dEZvdW5kOyB9CisKKyAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1h
dGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6
ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsg
fQogCiAgICAgLy8gRmluZCB0aGUgbGFzdCBpbnN0YW5jZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIg
b3Igc3RyaW5nLgotICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFy
dCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJl
dmVyc2VGaW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5k
KGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBtYXRj
aGluZy4KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogc3RyLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZp
bmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdDYXNlKHN0
ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdu
b3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICAvLyBXcmFwcGVy
cyBmb3IgZmluZCAmIHJldmVyc2VGaW5kIGFkZGluZyBkeW5hbWljIHNlbnNpdGl2aXR5IGNoZWNr
LgotICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29s
IGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyBm
aW5kKHN0ciwgc3RhcnQpIDogZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQotICAgIHNp
emVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vu
c2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIs
IHN0YXJ0KSA6IGZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5z
aXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmlu
ZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9Cisg
ICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQor
ICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3Rh
cnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90
Rm91bmQ7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBWZWN0b3I8VUNoYXI+IGNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0
dG8uCi0KLSAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykg
IT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHIsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSA9IHRydWUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBu
b3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIGZpbmQoc3RyKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kKHN0ciwgc3RhcnRPZmZzZXQs
IGNhc2VTZW5zaXRpdmUpICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5k
SWdub3JpbmdBU0NJSUNhc2Uoc3RyKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIsIHN0YXJ0
T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQotCi0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmlu
ZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRo
KHMuaW1wbCgpKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzLmltcGwoKSkgOiBzLmlzRW1w
dHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNl
bnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNX
aXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBz
dGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5zdGFydHNXaXRoKGNoYXJhY3RlcikgOiBmYWxzZTsgfQotICAgIHRlbXBsYXRl
PHVuc2lnbmVkIG1hdGNoTGVuZ3RoPgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgm
cHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aDxtYXRjaExlbmd0aD4o
cHJlZml4LCBjYXNlU2Vuc2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJvb2wgaGFzSW5m
aXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFydE9mZnNldCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgPyBtX2ltcGwt
Pmhhc0luZml4U3RhcnRpbmdBdCgqcHJlZml4LmltcGwoKSwgc3RhcnRPZmZzZXQpIDogZmFsc2U7
IH0KLQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpKSA6IHMuaXNFbXB0eSgp
OyB9Ci0gICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHMuaW1wbCgpKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChj
b25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBz
LmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKGNoYXJhY3RlcikgOiBm
YWxzZTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0
aW5nQXQodW5zaWduZWQpIGNvbnN0OworCisgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0
ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQorICAgIGJv
b2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJp
bmcpICE9IG5vdEZvdW5kOyB9CisgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9CisgICAgYm9vbCBj
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJv
b2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcsIHN0YXJ0T2Zmc2V0KSAhPSBub3RGb3VuZDsgfQorCisgICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0
c1dpdGgoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBzdGFy
dHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5p
bXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgoY2hh
cmFjdGVyKTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0
c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0Y2hM
ZW5ndGg7IH0KKyAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHByZWZp
eCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXgu
aW1wbCgpICYmIG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFy
dE9mZnNldCk7IH0KKworICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoc3RyaW5nLmltcGwoKSkgOiBz
dHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bCAmJiBtX2ltcGwtPmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KICAgICBib29sIGVuZHNXaXRoKGNo
YXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4o
Y2hhcmFjdGVyKSk7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKSA6ICFtYXRjaExl
bmd0aDsgfQotICAgIGJvb2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwg
dW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgJiYgc3Vm
Zml4LmltcGwoKSA/IG1faW1wbC0+aGFzSW5maXhFbmRpbmdBdCgqc3VmZml4LmltcGwoKSwgZW5k
T2Zmc2V0KSA6IGZhbHNlOyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJv
b2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1h
dGNoTGVuZ3RoOyB9CisgICAgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZyYgc3Vm
Zml4LCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXgu
aW1wbCgpICYmIG1faW1wbC0+aGFzSW5maXhFbmRpbmdBdCgqc3VmZml4LmltcGwoKSwgZW5kT2Zm
c2V0KTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChMQ2hhcik7Ci0g
ICAgdm9pZCBhcHBlbmQoY2hhciBjKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOyB9
OworICAgIHZvaWQgYXBwZW5kKGNoYXIgY2hhcmFjdGVyKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxM
Q2hhcj4oY2hhcmFjdGVyKSk7IH07CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBw
ZW5kKFVDaGFyKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IHBvc2l0aW9uKTsKIAotICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciBhLCBVQ2hhciBiKSB7IGlm
IChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShhLCBiKTsgcmV0dXJuICp0aGlzOyB9
Ci0gICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIGNvbnN0IFN0cmluZyYgYikgeyBpZiAobV9p
bXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7
IH0KLSAgICBTdHJpbmcmIHJlcGxhY2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEuaW1wbCgpLCBiLmltcGwo
KSk7IHJldHVybiAqdGhpczsgfQotICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwg
dW5zaWduZWQgbGVuLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKGluZGV4LCBsZW4sIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAg
U3RyaW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpOworICAgIFN0
cmluZyYgcmVwbGFjZShVQ2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOwor
ICAgIFN0cmluZyYgcmVwbGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJn
ZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAotICAgIHRl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5n
JiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgYSwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBt
X2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAx
KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW5n
dGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3Np
dGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxl
bik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywg
aW50IGxlbiA9IDEpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJp
bmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBw
b3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKLSAgICBTdHJpbmcgbGVmdCh1bnNp
Z25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW4pOyB9Ci0gICAgU3RyaW5n
IHJpZ2h0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0g
bGVuLCBsZW4pOyB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJpbmco
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmlu
ZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKKyAgICBTdHJp
bmcgbGVmdCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5n
dGgpOyB9CisgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4g
c3Vic3RyaW5nKHRoaXMtPmxlbmd0aCgpIC0gbGVuZ3RoLCBsZW5ndGgpOyB9CiAKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2Fz
ZSgpIGNvbnN0OwpAQCAtMzQ3LDcgKzI1NSw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0
cikgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHJlbW92ZUNoYXJh
Y3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Ym9v
bCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMo
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhlIHN0cmluZyB3aXRoIGNhc2UgZm9sZGVkIGZv
ciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCiAgICAgLy8gVXNlIGNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlIGluc3RlYWQgaWYgQVNDSUkgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGlz
IGRlc2lyZWQuCkBAIC0zNTgsMzUgKzI2NSwxOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5z
IGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB3cml0
dGVuCiAgICAgLy8gaW50byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVmb3JlIHRoZSBy
ZXR1cm5lZCBzdHJpbmcgaXMgdXNlZC4KLSAgICAvLyBGYWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBo
YXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogICAgIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkgeyBy
ZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFy
YXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmlu
Zz4mIHJlc3VsdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2Us
IHJlc3VsdCk7Ci0gICAgfQorICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Is
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwg
cmVzdWx0KTsgfQogCiAgICAgdXNpbmcgU3BsaXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZ1ZpZXcmKT47CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1
bmN0b3ImKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzcGxpdChVQ2hh
ciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1
bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KSBjb25zdAotICAgIHsKLSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwg
cmVzdWx0KTsKLSAgICB9Ci0gICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoVUNoYXIgc2VwYXJhdG9y
KSBjb25zdAotICAgIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgICAgICBz
cGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3Bs
aXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9CisgICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1
bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQorICAgIFZlY3Rv
cjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CisgICAgVmVjdG9yPFN0cmlu
Zz4gc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCB0b1VJbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKQEAgLTQzOSwx
MSArMzI5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBVQ2hhciosIHNpemVf
dCk7Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIHN0YXRpYyBTdHJp
bmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eT4mIGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlOEJpdEZyb20xNkJpdFNv
dXJjZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8
c2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBtYWtlMTZCaXRGcm9tOEJpdFNvdXJjZShjb25z
dCBMQ2hhciosIHNpemVfdCk7CiAKQEAgLTQ1MSwyOCArMzM3LDIxIEBAIHB1YmxpYzoKICAgICAv
LyB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhcios
IHNpemVfdCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVU
RjgoY29uc3QgTENoYXIqKTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIq
IHMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNv
bnN0IGNoYXIqIHMpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihzKSk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH07CisgICAgc3RhdGljIFN0cmlu
ZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzdHJpbmcpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpKTsgfTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBDU3RyaW5nJik7CiAgICAgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBWZWN0b3I8TENoYXI+JiBjaGFyYWN0ZXJzKTsKIAogICAg
IC8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3
aWxsIGZhbGwgYmFjayB0byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04
LgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsg
cmV0dXJuIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihzKSwgbGVuZ3RoKTsgfTsKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpIHsgcmV0
dXJuIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfTsKIAogICAgIC8vIERldGVybWluZXMgdGhlIHdy
aXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAy
IGFuZCBQMy4KLSAgICBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29s
KiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAobV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwotICAgICAgICBpZiAoaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpCi0gICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdIVDsKLSAgICB9CisgICAgVUNoYXJE
aXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSBudWxscHRyKSBjb25zdDsKIAotICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBj
b25zdDsKLSAgICBib29sIGNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0OwotICAgIGJvb2wgY29u
dGFpbnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5j
b250YWluc09ubHlXaGl0ZXNwYWNlKCk7IH0KKyAgICBib29sIGlzQWxsQVNDSUkoKSBjb25zdCB7
IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXNBbGxBU0NJSSgpOyB9CisgICAgYm9vbCBpc0Fs
bExhdGluMSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5pc0FsbExhdGluMSgp
OyB9CisgICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBib29sIGlz
QWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KCk7IH0KIAogICAgIC8v
IEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFu
ZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0K
QEAgLTQ4NCw0MCArMzYzLDE2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
dm9pZCBzaG93KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIC8vIFdvcmthcm91bmQgZm9yIGEgY29t
cGlsZXIgYnVnLiBVc2Ugb3BlcmF0b3JbXSBpbnN0ZWFkLgotICAgIFVDaGFyIGNoYXJhY3RlckF0
KHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwgfHwgaW5k
ZXggPj0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBy
ZXR1cm4gKCptX2ltcGwpW2luZGV4XTsKLSAgICB9Ci0KICAgICAvLyBUdXJucyB0aGlzIFN0cmlu
ZyBlbXB0eSBpZiB0aGUgU3RyaW5nSW1wbCBpcyBub3QgcmVmZXJlbmNlZCBieSBhbnlvbmUgZWxz
ZS4KICAgICAvLyBUaGlzIGlzIHVzZWZ1bCBmb3IgY2xlYXJpbmcgU3RyaW5nLWJhc2VkIGNhY2hl
cy4KLSAgICB2b2lkIGNsZWFySW1wbElmTm90U2hhcmVkKCkKLSAgICB7Ci0gICAgICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5oYXNPbmVSZWYoKSkKLSAgICAgICAgICAgIG1faW1wbCA9IG51bGxw
dHI7Ci0gICAgfQotICAgIAotICAgIHZvaWQgYXNzZXJ0Q2FnZWQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgICAgIG1faW1wbC0+YXNzZXJ0Q2FnZWQoKTsKLSAg
ICB9CisgICAgdm9pZCBjbGVhckltcGxJZk5vdFNoYXJlZCgpOwogCi0gICAgdm9pZCByZWxlYXNl
QXNzZXJ0Q2FnZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAg
ICAgIG1faW1wbC0+cmVsZWFzZUFzc2VydENhZ2VkKCk7Ci0gICAgfQorICAgIHZvaWQgYXNzZXJ0
Q2FnZWQoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVhc2VBc3NlcnRDYWdlZCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotICAgIHZvaWQg
cmVtb3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCBpbnQpOwotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci0gICAgdm9pZCBhcHBlbmRJbnRl
cm5hbChDaGFyYWN0ZXJUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCwgdW5z
aWduZWQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5k
SW50ZXJuYWwoQ2hhcmFjdGVyVHlwZSk7CiAKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBs
OwogfTsKQEAgLTUzMiw3ICszODcsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNo
YXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZQogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZl
Y3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4g
ZXF1YWwoYi5pbXBsKCksIGEuZGF0YSgpLCBhLnNpemUoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQog
Ci0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuICFlcXVh
bChhLmltcGwoKSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KQEAgLTU1MCw3ICs0MDQsNyBAQCB0ZW1wbGF0ZTx1bnNp
Z25lZCBsZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmLAogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgU3RyaW5n
JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEuaW1w
bCgpLCBiLmltcGwoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5l
IGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHko
YSwgYi5pbXBsKCkpOyB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIShjb25zdCBTdHJpbmcmIHN0
cikgeyByZXR1cm4gc3RyLmlzTnVsbCgpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIHN0cmluZy5pc051bGwoKTsgfQogCiBpbmxpbmUgdm9p
ZCBzd2FwKFN0cmluZyYgYSwgU3RyaW5nJiBiKSB7IGEuc3dhcChiKTsgfQogCkBAIC01NjEsODEg
KzQxNSwxNzYgQEAgTlNTdHJpbmcgKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5nJik7
CiAKICNlbmRpZgogCitXVEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIGNvZGVQb2ludENvbXBhcmVMZXNz
VGhhbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENoYXJhY3RlclR5cGU+Jiwg
dW5zaWduZWQgY2hhciBudW1iZXIpOworCisvLyBTaGFyZWQgZ2xvYmFsIGVtcHR5IHN0cmluZy4K
K1dURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25zdCBTdHJpbmcmIGVtcHR5U3RyaW5nKCk7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxTdHJpbmc+IHsgdXNpbmcgSGFzaCA9IFN0cmluZ0hhc2g7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsgfTsKKworY2xhc3MgQVNDSUlMaXRlcmFsIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBBU0NJ
SUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVy
cykgeyB9CisgICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSB7IHJldHVybiBtX2NoYXJhY3RlcnM7
IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3RlcnM7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7Cisg
ICAgdXNpbmcgUmV0dXJuVHlwZSA9IFN0cmluZzsKKyAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1l
bnRUeXBlID0gdm9pZDsKKyAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9
OyB9Cit9OworCiAvLyBEZWZpbml0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCi1pbmxpbmUg
U3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCYgaW1wbCkKLSAgICA6IG1faW1wbCgmaW1wbCkKK2lu
bGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoJnN0
cmluZykKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpCi0g
ICAgOiBtX2ltcGwoaW1wbCkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsKiBzdHJp
bmcpCisgICAgOiBtX2ltcGwoc3RyaW5nKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmco
UmVmPFN0cmluZ0ltcGw+JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5s
aW5lIFN0cmluZzo6U3RyaW5nKFJlZjxTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1w
bChXVEZNb3ZlKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8
U3RyaW5nSW1wbD4mJiBpbXBsKQotICAgIDogbV9pbXBsKFdURk1vdmUoaW1wbCkpCitpbmxpbmUg
U3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9pbXBs
KFdURk1vdmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxBdG9t
aWNTdHJpbmdJbXBsPiYmIGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGlu
ZSBTdHJpbmc6OlN0cmluZyhSZWY8QXRvbWljU3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBt
X2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwp
KQoraW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmlu
ZykKKyAgICA6IG1faW1wbChXVEZNb3ZlKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6
OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsJiBpbXBsKQotICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8U3RyaW5nSW1wbCo+KCZpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNT
dHJpbmdJbXBsJiBzdHJpbmcpCisgICAgOiBtX2ltcGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJ
bXBsKj4oJnN0cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJp
bmdJbXBsKiBpbXBsKQotICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+
KGltcGwpKQoraW5saW5lIFN0cmluZzo6U3RyaW5nKFN0YXRpY1N0cmluZ0ltcGwqIHN0cmluZykK
KyAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmcpKQogewog
fQogCi10ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlcj4KLVN0cmluZzo6U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKLSAgICA6IG1faW1wbCh2ZWN0b3Iuc2l6ZSgpID8g
U3RyaW5nSW1wbDo6Y3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpIDogUmVmPFN0
cmluZ0ltcGw+KCpTdHJpbmdJbXBsOjplbXB0eSgpKSkKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBTdHJpbmc6OlN0cmluZyhjb25zdCBW
ZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCisg
ICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0
YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPiB7ICpTdHJpbmdJbXBsOjplbXB0
eSgpIH0pCiB7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBMQ2hhciogU3RyaW5nOjpj
aGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBMQ2hhciog
U3RyaW5nOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzOEJpdCgp
KTsKICAgICByZXR1cm4gY2hhcmFjdGVyczgoKTsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGNv
bnN0IFVDaGFyKiBTdHJpbmc6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKK3RlbXBsYXRlPD4g
aW5saW5lIGNvbnN0IFVDaGFyKiBTdHJpbmc6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoIWlzOEJpdCgpKTsKICAgICByZXR1cm4gY2hhcmFjdGVyczE2KCk7CiB9CiAK
LWlubGluZSBib29sIFN0cmluZzo6Y29udGFpbnNPbmx5TGF0aW4xKCkgY29uc3QKK2lubGluZSBV
Q2hhciBTdHJpbmc6OmNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlm
ICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkKIHsKLSAgICBpZiAo
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9pbXBsKQorICAgICAg
ICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudCk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFy
Z2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2VtZW50LmltcGwoKSk7
CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2Uo
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCit7CisgICAg
aWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBs
KCksIHJlcGxhY2VtZW50LmltcGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUg
U3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBt
X2ltcGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgp
KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CiAKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJ
TkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCit7CisgICAgaWYgKG1faW1wbCkK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgY2hhcmFjdGVycywgY2hh
cmFjdGVyQ291bnQgLSAxKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CiAKLSAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpOwotICAgIFVDaGFyIG9yZWQgPSAwOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbXBsLT5sZW5ndGgoKTsgKytpKQotICAgICAgICBv
cmVkIHw9IGNoYXJhY3RlcnNbaV07Ci0gICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7Citpbmxp
bmUgVmVjdG9yPFN0cmluZz4gU3RyaW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Cit7
CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2Us
IHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIFZlY3RvcjxTdHJpbmc+
IFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgVmVj
dG9yPFN0cmluZz4gcmVzdWx0OworICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgU3RyaW5nIFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVmVj
dG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gbWFrZThC
aXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisKK2lu
bGluZSBVQ2hhckRpcmVjdGlvbiBTdHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wq
IGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAg
ICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKKyAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisgICAgICAgICpo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IGZhbHNlOworICAgIHJldHVybiBVX0xFRlRfVE9fUklH
SFQ7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZzo6Y2xlYXJJbXBsSWZOb3RTaGFyZWQoKQorewor
ICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgbV9pbXBsID0g
bnVsbHB0cjsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nOjphc3NlcnRDYWdlZCgpIGNvbnN0Cit7
CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT5hc3NlcnRDYWdlZCgpOworfQorCitp
bmxpbmUgdm9pZCBTdHJpbmc6OnJlbGVhc2VBc3NlcnRDYWdlZCgpIGNvbnN0Cit7CisgICAgaWYg
KG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT5yZWxlYXNlQXNzZXJ0Q2FnZWQoKTsKIH0KIAogI2lm
ZGVmIF9fT0JKQ19fCkBAIC02NTYsMTkgKzYwNSw2IEBAIGlubGluZSBOU1N0cmluZyAqIG5zU3Ry
aW5nTmlsSWZFbXB0eShjb25zdCBTdHJpbmcmIHN0cmluZykKIAogI2VuZGlmCiAKLWlubGluZSBi
b29sIFN0cmluZzo6Y29udGFpbnNPbmx5QVNDSUkoKSBjb25zdAotewotICAgIGlmIChpc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3Ro
KCkpOwotCi0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzMTYoKSwg
bV9pbXBsLT5sZW5ndGgoKSk7Ci19Ci0KLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgY29kZVBv
aW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQogaW5saW5lIGJvb2wg
Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBi
KQogewogICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGEuaW1wbCgpLCBiLmltcGwoKSkgPCAw
OwpAQCAtNjk3LDQ5ICs2MzMsNiBAQCBpbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENo
YXJhY3RlclR5cGU+JiB2ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQogICAgIH0KIH0KIAot
dGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpLCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwZWNpYWxDaGFyYWN0ZXIo
Y2hhcmFjdGVyc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+
Ci1pbmxpbmUgYm9vbCBTdHJpbmc6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdAotewot
ICAgIHNpemVfdCBsZW4gPSBsZW5ndGgoKTsKLQotICAgIGlmICghbGVuKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6aXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXIsIExDaGFyPihjaGFyYWN0ZXJzOCgp
LCBsZW4pOwotICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFs
Q2hhcmFjdGVyLCBVQ2hhcj4oY2hhcmFjdGVyczE2KCksIGxlbik7Ci19Ci0KLS8vIFN0cmluZ0hh
c2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJpbmc+
IHsKLSAgICB0eXBlZGVmIFN0cmluZ0hhc2ggSGFzaDsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVj
dCBWZWN0b3JUcmFpdHM8U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQot
Y2xhc3MgQVNDSUlMaXRlcmFsIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBU0NJSUxpdGVyYWwo
Y29uc3QgY2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9Ci0g
ICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KLQotcHJp
dmF0ZToKLSAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3RlcnM7Ci19OwotCi0vLyBTaGFyZWQgZ2xv
YmFsIGVtcHR5IHN0cmluZy4KLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25zdCBTdHJpbmcmIGVt
cHR5U3RyaW5nKCk7Ci0KIGlubGluZSBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOChjb25zdCBWZWN0
b3I8TENoYXI+JiBjaGFyYWN0ZXJzKQogewogICAgIGlmIChjaGFyYWN0ZXJzLmlzRW1wdHkoKSkK
QEAgLTc2NywzOCArNjYwLDMwIEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJv
b2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTCiAgICAgcmV0dXJu
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSwgbG93ZXJj
YXNlTGV0dGVycyk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb25UcmFpdDxTdHJpbmc+IHsKLSAgICB1c2luZyBSZXR1cm5UeXBlID0gU3RyaW5nOwotICAg
IHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSB2b2lkOwotICAgIHN0YXRpYyBTdHJpbmcg
Zmx1c2goTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCopIHsgcmV0dXJu
IHsgY2hhcmFjdGVycywgbGVuZ3RoIH07IH0KLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCi11
c2luZyBXVEY6OkNTdHJpbmc7Cit1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKIHVzaW5nIFdURjo6
S2VlcFRyYWlsaW5nWmVyb3M7CiB1c2luZyBXVEY6OlN0cmluZzsKLXVzaW5nIFdURjo6ZW1wdHlT
dHJpbmc7CiB1c2luZyBXVEY6OmFwcGVuZE51bWJlcjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Ci11c2luZyBXVEY6
OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsK
K3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvRmxvYXQ7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0lu
dDY0OwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJp
Y3Q7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
VUludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50NjQ7Ci11c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb1VJbnQ2NDsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyOwotdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9Eb3VibGU7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0Zsb2F0OwordXNpbmcg
V1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0lu
dFN0cmljdDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0OwordXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9VSW50NjRTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Cit1c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmVtcHR5U3RyaW5nOwog
dXNpbmcgV1RGOjplcXVhbDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6aXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczsKIHVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6
cmV2ZXJzZUZpbmQ7Ci11c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKIAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXJMYXRpbjEuY3BwCmluZGV4IDI1YTBlMWU4NjRiMjk3MTQ4MWUzMDljNDM1NGU0MzEw
NjFiNDVjN2UuLmI4MTA5ZDc2MTlhNTQyYmUyZDI5NmNlZDBjMjZiZjM1NWYwY2FlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCkBAIC0x
NDAsNyArMTQwLDcgQEAgc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4
dCwgaW50NjRfdCBpbmRleCwgVUJvb2wgZm9yd2FyZCkKICAgICB9CiAgICAgdVRleHQtPmNodW5r
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CiAKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29u
c3RfY2FzdDxVQ2hhcio+KHVUZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
TENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHVUZXh0LT5jaHVua0xlbmd0aCkpOworICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFyYWN0ZXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0
YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0
aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKIAog
ICAgIHVUZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOwogCkBA
IC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0
KiB1VGV4dCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBsaW1pdCwgVUMKICAgICAgICAgaWYgKHRy
aW1tZWRMZW5ndGggPiBkZXN0Q2FwYWNpdHkpCiAgICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0g
ZGVzdENhcGFjaXR5OwogCi0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cmFjdGVycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSAr
IHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOwogICAgIH0KIAog
ICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0
aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aQogICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90Pihs
ZW5ndGgpIDogMDsKICAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtM
ZW5ndGg7CiAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5r
TGVuZ3RoOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4
dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAo
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dGV4dC0+Y2h1bmtMZW5ndGgpKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhjb25z
dF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExD
aGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKIH0KIAogc3RhdGljIHZvaWQg
dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCBiNDk3YWRjNzdhZDg5MzRhYWZhNzUzMzUzZjhk
ZmI0MzE0NGRmZjQzLi5jOTE3MWRjMmEzYjQ2NDI4NDA5NDJlOWU5NTE0NmY1Nzk5MTBhNTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtMTc0LDExICsxNzQsNiBAQCBzdGF0aWMgWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3Qg
U3RyaW5nJiBxdQogICAgIHJldHVybiBxdWVyeURpY3Rpb25hcnk7CiB9CiAgICAgCi1zdGF0aWMg
Ym9vbCBoYXNDYXNlSW5zZW5zaXRpdmVQcmVmaXgoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3Qg
U3RyaW5nJiBwcmVmaXgpCi17Ci0gICAgcmV0dXJuIGlucHV0LnN0YXJ0c1dpdGgocHJlZml4LCBm
YWxzZSk7Ci19Ci0gICAgCiBzdGF0aWMgYm9vbCBpc1lvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgU3RyaW5nIGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKQEAgLTI2NCw3ICsyNTksNyBA
QCBzdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBi
b29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KHBh
dGgsICIvdi8iKSB8fCBoYXNDYXNlSW5zZW5zaXRpdmVQcmVmaXgocGF0aCwgIi9lLyIpKSB7Cisg
ICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIv
di8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkg
ewogICAgICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKICAgICAgICAgU3RyaW5nIHZpZGVvSUQ7CiAgICAgICAgIFN0cmluZyBwYXRoQWZ0ZXJG
aXJzdEFtcGVyc2FuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggMGVhOTBmNTg5YjJhYmNhMjJhMjli
YmY4YTI1NWI4ZTk3ZTllODAyMS4uN2VjMjc4NjM4MGQ2YTBhODNiN2MzMGVjYjQ2MDMyOTFiNWEy
OGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCBjb25zdCBjaGFyKiBX
ZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29u
c3QgY2hhciogZQogICAgICAgICBpZiAoKGhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNl
Y1dlYlNvY2tldEV4dGVuc2lvbnMKICAgICAgICAgICAgIHx8IGhlYWRlck5hbWUgPT0gSFRUUEhl
YWRlck5hbWU6OlNlY1dlYlNvY2tldEFjY2VwdAogICAgICAgICAgICAgfHwgaGVhZGVyTmFtZSA9
PSBIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0UHJvdG9jb2wpCi0gICAgICAgICAgICAmJiAh
dmFsdWUuY29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgICAgICAgICAgJiYgIXZhbHVlLmlzQWxs
QVNDSUkoKSkgewogICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gbWFrZVN0cmluZyhuYW1l
LCAiIGhlYWRlciB2YWx1ZSBzaG91bGQgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCAyOTkyYTA5MjFlNTIzNjQx
OGM3MTI3ZGQ2NjViNmQ3M2E1NWFiN2JmLi4xZGYxZjA1MTJmMTI2N2QwZWIzMGNmMmRjYmIwN2Jl
MmIxYzcyZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJN
YXRoTUxFbGVtZW50LmgiCkBAIC0xNjE1LDE0ICsxNjE2LDE0IEBAIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2Us
IGludCBvCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgc3BhY2UsIG5l
dyBsaW5lLCB0YWcgbm9kZS4KICAgICAgICAgICAgIGlmIChjdXJyZW50TGVuZ3RoID09IDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShpdGVyYXRvci50ZXh0KClbMF0p
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGl0ZXJhdG9yLnRleHQoKVswXSkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIEJSIHRhZywgd2Ugd2Fu
dCB0byBzZXQgdGhlIGN1cnJlbnROb2RlIHRvIGl0LgogICAgICAgICAgICAgICAgICAgICBpbnQg
c3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogY2hpbGROb2RlID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZz
ZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlICYmIGNoaWxkTm9kZS0+cmVu
ZGVyZXIoKSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjaGlsZE5vZGU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNSZXBsYWNlZE5vZGVPckJSID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChFbGVtZW50ICpzaGFkb3dIb3N0ID0gY3VycmVudE5vZGUtPnNoYWRvd0hvc3QoKSkg
eworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBjdXJy
ZW50Tm9kZS0+c2hhZG93SG9zdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB3ZSBhcmUgZW50ZXJpbmcgdGV4dCBjb250cm9scywgd2Ugc2hvdWxkIHNldCB0aGUgY3VycmVu
dE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIHRoZSBzaGFkb3cgaG9zdCB3
aGVuIHRoZXJlJ3Mgbm8gY29udGVudC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
SXNUZXh0Q29udHJvbChzaGFkb3dIb3N0KSAmJiBjdXJyZW50Tm9kZS0+aXNTaGFkb3dSb290KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dC5jcHAKaW5kZXggNmUzMDFiMGMyNWMzOWMzYTM0Yjc5ZjE4ZTM3OGI1NTM2ZDYyMjExYy4uZDVk
YjllMjQ1ZDBkZDQwNTBjNGFmOGU5YzY2YmE2Yzg5NGM5MTk5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0OjpjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0
SXRlbU1hcmtlcnMoUmVuZGVyT2JqZWN0KiBsaXN0SQogICAgIC8vIHRob3NlIHJlbmRlcmVycyBh
cyAiaWdub3JlZCIgb2JqZWN0cy4KICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIHRleHQg
PSBheE9iai0+dGV4dFVuZGVyRWxlbWVudCgpOwotICAgIHJldHVybiAhdGV4dC5pc0VtcHR5KCkg
JiYgIXRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJldHVybiAhdGV4dC5pc0Vt
cHR5KCkgJiYgIXRleHQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDU3ZDBl
YWM3MzUzNjBkNzVjMjEzZThiZTU1ZTFlNTkwYWQ5OWNkY2YuLmU5NGFhOTQ2ZGNmNzM1NDcyODBm
OTNjNDkxMjdlMTJlZDc1NTEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC00ODEsMTIgKzQ4MSwx
MiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkKCkgY29uc3QK
IAogICAgIC8vIENoZWNrIHRoZSBub2RlIG5hbWUgb2YgdGhlIGlucHV0IHR5cGUsIHNvbWV0aW1l
cyBpdCdzICJzZWFyY2giLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJpYnV0ZSA9
IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnMo
InNlYXJjaCIsIGZhbHNlKSkKKyAgICBpZiAobmFtZUF0dHJpYnV0ZS5jb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKCJzZWFyY2giKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVj
ayB0aGUgZm9ybSBhY3Rpb24gYW5kIHRoZSBuYW1lLCB3aGljaCB3aWxsIHNvbWV0aW1lcyBiZSAi
c2VhcmNoIi4KICAgICBhdXRvKiBmb3JtID0gaW5wdXRFbGVtZW50LmZvcm0oKTsKLSAgICBpZiAo
Zm9ybSAmJiAoZm9ybS0+bmFtZSgpLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkgfHwgZm9ybS0+
YWN0aW9uKCkuY29udGFpbnMoInNlYXJjaCIsIGZhbHNlKSkpCisgICAgaWYgKGZvcm0gJiYgKGZv
cm0tPm5hbWUoKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzZWFyY2giKSB8fCBmb3JtLT5h
Y3Rpb24oKS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzZWFyY2giKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMjkxOTE0MjA3Nzc3
YzU5ZTQ4OTJlMDQ1MTY1NjRiMzFmNTY2NDkwMi4uYmQ0ZWI4MTk5OTJlMTE4OGMyNjBmODRlMmYz
MGI4ODYxMmQ3YjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yODksOSArMjg5LDkgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4
dCkgY29uc3QKICAgICAvLyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUu
CiAgICAgcmV0dXJuICF0ZXh0CiAgICAgICAgIHx8IHRleHQtPmlzRW1wdHkoKQotICAgICAgICB8
fCB0aXRsZSgpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSkKLSAgICAgICAgfHwgYWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkuY29udGFpbnMoKnRleHQsIGZhbHNlKQotICAgICAgICB8fCBzdHJpbmdW
YWx1ZSgpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSk7CisgICAgICAgIHx8IGZpbmRQbGFpblRleHQo
dGl0bGUoKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSkKKyAgICAgICAgfHwgZmluZFBsYWluVGV4
dChhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSkKKyAg
ICAgICAgfHwgZmluZFBsYWluVGV4dChzdHJpbmdWYWx1ZSgpLCAqdGV4dCwgQ2FzZUluc2Vuc2l0
aXZlKTsKIH0KIAogLy8gQVJJQSBtYXJrcyBlbGVtZW50cyBhcyBoYXZpbmcgdGhlaXIgYWNjZXNz
aWJsZSBuYW1lIGRlcml2ZSBmcm9tIGVpdGhlciB0aGVpciBjb250ZW50cywgb3IgdGhlaXIgYXV0
aG9yIHByb3ZpZGUgbmFtZS4KQEAgLTgzOCw4ICs4MzgsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2VsZWN0VGV4dChBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlhKiBjcml0
ZXJpYQogICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY2xv
c2VzdFN0cmluZ1JhbmdlLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKSkgewogICAgICAgICAgICAg
c3dpdGNoIChhY3Rpdml0eSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0
VGV4dEFjdGl2aXR5OjpGaW5kQW5kQ2FwaXRhbGl6ZToKLSAgICAgICAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmc7Ci0gICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxp
emVkKCZyZXBsYWNlbWVudFN0cmluZywgMCk7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRT
dHJpbmcgPSBjYXBpdGFsaXplKGNsb3Nlc3RTdHJpbmcsICcgJyk7IC8vIEZJWE1FOiBOZWVkcyB0
byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgICAg
ICAgICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRV
cHBlcmNhc2U6CkBAIC04NTYsNyArODU1LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEKICAg
ICAgICAgICAgICAgICAvLyAodW5sZXNzIHdlJ3JlIHJlcGxhY2luZyB3aXRoIGFuIGFiYnJldmlh
dGlvbi4pCiAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RTdHJpbmcubGVuZ3RoKCkgPiAwICYm
IHJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCgpID4gMiAmJiByZXBsYWNlbWVudFN0cmluZyAhPSBy
ZXBsYWNlbWVudFN0cmluZy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RTdHJpbmdbMF0gPT0gdV90b3VwcGVyKGNsb3Nl
c3RTdHJpbmdbMF0pKQotICAgICAgICAgICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZy
ZXBsYWNlbWVudFN0cmluZywgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVu
dFN0cmluZyA9IGNhcGl0YWxpemUocmVwbGFjZW1lbnRTdHJpbmcsICcgJyk7IC8vIEZJWE1FOiBO
ZWVkcyB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQgdG8gd29yayBjb3JyZWN0bHkuCiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
U3RyaW5nID0gcmVwbGFjZW1lbnRTdHJpbmcuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2Fs
ZSgpOyAvLyBGSVhNRTogTmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDExM2ZmZjVjMjNhNTE1ZjJjOTY3Nzk0
YTg3ZmJlMWYyMjMzYjM5ZmMuLjZkYjlmNzcxMTU2Y2NlOTFjMjk1MGFjMmM5ODdhYTI4NGEwYjQ1
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0CiBzdGF0
aWMgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBvYmplY3RJbmNsdXNpb25Gcm9tQWx0VGV4
dChjb25zdCBTdHJpbmcmIGFsdFRleHQpCiB7CiAgICAgLy8gRG9uJ3QgaWdub3JlIGFuIGltYWdl
IHRoYXQgaGFzIGFuIGFsdCB0YWcuCi0gICAgaWYgKCFhbHRUZXh0LmNvbnRhaW5zT25seVdoaXRl
c3BhY2UoKSkKKyAgICBpZiAoIWFsdFRleHQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxT
cGFjZT4oKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklu
Y2x1ZGVPYmplY3Q7CiAgICAgCiAgICAgLy8gVGhlIGluZm9ybWFsIHN0YW5kYXJkIGlzIHRvIGln
bm9yZSBpbWFnZXMgd2l0aCB6ZXJvLWxlbmd0aCBhbHQgc3RyaW5ncy4KQEAgLTEyNTEsNyArMTI1
MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdAogICAgICAgICB9CiAKICAgICAgICAgLy8gdGV4dCBlbGVtZW50
cyB0aGF0IGFyZSBqdXN0IGVtcHR5IHdoaXRlc3BhY2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5lZAot
ICAgICAgICByZXR1cm4gcmVuZGVyVGV4dC50ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2Uo
KTsKKyAgICAgICAgcmV0dXJuIHJlbmRlclRleHQudGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+KCk7CiAgICAgfQogICAgIAogICAgIGlmIChpc0hlYWRpbmcoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlP
YmplY3RBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJp
bGl0eU9iamVjdEF0ay5jcHAKaW5kZXggMTc1NjZiMTdjMWU5MmM5OGU2ZGIyZGM5MzM4ZGNkM2Uz
NDQ3ZTY0Mi4uNTkzM2ExOWE3YjhmYWRhMmZhYjgxNmM3ZmY5NmQxNjAwMzQ1N2Q4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVj
dEF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJp
bGl0eU9iamVjdEF0ay5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpnZXRMZW5ndGhGb3JUZXh0UmFuZ2UoKSBjb25zdAogICAgIE5vZGUqIG5vZGUg
PSB0aGlzLT5ub2RlKCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2Rl
LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIp
KQotICAgICAgICB0ZXh0TGVuZ3RoID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKS50
ZXh0TGVuZ3RoKCk7CisgICAgICAgIHRleHRMZW5ndGggPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
cmVuZGVyZXIpLnRleHQoKS5sZW5ndGgoKTsKIAogICAgIC8vIEdldCB0aGUgdGV4dCBsZW5ndGgg
ZnJvbSB0aGUgZWxlbWVudHMgdW5kZXIgdGhlCiAgICAgLy8gYWNjZXNzaWJpbGl0eSBvYmplY3Qg
aWYgdGhlIHZhbHVlIGlzIHN0aWxsIHplcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCmluZGV4IDY5ZGQ0YmY4MjA0YTE5OTU3Zjhj
OGE3MWNhMDk2ZTBkNmMxMGNmMzAuLmI1NDM4ZjdlMWUwYTU1YWE5ZjA0ZTIwNzYyMWQ3NDFiMzQ2
YmZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dFN0cmluZ3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1RvQnl0ZVN0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlLCBTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHJp
bmcuY29udGFpbnNPbmx5TGF0aW4xKCkpIHsKKyAgICBpZiAoIXN0cmluZy5pc0FsbExhdGluMSgp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMzdjMmNhOGY5OTU2MWRl
M2U4MDA4ZDQ3NjBkMTAxM2Q2OWZmZjMxNS4uMTY2MTRjNWNiZjQ2MDUxZmU3NDBlZTI1ZmRjMWYz
YzgzMWFkMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTUxLDkgKzUxLDggQEAgbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKICAgICAKIHN0YXRpYyBib29sIGNvbnRhaW5zT25s
eUFTQ0lJV2l0aE5vVXBwZXJjYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkb21haW4ubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBVQ2hh
ciBjID0gZG9tYWluLmF0KGkpOwotICAgICAgICBpZiAoIWlzQVNDSUkoYykgfHwgaXNBU0NJSVVw
cGVyKGMpKQorICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBTdHJpbmdWaWV3IHsgZG9tYWluIH0u
Y29kZVVuaXRzKCkpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgaXNBU0NJ
SVVwcGVyKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMzA3MjEwMWYzZmEw
MWNkMWNmODJiZTdjODlhYWYyMTI4MTZlNTIxNi4uYzBkYjFiMTJkYTczYWMwYzUyNzk3M2QwMWI1
OTNhZTA2NzhmOTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHN0ZDo6cGFpcjxWZWN0b3I8QWN0aW9uPiwgVmVjdG9yPFN0cmluZz4+IENvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBj
b25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHJlc291cmNlTG9hZEluZm8ucmVzb3VyY2VVUkwuc3Ry
aW5nKCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh1cmxTdHJpbmcuY29udGFpbnNPbmx5QVND
SUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJz
LiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2Rl
ZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcg
YWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwogICAgIGNvbnN0IENTdHJp
bmcmIHVybENTdHJpbmcgPSB1cmxTdHJpbmcudXRmOCgpOwogCiAgICAgVmVjdG9yPEFjdGlvbj4g
ZmluYWxBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggMjJkZmMxM2E4NDZmNDZhODJiZmY2YzA0Nzg3NDk0
NWVlZjNkZTk3Ny4uZTM1MWUxN2Q5ZWE3NjRiNDY4ZGRmZjY1M2E4ZWQwNmM1MTI1ZWE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgVVJMRmlsdGVyUGFyc2VyOjp+VVJMRmlsdGVyUGFy
c2VyKCkgPSBkZWZhdWx0OwogCiBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRl
clBhcnNlcjo6YWRkUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklz
Q2FzZVNlbnNpdGl2ZSwgdWludDY0X3QgcGF0dGVybklkKQogewotICAgIGlmICghcGF0dGVybi5j
b250YWluc09ubHlBU0NJSSgpKQorICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAg
ICAgIHJldHVybiBOb25BU0NJSTsKICAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBFbXB0eVBhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHAKaW5kZXggNjM1NzJjNTE1YmVhNjY1ZjU2Mjc0MTI1YmZmODNjYmE4MjRjMTYxZC4u
OGFjZDlhZjFiMDFmMDBiYTBhMDIzZTdjMzQzOTA0NDA3ZDE4MTRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OmlzU3VwcG9ydGVkRm9ybWF0KCkgY29uc3QKICAgICAvLyB3ZSB3
aWxsIGFsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBVUkwgZW5kcyB3aXRoIC5lb3QuIElmIHNvLCB3
ZSdsbCBhc3N1bWUgdGhhdCB3ZSBzaG91bGRuJ3QgbG9hZCBpdC4KICAgICBpZiAobV9mb3JtYXQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENoZWNrIGZvciAuZW90LgotICAgICAgICBpZiAoIW1f
cmVzb3VyY2Uuc3RhcnRzV2l0aCgiZGF0YToiLCBmYWxzZSkgJiYgbV9yZXNvdXJjZS5lbmRzV2l0
aCgiLmVvdCIsIGZhbHNlKSkKKyAgICAgICAgaWYgKCFwcm90b2NvbElzKG1fcmVzb3VyY2UsICJk
YXRhIikgJiYgbV9yZXNvdXJjZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuZW90IikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKaW5kZXggYzZhYTc4NmVkODIwMjMzMWM4
OTAwYzFmY2RkNmM3NmE1MjAwNmE4OS4uOTEzNTIzNzc2OTY1OTQyZjJmNTA4NjIzZjY1NjcwYThh
MGFhZTBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHZhbHVlV2l0aG91
dEltcG9ydGFudChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghdmFsdWUuZW5kc1dp
dGgoImltcG9ydGFudCIsIGZhbHNlKSkKKyAgICBpZiAoIXZhbHVlLmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoImltcG9ydGFudCIpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBTdHJp
bmcgbmV3VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYzE2Nzg3OWJkOTE0MGMwMTRiZjZlYmYzOGFmMTI5N2Ri
ZWJiMTIwMS4uOTljZWVkNDg0Mjc5MDc5M2U2NGZhMmFjNDM1MzQzYmYxNmY0ZGI2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTMy
NTQsNyArMzI1NCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUdyaWRUZW1wbGF0ZUFy
ZWFzQ29sdW1uTmFtZXMoY29uc3QgU3RyaW5nJiBncmlkUm93TmFtCiAKIHN0YXRpYyBib29sIHBh
cnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMsIE5hbWVk
R3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBjb25zdCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCYg
Y29sdW1uQ291bnQpCiB7Ci0gICAgaWYgKGdyaWRSb3dOYW1lcy5pc0VtcHR5KCkgfHwgZ3JpZFJv
d05hbWVzLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDU1NTcGFjZT4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uTmFtZXMgPSBwYXJzZUdyaWRUZW1wbGF0ZUFy
ZWFzQ29sdW1uTmFtZXMoZ3JpZFJvd05hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAppbmRleCBlNmVlMmFjMjRmMWQ1MzkxMGYxYjI4NTZlOGE4ZTA1ODlhN2U0YzhlLi5jM2Y0
YjA5ZmYyMWRhZjQxMDVjMGI3NzYxYTRmYjcyNjk5MjJjN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCkBAIC0xNzQsMTEgKzE3NCw2IEBAIFN0cmluZyBDaGFyYWN0ZXJEYXRh
Ojpub2RlVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLWJvb2wgQ2hhcmFj
dGVyRGF0YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZGF0YS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IENo
YXJhY3RlckRhdGE6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIHsKICAg
ICBzZXREYXRhKG5vZGVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCBl
NGFkMjIxZWQwZmZlMWEzZmUyZDJjNTM0MmExNDZmNGMzZDZiNGEyLi4xYmIxYmJlZGRiMTVlZmEz
M2FkNGRjZGZjMGI3MGI3NzU5ZWQ5Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zOSw4ICszOSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBkZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VEYXRhKHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCBj
b250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29uc3Q7Ci0KICAgICAvLyBMaWtlIGFwcGVuZERhdGEs
IGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBwYXJzZXIgKGUuZy4sIG5vIG11dGF0aW9uIGV2ZW50cyku
CiAgICAgLy8gUmV0dXJucyBob3cgbXVjaCBjb3VsZCBiZSBhZGRlZCBiZWZvcmUgbGVuZ3RoIGxp
bWl0IHdhcyBtZXQuCiAgICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGVmYTFlOWE3NzgyZTVmMWQxZjEyZGZhN2ZkYjZl
Njk3NTI3OTliNGYuLjZmMzMzMjY0MWQzODYyN2NlN2Q3ZWRiZTRmNWFjYzQxMzc3N2M1Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBzdGF0
aWMgU3RyaW5nIG5vcm1hbGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1
cm4gdHlwZTsKIAogICAgIFN0cmluZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgaWYg
KGxvd2VyY2FzZVR5cGUgPT0gInRleHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKCJ0ZXh0L3BsYWluOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0
ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxhaW47IikpCiAgICAgICAg
IHJldHVybiAidGV4dC9wbGFpbiI7Ci0gICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwg
bG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInRleHQvdXJpLWxpc3Q7
IikpCisgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFy
dHNXaXRoKCJ0ZXh0L3VyaS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3Qi
OwotICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgidGV4
dC9odG1sOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvaHRtbDsi
KSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgcmV0dXJuIGxvd2VyY2FzZVR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAwYzZiYzI1ZjRmYTRmZjE0YzI4NTJjYzVm
Y2Q2Y2RlOGQ3OGJlZmY4Li44OWE1MDZmZjUwMTdhMzZmZThhZTY5ODExYjUxNWQ0ZTRjNWJiZjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJI
VE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNs
dWRlICJJbmxpbmVJdGVyYXRvci5oIgpAQCAtMTE0MSwxMSArMTE0MiwxMSBAQCBQb3NpdGlvbiBQ
b3NpdGlvbjo6bGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJv
b2wgY29uc2lkZXJObwogCiAgICAgUG9zaXRpb24gcHJldiA9IHByZXZpb3VzQ2hhcmFjdGVyUG9z
aXRpb24oYWZmaW5pdHkpOwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xvc2lu
Z0Jsb2NrRmxvd0VsZW1lbnQoZGVwcmVjYXRlZE5vZGUoKSwgcHJldi5kZXByZWNhdGVkTm9kZSgp
KSAmJiBpczxUZXh0PigqcHJldi5kZXByZWNhdGVkTm9kZSgpKSkgewotICAgICAgICBTdHJpbmcg
c3RyaW5nID0gZG93bmNhc3Q8VGV4dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkuZGF0YSgpOwot
ICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07
Ci0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1NwYWNl
T3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNp
YmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgVUNoYXIgYyA9IGRvd25jYXN0PFRleHQ+KCpwcmV2
LmRlcHJlY2F0ZWROb2RlKCkpLmRhdGEoKVtwcmV2LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCld
OworICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNIVE1M
U3BhY2UoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIDogZGVwcmVjYXRlZElzQ29sbGFwc2libGVX
aGl0ZXNwYWNlKGMpKSB7CiAgICAgICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHByZXYp
KQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OworICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNjIsNyArMTE2Myw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0cmFp
bGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBz
CiAgICAgVUNoYXIgYyA9IHYuY2hhcmFjdGVyQWZ0ZXIoKTsKICAgICAvLyBUaGUgc3BhY2UgbXVz
dCBub3QgYmUgaW4gYW5vdGhlciBwYXJhZ3JhcGggYW5kIGl0IG11c3QgYmUgZWRpdGFibGUuCiAg
ICAgaWYgKCFpc0VuZE9mUGFyYWdyYXBoKHYpICYmIHYubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSkuaXNOb3ROdWxsKCkpCi0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxl
V2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6
IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgaWYgKGNvbnNp
ZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzSFRNTFNwYWNlKGMpIHx8IGMgPT0gbm9C
cmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKICAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGJhMDZmNzljYjBkM2U0MTgyNDkwYzA4NjczODgyZTVjZTI1ZWE0
MjkuLjhhOTk3ZTRkOWM2MWY0NDRlNjlkNDFiYmZlOWQ3MzNkMTU0MDNkMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM1NTksNyArMzU1OSw3IEBAIHZvaWQgRWRpdG9yOjplZGl0
b3JVSVVwZGF0ZVRpbWVyRmlyZWQoKQogICAgICAgICAgICAgVUNoYXIzMiBjID0gbmV3U3RhcnQu
Y2hhcmFjdGVyQmVmb3JlKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9u
OjpjaGFyYWN0ZXJBZnRlcigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXds
aW5lcyB0aGUgc2FtZQogICAgICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRvciwgc28gd2Ug
ZG8gYW4gaXNTdGFydE9mUGFyYWdyYXBoIGNoZWNrIGhlcmUuCi0gICAgICAgICAgICBpZiAoaXNT
cGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0
YXJ0KSkgeworICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0Jy
ZWFrU3BhY2UgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0YXJ0KSkgewogICAgICAgICAgICAg
ICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBuZXdBZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9m
V29yZChuZXdTdGFydCwgc3RhcnRXb3JkU2lkZSksIGVuZE9mV29yZChuZXdTdGFydCwgUmlnaHRX
b3JkSWZPbkJvdW5kYXJ5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IGIyMDczYWM0YzU3OTczMTE2ZTJkMDYwZjgyOGIxOWFhNTFhZjZkMGUuLmYzNmUw
NWVhZGU3MjRiYmZjN2RhOTYwMWUyZWYwOWJlZGEzM2QwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lkIEZyYW1l
U2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2Vs
ZWN0ZWQpIGNvbnN0CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0ZWQg
PyAiPT0+ICIgOiAiICAgICIsIGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAgICAg
ICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5k
ZXJlcik7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSB8fCAhdGV4dFJl
bmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CisgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgp
LmlzRW1wdHkoKSB8fCAhdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzI3RleHQgKGVtcHR5KVxuIiwgc2VsZWN0ZWQgPyAiPT0+ICIg
OiAiICAgICIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjQxLDcgKzI2
NDEsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNvbnN0
CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7CiAgICAg
ICAgIGlmIChjKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gMHhBMCB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYmIGMg
IT0gJ1wnJyk7CisgICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMg
PT0gbm9CcmVha1NwYWNlIHx8ICh1X2lzcHVuY3QoYykgJiYgYyAhPSAnLCcgJiYgYyAhPSAnLScg
JiYgYyAhPSAnXCcnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjY4Niw3ICsyNjg2LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNl
bGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKIAogICAgIGlmIChpc0Vu
ZE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKSB7CiAgICAgICAgIFVD
aGFyIGMoZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbi5jaGFyYWN0ZXJCZWZvcmUoKSk7Ci0g
ICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICBp
ZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAg
ICAgLy8gRW5kIG9mIHBhcmFncmFwaCB3aXRoIHNwYWNlLgogICAgICAgICAgICAgcmV0dXJuIFZp
c2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjcyOSw3ICsyNzI5LDcgQEAgVmlzaWJs
ZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7
CiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsK
LSAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAg
IGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAg
ICAgICAvLyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVT
ZWxlY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMjc0NCw3ICsyNzQ0LDcgQEAgVmlzaWJsZVNlbGVj
dGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlv
bihjb25zdCBWaXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAg
ICAgIH0KICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAg
ICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgIGlmIChp
c1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAv
LyBTcGFjZSBhdCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24oKTsKICAgICAgICAgfQpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBG
cmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25z
dCBWaXMKICAgICB3aGlsZSAoZW5kVmlzaWJsZVBvcyAhPSBzdGFydFZpc2libGVQb3MpIHsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzKGVuZFZpc2libGVQb3MucHJldmlvdXMoKSk7
CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlm
ICghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBlbmRWaXNpYmxlUG9zID0gcHJldmlvdXM7CiAgICAgfQpAQCAtMjgwMiw3ICsyODAy
LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbCkKICAgICAgICAgfQogICAgICAgICBVQ2hhciBj
KHBvcy5jaGFyYWN0ZXJBZnRlcigpKTsKICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIGlm
IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgaWYgKGlz
U3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgICAg
ICBzYXdTcGFjZSA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1YzlmMzYwNTc3NzFmNGU2
MmRmYmYwYWFlNzExMGFiOGY5MmIwZjZjLi4zYWYxYWNmYjMxYWY1MTc1ZWRjNWEyMjkzNzNlNzI4
YWI1ZGViOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1
cnlha292LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB1bnNp
Z25lZCB0ZXh0Tm9kZU9mZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5SYW5n
ZSkKICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gMDsKICAgICBmb3IgKHJlbmRlcmVyID0gcmVu
ZGVyZXItPnByZXZpb3VzU2libGluZygpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVy
KSkKLSAgICAgICAgICAgIHRleHRPZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpLT50ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0PFJl
bmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dCgpLmxlbmd0aCgpOwogICAgIH0KICAgICByZXR1cm4g
dGV4dE9mZnNldDsKIH0KQEAgLTY0MCw3ICs2NDAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dE5vZGUoKQogICAgICAgICBib29sIGlzTmV3VGV4dE5vZGUgPSBtX3ByZXZpb3VzU2lt
cGxlVGV4dE5vZGVJbkZsb3cgJiYgbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICE9ICZ0
ZXh0Tm9kZTsKICAgICAgICAgLy8gU2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBwb3NpdGlvbnMgYXJl
IGFsbCBhYnNvbHV0ZSB0byB0aGUgcGFyZW50IGZsb3cuCiAgICAgICAgIC8vIE9mZnNldHRpbmcg
aXMgcmVxdWlyZWQgd2hlbiBtdWx0aXBsZSByZW5kZXJlcnMgYXJlIHByZXNlbnQuCi0gICAgICAg
IG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ICs9IGlzTmV3VGV4dE5vZGUgPyBt
X3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3ctPnJlbmRlcmVyKCktPnRleHQoKS0+bGVuZ3Ro
KCkgOiAwOworICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBp
c05ld1RleHROb2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigp
LT50ZXh0KCkubGVuZ3RoKCkgOiAwOwogICAgICAgICBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJ
bkZsb3cgPSAmdGV4dE5vZGU7CiAKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9u
b2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNl
dCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRFbWl0RXh0cmFOZXdsaW5lRm9yTm9kZShOb2RlJiBub2RlKQogCiBzdGF0aWMg
aW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dEVu
ZCkKIHsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKnJlbmRlcmVyLnRleHQoKTsKKyAgICBTdHJp
bmdJbXBsJiB0ZXh0ID0gcmVuZGVyZXIudGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRl
eHQubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gdGV4dEVuZDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVT
cGFjZSh0ZXh0W2ldKSkKQEAgLTI3NjMsNCArMjc2MywyMCBAQCBSZWY8UmFuZ2U+IGZpbmRQbGFp
blRleHQoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlv
bnMgbwogICAgIHJldHVybiByYW5nZUZvck1hdGNoKHJhbmdlLCBvcHRpb25zLCBtYXRjaFN0YXJ0
LCBtYXRjaExlbmd0aCwgc2VhcmNoRm9yd2FyZCk7CiB9CiAKK2Jvb2wgZmluZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW9ucykKK3sKKyAgICBTZWFyY2hCdWZmZXIgYnVmZmVyIHsgdGFyZ2V0LCBvcHRpb25zIH07
CisgICAgU3RyaW5nVmlldyByZW1haW5pbmdUZXh0IHsgZG9jdW1lbnQgfTsKKyAgICB3aGlsZSAo
IXJlbWFpbmluZ1RleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBjaGFyYWN0ZXJzQXBw
ZW5kZWQgPSBidWZmZXIuYXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgcmVtYWluaW5nVGV4dCA9
IHJlbWFpbmluZ1RleHQuc3Vic3RyaW5nKGNoYXJhY3RlcnNBcHBlbmRlZCk7CisgICAgICAgIGlm
IChyZW1haW5pbmdUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFjaGVkQnJl
YWsoKTsKKyAgICAgICAgc2l6ZV90IG1hdGNoU3RhcnRPZmZzZXQ7CisgICAgICAgIGlmIChidWZm
ZXIuc2VhcmNoKG1hdGNoU3RhcnRPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKaW5kZXggMjNjMGI1ZWM3NWIzNzA2M2FmYzIxY2I4M2RlYWQzYmI1YTc4MGIwZC4u
ODYwZTc0Y2Y2YTUyMTE5ZmQ4NGY2ZDFjMjZjMTgyOTNhODMzMTI3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNiwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRleHQ7
CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CisKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0
IHsKIGNsYXNzIFJ1blJlc29sdmVyOwogfQpAQCAtNDcsNiArNDgsNyBAQCBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFJhbmdlKiwgVGV4
dEl0ZXJhdG9yQgogUmVmPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29uc3Qg
U3RyaW5nJiwgRmluZE9wdGlvbnMpOwogV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBmaW5kQ2xv
c2VzdFBsYWluVGV4dChjb25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBSYW5n
ZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsK
K2Jvb2wgZmluZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucyk7IC8vIExldHMgdXMgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9uIGEg
c3RyaW5nLgogCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0
aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJl
cGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCmluZGV4IDk2MjBiZmI3MTI3MGNjZGMzNjM1YWRmZGRhZmVmMzIxYTYwODk0
MGYuLmZkNzkwNjZmYmZhZTQ2YjhhYzkyMmVkMzZkY2IyMzBkNmZmZTkyYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5k
IGNvbW1hbmRUeXBlKQogICAgICAgICBVQ2hhcjMyIGMgPSBwcmV2aW91cy5jaGFyYWN0ZXJBZnRl
cigpOwogICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigp
IGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQogICAg
ICAgICAvLyB3YXkgYXMgVGV4dEl0ZXJhdG9yLCBzbyB3ZSBkbyBhbiBpc0VuZE9mUGFyYWdyYXBo
IGNoZWNrIGhlcmUuCi0gICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhB
MCB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZpb3VzKSkgeworICAgICAgICBpZiAoaXNTcGFjZU9y
TmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZp
b3VzKSkgewogICAgICAgICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eTsKICAgICAgICAgfQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChw
cmV2aW91cywgc3RhcnRXb3JkU2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKaW5kZXggNmFiY2Q0Zjk0Y2U1YmFhOWJiYjI2ZjQzNWM4M2E0ZjQyYmRiNzQ3Yy4uY2Mx
N2RkNjNlZmNkMDY3MzdhNjBkZTgwOTYzZGMxNDMzNzg2NjFhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgTm9kZSogZmluZFN0
YXJ0T2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBoaWdoZXN0Um9vdCwgTm9kZSog
c3RhcnRCbG9jaywKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkg
ewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQgaSA9IHRleHQu
bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAg
ICAgaWYgKG4gPT0gc3RhcnROb2RlICYmIG8gPCBpKQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgTm9k
ZSogZmluZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJvb3Qs
IE5vZGUqIHN0YXlJbnNpZGVCbG8KICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGlzPFRleHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5l
d2xpbmUoKSkgewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQg
byA9IG4gPT0gc3RhcnROb2RlID8gb2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbzsgaSA8
IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggMzBhZDZkYmI2NDdjOTg2MzJiOWY5MTA0YWU3ZjdjZDcwOWU0ZGNlZS4u
NmIxMzk3ZWJmNzM3YzFlZjE3NDkwNDhmZTIxNzY4NTBkNDI2NTk5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjIyNCw3ICsyMjI0LDcg
QEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFj
dGVyRGF0YSkKICAgICBib29sIHdhc1NwYWNlID0gZmFsc2U7CiAgICAgaWYgKF9jYWNoZXMtPnBy
b3BlcnR5VmFsdWVGb3JOb2RlKGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSku
c3RhcnRzV2l0aCgicHJlIikpIHsKICAgICAgICAgaWYgKHRleHRMZW5ndGggJiYgb3JpZ2luYWxT
dHJpbmcubGVuZ3RoKCkgJiYgX2ZsYWdzLmlzU29mdCkgewotICAgICAgICAgICAgdW5pY2hhciBj
ID0gb3JpZ2luYWxTdHJpbmcuYXQoMCk7CisgICAgICAgICAgICB1bmljaGFyIGMgPSBvcmlnaW5h
bFN0cmluZy5jaGFyYWN0ZXJBdCgwKTsKICAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9
PSAnXHInIHx8IGMgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0xp
bmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0Zvcm1GZWVkQ2hhcmFjdGVyIHx8IGMgPT0g
V2ViTmV4dExpbmVDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgcmFuZ2VUb1JlcGxhY2UgPSBO
U01ha2VSYW5nZSh0ZXh0TGVuZ3RoIC0gMSwgMSk7CiAgICAgICAgIH0KQEAgLTIyMzQsNyArMjIz
NCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNo
YXJhY3RlckRhdGEpCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgTENo
YXIgbm9CcmVha1NwYWNlUmVwcmVzZW50YXRpb24gPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFs
U3RyaW5nLmF0KGkpOworICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmNoYXJh
Y3RlckF0KGkpOwogICAgICAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UgPSBjID09ICcgJyB8fCBj
ID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0JyB8fCBjID09IDB4YyB8fCBjID09IDB4
MjAwYjsKICAgICAgICAgICAgIGlmIChpc1doaXRlc3BhY2UpCiAgICAgICAgICAgICAgICAgd2Fz
U3BhY2UgPSAoIXdhc0xlYWRpbmcgfHwgIXN1cHByZXNzTGVhZGluZ1NwYWNlKTsKQEAgLTIyNjAs
NyArMjI2MCw3IEBAIHZvaWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRh
dGEmIGNoYXJhY3RlckRhdGEpCiAgICAgaWYgKG91dHB1dFN0cmluZy5sZW5ndGgoKSkgewogICAg
ICAgICBTdHJpbmcgdGV4dFRyYW5zZm9ybSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2Rl
KGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0
ZXh0VHJhbnNmb3JtID09ICJjYXBpdGFsaXplIikKLSAgICAgICAgICAgIG1ha2VDYXBpdGFsaXpl
ZCgmb3V0cHV0U3RyaW5nLCAwKTsgLy8gRklYTUU6IE5lZWRzIHRvIHRha2UgbG9jYWxlIGludG8g
YWNjb3VudCB0byB3b3JrIGNvcnJlY3RseS4KKyAgICAgICAgICAgIG91dHB1dFN0cmluZyA9IGNh
cGl0YWxpemUob3V0cHV0U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2Nh
bGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICBlbHNlIGlmICh0ZXh0
VHJhbnNmb3JtID09ICJ1cHBlcmNhc2UiKQogICAgICAgICAgICAgb3V0cHV0U3RyaW5nID0gb3V0
cHV0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5l
ZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxzZSBpZiAodGV4dFRyYW5z
Zm9ybSA9PSAibG93ZXJjYXNlIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggZWIyODY2NmU4NTMzODlkNmI2Y2E1
NjFlNzE0N2M1NTNhM2UyMTJiYy4uNmEzZmU0NjA2ZDY2MGQ3MjE3ODliMmEzNmEwNjk2ODhjYmQ3
MGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlw
TWljcm9zb2Z0UHJlZml4KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8vIEl0J3MgYSBzaW1w
bGUtbWluZGVkIHdheSB0byBpZ25vcmUgdGhlIENGX0hUTUwgY2xpcGJvYXJkIGZvcm1hdCwganVz
dCBza2lwcGluZyBvdmVyIHRoZQogICAgIC8vIGRlc2NyaXB0aW9uIHBhcnQgYW5kIHBhcnNpbmcg
dGhlIGVudGlyZSBjb250ZXh0IHBsdXMgZnJhZ21lbnQuCiAgICAgaWYgKHN0cmluZy5zdGFydHNX
aXRoKCJWZXJzaW9uOiIpKSB7Ci0gICAgICAgIHNpemVfdCBsb2NhdGlvbiA9IHN0cmluZy5maW5k
SWdub3JpbmdDYXNlKCI8aHRtbCIpOworICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJpbmcu
ZmluZElnbm9yaW5nQVNDSUlDYXNlKCI8aHRtbCIpOwogICAgICAgICBpZiAobG9jYXRpb24gIT0g
bm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCBlMzEzNDE5ODQ4MGVkYmZmMTg5
OGNiMTY2OWRiZmIyZjViYzI4ODAzLi4yZjFkZTliY2VjZWY1MjBjYTExZTgwZDM2MzhmNzAwMWM3
Yjg2M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIEF1
dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgLy8gMTcuIElmIHRoZSBmaXJzdCBlaWdodCBjaGFy
YWN0ZXJzIG9mIHRoZSBpbmRleHRoIHRva2VuIGluIHRva2VucyBhcmUgbm90IGFuIEFTQ0lJIGNh
c2UtaW5zZW5zaXRpdmUKICAgICAvLyBtYXRjaCBmb3IgdGhlIHN0cmluZyAic2VjdGlvbi0iLCB0
aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgogICAgIGNvbnN0IGF1dG8mIHNl
Y3Rpb25Ub2tlbiA9IHRva2Vuc1tpbmRleF07Ci0gICAgaWYgKCFzZWN0aW9uVG9rZW4uc3RhcnRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzZWN0aW9uLSIpKQorICAgIGlmICghc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzZWN0aW9uVG9rZW4sICJzZWN0aW9uLSIpKQogICAgICAg
ICByZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAKICAgICAvLyAxOC4gTGV0IHNlY3Rpb24gYmUgdGhl
IGluZGV4dGggdG9rZW4gaW4gdG9rZW5zLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAppbmRleCA1NmQ2NzA5NzMw
NzJmYWFkYzQzNjU1ZDFjMDVjYzFhY2FmZDllZmRjLi4yYmI0MzMxNTkyNGVjY2EwZmYxY2U1M2Zj
ZWNiOGEwYjRiYWVmNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBl
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OmlzVGV4dFR5
cGUoKSBjb25zdAogYm9vbCBCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByYXdQYXR0
ZXJuID0gZWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGF0dGVybkF0
dHIpOwotICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8fCAh
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2
ZSkuaXNWYWxpZCgpKQorICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1w
dHkoKSB8fCAhSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuKS5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcgcGF0dGVybiA9ICJeKD86IiAr
IHJhd1BhdHRlcm4gKyAiKSQiOwogICAgIGludCBtYXRjaExlbmd0aCA9IDA7CiAgICAgaW50IHZh
bHVlTGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Ci0gICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSkubWF0Y2go
dmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CisgICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuKS5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3Ro
KTsKICAgICByZXR1cm4gbWF0Y2hPZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggMzFmOGFhNTVi
NmZlZDA0ODBlMjU2OGQ1NDk4ODBiYjA3ZWUyOGRjMS4uMWMyN2Y4OGI0MTBlZDE0ZTRjZWEwMmRk
N2YzYzg5N2I0YjMxOTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCiAgICAgaWYgKCFhZGRyZXNzTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24+IHJlZ0V4cChlbWFpbFBhdHRlcm4sIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZSk7CiAKICAgICBpbnQgbWF0Y2hMZW5ndGg7CiAgICAgaW50IG1hdGNoT2Zmc2V0ID0gcmVnRXhw
LmdldCgpLm1hdGNoKGFkZHJlc3MsIDAsICZtYXRjaExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGM1MjMyMjkyYTExYmNlN2NkZjI3NzkyNjdk
ZWNiNmIwZTExOTk0MTcuLjFiYzBlZTQ2YmUyYjJlMWNiY2E1MTdlNmMyZTg2OGVlN2U1MzAzNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0yMTQsNyAr
MjE0LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50KCkgY29u
c3QKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3Bh
Y2Utb25seSB0ZXh0LCBhbmQgPHBhcmFtPiB0YWdzLCBhbnkgb3RoZXIgY29udGVudCBpcyBmYWxs
YmFjayBjb250ZW50LgogICAgICAgICBpZiAoaXM8VGV4dD4oKmNoaWxkKSkgewotICAgICAgICAg
ICAgaWYgKCFkb3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkK
KyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5kYXRhKCkuaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmICghaXM8SFRNTFBhcmFtRWxlbWVudD4oKmNoaWxkKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxNZXRhRWxlbWVudD4oZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYm
IG1ldGFFbGVtZW50LmNvbnRlbnQoKS5zdGFydHNXaXRoKCJNYWMgT1MgWCBTZXJ2ZXIgV2ViIFNl
cnZpY2VzIFNlcnZlciIsIGZhbHNlKSkKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0YUVsZW1lbnQuY29udGVudCgpLCAibWFjIG9zIHgg
c2VydmVyIHdlYiBzZXJ2aWNlcyBzZXJ2ZXIiKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNob3Vs
ZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAKIGJvb2wgSFRNTE9iamVjdEVsZW1l
bnQ6Omhhc1ZhbGlkQ2xhc3NJZCgpCiB7Ci0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2
YUFwcGxldE1JTUVUeXBlKHNlcnZpY2VUeXBlKCkpICYmIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY2xhc3NpZEF0dHIpLnN0YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQorICAgIGlm
IChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSgpKSAm
JiBwcm90b2NvbElzKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NpZEF0dHIp
LCAiamF2YSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoc2hvdWxkQWxs
b3dRdWlja1RpbWVDbGFzc0lkUXVpcmsoKSkKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgTm9kZSYgY2hp
bGQpCiAgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgcmV0dXJuIHByZXZlbnRz
UGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKSk7CiAgICAg
aWYgKGlzPFRleHQ+KGNoaWxkKSkKLSAgICAgICAgcmV0dXJuICFkb3duY2FzdDxUZXh0PihjaGls
ZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gIWRvd25jYXN0PFRl
eHQ+KGNoaWxkKS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
eXBlQWhlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDc3
NGFkNTQ3Y2VjNmIzYzRhYzkxNDJkYWFjZGE0YTJjNTM4YjNmZjguLjc2NGU1MDIyMzBhN2RjOWEz
NGQ4N2NiYTY5M2FjZDY2NTQ5MDFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VHlwZUFoZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAg
LTQ2LDEzICs0NiwxMSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyB0eXBlQWhlYWRUaW1lb3V0IHsg
MV9zIH07CiBzdGF0aWMgU3RyaW5nIHN0cmlwTGVhZGluZ1doaXRlU3BhY2UoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCiAg
ICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaWYgKHN0cmluZ1tpXSAhPSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8PSAweDdGID8g
IWlzQVNDSUlTcGFjZShzdHJpbmdbaV0pIDogKHVfY2hhckRpcmVjdGlvbihzdHJpbmdbaV0pICE9
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTCkpKQorICAgICAgICBpZiAoc3RyaW5nW2ldICE9IG5vQnJl
YWtTcGFjZSAmJiAhaXNTcGFjZU9yTmV3bGluZShzdHJpbmdbaV0pKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgfQotCiAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoaSwgbGVuZ3RoIC0gaSk7
CiB9CiAKQEAgLTk1LDEwICs5Myw2IEBAIGludCBUeXBlQWhlYWQ6OmhhbmRsZUV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50LCBNYXRjaE1vZGVGbGFncyBtYXRjaE1vZGUpCiAgICAgICAgIGludCBp
bmRleCA9IChzZWxlY3RlZCA8IDAgPyAwIDogc2VsZWN0ZWQpICsgc2VhcmNoU3RhcnRPZmZzZXQ7
CiAgICAgICAgIGluZGV4ICU9IG9wdGlvbkNvdW50OwogCi0gICAgICAgIC8vIENvbXB1dGUgYSBj
YXNlLWZvbGRlZCBjb3B5IG9mIHRoZSBwcmVmaXggc3RyaW5nIGJlZm9yZSBiZWdpbm5pbmcgdGhl
IHNlYXJjaCBmb3IKLSAgICAgICAgLy8gYSBtYXRjaGluZyBlbGVtZW50LiBUaGlzIGNvZGUgdXNl
cyBmb2xkQ2FzZSB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0Ci0gICAgICAgIC8vIFN0cmlu
Zzo6c3RhcnRXaXRoIGRvZXMgbm90IGZvbGQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFRoaXMgY29k
ZSBjYW4gYmUgY2hhbmdlZAotICAgICAgICAvLyB0byB1c2Ugc3RhcnRXaXRoIG9uY2UgdGhhdCBp
cyBmaXhlZC4KICAgICAgICAgU3RyaW5nIHByZWZpeFdpdGhDYXNlRm9sZGVkKHByZWZpeC5mb2xk
Q2FzZSgpKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHRpb25Db3VudDsgKytpLCBp
bmRleCA9IChpbmRleCArIDEpICUgb3B0aW9uQ291bnQpIHsKICAgICAgICAgICAgIC8vIEZvbGQg
dGhlIG9wdGlvbiBzdHJpbmcgYW5kIGNoZWNrIGlmIGl0cyBwcmVmaXggaXMgZXF1YWwgdG8gdGhl
IGZvbGRlZCBwcmVmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggMTIxN2Q5YjU0ZjU4YjNjMzQ4NDI0OWFmNWJhMDQw
YjcyN2RjMDUzMC4uMDIzYzhmZDdmMzU0MGYxYWQ4YzcyYTZkMDU4MjlhMDMzZTE2MmJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcApAQCAtMzM2LDc2ICszMzYsNzYgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0
Q29tcGF0aWJpbGl0eU1vZGVGcm9tRG9jdHlwZShjb25zdCBTdHJpbmcmIG5hbWUsIGMKIAogICAg
IC8vIENoZWNrIGZvciBRdWlya3MgTW9kZS4KICAgICBpZiAobmFtZSAhPSAiaHRtbCIKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiKy8vU2lsbWFyaWwvL2R0ZCBodG1sIFBybyB2MHIx
MSAxOTk3MDEwMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0v
L0FkdmFTb2Z0IEx0ZC8vRFREIEhUTUwgMy4wIGFzV2VkaXQgKyBleHRlbnNpb25zLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vQVMvL0RURCBIVE1MIDMuMCBh
c1dlZGl0ICsgZXh0ZW5zaW9ucy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0
c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIExldmVsIDIvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRN
TCAyLjAgU3RyaWN0IExldmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3RyaWN0IExldmVsIDIvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3Ry
aWN0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgMi4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vSUVURi8vRFREIEhUTUwgMi4xRS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0
YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMiBGaW5hbC8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMi8v
IiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBI
VE1MIDMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRG
Ly9EVEQgSFRNTCBMZXZlbCAwLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRz
V2l0aCgiLS8vSUVURi8vRFREIEhUTUwgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDIvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZlbCAz
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFRE
IEhUTUwgU3RyaWN0IExldmVsIDAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIFN0cmljdCBMZXZl
bCAyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgU3RyaWN0IExldmVsIDMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5z
dGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTC8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01ldHJpdXMvL0RURCBNZXRyaXVzIFByZXNl
bnRhdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
TWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMi4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50
ZXJuZXQgRXhwbG9yZXIgMi4wIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5z
dGFydHNXaXRoKCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAyLjAgVGFibGVz
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0
Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMy4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhw
bG9yZXIgMy4wIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRo
KCItLy9NaWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAzLjAgVGFibGVzLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTmV0c2NhcGUgQ29tbS4gQ29y
cC4vL0RURCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vTmV0c2NhcGUgQ29tbS4gQ29ycC4vL0RURCBTdHJpY3QgSFRNTC8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5IGFuZCBBc3NvY2lhdGVzLy9E
VEQgSFRNTCAyLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCIt
Ly9PJ1JlaWxseSBhbmQgQXNzb2NpYXRlcy8vRFREIEhUTUwgRXh0ZW5kZWQgMS4wLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTydSZWlsbHkgYW5kIEFzc29j
aWF0ZXMvL0RURCBIVE1MIEV4dGVuZGVkIFJlbGF4ZWQgMS4wLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU29mdFF1YWQgU29mdHdhcmUvL0RURCBIb1RNZXRh
TCBQUk8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBIVE1MIDQuMC8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1NvZnRRdWFkLy9EVEQgSG9UTWV0YUwg
UFJPIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gSFRNTCA0LjAvLyIsIGZhbHNlKQotICAg
ICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TcHlnbGFzcy8vRFREIEhUTUwgMi4wIEV4
dGVuZGVkLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU1Ev
L0RURCBIVE1MIDIuMCBIb1RNZXRhTCArIGV4dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9TdW4gTWljcm9zeXN0ZW1zIENvcnAuLy9EVEQgSG90
SmF2YSBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
U3VuIE1pY3Jvc3lzdGVtcyBDb3JwLi8vRFREIEhvdEphdmEgU3RyaWN0IEhUTUwvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMgMTk5
NS0wMy0yNC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1cz
Qy8vRFREIEhUTUwgMy4yIERyYWZ0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMuMi8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMy4yUyBEcmFm
dC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFRE
IEhUTUwgNC4wIEZyYW1lc2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRz
V2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCBFeHBlcmltZW50YWwg
MTk5NjA3MTIvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9X
M0MvL0RURCBIVE1MIEV4cGVyaW1lbnRhbCA5NzA0MjEvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBXMyBIVE1MLy8iLCBmYWxzZSkKLSAgICAg
ICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNPLy9EVEQgVzMgSFRNTCAzLjAvLyIsIGZh
bHNlKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiKy8vc2lsbWFyaWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2Fk
dmFzb2Z0IGx0ZC8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8iKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vYXMv
L2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1s
IDIuMCBsZXZlbCAxLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9p
ZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAy
LjAgc3RyaWN0IGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vaWV0Zi8vZHRkIGh0bWwgMi4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vIikKKyAg
ICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0v
L2lldGYvL2R0ZCBodG1sIDMuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL2lldGYvL2R0ZCBodG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9p
ZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAz
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QgbGV2ZWwgMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAy
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCBzdHJpY3QvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21ldHJpdXMvL2R0ZCBt
ZXRyaXVzIHByZXNlbnRhdGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhw
bG9yZXIgMi4wIGh0bWwgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhw
bG9yZXIgMi4wIGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAy
LjAgdGFibGVzLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0
bWwgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0
bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBodG1sLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbmV0c2NhcGUgY29t
bS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVz
Ly9kdGQgaHRtbCAyLjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwg
ZXh0ZW5kZWQgMS4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4
dGVuZGVkIHJlbGF4ZWQgMS4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRh
bCBwcm8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vIikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NvZnRx
dWFkLy9kdGQgaG90bWV0YWwgcHJvIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gaHRtbCA0
LjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9zcHlnbGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3EvL2R0
ZCBodG1sIDIuMCBob3RtZXRhbCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zdW4gbWljcm9zeXN0ZW1z
IGNvcnAuLy9kdGQgaG90amF2YSBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8v
ZHRkIGhvdGphdmEgc3RyaWN0IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMgMTk5NS0wMy0y
NC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgMy4yIGRyYWZ0Ly8iKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAz
LjIgZmluYWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwg
My4ycyBkcmFmdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8iKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNj
Ly9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCBleHBlcmlt
ZW50YWwgMTk5NjA3MTIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy93M2MvL2R0ZCB3MyBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLyIp
CiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
dzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vIikKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vV2ViVGVjaHMvL0RURCBNb3ppbGxhIEhUTUwgMi4wLy8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vV2ViVGVjaHMvL0RURCBNb3ppbGxh
IEhUTUwvLyIsIGZhbHNlKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwgMi4wLy8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwvLyIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRp
b25hbC9lbiIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiaHRtbCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN5
c3RlbUlkLCAiaHR0cDovL3d3dy5pYm0uY29tL2RhdGEvZHRkL3YxMS9pYm14aHRtbDEtdHJhbnNp
dGlvbmFsLmR0ZCIpCi0gICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly8iLCBmYWxzZSkpCi0g
ICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpKSkgeworICAgICAgICB8
fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLyIpKQorICAgICAg
ICB8fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8iKSkp
IHsKICAgICAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9k
ZTo6UXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBDaGVjayBm
b3IgTGltaXRlZCBRdWlya3MgTW9kZS4KLSAgICBpZiAocHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgWEhUTUwgMS4wIEZyYW1lc2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGlj
SWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8ICghc3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vIiwgZmFsc2UpKQotICAgICAgICB8
fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RU
RCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkpKSB7CisgICAgaWYgKHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCB4aHRtbCAx
LjAgZnJhbWVzZXQvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8iKQor
ICAgICAgICB8fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8i
KSkKKyAgICAgICAgfHwgKCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0
aW9uYWwvLyIpKSkgewogICAgICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBh
dGliaWxpdHlNb2RlOjpMaW1pdGVkUXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcAppbmRleCA4YTg0Njg5MTVmZTkzMjZjOWU3MzZhN2FhNTM1YWU4ZGQzZWI0ZDI0Li44
ZDMzZWU2NjNmYjMzMDcwNGE5ODhhMjExNWMwNDMwY2IxOWUzNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXQoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKICAgICBm
b3IgKHNpemVfdCBwb3MgPSAwOyBwb3MgPCBsZW5ndGg7ICkgewotICAgICAgICBwb3MgPSB2YWx1
ZS5maW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7CisgICAgICAgIHBvcyA9IHZhbHVlLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZSgiY2hhcnNldCIsIHBvcyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90
Rm91bmQpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcAppbmRleCA5M2ZmYTViYTY0OGVjODhhODhkMzVlZTYwMDMxOTVjNzYzMDM4
ZjM0Li5hNzNlZDkzYjk5N2ZiN2I1ZGExODI4MTgyYjE0ZjdhZTJiYWFlZTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtNzE1LDExICs3MTUsMTEgQEAg
Ym9vbCBYU1NBdWRpdG9yOjppc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIGRlY29k
ZWRTbmlwcGV0KQogewogICAgIGlmIChkZWNvZGVkU25pcHBldC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9kZWNvZGVkVVJMLmZpbmQoZGVjb2RlZFNuaXBwZXQs
IDAsIGZhbHNlKSAhPSBub3RGb3VuZCkKKyAgICBpZiAobV9kZWNvZGVkVVJMLmNvbnRhaW5zSWdu
b3JpbmdBU0NJSUNhc2UoZGVjb2RlZFNuaXBwZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBpZiAobV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmICFtX2RlY29kZWRIVFRQQm9keVN1
ZmZpeFRyZWUtPm1pZ2h0Q29udGFpbihkZWNvZGVkU25pcHBldCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHkuZmluZChkZWNvZGVkU25pcHBldCwg
MCwgZmFsc2UpICE9IG5vdEZvdW5kOworICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKGRlY29kZWRTbmlwcGV0KTsKIH0KIAogYm9vbCBYU1NBdWRp
dG9yOjppc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCBhY2U2NmU1NDFjMGI4OTMwYmRl
ZmQzYmQ1OWNiMWM4N2VhMjQyMTczLi41MThlZDhiMzA2MGQwNjg5ZTI3NDQ4OTNiNDZkOWFjNDc3
NzNlOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgYm9vbCBXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogICAgIC8vIEEgV2ViVlRUIGZpbGUgaWRlbnRpZmll
ciBjb25zaXN0cyBvZiBhbiBvcHRpb25hbCBCT00gY2hhcmFjdGVyLAogICAgIC8vIHRoZSBzdHJp
bmcgIldFQlZUVCIgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgc3BhY2Ugb3IgdGFiIGNoYXJhY3Rl
ciwKICAgICAvLyBhbmQgYW55IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsaW5l
IHRlcm1pbmF0b3JzIC4uLgotICAgIGlmICghbGluZS5zdGFydHNXaXRoKGZpbGVJZGVudGlmaWVy
LCBmaWxlSWRlbnRpZmllckxlbmd0aCkpCisgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoZmlsZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGxpbmUubGVuZ3RoKCkg
PiBmaWxlSWRlbnRpZmllckxlbmd0aCAmJiAhaXNIVE1MU3BhY2UobGluZVtmaWxlSWRlbnRpZmll
ckxlbmd0aF0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKaW5kZXggNTk1ODNhOTAyODU0NGJiOTFi
MmM0NzVlM2E4NmU1ZTllOWNmMTE3OC4uZjkyYTVkODkyN2U3NjBiZjRiN2I1ZjA4ODg4ZjZhMDVk
M2U1YWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5v
ZGVGaW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2Rl
RmluZGVyLmNwcApAQCAtMTEwLDggKzExMCw4IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6
bWF0Y2hlc0VsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBTdHJpbmcgbm9kZU5h
bWUgPSBlbGVtZW50Lm5vZGVOYW1lKCk7CiAgICAgaWYgKCghbV9zdGFydFRhZ0ZvdW5kICYmICFt
X2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UobV90YWdO
YW1lUXVlcnkpKQogICAgICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmIG1fZW5kVGFnRm91bmQg
JiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShub2RlTmFtZSwgbV90YWdOYW1lUXVlcnkpKQotICAg
ICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLnN0
YXJ0c1dpdGgobV90YWdOYW1lUXVlcnksIGZhbHNlKSkKLSAgICAgICAgfHwgKCFtX3N0YXJ0VGFn
Rm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5lbmRzV2l0aChtX3RhZ05hbWVRdWVy
eSwgZmFsc2UpKSkKKyAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3Vu
ZCAmJiBub2RlTmFtZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkp
KQorICAgICAgICB8fCAoIW1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIG5vZGVO
YW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQ3
ZTJlOTNkM2Q4MWM3Yzk2MjcwNWI0MWFkYTRlNWE3N2VmOTc2MWEuLmQyY2Q4NWE3ZjI0OTk5OTli
OTM0NmY2NWQyNjdmNjQyNTAzMDkzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRPYmplY3RGb3JT
ZWxlY3RvckhlbHBlcihjCiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3Vy
Y2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hl
ZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxl
bWVudCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6
OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZ
YXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAog
ICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlNDcw
MDE2MjlhYWJkNmYzOTgxYzU5MGQ5OGYxNGVmYjIyMzU1MjljLi5kMDg2OWVmYWIxZDVjYmI0NmNm
OGVmZGExOTU3NDhjMzNhYWJhMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKQEAgLTE5NzMsMTAgKzE5NzQs
MTYgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICByZXR1cm4gV1RGTW92ZSh2YWx1ZSk7
CiB9CiAKK3N0YXRpYyBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKE5vZGUqIG5vZGUp
Cit7CisgICAgLy8gRklYTUU6IFJlc3BlY3QgaWdub3JlV2hpdGVzcGFjZSBzZXR0aW5nIGZyb20g
aW5zcGVjdG9yIGZyb250IGVuZD8KKyAgICByZXR1cm4gaXM8VGV4dD4obm9kZSkgJiYgZG93bmNh
c3Q8VGV4dD4oKm5vZGUpLmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNl
PigpOworfQorCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKE5vZGUq
IG5vZGUpCiB7CiAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAoaXNX
aGl0ZXNwYWNlKG5vZGUpKQorICAgIHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShu
b2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIG5v
ZGU7CiB9CkBAIC0xOTg1LDcgKzE5OTIsNyBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5u
ZXJOZXh0U2libGluZyhOb2RlKiBub2RlKQogewogICAgIGRvIHsKICAgICAgICAgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNwYWNlKG5vZGUpKTsKKyAg
ICB9IHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2RlKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKQEAgLTE5OTMsMTggKzIwMDAsMTUgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVyUHJldmlvdXNTaWJsaW5nKE5vZGUqIG5vZGUpCiB7CiAgICAgZG8gewogICAgICAg
ICBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNw
YWNlKG5vZGUpKTsKKyAgICB9IHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2Rl
KSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lckNoaWxkTm9kZUNvdW50KE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAw
OwotICAgIE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOwotICAgIHdoaWxlIChj
aGlsZCkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBjaGlsZCA9IGlubmVyTmV4dFNpYmxp
bmcoY2hpbGQpOwotICAgIH0KKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxk
KG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAg
Kytjb3VudDsKICAgICByZXR1cm4gY291bnQ7CiB9CiAKQEAgLTIwMTgsMTMgKzIwMjIsNiBAQCBO
b2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpCiAgICAg
cmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6
aXNXaGl0ZXNwYWNlKE5vZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBjb250
YWluc09ubHlIVE1MU3BhY2VzPwotICAgIC8vIEZJWE1FOiBSZXNwZWN0IGlnbm9yZVdoaXRlc3Bh
Y2Ugc2V0dGluZyBmcm9tIGluc3BlY3RvciBmcm9udCBlbmQ/Ci0gICAgcmV0dXJuIGlzPFRleHQ+
KG5vZGUpICYmIGRvd25jYXN0PFRleHQ+KCpub2RlKS5kYXRhKCkuY29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpOwotfQotCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjptYWluRnJhbWVET01Db250ZW50
TG9hZGVkKCkKIHsKICAgICAvLyBSZS1wdXNoIGRvY3VtZW50IG9uY2UgaXQgaXMgbG9hZGVkLgpA
QCAtMjA1Niw3ICsyMDUzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9h
ZChEb2N1bWVudCogZG9jdW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNXaGl0ZXNwYWNlKCZub2RlKSkKKyAg
ICBpZiAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoJm5vZGUpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0
IHRoZSBiaW5kaW5ncy4KQEAgLTIwODUsNyArMjA4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSYgbm9kZSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogewotICAgIGlmIChpc1doaXRlc3BhY2Uo
Jm5vZGUpKQorICAgIGlmIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSgmbm9kZSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUucGFyZW50Tm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IDYwZWI2YzdhYjM5NWQ2YmY5NDZkMDM4MTkyMmRhYjhmZTcyY2JhM2Yu
LjBhZmIyODUwZDJmY2Q3NDI2ZDA1MWFmYmEzM2FhOTA2NjM0MDdjZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTIw
Myw3ICsyMDMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNTaWJs
aW5nKE5vZGUqKTsKICAgICBzdGF0aWMgdW5zaWduZWQgaW5uZXJDaGlsZE5vZGVDb3VudChOb2Rl
Kik7CiAgICAgc3RhdGljIE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKik7Ci0gICAgc3RhdGlj
IGJvb2wgaXNXaGl0ZXNwYWNlKE5vZGUqKTsKIAogICAgIE5vZGUqIGFzc2VydE5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA3YmU5MWJlNTUzZmRm
ZjkzZTc3ZDcwMmNhODE0MTk4OGUyODg5MzE5Li4xNTNlODg0MDIxYmQ3ODMyODU4ODZmYTcyZmM4
MmM0ZTU0NjEyNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyODUsOCArMTI4NSw4IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZVRhYmxlcygpCiAgICAgCiBib29s
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlKQogewotICAgIHJldHVybiByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLnN0YXJ0c1dpdGgoImF1ZGlvLyIsIGZhbHNlKSAKLSAg
ICAgICAgfHwgcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKS5zdGFydHNXaXRoKCJ2aWRl
by8iLCBmYWxzZSk7CisgICAgYXV0byYgdHlwZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InZpZGVvLyIpOwogfQogICAgIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAKaW5kZXggZTA4YTE2YjQwNWY0
YTIyYWE4Y2ZjZjU4MTc0OWIxNGNhMDRkOGRjNS4uMGM2MTNmYTQzMDkwYjc5NjBkMGRlN2I5YWYz
Nzg3OGY0OTNkOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEJhc2U2NFV0aWxpdGllczo6YnRv
YShjb25zdCBTdHJpbmcmIHN0cmluZ1RvRW5jb2RlKQogICAgIGlmIChzdHJpbmdUb0VuY29kZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzdHJpbmdUb0Vu
Y29kZS5jb250YWluc09ubHlMYXRpbjEoKSkKKyAgICBpZiAoIXN0cmluZ1RvRW5jb2RlLmlzQWxs
TGF0aW4xKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJy
b3IgfTsKIAogICAgIHJldHVybiBiYXNlNjRFbmNvZGUoc3RyaW5nVG9FbmNvZGUubGF0aW4xKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzYzRkMDA3NzJmYTE3NzkxMDE4Mzg4ODRlN2E2MWMw
NjIwN2I0Mjc5Li5lMmUxMzEwNzVjNDU2NDViZGFkMGYxYzJlZWNkNjgxNThiNTUxMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNh
Y2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNy
b3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2Fz
ZVNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVy
bjsKICAgICBwYXR0ZXJuLmFwcGVuZCgnKCcpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJlbHMg
PSBsYWJlbHMuc2l6ZSgpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYKICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgfQogICAg
IHBhdHRlcm4uYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24ocGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICByZXR1
cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6
WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAKIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9y
TGFiZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4
cCwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9t
U3RhcnRPZkNlbGwpCkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVs
c0FnYWluc3RTdHJpbmcoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgY29uc3QgU3RyaW4K
ICAgICBTdHJpbmcgbXV0YWJsZVN0cmluZ1RvTWF0Y2ggPSBzdHJpbmdUb01hdGNoOwogCiAgICAg
Ly8gTWFrZSBudW1iZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBi
b3VuZGFyaWVzLCBlLmcuLCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9N
YXRjaCwgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRp
dmUpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24oIlxcZCIpLCAiICIpOwogICAgIG11dGFibGVTdHJpbmdUb01hdGNo
LnJlcGxhY2UoJ18nLCAnICcpOwogICAgIAogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24gcmVnRXhwID0gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggYzBjNjk3N2JkNzZkYmJlYWIxODAzY2MyNDM0ZWE0OGFlMWQwMThh
MC4uZTRlMzUyNTM2NWQxY2JkMWJmNzA1YjU2YWVhNzRiYmNlN2MxZWQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjQ4OCw3ICsyNDg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNv
dW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhyZXNob2xkKGNvbnN0IFJl
bmRlckUKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmpl
Y3QqIGRlc2NlbmRhbnQgPSAmcmVuZGVyZXI7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNj
ZW5kYW50LT5uZXh0SW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0Pigq
ZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGNvdW50ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+
KCpkZXNjZW5kYW50KS50ZXh0KCktPmxlbmd0aCgpOworICAgICAgICAgICAgY291bnQgKz0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKmRlc2NlbmRhbnQpLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGlmIChjb3VudCA+PSB0aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNTNjOTljNTc0
NzkyNmY0ZjBhZWM0OWYwY2VkZWZkMjQyYjhiNWM4NC4uOWQyZTVjY2Q0ZWIxMWQwMmQ5YjQ1N2M1
ZDAyNTU4ODQxMWFlYzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTMzMSwxNCArMzMxLDE2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlY2VpdmVEcmFn
RGF0YShjb25zdCBTZWN1cml0eU9yaWdpbiYgZHJhZ0luaXRpYXRvcikgY29uCiAvLyBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGFzIGFuIG91dGNvbWUgb2YgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTk2CiBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVz
dGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7Ci0gICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRz
V2l0aCgiZmVlZCIsIGZhbHNlKSkKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZyA9IHVybC5zdHJp
bmcoKTsKKyAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmVlZCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdXJsU3RyaW5n
LnN0YXJ0c1dpdGgoImZlZWQ6Ly8iLCBmYWxzZSkgCi0gICAgICAgIHx8IHVybFN0cmluZy5zdGFy
dHNXaXRoKCJmZWVkOmh0dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVk
Omh0dHBzOiIsIGZhbHNlKQotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHM6
aHR0cDoiLCBmYWxzZSkgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzOmh0dHBzOiIsIGZh
bHNlKQotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwOiIs
IGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoiLCBmYWxz
ZSk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmVlZDovLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nLCAiZmVlZDpodHRwOiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZDpodHRwczoiKQorICAgICAgICB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzOmh0dHA6IikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkczpo
dHRwczoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0
cmluZywgImZlZWRzZWFyY2g6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzZWFyY2g6aHR0cHM6Iik7CiB9CiAKIGJvb2wg
U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNGRhYjU0Nzk0
YjY3NzNiYzVkOTYzNWE1OGYwZjM0NDhjNzM2OGUxOS4uZTFmZGM5Yjc1MzlmOWY3NGI3OTJlNGFh
ZTJmODJhZWFjYmFlYzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGRvbWFpbiBpcyBhIHN1YmRvbWFpbiBvZiBvdXIg
aG9zdC4KLSAgICBpZiAoIWhvc3QuZW5kc1dpdGgobV9ob3N0LCBmYWxzZSkpCisgICAgaWYgKCFo
b3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV9ob3N0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgQVNTRVJUKGhvc3QubGVuZ3RoKCkgPiBtX2hvc3QubGVuZ3RoKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5jcHAKaW5kZXggNTk2MDRjNjdhY2U3N2EzNTRkNGRlYThhYWRiNTdmOTk2YmVkYTJjNi4u
N2E0MzMzZDVkNmFmODg5NjI4OGIyMDc5NTY1MDRiNmMzZjc3OWJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3Bw
CkBAIC02NCw5ICs2NCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpzY2hl
bWVNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2U6Omhvc3RNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGNvbnN0
IFN0cmluZyYgaG9zdCA9IHVybC5ob3N0KCk7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoaG9zdCwgbV9ob3N0KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9z
dEhhc1dpbGRjYXJkICYmIGhvc3QuZW5kc1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9ob3N0KSB8fCAobV9ob3N0SGFz
V2lsZGNhcmQgJiYgaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuIiArIG1faG9zdCkp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggOTIwYWQxMmQ5OGFhYTY5ZmI2MDMx
OGEzNWNkNWM4YWY2NzIzY2Q2Yi4uYzM2MDgxNWIxNGZmNGE1ODZhY2RhOGY5YjU0Yjg2MzgxZmFj
ODY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTQzNywxMCArNDM3LDEwIEBAIHN0YXRp
YyBib29sIGlzTm9uY2VDaGFyYWN0ZXIoVUNoYXIgYykKIC8vIG5vbmNlLXZhbHVlICAgICA9IGJh
c2U2NC12YWx1ZQogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZU5v
bmNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBub25jZVByZWZpeCgiJ25vbmNlLSIsIFN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICghU3RyaW5nVmlldyhiZWdpbiwgZW5k
IC0gYmVnaW4pLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShub25jZVByZWZpeC5nZXQoKSkp
CisgICAgY29uc3QgdW5zaWduZWQgbm9uY2VQcmVmaXhMZW5ndGggPSA2OworICAgIGlmICghU3Ry
aW5nVmlldyhiZWdpbiwgZW5kIC0gYmVnaW4pLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
bm9uY2UtIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBVQ2hhciogcG9zaXRp
b24gPSBiZWdpbiArIG5vbmNlUHJlZml4LmdldCgpLmxlbmd0aCgpOworICAgIGNvbnN0IFVDaGFy
KiBwb3NpdGlvbiA9IGJlZ2luICsgbm9uY2VQcmVmaXhMZW5ndGg7CiAgICAgY29uc3QgVUNoYXIq
IGJlZ2luTm9uY2VWYWx1ZSA9IHBvc2l0aW9uOwogICAgIHNraXBXaGlsZTxVQ2hhciwgaXNOb25j
ZUNoYXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7CiAgICAgaWYgKHBvc2l0aW9uID49IGVuZCB8fCBw
b3NpdGlvbiA9PSBiZWdpbk5vbmNlVmFsdWUgfHwgKnBvc2l0aW9uICE9ICdcJycpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGIzM2U4Njk3ZTI5NWI4N2U5YTkwNDcxMTk5Yzdm
NjBjOTQ1NGY0ZTMuLjU4NGY3NGJiNTQxMDEyZmY3YzllNGY0NDk5MTJmNTEyOWRkMTZkNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0xMTksNyArMTE5LDcgQEAgTlNBcnJh
eSAqRnJhbWU6OndvcmRzSW5DdXJyZW50UGFyYWdyYXBoKCkgY29uc3QKICAgICBpZiAoIWlzU3Rh
cnRPZlBhcmFncmFwaChlbmQpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9
IGVuZC5wcmV2aW91cygpOwogICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVy
KCkpOwotICAgICAgICBpZiAoIWlzd3B1bmN0KGMpICYmICFpc1NwYWNlT3JOZXdsaW5lKGMpICYm
IGMgIT0gMHhBMCkKKyAgICAgICAgaWYgKCFpc3dwdW5jdChjKSAmJiAhaXNTcGFjZU9yTmV3bGlu
ZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGVuZCA9IHN0YXJ0T2ZXb3Jk
KGVuZCk7CiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydChzdGFydE9mUGFyYWdyYXBo
KGVuZCkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jkc0luQ3VycmVu
dFBhcmFncmFwaCgpIGNvbnN0CiAgICAgICAgIGlmIChsZW5ndGggPiAxIHx8ICFpc1NwYWNlT3JO
ZXdsaW5lKHRleHRbMF0pKSB7CiAgICAgICAgICAgICBpbnQgc3RhcnRPZldvcmRCb3VuZGFyeSA9
IDA7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUodGV4dFtpXSkgfHwgdGV4dFtpXSA9PSAw
eEEwKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUodGV4dFtpXSkgfHwg
dGV4dFtpXSA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmRM
ZW5ndGggPSBpIC0gc3RhcnRPZldvcmRCb3VuZGFyeTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHdvcmRMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IGNodW5rID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRPZldvcmRCb3VuZGFyeSwgd29yZExl
bmd0aCkuY3JlYXRlTlNTdHJpbmcoKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBOU0FycmF5ICpGcmFt
ZTo6d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBjb25zdAogICAgIGlmIChbd29yZHMgY291bnRd
ID4gMCAmJiBpc0VuZE9mUGFyYWdyYXBoKHBvc2l0aW9uKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBo
KHBvc2l0aW9uKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlv
bi5wcmV2aW91cygpOwogICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCkp
OwotICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSAweEEwKQorICAgICAg
ICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UpCiAgICAgICAg
ICAgICBbd29yZHMgcmVtb3ZlTGFzdE9iamVjdF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50VHlwZS5jcHAKaW5kZXggOTk2MWNkZGQ1MGZmNzdiNDdmN2MwMzczMmY5MmUw
OWVlOWUyM2IwMS4uYWM3NWU2Zjk1MTFmMWYxYjdkZTEwNDk4MTAzNTA2NWI0ZDViYmIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBT
dHJpbmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUp
IGNvbnN0CiAgICAgLy8gYSBNSU1FIHR5cGUgY2FuIGhhdmUgb25lIG9yIG1vcmUgInBhcmFtPXZh
bHVlIiBhZnRlciBhIHNlbWktY29sb24sIGFuZCBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIGJ5
IHNlbWktY29sb25zCiAgICAgc2l6ZV90IHNlbWkgPSBzdHJpcHBlZFR5cGUuZmluZCgnOycpOwog
ICAgIGlmIChzZW1pICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHNpemVfdCBzdGFydCA9IHN0cmlw
cGVkVHlwZS5maW5kKHBhcmFtZXRlck5hbWUsIHNlbWkgKyAxLCBmYWxzZSk7CisgICAgICAgIHNp
emVfdCBzdGFydCA9IHN0cmlwcGVkVHlwZS5maW5kSWdub3JpbmdBU0NJSUNhc2UocGFyYW1ldGVy
TmFtZSwgc2VtaSArIDEpOwogICAgICAgICBpZiAoc3RhcnQgIT0gbm90Rm91bmQpIHsKICAgICAg
ICAgICAgIHN0YXJ0ID0gc3RyaXBwZWRUeXBlLmZpbmQoJz0nLCBzdGFydCArIHBhcmFtZXRlck5h
bWUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IG5vdEZvdW5kKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDViYWIxYmJl
Njc0MGUzMjgyNTJlYjEwMWM5NTczYzczYTI5MDFlYTYuLmE3OTllODcxYzBlMzVmMjk1MGM1MzY5
YjI3Yjg1ZGE3ZDA5ZjU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCkBAIC00OTEsMTUgKzQ5MSwxNSBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAK
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRGb250TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZm9udExlbiA9IDU7
Ci0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoImZvbnQvIikp
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZvbnRMZW5ndGggPSA1OworICAgIGlmICghc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImZvbnQvIikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgc3ViVHlwZSA9IG1pbWVUeXBlLnN1YnN0cmlu
Zyhmb250TGVuKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3Vi
VHlwZSwgIndvZmYiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
dWJUeXBlLCAid29mZjIiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdWJUeXBlLCAib3RmIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3ViVHlwZSwgInR0ZiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN1YlR5cGUsICJzZm50Iik7CisgICAgYXV0byBzdWJ0eXBlID0gU3RyaW5nVmlldyB7IG1p
bWVUeXBlIH0uc3Vic3RyaW5nKGZvbnRMZW5ndGgpOworICAgIHJldHVybiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAid29mZiIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHN1YnR5cGUsICJ3b2ZmMiIpCisgICAgICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YnR5cGUsICJvdGYiKQorICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAidHRmIikKKyAgICAgICAgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3VidHlwZSwgInNmbnQiKTsKIH0KIAogYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQpAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKU09OTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBXaGVuIGRldGVjdGluZyAranNvbiBlbnN1cmUgdGhlcmUgaXMgYSBub24t
ZW1wdHkgdHlwZSAvIHN1YnR5cGUgcHJlY2VlZGluZyB0aGUgc3VmZml4LgotICAgIGlmIChtaW1l
VHlwZS5lbmRzV2l0aCgiK2pzb24iLCBmYWxzZSkgJiYgbWltZVR5cGUubGVuZ3RoKCkgPj0gOCkg
eworICAgIGlmIChtaW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIranNvbiIpICYm
IG1pbWVUeXBlLmxlbmd0aCgpID49IDgpIHsKICAgICAgICAgc2l6ZV90IHNsYXNoUG9zaXRpb24g
PSBtaW1lVHlwZS5maW5kKCcvJyk7CiAgICAgICAgIGlmIChzbGFzaFBvc2l0aW9uICE9IG5vdEZv
dW5kICYmIHNsYXNoUG9zaXRpb24gPiAwICYmIHNsYXNoUG9zaXRpb24gPD0gbWltZVR5cGUubGVu
Z3RoKCkgLSA2KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NTYsMTMgKzU1NiwxMiBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVU
eXBlKQogICAgICAgICB8fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZShtaW1lVHlwZSkgLy8gUmVu
ZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KLSAgICAgICAgfHwgKG1pbWVUeXBlLnN0YXJ0c1dpdGgo
InRleHQvIiwgZmFsc2UpCisgICAgICAgIHx8IChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAidGV4dC8iKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikKICAgICAgICAgICAgICYmICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikKICAgICAg
ICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpOwogfQogCi0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFy
KFVDaGFyIGMpCiB7CiAgICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAy
MDQ1OiAwLTlhLXpBLVpfLSt+ISRee318LiUnYCMmKgpAQCAtNTc1LDcgKzU3NCw3IEBAIGJvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1s
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0
aCgiK3htbCIsIGZhbHNlKSkKKyAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoIit4bWwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc2l6ZV90IHNsYXNo
UG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7CkBAIC01OTksOSArNTk4LDkgQEAgYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogICAgIC8vIG9mIHVzaW5nIGEgaGFzaCBzZXQuCiAgICAgLy8gQW55IG9mIHRoZSBNSU1F
IHR5cGVzIGJlbG93IG1heSBiZSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIHNwZWNpZmljIHZl
cnNpb25zIG9mIHRoZSBKVk0sCiAgICAgLy8gd2hpY2ggaXMgd2h5IHdlIHVzZSBzdGFydHNXaXRo
KCkKLSAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1qYXZhLWFw
cGxldCIsIGZhbHNlKQotICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlv
bi94LWphdmEtYmVhbiIsIGZhbHNlKQotICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRoKCJh
cHBsaWNhdGlvbi94LWphdmEtdm0iLCBmYWxzZSk7CisgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImFwcGxpY2F0aW9uL3gtamF2YS1iZWFuIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtamF2YS12bSIpOwog
fQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyNiw3ICs2MjUsNyBAQCBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIGlmIChp
c1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNTdXBwb3J0ZWRKU09O
TUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtaW1l
VHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKSkKKyAgICBpZiAoc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvIikpCiAgICAgICAgIHJldHVybiAh
aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmNwcAppbmRleCAyZWQ0NGIwMmQ5YTRkZDMyZWNlNTk5ZTExMzYy
NWJiOWNkY2M0ODhlLi4yZjM1NWE5N2VkZDZlYTIxYzY0NGFiNzBiOTEwM2RlMmRlOTM5N2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIFVSTDo6c2V0
UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
Ym9vbCBjb250YWluc09ubHlBU0NJSShTdHJpbmdWaWV3IHN0cmluZykKK3N0YXRpYyBib29sIGlz
QWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
ICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nLmxlbmd0aCgpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgYm9vbCBhcHBl
bmRFbmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcp
CiAgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgogICAgIGNvbnN0IHVuc2ln
bmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKICAgICAKLSAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgY29udGFpbnNPbmx5QVNDSUkoc3RyaW5n
KSkgeworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBp
c0FsbEFTQ0lJKHN0cmluZykpIHsKICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5j
cHAKaW5kZXggZWQ1NjA0NTFhY2IxZjM1NWViOTQ0YzU0MzlhYmFjYzQzMDc5MjYxZi4uNjcyODYx
MmVkMDMyNDlmZjk3NjI4ODIxNWRjOWI0NTEzY2E5N2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCkBAIC0yNTM4LDE5ICsyNTM4LDEwIEBAIFZlY3RvcjxMQ2hhciwgVVJM
UGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4gVVJMUGFyc2VyOjpwZXJjZW50RGVjb2Rl
KGNvbnN0CiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBjb250YWluc09ubHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBBU1NFUlQo
IXN0cmluZy5pc051bGwoKSk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwmIGRvbWFpbiwg
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pCiB7CiAgICAgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVm
ZmVyU2l6ZT4gYXNjaWk7Ci0gICAgaWYgKGNvbnRhaW5zT25seUFTQ0lJKGRvbWFpbikpIHsKKyAg
ICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9t
YWluLmxlbmd0aCgpOwogICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwpAQCAtMjc2
Nyw3ICsyNzU4LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpKQogICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsK
LSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSShkb21haW4sIGhvc3RCZWdpbik7
CisgICAgYXV0byBhc2NpaURvbWFpbiA9IGRvbWFpblRvQVNDSUkoKmRvbWFpbi5pbXBsKCksIGhv
c3RCZWdpbik7CiAgICAgaWYgKCFhc2NpaURvbWFpbiB8fCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBv
aW50KGFzY2lpRG9tYWluLnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVmVj
dG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGFzY2lpRG9tYWluVmFsdWUgPSBh
c2NpaURvbWFpbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAppbmRleCAx
YTUzYzhjN2UwNmIyNzU3NDQ5MDE0OTMxYTE3MWU3NTY1ZGI5NDMyLi4wNmQwMWMxY2YyMjUyYjc2
YWNlMTE0MzU5NWNmNjUxNDBjNWI3ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
aApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZElu
dGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFp
blRvQVNDSUkoY29uc3QgU3RyaW5nJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZh
dWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBWZWN0b3I8
TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFy
Kiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAgICAgc3RhdGljIFZlY3RvcjxMQ2hhciwg
ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXpl
X3QpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJp
bmdWaWV3IGlucHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCA3ODg5ZDhhMTRkYmM4NmE5MjUyNGU1MWU5ZWVlOWZhZGY2MTk2
NmMxLi41ZmZlM2QyOTU0ZmVlOGJjOWE2OTUzNWQ3NThiZDVhMTc4ZDIxMmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05MzMs
OCArOTMzLDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICAvLyBzbG93IGNvbm5lY3Rp
b25zLiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDA5PgogICAg
IGlmIChjbGllbnQgJiYgY2xpZW50LT5tZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNpZmljSGFja3Mo
KSkgewogICAgICAgICBTdHJpbmcgaG9zdCA9IGNsaWVudC0+bWVkaWFQbGF5ZXJEb2N1bWVudEhv
c3QoKTsKLSAgICAgICAgaWYgKChob3N0LmVuZHNXaXRoKCIueW91dHViZS5jb20iLCBmYWxzZSkg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgInlvdXR1YmUuY29tIikpCi0g
ICAgICAgICAgICAmJiAoY29udGFpbmVyVHlwZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFs
c2UpIHx8IGNvbnRhaW5lclR5cGUuc3RhcnRzV2l0aCgidmlkZW8veC1mbHYiLCBmYWxzZSkpKQor
ICAgICAgICBpZiAoKGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnlvdXR1YmUuY29t
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgInlvdXR1YmUuY29tIikp
CisgICAgICAgICAgICAmJiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250
YWluZXJUeXBlLCAidmlkZW8vd2VibSIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29udGFpbmVyVHlwZSwgInZpZGVvL3gtZmx2IikpKQogICAgICAgICAgICAgcmV0dXJu
IElzTm90U3VwcG9ydGVkOwogICAgIH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZiZTExM2NmYjk1MjljZjNiOTIy
N2EyNmQ3NWM5MjY1ZDc5YzIyNjMuLmQyNzgwYzk4ZmNmMjQ0NmZhZjkyMDdlZDU1MjdmYmZlZGUz
MzFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IFJlZ3VsYXJFeHByZXNzaW9uJiB2YWxpZEtleVN5c3RlbVJFKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29tXFwuYXBwbGVc
XC5mcHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4ga2V5U3lzdGVtUkUoIl5j
b21cXC5hcHBsZVxcLmZwc1xcLlsyM11fXFxkKyg/OixcXGQrKSokIiwgSlNDOjpZYXJyOjpUZXh0
Q2FzZUluc2Vuc2l0aXZlKTsKICAgICByZXR1cm4ga2V5U3lzdGVtUkU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAppbmRleCBmYjBlY2UzYzc0YTY5YmM1ZWMyYWQ3NTdlMmU1NDk5YmRkYmFh
MWFhLi4xZjJiNWY1ZDBiYTg1MWIyMTM5NTRmODQ4NDdkOTNhNDJiMGE1OWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCkBAIC02ODUsNyArNjg1LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNo
ZTo6c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3Qg
QXQKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBnZWV6YVBsYWluKCJH
ZWV6YVBybyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGdlZXphQm9sZCgiR2VlemFQcm8tQm9sZCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGZvciAoU3RyaW5nKiBt
YXRjaFdvcmQgOiBtYXRjaFdvcmRzKSB7Ci0gICAgICAgIGlmIChmYW1pbHkuY29udGFpbnMoKm1h
dGNoV29yZCwgZmFsc2UpKQorICAgICAgICBpZiAoZmFtaWx5LmNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoKm1hdGNoV29yZCkpCiAgICAgICAgICAgICByZXR1cm4gZm9udEZvckZhbWlseShkZXNj
cmlwdGlvbiwgaXNGb250V2VpZ2h0Qm9sZChkZXNjcmlwdGlvbi53ZWlnaHQoKSkgPyBnZWV6YUJv
bGQgOiBnZWV6YVBsYWluKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMjQ2YTI4YmM3NjMyMzNhZjZkMmMxMjQwZTBlOGJiZjNj
ZmYwYTBkYS4uZjNkZTI3ZjNlOGYzMTZkMWYzN2JiNGQzZjE3MzFhMTcyNDNiYWY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkUmVqZWN0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIFFU
S2l0IHdpbGwgcmV0dXJuIG5vbi12aWRlbyBNSU1FIHR5cGVzIHdoaWNoIGl0IGNsYWltcyB0byBz
dXBwb3J0LCBidXQgd2hpY2ggd2UKICAgICAvLyBkbyBub3Qgc3VwcG9ydCBpbiB0aGUgPHZpZGVv
PiBlbGVtZW50LiBEaXNjbGFpbSBhbGwgbm9uIHZpZGVvLyBvciBhdWRpby8gdHlwZXMuCi0gICAg
cmV0dXJuICF0eXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIsIGZhbHNlKSAmJiAhdHlwZS5zdGFydHNX
aXRoKCJhdWRpby8iLCBmYWxzZSk7CisgICAgcmV0dXJuICFzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKSAmJiAhc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIik7CiB9CiAKIHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBjcmVhdGVGaWxlVHlwZXNTZXQoTlNBcnJheSAqZmls
ZVR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAK
aW5kZXggZGYyNWY1OTNkZWM4MzM5ODA5NTRmMjZiYmIwYmJkZmM2ZTA1OWMxMy4uMGU0YWM0YmJl
MWM0OTVjYzFkZWRmN2RlMjM1MzVkN2E2N2YwZDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXJzWzJdLCBHQzNEcwogewogICAgIExPRyhXZWJHTCwgIk9yaWdpbmFsIFNoYWRlckluZm9M
b2c6XG4lcyIsIGxvZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24gcmVnRXhwKCJ3ZWJnbF9bMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIiwgVGV4dENh
c2VTZW5zaXRpdmUpOworICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnRXhwKCJ3
ZWJnbF9bMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIik7CiAKICAgICBTdHJpbmdCdWlsZGVyIHBy
b2Nlc3NlZExvZzsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tCmluZGV4IDNmNDMxNzIzOGVkZTMzNzZkZWFiNmNhMDljYThhYWFiZjg0MTgw
ZDQuLjgxMzgwY2NhMzQ3MTRkZDQzN2VjMDZmMWQxOGQ1YjI4YzdmMmVkMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtNDgsNyArNDgs
NyBAQCBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRv
bWFpbikKICAgICBpZiAoW2RvbWFpbiBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc10pCiAgICAgICAg
IHJldHVybiBkb21haW47CiAKLSAgICBpZiAoIWRvbWFpbi5jb250YWluc09ubHlBU0NJSSgpKQor
ICAgIGlmICghZG9tYWluLmlzQWxsQVNDSUkoKSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKICAg
ICAKICAgICBjb25zdCBhdXRvJiBsb3dlcmNhc2VEb21haW4gPSBkb21haW4uY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLm1tCmluZGV4IGE4MmM1NmJkMTM2MDVlNjM2MzU4MDljYzUxNDAyMGJhYjBm
NTc1NmMuLjNmMTRmNDI5N2JjOWJmNmEwYjY1NTlhZDUzMDA5YWMwY2RkNjA2YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAt
MjM4LDcgKzIzOCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmco
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIGNoYWxsZW5nZSA9IGNoYWxsZW5nZVN0cmluZy5j
b250YWluc09ubHlBU0NJSSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkgOiAiIjsKKyAgICBh
dXRvIGNoYWxsZW5nZSA9IGNoYWxsZW5nZVN0cmluZy5pc0FsbEFTQ0lJKCkgPyBjaGFsbGVuZ2VT
dHJpbmcuYXNjaWkoKSA6ICIiOwogCiAgICAgcmV0dXJuIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2UsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJs
Lmhvc3QoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMubW0KaW5kZXggYjg5ZmM2ZTQxZWY1NmJiODJmN2JiZmE5MDY2NmRmNjM4ZDg3YWQ1Zi4u
YmYwNDhjZWRhZTc2ZmEwMGRkZmY5Y2U5NGU0OWQ5YTRhMzkzYzk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyBTdHJpbmcgd2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgCiBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiB3aWxkY2FyZFN0cmluZykKIHsKLSAgICByZXR1cm4g
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3
aWxkY2FyZFN0cmluZyksIFRleHRDYXNlSW5zZW5zaXRpdmUpLm1hdGNoKHN0cmluZykgIT0gLTE7
CisgICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBh
dHRlcm5TdHJpbmcod2lsZGNhcmRTdHJpbmcpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRp
dmUpLm1hdGNoKHN0cmluZykgIT0gLTE7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAKaW5kZXggNDBhNjE3NzI4ODg4M2UzODk3NWRkMmExYzQ4MTM2MTc5N2ViMDU3Zi4u
YmQwYWE3OWE4MzY0MzliMDMyYjE3Y2MxNTcwNTUwYzQ0MGVkMmRiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCBhZGRT
dHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkgJiYgc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgY29uc3QgdWludDhfdCBudWxs
Qnl0ZSA9IDA7CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIHNoYTEuYWRkQnl0ZXMoJm51bGxCeXRlLCAxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNw
cAppbmRleCA3YjIyM2U3ODg1OWI2NGNlM2Q2ZTk3ZmE3ZjdkNDI4YTUzNjdmNjZkLi5jOTEzMDE5
NzQwMGM5MTg2OTI2ZWE4NjM2MWQ4OWMyZjgxNTdlNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0zMzAsMTAgKzMz
MCw4IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVz
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgaWYgKCFyZXN1bHQubm9DYWNoZSkg
ewogICAgICAgICAvLyBIYW5kbGUgUHJhZ21hOiBuby1jYWNoZQogICAgICAgICAvLyBUaGlzIGlz
IGRlcHJlY2F0ZWQgYW5kIGVxdWl2YWxlbnQgdG8gQ2FjaGUtY29udHJvbDogbm8tY2FjaGUKLSAg
ICAgICAgLy8gRG9uJ3QgYm90aGVyIHRva2VuaXppbmcgdGhlIHZhbHVlLCBpdCBpcyBub3QgaW1w
b3J0YW50Ci0gICAgICAgIFN0cmluZyBwcmFnbWFWYWx1ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFk
ZXJOYW1lOjpQcmFnbWEpOwotCi0gICAgICAgIHJlc3VsdC5ub0NhY2hlID0gcHJhZ21hVmFsdWUu
Y29udGFpbnMoIm5vLWNhY2hlIiwgZmFsc2UpOworICAgICAgICAvLyBEb24ndCBib3RoZXIgdG9r
ZW5pemluZyB0aGUgdmFsdWU7IGhhbmRsaW5nIHRoYXQgZXhhY3RseSByaWdodCBpcyBub3QgaW1w
b3J0YW50LgorICAgICAgICByZXN1bHQubm9DYWNoZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpQcmFnbWEpLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoIm5vLWNhY2hlIik7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggZjYzOWI4MjI5MWFjMjM1MGJhZjhjODZjMWM5Y2I5
MzRmMjI1Nzg5OS4uMDdmYjcxOGEzMTE1OWY0NGZmNjlkMjI5YjBmMjc3ODU0MmRjNjcwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAg
LTIxOSw3ICsyMTksNyBAQCBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZy
ZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCkKICAgICAgICAgKytwb3M7CiAgICAgICAg
IHNraXBXaGl0ZVNwYWNlKHJlZnJlc2gsIHBvcyk7CiAgICAgICAgIHVuc2lnbmVkIHVybFN0YXJ0
UG9zID0gcG9zOwotICAgICAgICBpZiAocmVmcmVzaC5maW5kKCJ1cmwiLCB1cmxTdGFydFBvcywg
ZmFsc2UpID09IHVybFN0YXJ0UG9zKSB7CisgICAgICAgIGlmIChyZWZyZXNoLmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgidXJsIiwgdXJsU3RhcnRQb3MpID09IHVybFN0YXJ0UG9zKSB7CiAgICAgICAg
ICAgICB1cmxTdGFydFBvcyArPSAzOwogICAgICAgICAgICAgc2tpcFdoaXRlU3BhY2UocmVmcmVz
aCwgdXJsU3RhcnRQb3MpOwogICAgICAgICAgICAgaWYgKHJlZnJlc2hbdXJsU3RhcnRQb3NdID09
ICc9JykgewpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZmluZENoYXJzZXRJbk1lZGlhVHlwZShj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFyc2V0UG9zLCB1CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbWVkaWFUeXBlLmxlbmd0aCgpOwogICAgIAogICAgIHdoaWxlIChw
b3MgPCBsZW5ndGgpIHsKLSAgICAgICAgcG9zID0gbWVkaWFUeXBlLmZpbmQoImNoYXJzZXQiLCBw
b3MsIGZhbHNlKTsKKyAgICAgICAgcG9zID0gbWVkaWFUeXBlLmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZSgiY2hhcnNldCIsIHBvcyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQgfHwgcG9zID09
IDApIHsKICAgICAgICAgICAgIGNoYXJzZXRMZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNTMyLDEwICs1MzIsMTEgQEAgYm9vbCBwYXJzZVJhbmdlKGNvbnN0IFN0cmluZyYgcmFuZ2Us
IGxvbmcgbG9uZyYgcmFuZ2VPZmZzZXQsIGxvbmcgbG9uZyYgcmFuZ2VFbmQKICAgICByYW5nZU9m
ZnNldCA9IHJhbmdlRW5kID0gcmFuZ2VTdWZmaXhMZW5ndGggPSAtMTsKIAogICAgIC8vIFRoZSAi
Ynl0ZXMiIHVuaXQgaWRlbnRpZmllciBzaG91bGQgYmUgcHJlc2VudC4KLSAgICBzdGF0aWMgY29u
c3QgY2hhciBieXRlc1N0YXJ0W10gPSAiYnl0ZXM9IjsgCi0gICAgaWYgKCFyYW5nZS5zdGFydHNX
aXRoKGJ5dGVzU3RhcnQsIGZhbHNlKSkKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYnl0ZXNM
ZW5ndGggPSA2OworICAgIGlmICghc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShy
YW5nZSwgImJ5dGVzPSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIGJ5dGVS
YW5nZSA9IHJhbmdlLnN1YnN0cmluZyhzaXplb2YoYnl0ZXNTdGFydCkgLSAxKTsKKyAgICAvLyBG
SVhNRTogVGhlIHJlc3Qgb2YgdGhpcyBzaG91bGQgdXNlIFN0cmluZ1ZpZXcuCisgICAgU3RyaW5n
IGJ5dGVSYW5nZSA9IHJhbmdlLnN1YnN0cmluZyhieXRlc0xlbmd0aCk7CiAKICAgICAvLyBUaGUg
Jy0nIGNoYXJhY3RlciBuZWVkcyB0byBiZSBwcmVzZW50LgogICAgIGludCBpbmRleCA9IGJ5dGVS
YW5nZS5maW5kKCctJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDk3MDAyNzBhYmYxZTJmODQ2NDBhZGMyYmVk
NWIwZjI2MDZhNGIwYjUuLjE0MDBhZjdlNTkxMDhkNjhlMGExZGFiMDU4MTI5OWU2MzUzMjdiNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uY3BwCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVj
dG9yPGNoYXI+JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIC8vIEZpbmQgdGhlIG1h
cmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAtLT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50
IC0tPiIsIGFjY291bnRpbmcgZm9yIGJyb3dzZXIgcXVpcmtzLgogc3RhdGljIFN0cmluZyBleHRy
YWN0TWFya3VwRnJvbUNGSFRNTChjb25zdCBTdHJpbmcmIGNmaHRtbCkKIHsKLSAgICB1bnNpZ25l
ZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKLSAgICB1bnNp
Z25lZCB0YWdTdGFydCA9IGNmaHRtbC5maW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQs
IGZhbHNlKTsKKyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5maW5kSWdub3JpbmdB
U0NJSUNhc2UoIjxodG1sIik7CisgICAgdW5zaWduZWQgdGFnU3RhcnQgPSBjZmh0bWwuZmluZEln
bm9yaW5nQVNDSUlDYXNlKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQpOwogICAgIHVuc2ln
bmVkIGZyYWdtZW50U3RhcnQgPSBjZmh0bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSArIDE7Ci0gICAg
dW5zaWduZWQgdGFnRW5kID0gY2ZodG1sLmZpbmQoImVuZGZyYWdtZW50IiwgZnJhZ21lbnRTdGFy
dCwgZmFsc2UpOworICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kSWdub3JpbmdBU0NJ
SUNhc2UoImVuZGZyYWdtZW50IiwgZnJhZ21lbnRTdGFydCk7CiAgICAgdW5zaWduZWQgZnJhZ21l
bnRFbmQgPSBjZmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwogICAgIHJldHVybiBjZmh0
bWwuc3Vic3RyaW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCku
c3RyaXBXaGl0ZVNwYWNlKCk7CiB9CkBAIC02MzAsOSArNjMwLDkgQEAgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGNm
aHRtbCkKICAgICAvLyBvYnRhaW4gYmFzZVVSTCBpZiBwcmVzZW50CiAgICAgU3RyaW5nIHNyY1VS
TFN0cigic291cmNlVVJMOiIpOwogICAgIFN0cmluZyBzcmNVUkw7Ci0gICAgdW5zaWduZWQgbGlu
ZVN0YXJ0ID0gY2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CisgICAgdW5zaWduZWQg
bGluZVN0YXJ0ID0gY2ZodG1sLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzcmNVUkxTdHIpOwogICAg
IGlmIChsaW5lU3RhcnQgIT0gLTEpIHsKLSAgICAgICAgdW5zaWduZWQgc3JjRW5kID0gY2ZodG1s
LmZpbmQoIlxuIiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVuc2lnbmVkIHNyY0VuZCA9
IGNmaHRtbC5maW5kKCdcbicsIGxpbmVTdGFydCk7CiAgICAgICAgIHVuc2lnbmVkIHNyY1N0YXJ0
ID0gbGluZVN0YXJ0K3NyY1VSTFN0ci5sZW5ndGgoKTsKICAgICAgICAgU3RyaW5nIHJhd1NyY1VS
TCA9IGNmaHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQsIHNyY0VuZC1zcmNTdGFydCk7CiAgICAgICAg
IHJlcGxhY2VOQlNQV2l0aFNwYWNlKHJhd1NyY1VSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlk
aVJ1bi5jcHAKaW5kZXggYmE4M2Y5YzEyYjdmNWMzNmJiOWYzNTY3ODY2ZTI1MzExYTdlZDNkNS4u
NGFlY2QxOTk4MTMyOTAyMGVjNTkyZGVkMTZhNjg1ODQ1ZjFjYWQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9CaWRpUnVuLmNwcApAQCAtNDEsNyArNDEsNyBAQCBCaWRpUnVuOjpCaWRpUnVuKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBzdG9wLCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBCaWRp
Q29udAogI2lmbmRlZiBOREVCVUcKICAgICBiaWRpUnVuQ291bnRlci5pbmNyZW1lbnQoKTsKICNl
bmRpZgotICAgIEFTU0VSVCghaXM8UmVuZGVyVGV4dD4obV9yZW5kZXJlcikgfHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0b3ApIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpLnRl
eHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKCFpczxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKSB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RvcCkgPD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obV9yZW5k
ZXJlcikudGV4dCgpLmxlbmd0aCgpKTsKICAgICAvLyBTdG9yZWQgaW4gYmFzZSBjbGFzcyB0byBz
YXZlIHNwYWNlLgogICAgIG1faGFzSHlwaGVuID0gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYWNiOWVkY2MyMmVhYTA5ODE5ZGVmNjE0
NzNkZDQ4MWQxYTY4OWE4NS4uZGVkZWY4ZTVlOGM4ZDA4Yjc2ZDc0NDQ4ZDQ5ZWU3NWU2OTUxNGZk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMzk0
LDcgKzM5NCw3IEBAIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBpZiAo
ZWxlbWVudC5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LnNl
cnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkuZW5kc1dpdGgoIi5wZGYiLCBmYWxz
ZSkpKQorICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlKCkgPT0gImFwcGxpY2F0aW9uL3BkZiIg
fHwgKGVsZW1lbnQuc2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpKQogICAgICAgICByZXR1cm4gdXJsOwogICAgIHJl
dHVybiBVUkwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAppbmRleCA1OGViNGRkOTRmODUxNjc2ZWQxMjU1M2RkYTIzOGUzYWVhOTUyNjNmLi42ODI5NmQ0
YzRkOGU2ZWZjZjM4Mzk1MDc2MDgyMTdkNjQ4YjE3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgZmxvYXQgSW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RD
aGlsZCwgSW5saW4KICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkLT5yZW5kZXJlcigp
KSkgewogICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpjaGlsZCk7CiAgICAgICAgICAgICBSZW5kZXJUZXh0JiByZW5kZXJUZXh0ID0gdGV4dEJveC5y
ZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKHJlbmRlclRleHQudGV4dExlbmd0aCgpKSB7Cisg
ICAgICAgICAgICBpZiAocmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAobmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQu
Y2hhcmFjdGVyQXQodGV4dEJveC5zdGFydCgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0ICs9IHRleHRCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS53b3JkU3BhY2luZygp
OwogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhaXNTcGFjZU9yTmV3bGluZShy
ZW5kZXJUZXh0LmNoYXJhY3RlckF0KHRleHRCb3guZW5kKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggMDhlYjJhYjhhNGFhOWZkYWI3MjdiMzcyZWE1
NWE4ZjI5NDRlM2VjZS4uN2Y3OTM0ZDdjYzc0NmFkNjk5YjY1ZWU4ZmQyM2MxYmUyNDRhNzQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTM0Miw3ICsz
NDIsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZpcnN0SW5jbHVkaW5nRW1w
dHlJbmxpbmVzKFJlbmRlckVsZW1lbnQmIHJvb3QpCiBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRv
cjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUoKQogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsK
LSAgICBBU1NFUlQobV9wb3MgPD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpLnRl
eHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKG1fcG9zIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpt
X3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpOwogICAgICsrbV9wb3M7CiB9CiAKQEAgLTM5Niw3
ICszOTYsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRvcjo6aW5jcmVtZW50KElubGluZUJp
ZGlSZXNvbHZlciogcmVzb2x2ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXM8UmVuZGVy
VGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIGZhc3RJbmNyZW1lbnRJblRleHROb2RlKCk7
Ci0gICAgICAgIGlmIChtX3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50
ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmIChtX3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+KCpt
X3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIGJpZGlOZXh0IGNhbiByZXR1cm4gbnVsbHB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDJhMTcwYTk4M2I4MWZkNWQ5NTQzZWU3OTg2ODlk
NTg5NGEwMDBkN2QuLjlkMTM0ODA5ZDQxNjRkNWIzODg0OTZiYzgwYjI0YmNkNTNkZGYyYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTMxNCw3ICsz
MTQsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lz
TFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsbwogCiBib29sIElubGluZVRleHRCb3g6Omlz
TGluZUJyZWFrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNl
cnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYgKCpyZW5kZXJlcigpLnRleHQoKSlbc3RhcnQo
KV0gPT0gJ1xuJzsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGlu
ZSgpICYmIGxlbigpID09IDEgJiYgcmVuZGVyZXIoKS50ZXh0KClbc3RhcnQoKV0gPT0gJ1xuJzsK
IH0KIAogYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLApA
QCAtNjE3LDcgKzYxNyw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRl
eHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICBhdXRvIHN0YXJ0ID0gcmVuZGVy
ZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwogICAgIGF1dG8gZW5kID0g
cmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc2Vs
ZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKLSAgICAgICAgZW5k
ID0gcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4
dCgpLmxlbmd0aCgpOwogICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVj
dDo6U2VsZWN0aW9uRW5kKQogICAgICAgICBzdGFydCA9IDA7CiAgICAgcmV0dXJuIHsgY2xhbXBl
ZE9mZnNldChzdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9OwpAQCAtMTA4MiwxNSArMTA4Miwx
NSBAQCBTdHJpbmcgSW5saW5lVGV4dEJveDo6dGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwg
Ym9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9
IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CiAgICAgICAgIGlmIChpZ25vcmVDb21iaW5lZFRleHQp
Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0
LCBtX2xlbik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5n
KG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAgcmV0dXJuIGNvbWJpbmVkVGV4dC0+Y29tYmluZWRT
dHJpbmdGb3JSZW5kZXJpbmcoKTsKICAgICB9CiAgICAgaWYgKGhhc0h5cGhlbigpKSB7CiAgICAg
ICAgIGlmIChpZ25vcmVIeXBoZW4pCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0
KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVy
ZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKG1fc3RhcnQs
IG1fbGVuKSwgbGluZVN0eWxlKCkuaHlwaGVuU3RyaW5nKCkpOwogICAgIH0KLSAgICByZXR1cm4g
cmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgcmV0dXJu
IHJlbmRlcmVyKCkudGV4dCgpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CiB9CiAKIGlubGlu
ZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGI5NTU4
NjkxOWU3MzMyMmUxODg4MGMzMDI4Mzc3NzhmODM4MWY0ZTkuLmY0OTJmMTgwMWJjZTYxMTc1MTU4
YzBmNWU5M2ZlOTU3MDNjZDI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMzU0OCw3ICszNTQ4LDcgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYKIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3Ag
PSBvZmZzZXQgKyBsZW5ndGg7Ci0gICAgQVNTRVJUKHN0b3AgPD0gdGV4dC50ZXh0TGVuZ3RoKCkp
OworICAgIEFTU0VSVChzdG9wIDw9IHRleHQudGV4dCgpLmxlbmd0aCgpKTsKICAgICByZXR1cm4g
Y29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5bGUsIGV4
cGFuc2lvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggNzk3NTdlNzRjNjk3Zjg2MmZhMGY4NjQwOGI3OTJiMmE2Y2NiZGViNi4uYjI2
ZDY3MmJhMDhjNjliZWY5MjJjNzJhYzhlYWRkYmVjMGI1ZGY0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdExvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgpAQCAtMzY3MSwxMyArMzY3MiwxNCBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB9CiAK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWaXNp
YmxlUmVuZGVyVGV4dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGlmICgh
aXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBh
dXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpOwotICAgIHJl
dHVybiAhcmVuZGVyVGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5kZXJU
ZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJldHVybiAhcmVuZGVy
VGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5kZXJUZXh0LnRleHQoKS5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogfQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQpA
QCAtMzc4Nyw2ICszNzg5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdENvbXB1dGVk
Rm9udFNpemVzKGZsb2F0IHNpemUsIGZsb2F0IHZpc2libGVXaWR0aCkKICAgICAgICAgZGVzY2Vu
ZGFudCA9IFJlbmRlck9iamVjdFRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4odGV4dCwg
dGhpcyk7CiAgICAgfQogfQorCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAog
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91
dENoaWxkcmVuKQpAQCAtNDI2NCwxOCArNDI2NywxNSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNh
bAogICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcuIElmIHRob3NlIGFyZSBnb2luZyB0
byBiZSBzdHJpcHBlZCBvdXQsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB0aGV5IHNob3VsZG4n
dCBiZSBjb25zaWRlcmVkIGluIHRoZSBicmVha2FibGUgY2hhcgogICAgICAgICAgICAgICAgIC8v
IGNoZWNrLgotICAgICAgICAgICAgICAgIGJvb2wgaGFzQnJlYWthYmxlQ2hhciwgaGFzQnJlYWs7
Ci0gICAgICAgICAgICAgICAgZmxvYXQgYmVnaW5NaW4sIGVuZE1pbjsKLSAgICAgICAgICAgICAg
ICBib29sIGJlZ2luV1MsIGVuZFdTOwotICAgICAgICAgICAgICAgIGZsb2F0IGJlZ2luTWF4LCBl
bmRNYXg7CiAgICAgICAgICAgICAgICAgYm9vbCBzdHJpcHBpbmdCZWdpbldTID0gc3RyaXBGcm9u
dFNwYWNlczsKLSAgICAgICAgICAgICAgICByZW5kZXJUZXh0LnRyaW1tZWRQcmVmV2lkdGhzKGlu
bGluZU1heCwgYmVnaW5NaW4sIGJlZ2luV1MsIGVuZE1pbiwgZW5kV1MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzQnJlYWthYmxlQ2hhciwgaGFzQnJlYWssIGJlZ2lu
TWF4LCBlbmRNYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRN
aW4sIGNoaWxkTWF4LCBzdHJpcEZyb250U3BhY2VzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdp
ZHRocyA9IHJlbmRlclRleHQudHJpbW1lZFByZWZlcnJlZFdpZHRocyhpbmxpbmVNYXgsIHN0cmlw
RnJvbnRTcGFjZXMpOworCisgICAgICAgICAgICAgICAgY2hpbGRNaW4gPSB3aWR0aHMubWluOwor
ICAgICAgICAgICAgICAgIGNoaWxkTWF4ID0gd2lkdGhzLm1heDsKIAogICAgICAgICAgICAgICAg
IC8vIFRoaXMgdGV4dCBvYmplY3Qgd2lsbCBub3QgYmUgcmVuZGVyZWQsIGJ1dCBpdCBtYXkgc3Rp
bGwgcHJvdmlkZSBhIGJyZWFraW5nIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgICAgIGlmICgh
aGFzQnJlYWsgJiYgIWNoaWxkTWF4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvV3Jh
cCAmJiAoYmVnaW5XUyB8fCBlbmRXUykpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpZHRocy5o
YXNCcmVhayAmJiAhY2hpbGRNYXgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9XcmFw
ICYmICh3aWR0aHMuYmVnaW5XUyB8fCB3aWR0aHMuZW5kV1MpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgs
IGlubGluZU1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC00Mjk0LDE0ICs0Mjk0LDE0IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQgfHwgaGFzUmVt
YWluaW5nTmVnYXRpdmVUZXh0SW5kZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRpID0gdGV4
dEluZGVudC5jZWlsVG9GbG9hdCgpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbiArPSB0
aTsKLSAgICAgICAgICAgICAgICAgICAgYmVnaW5NaW4gKz0gdGk7CisgICAgICAgICAgICAgICAg
ICAgIHdpZHRocy5iZWdpbk1pbiArPSB0aTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJdCB0
aGUgdGV4dCBpbmRlbnQgbmVnYXRpdmUgYW5kIGxhcmdlciB0aGFuIHRoZSBjaGlsZCBtaW5pbXVt
LCB3ZSByZS11c2UgdGhlIHJlbWFpbmRlcgogICAgICAgICAgICAgICAgICAgICAvLyBpbiBmdXR1
cmUgbWluaW11bSBjYWxjdWxhdGlvbnMsIGJ1dCB1c2luZyB0aGUgbmVnYXRpdmUgdmFsdWUgYWdh
aW4gb24gdGhlIG1heGltdW0KICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBsZWFkIHRvIHVu
ZGVyLWNvdW50aW5nIHRoZSBtYXggcHJlZiB3aWR0aC4KICAgICAgICAgICAgICAgICAgICAgaWYg
KCFhZGRlZFRleHRJbmRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9
IHRpOwotICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5NYXggKz0gdGk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NYXggKz0gdGk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAg
LTQzMTYsNDggKzQzMTYsNDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHN0cmlwcGluZ0JlZ2luV1MgPyByZW5kZXJU
ZXh0LmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6IDA7CiAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IGhhbmdTdGFydFdpZHRoID0gcmVuZGVyVGV4dC5oYW5nYWJsZVB1bmN0
dWF0aW9uU3RhcnRXaWR0aChzdGFydEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRN
aW4gLT0gaGFuZ1N0YXJ0V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luTWluIC09IGhh
bmdTdGFydFdpZHRoOworICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NaW4gLT0gaGFu
Z1N0YXJ0V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4IC09IGhhbmdTdGFydFdp
ZHRoOwotICAgICAgICAgICAgICAgICAgICBiZWdpbk1heCAtPSBoYW5nU3RhcnRXaWR0aDsKKyAg
ICAgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4IC09IGhhbmdTdGFydFdpZHRoOwogICAg
ICAgICAgICAgICAgICAgICBhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBubyBicmVha2FibGUgY2hhcmFjdGVycyBhdCBhbGwsCiAgICAgICAgICAgICAgICAgLy8g
dGhlbiB0aGlzIGlzIHRoZSBlYXN5IGNhc2UuIFdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIGN1cnJl
bnQKICAgICAgICAgICAgICAgICAvLyBtaW4gYW5kIG1heCBhbmQgY29udGludWUuCi0gICAgICAg
ICAgICAgICAgaWYgKCFoYXNCcmVha2FibGVDaGFyKQorICAgICAgICAgICAgICAgIGlmICghd2lk
dGhzLmhhc0JyZWFrYWJsZUNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiArPSBj
aGlsZE1pbjsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
V2UgaGF2ZSBhIGJyZWFrYWJsZSBjaGFyYWN0ZXIuIE5vdyB3ZSBuZWVkIHRvIGtub3cgaWYKICAg
ICAgICAgICAgICAgICAgICAgLy8gd2Ugc3RhcnQgYW5kIGVuZCB3aXRoIHdoaXRlc3BhY2UuCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChiZWdpbldTKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh3aWR0aHMuYmVnaW5XUykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIHRoZSBj
dXJyZW50IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBw
cmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0gYmVn
aW5NaW47CisgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0gd2lkdGhzLmJlZ2lu
TWluOwogICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVk
V2lkdGgobWluTG9naWNhbFdpZHRoLCBpbmxpbmVNaW4pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hpbGRNaW4gLT0gdGk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVNaW4gPSBjaGlsZE1pbjsKIAotICAgICAgICAgICAgICAgICAgICBpZiAo
ZW5kV1MpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRocy5lbmRXUykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgZW5kIGluIHdoaXRlc3BhY2UsIHdoaWNoIG1lYW5zIHdl
IGNhbiBlbmQgb3VyIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxv
Z2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRCcmVha0xpbmVBZnRlclRleHQgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlubGluZU1pbiA9IGVuZE1pbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlubGluZU1pbiA9IHdpZHRocy5lbmRNaW47CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRCcmVha0xpbmVBZnRlclRleHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGhhc0JyZWFrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlubGluZU1heCArPSBiZWdpbk1heDsKKyAgICAgICAgICAgICAgICBpZiAo
d2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAgICAgICAgICAgICAgIGlubGluZU1heCArPSB3aWR0
aHMuYmVnaW5NYXg7CiAgICAgICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZl
cnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgaW5saW5lTWF4KTsKICAgICAgICAgICAgICAgICAg
ICAgbWF4TG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBjaGls
ZE1heCk7Ci0gICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IGVuZE1heDsKKyAgICAgICAg
ICAgICAgICAgICAgaW5saW5lTWF4ID0gd2lkdGhzLmVuZE1heDsKICAgICAgICAgICAgICAgICAg
ICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRTdGFy
dFB1bmN0dWF0aW9uSGFuZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC00Mzg4
LDggKzQzODgsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgIGlmIChzdHlsZVRvVXNl
LmNvbGxhcHNlV2hpdGVTcGFjZSgpKQogICAgICAgICBzdHJpcFRyYWlsaW5nU3BhY2UoaW5saW5l
TWF4LCBpbmxpbmVNaW4sIHRyYWlsaW5nU3BhY2VDaGlsZCk7CiAgICAgCi0gICAgaWYgKGNhbkhh
bmdQdW5jdHVhdGlvbkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RUZXh0LT50ZXh0TGVuZ3RoKCkg
PiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNoaWxkID09
IGxhc3RUZXh0ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygp
IDogbGFzdFRleHQtPnRleHRMZW5ndGgoKSAtIDE7CisgICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlv
bkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RUZXh0LT50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7Cisg
ICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNoaWxkID09IGxhc3RUZXh0
ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDogbGFzdFRl
eHQtPnRleHQoKS5sZW5ndGgoKSAtIDE7CiAgICAgICAgIGZsb2F0IGVuZEhhbmdXaWR0aCA9IGxh
c3RUZXh0LT5oYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGgoZW5kSW5kZXgpOwogICAgICAgICBp
bmxpbmVNaW4gLT0gZW5kSGFuZ1dpZHRoOwogICAgICAgICBpbmxpbmVNYXggLT0gZW5kSGFuZ1dp
ZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAppbmRleCBiNzM2ZDRjMWRiMjdjZmRlMGY5NWMyMWRlMDI5ZDY4ZWQxZTZlYjA2Li4x
MTAwYjZmZTJmZmNkMWUyY2E4MTM0MDM5NTlkNDE0MTE3NzMzMDE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMjQ0LDE1
ICsyNDQsMTMgQEAgSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVMaW5lQm94
ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmYKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgYm9v
bCBlbmRzV2l0aEFTQ0lJU3BhY2VzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgZW5kKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGlubGluZSBib29sIGVuZHNXaXRoSFRNTFNwYWNlcyhjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgZW5kKQogewotICAg
IHdoaWxlIChpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1twb3NdKSkgewotICAgICAgICBwb3MrKzsK
LSAgICAgICAgaWYgKHBvcyA+PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBwb3NpdGlvbjsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGlmICgh
aXNIVE1MU3BhY2UoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBi
aWRpUnVucykKQEAgLTI2MCwxOCArMjU4LDE0IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRl
eHRSZW5kZXJlcihjb25zdCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMpCiAgICAgQmlk
aVJ1biogcnVuID0gYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpOwogICAgIGlmICghcnVuKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3MgPSBydW4tPnN0b3AoKTsKLSAg
ICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gcnVuLT5yZW5kZXJlcigpOwotICAgIGlm
ICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocnVu
LT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFJlbmRlclRl
eHQmIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcik7Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKHBvcyA+PSBs
ZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHJlbmRlclRleHQuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQuY2hhcmFj
dGVyczgoKSwgcG9zLCBsZW5ndGgpOwotICAgIHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJl
bmRlclRleHQuY2hhcmFjdGVyczE2KCksIHBvcywgbGVuZ3RoKTsKKyAgICBhdXRvJiB0ZXh0ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKS50ZXh0KCk7CisgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBydW4tPnN0b3AoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxl
bmd0aCgpOworICAgIGlmICh0ZXh0LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZW5kc1dpdGhI
VE1MU3BhY2VzKHRleHQuY2hhcmFjdGVyczgoKSwgcG9zaXRpb24sIGxlbmd0aCk7CisgICAgcmV0
dXJuIGVuZHNXaXRoSFRNTFNwYWNlcyh0ZXh0LmNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVu
Z3RoKTsKIH0KIAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5l
KEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZv
KQpAQCAtODg5LDcgKzg4Myw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlu
bGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJvCiAgICAgICAgICAg
ICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4pCiAg
ICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoKnRoaXMsIHRleHRC
b3gsIHByZXZpb3VzUnVuLCBydW4tPm5leHQoKSwgcmVuZGVyVGV4dC5zdHJpbmdWaWV3KHJ1bi0+
bV9zdGFydCwgcnVuLT5tX3N0b3ApLCBydW4tPmJveCgpLT5kaXJlY3Rpb24oKSk7CiAKLSAgICAg
ICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkgewor
ICAgICAgICAgICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IHJlbmRlclRleHQudGV4dCgpLmxlbmd0
aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFydW4tPm1fc3RhcnQgJiYgbmVlZHNXb3JkU3Bh
Y2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQocnVuLT5tX3N0
YXJ0KSkpCiAgICAgICAgICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGxpbmVTdHls
ZSgqcmVuZGVyVGV4dC5wYXJlbnQoKSwgbGluZUluZm8pLmZvbnRDYXNjYWRlKCkud29yZFNwYWNp
bmcoKTsKICAgICAgICAgICAgICAgICAvLyBydW4tPm1fc3RhcnQgPT0gcnVuLT5tX3N0b3Agc2hv
dWxkIG9ubHkgYmUgdHJ1ZSBpZmYgdGhlIHJ1biBpcyBhIHJlcGxhY2VkIHJ1biBmb3IgYmlkaTog
aXNvbGF0ZS4KQEAgLTEwNTYsMTAgKzEwNTAsMTAgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJs
b2NrRmxvdzo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGkK
IAogICAgIGNvbnN0IFJlbmRlclRleHQmIGxhc3RUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
bGFzdE9iamVjdCk7CiAgICAgdW5zaWduZWQgZmlyc3RTcGFjZTsKLSAgICBpZiAobGFzdFRleHQu
aXM4Qml0KCkpCi0gICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxh
c3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0ZXJzOCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgp
LCB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpOworICAgIGlmIChsYXN0VGV4dC50ZXh0KCkuaXM4
Qml0KCkpCisgICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RU
ZXh0LCBsYXN0VGV4dC50ZXh0KCkuY2hhcmFjdGVyczgoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3Rh
cnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKICAgICBlbHNlCi0gICAgICAgIGZpcnN0
U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0
ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3Rv
cCgpKTsKKyAgICAgICAgZmlyc3RTcGFjZSA9IGZpbmRGaXJzdFRyYWlsaW5nU3BhY2UobGFzdFRl
eHQsIGxhc3RUZXh0LnRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3Rh
cnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKIAogICAgIGlmIChmaXJzdFNwYWNlID09
IHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
ODU0LDcgKzE4NDgsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWlu
ZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdAogICAgICAgICAgICAgICAg
IGlmICghZGlydGllZEJ5RmxvYXQgJiYgKCFwcmV2Um9vdEJveC0+ZW5kc1dpdGhCcmVhaygpCiAg
ICAgICAgICAgICAgICAgICAgIHx8ICFwcmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKGlzPFJlbmRlclRleHQ+KCpwcmV2Um9vdEJveC0+bGluZUJyZWFr
T2JqKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHByZXZSb290Qm94LT5saW5lQnJlYWtQb3Mo
KSA+PSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpKS50
ZXh0TGVuZ3RoKCkpKSkgeworICAgICAgICAgICAgICAgICAgICAmJiBwcmV2Um9vdEJveC0+bGlu
ZUJyZWFrUG9zKCkgPj0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJl
YWtPYmooKSkudGV4dCgpLmxlbmd0aCgpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IHByZXZpb3VzIGxpbmUgZGlkbid0IGJyZWFrIGNsZWFubHkgb3IgYnJva2UgYXQgYSBuZXdsaW5l
CiAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCwgc28gdHJlYXQg
aXQgYXMgZGlydHkgdG9vLgogICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGluZSA9IHByZXZS
b290Qm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJp
bmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5j
cHAKaW5kZXggODM4NmVhZjI4NjM1YjM5M2Y0MzAyNGQ2MWVjOTNhZjY3NDRkZTI0ZS4uOWNmNGZi
OGVkYzJhMjU4NzM3ZDQzMDA2MTdmOGU5YjM2MjE4NmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9p
ZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgpCiAgICAgCiAgICAgR2x5
cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93OwogICAgIGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5k
cyA9IHRydWU7Ci0gICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0TGVu
Z3RoKCksIGhvcml6b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAg
ZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0KCkubGVuZ3RoKCksIGhvcml6
b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CiAKICAgICBmbG9hdCBiZXN0
Rml0RGVsdGEgPSBjb21iaW5lZFRleHRXaWR0aCAtIGVtV2lkdGg7CiAgICAgYXV0byBiZXN0Rml0
RGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJlbmRl
ckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dElmTmVlZGVkKCkKICAgICAgICAgICAgIGNvbXByZXNz
ZWRGb250LnVwZGF0ZShmb250U2VsZWN0b3IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBn
bHlwaE92ZXJmbG93LmxlZnQgPSBnbHlwaE92ZXJmbG93LnRvcCA9IGdseXBoT3ZlcmZsb3cucmln
aHQgPSBnbHlwaE92ZXJmbG93LmJvdHRvbSA9IDA7Ci0gICAgICAgICAgICBmbG9hdCBydW5XaWR0
aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHRMZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAs
IG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgIGZsb2F0IHJ1bldpZHRoID0g
UmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dCgpLmxlbmd0aCgpLCBjb21wcmVzc2VkRm9udCwgMCwg
bnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOwogICAgICAgICAgICAgaWYgKHJ1bldpZHRoIDw9IGVt
V2lkdGgpIHsKICAgICAgICAgICAgICAgICBjb21iaW5lZFRleHRXaWR0aCA9IHJ1bldpZHRoOwog
ICAgICAgICAgICAgICAgIG1faXNDb21iaW5lZCA9IHRydWU7CkBAIC0xNzgsNyArMTc4LDcgQEAg
dm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgpCiAgICAgICAgICAg
ICBjb21wcmVzc2VkRm9udC51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZ2x5cGhPdmVyZmxvdy50b3AgPSBnbHlwaE92
ZXJmbG93LnJpZ2h0ID0gZ2x5cGhPdmVyZmxvdy5ib3R0b20gPSAwOwotICAgICAgICAgICAgZmxv
YXQgcnVuV2lkdGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGNvbXByZXNz
ZWRGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBmbG9hdCBy
dW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHQoKS5sZW5ndGgoKSwgY29tcHJlc3Nl
ZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKICAgICAgICAgICAgIGlmIChydW5X
aWR0aCA8PSBlbVdpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29tYmluZWRUZXh0V2lkdGggPSBy
dW5XaWR0aDsKICAgICAgICAgICAgICAgICBtX2lzQ29tYmluZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTk4ZmFlOWMzMzQ1NTBlNWJhOTg0
Mzc4NTI5YWQ0NWQ2ZjhiMDg3OS4uMjQwNzdmMjA0YWJkZDA4ZTc3NmJiYjBlZTllMDFkN2E3MmI3
NzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03Niw2
ICs3Niw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmgi
CkBAIC02NDQ3LDcgKzY0NDgsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVOb25MYXllckRlc2Nl
bmRhbnRzUGFpbnRlZENvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZAogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudXNlclNlbGVjdCgpICE9IFNFTEVDVF9OT05FKQogICAg
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0SGFzUGFpbnRlZENvbnRlbnQoKTsKIAotICAgICAgICAg
ICAgaWYgKCFyZW5kZXJUZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIXJlbmRlclRleHQudGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNIVE1MU3BhY2U+KCkpIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhhc1BhaW50ZWRD
b250ZW50KCk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5uZWVkVG9EZXRlcm1pbmVT
dWJwaXhlbEFudGlhbGlhc2VkVGV4dFN0YXRlKCkgJiYgc3R5bGVIYXNTbW9vdGhpbmdUZXh0TW9k
ZShjaGlsZC5zdHlsZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAppbmRleCAwMzYwY2Q3ZTZjZmU2NWU4NTk1ZWExZWIxMWI4MmZjMGIyNzlhOWFhLi40YzRk
OWFiY2I1M2EzMjY2YWNhYjk2MDMyOTMzM2E2MTc5NmVhODk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTYsMzggKzExNiw0NiBAQCBIVE1MU2Vs
ZWN0RWxlbWVudCYgUmVuZGVyTGlzdEJveDo6c2VsZWN0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwog
fQogCitzdGF0aWMgRm9udENhc2NhZGUgYm9sZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQpCit7CisgICAgYXV0byBkZXNjcmlwdGlvbiA9IGZvbnQuZm9udERl
c2NyaXB0aW9uKCk7CisgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRl
cldlaWdodCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEZvbnRDYXNjYWRlIHsgZGVzY3JpcHRpb24s
IGZvbnQubGV0dGVyU3BhY2luZygpLCBmb250LndvcmRTcGFjaW5nKCkgfTsKKyAgICByZXN1bHQu
dXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwogdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgaWYgKG1f
b3B0aW9uc0NoYW5nZWQpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxp
c3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKLSAgICAgICAgaW50IHNpemUg
PSBudW1JdGVtcygpOwotICAgICAgICAKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbaV07CisgICAgICAgIGF1dG8mIG5vcm1hbEZvbnQgPSBz
dHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+
IGJvbGRGb250OworICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCku
bGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0OwotICAgICAgICAgICAgRm9u
dENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAgICAgICBX
VEY6OkZ1bmN0aW9uPGNvbnN0IEZvbnRDYXNjYWRlJigpPiBzZWxlY3RGb250ID0gWyZub3JtYWxG
b250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAgICAgICAgIHJldHVybiBu
b3JtYWxGb250OworICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9u
RWxlbWVudD4oKmVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1M
T3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwo
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50
KSkgewogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50
PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRlc2Ny
aXB0aW9uID0gaXRlbUZvbnQuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb24uc2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICBpdGVtRm9udCA9IEZvbnRDYXNjYWRlKGRlc2NyaXB0aW9uLCBpdGVtRm9udC5sZXR0
ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOwotICAgICAgICAgICAgICAgIGl0
ZW1Gb250LnVwZGF0ZSgmZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBh
cHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gQ2FuJ3QgdGV4dCBkaXJlY3Rpb24gYWZm
ZWN0IHRoZSB3aWR0aD8KLSAgICAgICAgICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwotICAgICAg
ICAgICAgICAgIGZsb2F0IHRleHRXaWR0aCA9IGl0ZW1Gb250LndpZHRoKHRleHRSdW4pOwotICAg
ICAgICAgICAgICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIHRleHRXaWR0aCk7CisgICAgICAg
ICAgICAgICAgc2VsZWN0Rm9udCA9IFt0aGlzLCAmbm9ybWFsRm9udCwgJmJvbGRGb250XSAoKSAt
PiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWJvbGRGb250
KQorICAgICAgICAgICAgICAgICAgICAgICAgYm9sZEZvbnQgPSBib2xkZXIoZG9jdW1lbnQoKSwg
bm9ybWFsRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBib2xkRm9udC52YWx1ZSgp
OworICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0ZXh0
ID0gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7CisgICAgICAgICAgICBh
dXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxp
bmdFeHBhbnNpb24pOworICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgc2VsZWN0
Rm9udCgpLndpZHRoKHRleHRSdW4pKTsKICAgICAgICAgfQotICAgICAgICBtX29wdGlvbnNXaWR0
aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYod2lkdGgpKTsKKyAgICAgICAgLy8gRklYTUU6IElz
IGNlaWxpbmcgcmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdlIGJlIGRvaW5nIHNvbWUga2luZCBvZiBy
b3VuZGluZyBpbnN0ZWFkPworICAgICAgICBtX29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGlu
dD4oc3RkOjpjZWlsKHdpZHRoKSk7CiAgICAgICAgIG1fb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTsK
LSAgICAgICAgCisKICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAKICAg
ICAgICAgY29tcHV0ZUZpcnN0SW5kZXhlc1Zpc2libGVJblBhZGRpbmdUb3BCb3R0b21BcmVhcygp
OwpAQCAtNDEyLDcgKzQyMCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGl0
ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnRl
eHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0
R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAgaXRlbVRleHQgPSBkb3du
Y2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5ncm91cExhYmVsVGV4
dCgpOwotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsKKyAg
ICBpdGVtVGV4dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsK
IAogICAgIENvbG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAmJiBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggOGFlYTczM2ViZmE2
N2EyNmRkMGFmYzk3ZGEwM2Q5ZjA0N2FlNzEwZC4uMjRjZDMyM2NkZDA2MDE2MjFhMjUwZDFiODU2
YTIyOTEyYzNlOGMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0
IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8v
IHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVy
U3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOwotICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4
dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6
IExUUjsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CkBAIC0x
NDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAg
ICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBFVW5pY29kZUJpZGkgdW5p
Y29kZUJpZGk7CiAgICAgICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVjdGVkT3B0aW9uQ291bnQo
KnRoaXMpICE9IDEpIHsKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYg
bV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdI
VF9UT19MRUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IChtX2J1dHRv
blRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9
PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOwogICAgICAgICAgICAgdW5pY29kZUJpZGkg
PSBVQk5vcm1hbDsKICAgICAgICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlKSB7CiAgICAgICAg
ICAgICBkaXJlY3Rpb24gPSBtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKTsKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsK
LSAgICAgICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7CisgICAgICAg
IHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKICAgICAgICAg
aWYgKHRoZW1lKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSkgewogICAgICAgICAg
ICAgLy8gQWRkIGluIHRoZSBvcHRpb24ncyB0ZXh0IGluZGVudC4gIFdlIGNhbid0IGNhbGN1bGF0
ZSBwZXJjZW50YWdlIHZhbHVlcyBmb3Igbm93LgogICAgICAgICAgICAgZmxvYXQgb3B0aW9uV2lk
dGggPSAwOwpAQCAtNDQ2LDE5ICs0NDYsMTggQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6ZGlkVXBk
YXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKIAogU3RyaW5nIFJlbmRlck1lbnVMaXN0
OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9y
PEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsK
KyAgICBhdXRvJiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7CiAgICAg
aWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBTdHJpbmcgaXRlbVN0cmluZzsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlz
dEl0ZW1zW2xpc3RJbmRleF07Ci0gICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVt
ZW50KSkKLSAgICAgICAgaXRlbVN0cmluZyA9IGRvd25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+
KCplbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwotICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRpb25F
bGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsK
LQotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwotICAg
IHJldHVybiBpdGVtU3RyaW5nOworICAgIGF1dG8mIGVsZW1lbnQgPSAqbGlzdEl0ZW1zW2xpc3RJ
bmRleF07CisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAg
ICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkuZ3Jv
dXBMYWJlbFRleHQoKTsKKyAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVu
dCkpCisgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxl
bWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOworCisgICAgcmV0dXJuIGFw
cGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwogfQogCiBTdHJpbmcg
UmVuZGVyTWVudUxpc3Q6Oml0ZW1MYWJlbCh1bnNpZ25lZCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBkMmNkZjQyNGQwNzYyZGZmMDJmOTJmZTA5YTQw
MjkwNmQwOTkyMjFjLi41NjNkMmNhMzgyZWNkZWU2Y2JmMjJiZWYxYTEyNTdkYjM2ZmFjYTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlw
aGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKQEAgLTQ2LDEzICs0NywxMyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC0xNDEsMzIgKzE0MiwzMiBAQCBzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJUZXh0KiwgV2Vh
a1B0cjxSZW5kZXJJbmxpbmU+PiYgaW5saW5lV3JhcHBlckZvckRpc3BsYQogICAgIHJldHVybiBt
YXA7CiB9CiAKLXZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2
aW91cykKK1N0cmluZyBjYXBpdGFsaXplKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBVQ2hhciBwcmV2
aW91c0NoYXJhY3RlcikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1
c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2Nh
bGUuCiAKLSAgICBpZiAoc3RyaW5nLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlm
IChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdHJpbmc7CiAKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwotICAgIGNvbnN0IFN0cmluZ0ltcGwmIHN0cmlu
Z0ltcGwgPSAqc3RyaW5nLT5pbXBsKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOworICAgIGF1dG8mIHN0cmluZ0ltcGwgPSAqc3RyaW5nLmltcGwoKTsKIAogICAgIGlm
IChsZW5ndGggPj0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAg
ICBDUkFTSCgpOwogCiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzdHJpbmdXaXRoUHJldmlvdXMo
bGVuZ3RoICsgMSk7Ci0gICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0gcHJldmlvdXMgPT0gbm9C
cmVha1NwYWNlID8gJyAnIDogcHJldmlvdXM7CisgICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0g
cHJldmlvdXNDaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlID8gJyAnIDogcHJldmlvdXNDaGFyYWN0
ZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxlbmd0aCArIDE7IGkrKykgewotICAg
ICAgICAvLyBSZXBsYWNlICZuYnNwIHdpdGggYSByZWFsIHNwYWNlIHNpbmNlIElDVSBubyBsb25n
ZXIgdHJlYXRzICZuYnNwIGFzIGEgd29yZCBzZXBhcmF0b3IuCisgICAgICAgIC8vIFJlcGxhY2Ug
Tk8gQlJFQUsgU1BBQ0Ugd2l0aCBhIHJlYWwgc3BhY2Ugc2luY2UgSUNVIGRvZXMgbm90IHRyZWF0
IGl0IGFzIGEgd29yZCBzZXBhcmF0b3IuCiAgICAgICAgIGlmIChzdHJpbmdJbXBsW2kgLSAxXSA9
PSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSAnICc7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ1dpdGhQcmV2aW91c1tpXSA9IHN0cmlu
Z0ltcGxbaSAtIDFdOwogICAgIH0KIAotICAgIFVCcmVha0l0ZXJhdG9yKiBib3VuZGFyeSA9IHdv
cmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nV2l0aFByZXZpb3VzLmNoYXJhY3RlcnMo
KSwgbGVuZ3RoICsgMSkpOworICAgIGF1dG8qIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3Io
U3RyaW5nVmlldyhzdHJpbmdXaXRoUHJldmlvdXMuY2hhcmFjdGVycygpLCBsZW5ndGggKyAxKSk7
CiAgICAgaWYgKCFib3VuZGFyeSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3Ry
aW5nOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBh
Y2l0eShsZW5ndGgpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0
cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
c3RyaW5nSW1wbFtpIC0gMV0pOwogICAgIH0KIAotICAgICpzdHJpbmcgPSByZXN1bHQudG9TdHJp
bmcoKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKIGlubGluZSBSZW5kZXJU
ZXh0OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTE4OCwy
NCArMTg5LDE3IEBAIGlubGluZSBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNv
bnN0IFN0cmluZyYgdGV4dCkKICAgICAsIG1faGFzVGFiKGZhbHNlKQogICAgICwgbV9saW5lc0Rp
cnR5KGZhbHNlKQogICAgICwgbV9jb250YWluc1JldmVyc2VkVGV4dChmYWxzZSkKLSAgICAsIG1f
aXNBbGxBU0NJSSh0ZXh0LmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgLCBtX2lzQWxsQVNDSUko
dGV4dC5pbXBsKCktPmlzQWxsQVNDSUkoKSkKICAgICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93
QW5kTm9GYWxsYmFja0ZvbnRzKGZhbHNlKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJv
bChmYWxzZSkKICAgICAsIG1fb3JpZ2luYWxUZXh0RGlmZmVyc0Zyb21SZW5kZXJlZChmYWxzZSkK
ICAgICAsIG1faGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyhmYWxzZSkKLSNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICwgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXpl
KDApCi0jZW5kaWYKLSAgICAsIG1fbWluV2lkdGgoLTEpCi0gICAgLCBtX21heFdpZHRoKC0xKQot
ICAgICwgbV9iZWdpbk1pbldpZHRoKDApCi0gICAgLCBtX2VuZE1pbldpZHRoKDApCiAgICAgLCBt
X3RleHQodGV4dCkKIHsKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgc2V0SXNU
ZXh0KCk7CiAgICAgbV9jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGggPSBjb21wdXRlQ2FuVXNlU2lt
cGxlRm9udENvZGVQYXRoKCk7Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmluY3JlbWVudFZpc3Vh
bGx5Tm9uRW1wdHlDaGFyYWN0ZXJDb3VudCh0ZXh0TGVuZ3RoKCkpOworICAgIHZpZXcoKS5mcmFt
ZVZpZXcoKS5pbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5Q2hhcmFjdGVyQ291bnQodGV4dC5pbXBs
KCktPmxlbmd0aCgpKTsKIH0KIAogUmVuZGVyVGV4dDo6UmVuZGVyVGV4dChUZXh0JiB0ZXh0Tm9k
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtNDYwLDcgKzQ1NCw3IEBAIFBvc2l0aW9uIFJlbmRl
clRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGlm
IChzaW1wbGVMaW5lTGF5b3V0KCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSBwYXJlbnQo
KS0+bGFzdENoaWxkKCkpIHsKICAgICAgICAgYXV0byBvZmZzZXQgPSBTaW1wbGVMaW5lTGF5b3V0
Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQocG9pbnQsICp0aGlzLCAqc2ltcGxlTGluZUxheW91dCgpKTsK
ICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGEgdmFsaWQgb2Zmc2V0LiBGYWxsIGJhY2sgdG8gdGhl
IG5vcm1hbCBsaW5lIGxheW91dCBiYXNlZCBQb3NpdGlvbi4KLSAgICAgICAgaWYgKG9mZnNldCA9
PSB0ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dCgpLmxlbmd0aCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBF
cXVpdmFsZW50KCk7CiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBQb3NpdGlvbih0ZXh0Tm9kZSgp
LCBvZmZzZXQpOwogICAgICAgICBBU1NFUlQocG9zaXRpb24gPT0gcG9zaXRpb25Gb3JQb2ludChw
b2ludCwgbnVsbHB0cikuZGVlcEVxdWl2YWxlbnQoKSk7CkBAIC00OTcsMTAgKzQ5MSw4IEBAIEFM
V0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENh
c2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgICAgIGZsb2F0IG1vbm9zcGFjZUNoYXJhY3Rlcldp
ZHRoID0gZi5zcGFjZVdpZHRoKCk7CiAgICAgICAgIGZsb2F0IHcgPSAwOwogICAgICAgICBib29s
IGlzU3BhY2U7Ci0gICAgICAgIEFTU0VSVChtX3RleHQpOwotICAgICAgICBTdHJpbmdJbXBsJiB0
ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0OyBp
IDwgc3RhcnQgKyBsZW47IGkrKykgewotICAgICAgICAgICAgY2hhciBjID0gdGV4dFtpXTsKKyAg
ICAgICAgICAgIGNoYXIgYyA9IHRleHQoKVtpXTsKICAgICAgICAgICAgIGlmIChjIDw9ICcgJykg
ewogICAgICAgICAgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdcbicpIHsKICAgICAgICAg
ICAgICAgICAgICAgdyArPSBtb25vc3BhY2VDaGFyYWN0ZXJXaWR0aDsKQEAgLTU0NCw0MSArNTM2
LDMxIEBAIGlubGluZSBib29sIGlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZUVuZChVQ2hhciBj
KQogCiBmbG9hdCBSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0g
ICAgaWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQo
KS5sZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0Lmlt
cGwoKTsKLSAgICAKLSAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRl
eHRbaW5kZXhdKSkKKyAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRl
eHQoKVtpbmRleF0pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBz
dHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICAKLSAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUo
Zm9udCwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMt
PnN0eWxlKCk7CisgICAgcmV0dXJuIHdpZHRoRnJvbUNhY2hlKHN0eWxlLmZvbnRDYXNjYWRlKCks
IGluZGV4LCAxLCAwLCAwLCAwLCBzdHlsZSk7CiB9CiAKIGZsb2F0IFJlbmRlclRleHQ6Omhhbmdh
YmxlUHVuY3R1YXRpb25FbmRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0g
bGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAg
ICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAKLSAgICBpZiAoIWlzSGFuZ2Fi
bGVQdW5jdHVhdGlvbkF0TGluZUVuZCh0ZXh0W2luZGV4XSkpCisgICAgaWYgKCFpc0hhbmdhYmxl
UHVuY3R1YXRpb25BdExpbmVFbmQodGV4dCgpW2luZGV4XSkpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwotICAgIAotICAg
IHJldHVybiB3aWR0aEZyb21DYWNoZShmb250LCBpbmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOwor
CisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIHJldHVybiB3aWR0aEZyb21D
YWNoZShzdHlsZS5mb250Q2FzY2FkZSgpLCBpbmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOwogfQog
Ci1ib29sIFJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hhciBjKSBjb25zdAor
Ym9vbCBSZW5kZXJUZXh0Ojppc0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNoYXIgYykKIHsKICAgICBy
ZXR1cm4gYyA9PSAweDAwMkMgfHwgYyA9PSAweDAwMkUgfHwgYyA9PSAweDA2MEMgfHwgYyA9PSAw
eDA2RDQgfHwgYyA9PSAweDMwMDEKICAgICAgICAgfHwgYyA9PSAweDMwMDIgfHwgYyA9PSAweEZG
MEMgfHwgYyA9PSAweEZGMEUgfHwgYyA9PSAweEZFNTAgfHwgYyA9PSAweEZFNTEKQEAgLTU4OSwx
MyArNTcxLDEwIEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJp
cHBpbmdTcGFjZXMoKSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3Bh
Y2UoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAg
U3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIAorCiAgICAgdW5zaWduZWQg
aSA9IDA7Ci0gICAgZm9yICggOyBpIDwgdGV4dExlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYg
KHRleHRbaV0gIT0gJyAnICYmICh0ZXh0W2ldICE9ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5l
d2xpbmUoKSkgJiYgdGV4dFtpXSAhPSAnXHQnKQorICAgIGZvciAodW5zaWduZWQgbGVuZ3RoID0g
dGV4dCgpLmxlbmd0aCgpIDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0KClb
aV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGlu
ZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICByZXR1cm4gaTsKQEAgLTYwMywxMTAgKzU4Miw5NyBAQCB1bnNpZ25lZCBSZW5kZXJUZXh0Ojpm
aXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QKIAogdW5zaWduZWQgUmVu
ZGVyVGV4dDo6bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QKIHsKLSAg
ICBpZiAoIXRleHRMZW5ndGgoKSkKKyAgICBpZiAoIXRleHQoKS5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBpZiAoIXN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCi0gICAg
ICAgIHJldHVybiB0ZXh0TGVuZ3RoKCkgLSAxOwotICAgIAotICAgIEFTU0VSVChtX3RleHQpOwot
ICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHRl
eHQoKS5sZW5ndGgoKSAtIDE7CiAgICAgCi0gICAgaW50IGkgPSB0ZXh0TGVuZ3RoKCkgLSAxOwor
ICAgIGludCBpID0gdGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICBmb3IgKCA7IGkgID49IDA7IC0t
aSkgewotICAgICAgICBpZiAodGV4dFtpXSAhPSAnICcgJiYgKHRleHRbaV0gIT0gJ1xuJyB8fCBz
dHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0W2ldICE9ICdcdCcpCisgICAgICAgIGlm
ICh0ZXh0KClbaV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNl
cnZlTmV3bGluZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICByZXR1cm4gaTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZldp
ZHRocyhmbG9hdCBsZWFkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0JiBiZWdpbk1pblcsIGJvb2wmIGJlZ2luV1MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0JiBlbmRNaW5XLCBib29sJiBlbmRXUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCYgaGFzQnJlYWthYmxlQ2hhciwgYm9vbCYgaGFzQnJl
YWssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1heFcs
IGZsb2F0JiBlbmRNYXhXLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCYgbWluVywgZmxvYXQmIG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpCitSZW5kZXJUZXh0
OjpXaWR0aHMgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZlcnJlZFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpCiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAg
ICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UgPSBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsK
KwogICAgIGlmICghY29sbGFwc2VXaGl0ZVNwYWNlKQogICAgICAgICBzdHJpcEZyb250U3BhY2Vz
ID0gZmFsc2U7CiAKICAgICBpZiAobV9oYXNUYWIgfHwgcHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KCkpCiAgICAgICAgIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGxlYWRXaWR0aCk7
CiAKLSAgICBiZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOwotICAg
IGVuZFdTID0gbV9oYXNFbmRXUzsKKyAgICBXaWR0aHMgd2lkdGhzOwogCi0gICAgdW5zaWduZWQg
bGVuID0gdGV4dExlbmd0aCgpOworICAgIHdpZHRocy5iZWdpbldTID0gIXN0cmlwRnJvbnRTcGFj
ZXMgJiYgbV9oYXNCZWdpbldTOworICAgIHdpZHRocy5lbmRXUyA9IG1faGFzRW5kV1M7CiAKLSAg
ICBpZiAoIWxlbiB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0ZXh0KCktPmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSkpIHsKLSAgICAgICAgYmVnaW5NaW5XID0gMDsKLSAgICAgICAgZW5kTWluVyA9
IDA7Ci0gICAgICAgIGJlZ2luTWF4VyA9IDA7Ci0gICAgICAgIGVuZE1heFcgPSAwOwotICAgICAg
ICBtaW5XID0gMDsKLSAgICAgICAgbWF4VyA9IDA7Ci0gICAgICAgIGhhc0JyZWFrID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVu
Z3RoKCk7CiAKLSAgICBtaW5XID0gbV9taW5XaWR0aDsKLSAgICBtYXhXID0gbV9tYXhXaWR0aDsK
KyAgICBpZiAoIWxlbmd0aCB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0ZXh0KCkuaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkpCisgICAgICAgIHJldHVybiB3aWR0aHM7CiAK
LSAgICBiZWdpbk1pblcgPSBtX2JlZ2luTWluV2lkdGg7Ci0gICAgZW5kTWluVyA9IG1fZW5kTWlu
V2lkdGg7CisgICAgd2lkdGhzLm1pbiA9IG1fbWluV2lkdGg7CisgICAgd2lkdGhzLm1heCA9IG1f
bWF4V2lkdGg7CiAKLSAgICBoYXNCcmVha2FibGVDaGFyID0gbV9oYXNCcmVha2FibGVDaGFyOwot
ICAgIGhhc0JyZWFrID0gbV9oYXNCcmVhazsKKyAgICB3aWR0aHMuYmVnaW5NaW4gPSBtX2JlZ2lu
TWluV2lkdGg7CisgICAgd2lkdGhzLmVuZE1pbiA9IG1fZW5kTWluV2lkdGg7CiAKLSAgICBBU1NF
UlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAg
aWYgKHRleHRbMF0gPT0gc3BhY2UgfHwgKHRleHRbMF0gPT0gbmV3bGluZUNoYXJhY3RlciAmJiAh
c3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRleHRbMF0gPT0gJ1x0JykgewotICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBU
aGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KLSAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsK
LSAgICAgICAgICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgc3R5bGUpKTsKLSAgICAgICAgICAgIG1heFcgLT0g
c3BhY2VXaWR0aDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtYXhXICs9IGZvbnQud29y
ZFNwYWNpbmcoKTsKKyAgICB3aWR0aHMuaGFzQnJlYWthYmxlQ2hhciA9IG1faGFzQnJlYWthYmxl
Q2hhcjsKKyAgICB3aWR0aHMuaGFzQnJlYWsgPSBtX2hhc0JyZWFrOworCisgICAgaWYgKHRleHQo
KVswXSA9PSAnICcgfHwgKHRleHQoKVswXSA9PSAnXG4nICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xp
bmUoKSkgfHwgdGV4dCgpWzBdID09ICdcdCcpIHsKKyAgICAgICAgYXV0byYgZm9udCA9IHN0eWxl
LmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KKyAgICAg
ICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpCisgICAgICAgICAgICB3aWR0aHMubWF4IC09IGZvbnQu
d2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBzdHlsZSkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB3aWR0aHMubWF4ICs9IGZvbnQud29yZFNwYWNpbmco
KTsKICAgICB9CiAKICAgICBzdHJpcEZyb250U3BhY2VzID0gY29sbGFwc2VXaGl0ZVNwYWNlICYm
IG1faGFzRW5kV1M7CiAKLSAgICBpZiAoIXN0eWxlLmF1dG9XcmFwKCkgfHwgbWluVyA+IG1heFcp
Ci0gICAgICAgIG1pblcgPSBtYXhXOworICAgIGlmICghc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAg
ICAgd2lkdGhzLm1pbiA9IHN0ZDo6bWluKHdpZHRocy5taW4sIHdpZHRocy5tYXgpOwogCiAgICAg
Ly8gQ29tcHV0ZSBvdXIgbWF4IHdpZHRocyBieSBzY2FubmluZyB0aGUgc3RyaW5nIGZvciBuZXds
aW5lcy4KLSAgICBpZiAoaGFzQnJlYWspIHsKLSAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGYg
PSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUu
CisgICAgaWYgKHdpZHRocy5oYXNCcmVhaykgeworICAgICAgICBhdXRvJiBmb250ID0gc3R5bGUu
Zm9udENhc2NhZGUoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgICAg
ICBib29sIGZpcnN0TGluZSA9IHRydWU7Ci0gICAgICAgIGJlZ2luTWF4VyA9IG1heFc7Ci0gICAg
ICAgIGVuZE1heFcgPSBtYXhXOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbmVsZW4gPSAwOwotICAgICAgICAgICAg
d2hpbGUgKGkgKyBsaW5lbGVuIDwgbGVuICYmIHRleHRbaSArIGxpbmVsZW5dICE9ICdcbicpCi0g
ICAgICAgICAgICAgICAgbGluZWxlbisrOwotCi0gICAgICAgICAgICBpZiAobGluZWxlbikgewot
ICAgICAgICAgICAgICAgIGVuZE1heFcgPSB3aWR0aEZyb21DYWNoZShmLCBpLCBsaW5lbGVuLCBs
ZWFkV2lkdGggKyBlbmRNYXhXLCAwLCAwLCBzdHlsZSk7CisgICAgICAgIHdpZHRocy5iZWdpbk1h
eCA9IHdpZHRocy5tYXg7CisgICAgICAgIHdpZHRocy5lbmRNYXggPSB3aWR0aHMubWF4OworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxpbmVMZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKGkgKyBsaW5lTGVu
Z3RoIDwgbGVuZ3RoICYmIHRleHQoKVtpICsgbGluZUxlbmd0aF0gIT0gJ1xuJykKKyAgICAgICAg
ICAgICAgICBsaW5lTGVuZ3RoKys7CisKKyAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGhzLmVuZE1heCA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIGxp
bmVMZW5ndGgsIGxlYWRXaWR0aCArIHdpZHRocy5lbmRNYXgsIDAsIDAsIHN0eWxlKTsKICAgICAg
ICAgICAgICAgICBpZiAoZmlyc3RMaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIGZpcnN0TGlu
ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBsZWFkV2lkdGggPSAwOwotICAgICAgICAg
ICAgICAgICAgICBiZWdpbk1heFcgPSBlbmRNYXhXOworICAgICAgICAgICAgICAgICAgICB3aWR0
aHMuYmVnaW5NYXggPSB3aWR0aHMuZW5kTWF4OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpICs9IGxpbmVsZW47CisgICAgICAgICAgICAgICAgaSArPSBsaW5lTGVuZ3RoOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdExpbmUpIHsKLSAgICAgICAgICAgICAgICBiZWdp
bk1heFcgPSAwOworICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1heCA9IDA7CiAgICAgICAg
ICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbGVhZFdpZHRoID0g
MDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGkgPT0gbGVuIC0gMSkKKyAgICAg
ICAgICAgIGlmIChpID09IGxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgICAvLyBBIDxwcmU+
IHJ1biB0aGF0IGVuZHMgd2l0aCBhIG5ld2xpbmUsIGFzIGluLCBlLmcuLAogICAgICAgICAgICAg
ICAgIC8vIDxwcmU+U29tZSB0ZXh0XG5cbjxzcGFuPk1vcmUgdGV4dDwvcHJlPgotICAgICAgICAg
ICAgICAgIGVuZE1heFcgPSAwOworICAgICAgICAgICAgICAgIHdpZHRocy5lbmRNYXggPSAwOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIHdpZHRoczsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIGlzU3BhY2VBY2NvcmRpbmdUb1N0eWxlKFVDaGFyIGMsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTgyMCwxMiArNzg2LDEzIEBAIHZvaWQgUmVuZGVy
VGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNo
U2V0PGNvbnN0IEZvCiAgICAgbV9oYXNCZWdpbldTID0gZmFsc2U7CiAgICAgbV9oYXNFbmRXUyA9
IGZhbHNlOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsK
LSAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJ
WE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0
eWxlKCk7CisgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBU
aGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICBmbG9hdCB3b3JkU3BhY2luZyA9IGZvbnQud29y
ZFNwYWNpbmcoKTsKLSAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgYXV0byYg
c3RyaW5nID0gdGV4dCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
ICAgICBhdXRvIGl0ZXJhdG9yTW9kZSA9IG1hcExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKHN0eWxl
LmxpbmVCcmVhaygpKTsKLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgYnJlYWtJdGVyYXRvciht
X3RleHQsIHN0eWxlLmxvY2FsZSgpLCBpdGVyYXRvck1vZGUpOworICAgIExhenlMaW5lQnJlYWtJ
dGVyYXRvciBicmVha0l0ZXJhdG9yKHN0cmluZywgc3R5bGUubG9jYWxlKCksIGl0ZXJhdG9yTW9k
ZSk7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmlu
Z1NwYWNlcyA9IGZhbHNlOwogICAgIGJvb2wgaXNTcGFjZSA9IGZhbHNlOwpAQCAtODYyLDggKzgy
OSw4IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxv
YXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgYm9vbCBrZWVwQWxsV29yZHMgPSBz
dHlsZS53b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29yZEJyZWFrOwogICAgIGJvb2wgY2FuVXNlTGlu
ZUJyZWFrU2hvcnRjdXQgPSBpdGVyYXRvck1vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlOjpE
ZWZhdWx0OwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAg
ICAgIFVDaGFyIGMgPSB1bmNoZWNrZWRDaGFyYWN0ZXJBdChpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgVUNoYXIgYyA9IHN0cmluZ1tpXTsK
IAogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSA9IGlzU3BhY2U7CiAKQEAg
LTg4Niw3ICs4NTMsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgIGlmICgo
aXNTcGFjZSB8fCBpc05ld2xpbmUpICYmICFpKQogICAgICAgICAgICAgbV9oYXNCZWdpbldTID0g
dHJ1ZTsKLSAgICAgICAgaWYgKChpc1NwYWNlIHx8IGlzTmV3bGluZSkgJiYgaSA9PSBsZW4gLSAx
KQorICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNOZXdsaW5lKSAmJiBpID09IGxlbmd0aCAtIDEp
CiAgICAgICAgICAgICBtX2hhc0VuZFdTID0gdHJ1ZTsKIAogICAgICAgICBpZ25vcmluZ1NwYWNl
cyB8PSBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSAmJiBwcmV2aW91c0NoYXJhY3RlcklzU3Bh
Y2UgJiYgaXNTcGFjZTsKQEAgLTkxMSw5ICs4NzgsOSBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBG
bwogICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAgICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAh
aXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMgIT0gJ1x0JyAmJiAoYyAhPSBz
b2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zTm9uZSkpIHsKICAgICAgICAg
ICAgIGorKzsKLSAgICAgICAgICAgIGlmIChqID09IGxlbikKKyAgICAgICAgICAgIGlmIChqID09
IGxlbmd0aCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGMgPSB1bmNoZWNr
ZWRDaGFyYWN0ZXJBdChqKTsKKyAgICAgICAgICAgIGMgPSBzdHJpbmdbal07CiAgICAgICAgICAg
ICBpZiAoaXNCcmVha2FibGUoYnJlYWtJdGVyYXRvciwgaiwgbmV4dEJyZWFrYWJsZSwgYnJlYWtO
QlNQLCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCwga2VlcEFsbFdvcmRzKSAmJiBjaGFyYWN0ZXJB
dChqIC0gMSkgIT0gc29mdEh5cGhlbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGlmIChicmVha0FsbCkgewpAQCAtOTI1LDcgKzg5Miw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgICAgIHVuc2lnbmVkIHdvcmRMZW4gPSBqIC0gaTsKICAgICAgICAgaWYgKHdv
cmRMZW4pIHsKICAgICAgICAgICAgIGZsb2F0IGN1cnJNaW5XaWR0aCA9IDA7Ci0gICAgICAgICAg
ICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbikgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywg
c3R5bGUpOworICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gKGogPCBsZW5ndGgpICYmIGlzU3Bh
Y2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKTsKICAgICAgICAgICAgIGZsb2F0IHc7CiAgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAg
ICAgICAgICAgaWYgKGlzU3BhY2UpCkBAIC05NDAsNyArOTA3LDcgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgRm8KIAogICAgICAgICAgICAgaWYgKHcgPiBtYXhXb3JkV2lkdGgpIHsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzdWZmaXhTdGFydDsKLSAgICAgICAgICAgICAgICBmbG9hdCBtYXhG
cmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoKnRoaXMsIHN0eWxlLCBmb250LCBT
dHJpbmdWaWV3KG1fdGV4dCkuc3Vic3RyaW5nKGksIHdvcmRMZW4pLCBtaW5pbXVtUHJlZml4TGVu
Z3RoLCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBzdWZmaXhTdGFydCwgZmFsbGJhY2tGb250cywgZ2x5
cGhPdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IG1h
eFdvcmRGcmFnbWVudFdpZHRoKCp0aGlzLCBzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhzdHJpbmcp
LnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZp
eExlbmd0aCwgc3VmZml4U3RhcnQsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKHN1ZmZpeFN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHN1ZmZpeFdpZHRoOwpAQCAtOTczLDEzICs5NDAsMTMgQEAgdm9pZCBSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29u
c3QgRm8KICAgICAgICAgICAgICAgICBsYXN0V29yZEJvdW5kYXJ5ID0gajsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSA9IChqIDwgbGVu
KSAmJiBzdHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShjKTsKLSAgICAgICAgICAgIGlmIChq
IDwgbGVuICYmIHN0eWxlLmF1dG9XcmFwKCkpCisgICAgICAgICAgICBib29sIGlzQ29sbGFwc2li
bGVXaGl0ZVNwYWNlID0gKGogPCBsZW5ndGgpICYmIHN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNw
YWNlKGMpOworICAgICAgICAgICAgaWYgKGogPCBsZW5ndGggJiYgc3R5bGUuYXV0b1dyYXAoKSkK
ICAgICAgICAgICAgICAgICBtX2hhc0JyZWFrYWJsZUNoYXIgPSB0cnVlOwogCiAgICAgICAgICAg
ICAvLyBBZGQgaW4gd29yZFNwYWNpbmcgdG8gb3VyIGN1cnJNYXhXaWR0aCwgYnV0IG5vdCBpZiB0
aGlzIGlzIHRoZSBsYXN0IHdvcmQgb24gYSBsaW5lIG9yIHRoZQogICAgICAgICAgICAgLy8gbGFz
dCB3b3JkIGluIHRoZSBydW4uCi0gICAgICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNDb2xsYXBz
aWJsZVdoaXRlU3BhY2UpICYmICFjb250YWluc09ubHlXaGl0ZXNwYWNlKGosIGxlbi1qKSkKKyAg
ICAgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSkgJiYgIWNv
bnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKGosIGxlbmd0aCAtIGopKQogICAgICAgICAgICAgICAg
IGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKIAogICAgICAgICAgICAgaWYgKGZpcnN0V29y
ZCkgewpAQCAtMTAyMCw3ICs5ODcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAg
ICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IGZvbnQud2lkdGgocnVuLCAmZmFsbGJhY2tGb250
cyk7CiAgICAgICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdy5yaWdodCA9IDA7Ci0gICAgICAgICAg
ICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGlzU3BhY2UgJiYgIXByZXZpb3VzQ2hhcmFjdGVySXNT
cGFjZSAmJiBpID09IGxlbiAtIDE7CisgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9
IGlzU3BhY2UgJiYgIXByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSAmJiBpID09IGxlbmd0aCAtIDE7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQobGFzdFdvcmRCb3VuZGFyeSA9PSBp
KTsKICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRhcnkrKzsKQEAgLTEwMjksNyArOTk2LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFk
V2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0
R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAotICAgIGlm
ICgobmVlZHNXb3JkU3BhY2luZyAmJiBsZW4gPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZp
cnN0V29yZCkpCisgICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbmd0aCA+IDEpIHx8IChp
Z25vcmluZ1NwYWNlcyAmJiAhZmlyc3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdv
cmRTcGFjaW5nOwogCiAgICAgbV9tYXhXaWR0aCA9IHN0ZDo6bWF4KGN1cnJNYXhXaWR0aCwgbV9t
YXhXaWR0aCk7CkBAIC0xMDQ2LDMzICsxMDEzLDM5IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZv
CiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotYm9vbCBS
ZW5kZXJUZXh0Ojppc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxDb2xsYXBzaWJs
ZVdoaXRlc3BhY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0TGVuZ3Ro
KCk7Ci0gICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCFzdHlsZS5pc0NvbGxhcHNpYmxlV2hp
dGVTcGFjZShjaGFyYWN0ZXJzOCgpW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghc3R5bGUuaXNDb2xsYXBzaWJsZVdo
aXRlU3BhY2UoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2li
bGVXaGl0ZXNwYWNlKCkgY29uc3QKK3sKKyAgICBpZiAodGV4dCgpLmlzOEJpdCgpKQorICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJh
Y3RlcnM4KCksIHRleHQoKS5sZW5ndGgoKSwgc3R5bGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKHRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgdGV4dCgp
Lmxlbmd0aCgpLCBzdHlsZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGlubGluZSBib29sIGlzQWxsUG9zc2libHlDb2xsYXBzaWJsZVdoaXRlc3BhY2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorewogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoIXN0
eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnMxNigpW2ldKSkKKyAgICAgICAg
aWYgKCEoY2hhcmFjdGVyc1tpXSA9PSAnXG4nIHx8IGNoYXJhY3RlcnNbaV0gPT0gJyAnIHx8IGNo
YXJhY3RlcnNbaV0gPT0gJ1x0JykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQotICAgIAotYm9vbCBSZW5kZXJUZXh0Ojpjb250YWluc09ubHlX
aGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgY29uc3QKKworYm9vbCBSZW5k
ZXJUZXh0Ojpjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYg
dGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIHVuc2lnbmVkIGN1cnJQb3M7Ci0gICAgZm9yIChj
dXJyUG9zID0gZnJvbTsKLSAgICAgICAgIGN1cnJQb3MgPCBmcm9tICsgbGVuICYmICh0ZXh0W2N1
cnJQb3NdID09ICdcbicgfHwgdGV4dFtjdXJyUG9zXSA9PSAnICcgfHwgdGV4dFtjdXJyUG9zXSA9
PSAnXHQnKTsKLSAgICAgICAgIGN1cnJQb3MrKykgeyB9Ci0gICAgcmV0dXJuIGN1cnJQb3MgPj0g
KGZyb20gKyBsZW4pOworICAgIEFTU0VSVChmcm9tIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAg
QVNTRVJUKGxlbmd0aCA8PSB0ZXh0KCkubGVuZ3RoKCkpOworICAgIEFTU0VSVChmcm9tICsgbGVu
Z3RoIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgaWYgKHRleHQoKS5pczhCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIGlzQWxsUG9zc2libHlDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJh
Y3RlcnM4KCkgKyBmcm9tLCBsZW5ndGgpOworICAgIHJldHVybiBpc0FsbFBvc3NpYmx5Q29sbGFw
c2libGVXaGl0ZXNwYWNlKHRleHQoKS5jaGFyYWN0ZXJzMTYoKSArIGZyb20sIGxlbmd0aCk7CiB9
CiAKIFZlY3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPj4gUmVuZGVyVGV4dDo6ZHJh
Z2dlZENvbnRlbnRSYW5nZXNCZXR3ZWVuT2Zmc2V0cyh1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KSBjb25zdApAQCAtMTEyMyw0NCArMTA5NiwzNiBAQCB2b2lkIFJlbmRl
clRleHQ6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQogICAgICAgICBj
b250YWluaW5nQmxvY2stPnNldFNlbGVjdGlvblN0YXRlKHN0YXRlKTsKIH0KIAotdm9pZCBSZW5k
ZXJUZXh0OjpzZXRUZXh0V2l0aE9mZnNldChjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuLCBib29sIGZvcmNlKQordm9pZCBSZW5kZXJUZXh0OjpzZXRUZXh0
V2l0aE9mZnNldChjb25zdCBTdHJpbmcmIG5ld1RleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBib29sIGZvcmNlKQogewotICAgIGlmICghZm9yY2UgJiYgbV90ZXh0ID09IHRl
eHQpCisgICAgaWYgKCFmb3JjZSAmJiB0ZXh0KCkgPT0gbmV3VGV4dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaW50IGRlbHRhID0gdGV4dC5sZW5ndGgoKSAtIHRleHRMZW5ndGgoKTsKLSAgICB1
bnNpZ25lZCBlbmQgPSBsZW4gPyBvZmZzZXQgKyBsZW4gLSAxIDogb2Zmc2V0OworICAgIGludCBk
ZWx0YSA9IG5ld1RleHQubGVuZ3RoKCkgLSB0ZXh0KCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQg
ZW5kID0gbGVuZ3RoID8gb2Zmc2V0ICsgbGVuZ3RoIC0gMSA6IG9mZnNldDsKIAogICAgIG1fbGlu
ZXNEaXJ0eSA9IHNpbXBsZUxpbmVMYXlvdXQoKSB8fCBtX2xpbmVCb3hlcy5kaXJ0eVJhbmdlKCp0
aGlzLCBvZmZzZXQsIGVuZCwgZGVsdGEpOwogCi0gICAgc2V0VGV4dCh0ZXh0LCBmb3JjZSB8fCBt
X2xpbmVzRGlydHkpOworICAgIHNldFRleHQobmV3VGV4dCwgZm9yY2UgfHwgbV9saW5lc0RpcnR5
KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzSW5saW5lRmxvd09yRW1wdHlUZXh0KGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7Ci0gICAgaWYgKGlzPFJlbmRlcklubGluZT4ocmVu
ZGVyZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPFJlbmRlclRleHQ+KHJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZ0ltcGwqIHRleHQgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpOwotICAgIGlmICghdGV4dCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICF0ZXh0LT5sZW5ndGgoKTsKKyAgICByZXR1
cm4gaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgfHwgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVy
KSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpLmlzRW1wdHkoKSk7CiB9
CiAKIFVDaGFyIFJlbmRlclRleHQ6OnByZXZpb3VzQ2hhcmFjdGVyKCkgY29uc3QKIHsKICAgICAv
LyBmaW5kIHByZXZpb3VzIHRleHQgcmVuZGVyZXIgaWYgb25lIGV4aXN0cwogICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcHJldmlvdXNUZXh0ID0gdGhpczsKLSAgICB3aGlsZSAoKHByZXZpb3VzVGV4
dCA9IHByZXZpb3VzVGV4dC0+cHJldmlvdXNJblByZU9yZGVyKCkpKQorICAgIHdoaWxlICgocHJl
dmlvdXNUZXh0ID0gcHJldmlvdXNUZXh0LT5wcmV2aW91c0luUHJlT3JkZXIoKSkpIHsKICAgICAg
ICAgaWYgKCFpc0lubGluZUZsb3dPckVtcHR5VGV4dCgqcHJldmlvdXNUZXh0KSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgIFVDaGFyIHByZXYgPSAnICc7Ci0gICAgaWYgKGlzPFJlbmRlclRleHQ+
KHByZXZpb3VzVGV4dCkpIHsKLSAgICAgICAgaWYgKFN0cmluZ0ltcGwqIHByZXZpb3VzU3RyaW5n
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZpb3VzVGV4dCkudGV4dCgpKQotICAgICAgICAg
ICAgcHJldiA9ICgqcHJldmlvdXNTdHJpbmcpW3ByZXZpb3VzU3RyaW5nLT5sZW5ndGgoKSAtIDFd
OwogICAgIH0KLSAgICByZXR1cm4gcHJldjsKKyAgICBpZiAoIWlzPFJlbmRlclRleHQ+KHByZXZp
b3VzVGV4dCkpCisgICAgICAgIHJldHVybiAnICc7CisgICAgYXV0byYgcHJldmlvdXNTdHJpbmcg
PSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldmlvdXNUZXh0KS50ZXh0KCk7CisgICAgcmV0dXJu
IHByZXZpb3VzU3RyaW5nW3ByZXZpb3VzU3RyaW5nLmxlbmd0aCgpIC0gMV07CiB9CiAKIExheW91
dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZGaXJzdFRleHQoKSBjb25zdApAQCAtMTE2OCwzNyArMTEz
MywzNCBAQCBMYXlvdXRVbml0IFJlbmRlclRleHQ6OnRvcE9mRmlyc3RUZXh0KCkgY29uc3QKICAg
ICByZXR1cm4gZmlyc3RUZXh0Qm94KCktPnJvb3QoKS5saW5lVG9wKCk7CiB9CiAKLXZvaWQgYXBw
bHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU3RyaW5nJiB0ZXh0LCBV
Q2hhciBwcmV2aW91c0NoYXJhY3RlcikKK1N0cmluZyBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTdHJpbmcmIHRleHQsIFVDaGFyIHByZXZpb3VzQ2hh
cmFjdGVyKQogewogICAgIHN3aXRjaCAoc3R5bGUudGV4dFRyYW5zZm9ybSgpKSB7CiAgICAgY2Fz
ZSBUVE5PTkU6Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdGV4dDsKICAgICBjYXNl
IENBUElUQUxJWkU6Ci0gICAgICAgIG1ha2VDYXBpdGFsaXplZCgmdGV4dCwgcHJldmlvdXNDaGFy
YWN0ZXIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGNhcGl0YWxpemUodGV4dCwg
cHJldmlvdXNDaGFyYWN0ZXIpOyAvLyBGSVhNRTogTmVlZCB0byB0YWtlIGxvY2FsZSBpbnRvIGFj
Y291bnQuCiAgICAgY2FzZSBVUFBFUkNBU0U6Ci0gICAgICAgIHRleHQgPSB0ZXh0LmNvbnZlcnRU
b1VwcGVyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgcmV0dXJuIHRleHQuY29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2Nh
bGUoKSk7CiAgICAgY2FzZSBMT1dFUkNBU0U6Ci0gICAgICAgIHRleHQgPSB0ZXh0LmNvbnZlcnRU
b0xvd2VyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgcmV0dXJuIHRleHQuY29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2Nh
bGUoKSk7CiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB0ZXh0
OwogfQogCi12b2lkIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCit2b2lkIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmIG5ld1Rl
eHQpCiB7Ci0gICAgQVNTRVJUKCF0ZXh0LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW5ld1RleHQu
aXNOdWxsKCkpOwogCiAgICAgU3RyaW5nIG9yaWdpbmFsVGV4dCA9IHRoaXMtPm9yaWdpbmFsVGV4
dCgpOwogCi0gICAgbV90ZXh0ID0gdGV4dDsKKyAgICBtX3RleHQgPSBuZXdUZXh0OwogCiAgICAg
aWYgKG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wpCiAgICAgICAgIG1fdGV4dC5yZXBsYWNlKCdc
XCcsIHllblNpZ24pOwogCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0KLSAgICBhcHBseVRleHRUcmFu
c2Zvcm0oc3R5bGUoKSwgbV90ZXh0LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKKyAgICBtX3RleHQg
PSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgbV90ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcigp
KTsKIAogICAgIHN3aXRjaCAoc3R5bGUoKS50ZXh0U2VjdXJpdHkoKSkgewogICAgIGNhc2UgVFNO
T05FOgpAQCAtMTIyNSw5ICsxMTg3LDcgQEAgdm9pZCBSZW5kZXJUZXh0OjpzZXRSZW5kZXJlZFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogI2VuZGlmCiAgICAgfQogCi0gICAgQVNTRVJUKCFtX3Rl
eHQuaXNOdWxsKCkpOwotCi0gICAgbV9pc0FsbEFTQ0lJID0gbV90ZXh0LmNvbnRhaW5zT25seUFT
Q0lJKCk7CisgICAgbV9pc0FsbEFTQ0lJID0gdGV4dCgpLmlzQWxsQVNDSUkoKTsKICAgICBtX2Nh
blVzZVNpbXBsZUZvbnRDb2RlUGF0aCA9IGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgo
KTsKICAgICBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nID0gY29tcHV0ZUNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nKCk7CiAgICAgCkBAIC0xMjQ4LDcgKzEyMDgsNyBAQCB2b2lk
IFJlbmRlclRleHQ6OnNlY3VyZVRleHQoVUNoYXIgbWFza2luZ0NoYXJhY3RlcikKICAgICAvLyBv
ZiB0aGUgY2hhcmFjdGVycyBhcmUgc3Vycm9nYXRlIHBhaXJzIG9yIGNvbWJpbmluZyBtYXJrcy4g
VGh1cywgdGhpcyBmdW5jdGlvbgogICAgIC8vIGRvZXMgbm90IGF0dGVtcHQgdG8gaGFuZGxlIGVp
dGhlciBvZiB0aG9zZS4KIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHRMZW5ndGgoKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTI2MCw3ICsxMjIwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpz
ZWN1cmVUZXh0KFVDaGFyIG1hc2tpbmdDaGFyYWN0ZXIpCiAgICAgICAgIC8vIElmIGl0J3MgY2Fs
bGVkIGEgc2Vjb25kIHRpbWUgd2UgYXNzdW1lIHRoZSB0ZXh0IGlzIGRpZmZlcmVudCBhbmQgYSBj
aGFyYWN0ZXIgc2hvdWxkIG5vdCBiZSByZXZlYWxlZC4KICAgICAgICAgcmV2ZWFsZWRDaGFyYWN0
ZXJzT2Zmc2V0ID0gdGltZXItPnRha2VPZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3RlcigpOwog
ICAgICAgICBpZiAocmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0ICYmIHJldmVhbGVkQ2hhcmFjdGVy
c09mZnNldCA8PSBsZW5ndGgpCi0gICAgICAgICAgICBjaGFyYWN0ZXJUb1JldmVhbCA9IG1fdGV4
dFstLXJldmVhbGVkQ2hhcmFjdGVyc09mZnNldF07CisgICAgICAgICAgICBjaGFyYWN0ZXJUb1Jl
dmVhbCA9IHRleHQoKVstLXJldmVhbGVkQ2hhcmFjdGVyc09mZnNldF07CiAgICAgfQogCiAgICAg
VUNoYXIqIGNoYXJhY3RlcnM7CkBAIC0xMjgyLDE0ICsxMjQyLDE0IEBAIGJvb2wgUmVuZGVyVGV4
dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgZm9udCBjb2Rl
cGF0aC4KLSAgICBUZXh0UnVuIHJ1bihtX3RleHQpOworICAgIFRleHRSdW4gcnVuKHRleHQoKSk7
CiAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7CiAgICAgaWYgKGZv
bnQuY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6U2ltcGxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBhdXRvIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCA9IHN0eWxlKCkuY29sbGFw
c2VXaGl0ZVNwYWNlKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dC5sZW5n
dGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICgoIXdoaXRlc3BhY2VJc0NvbGxhcHNlZCAmJiBtX3Rl
eHRbaV0gPT0gJ1x0JykgfHwgbV90ZXh0W2ldID09IG5vQnJlYWtTcGFjZSB8fCBtX3RleHRbaV0g
Pj0gSGlyYWdhbmFMZXR0ZXJTbWFsbEEpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRl
eHQoKS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICgoIXdoaXRlc3BhY2VJc0NvbGxhcHNl
ZCAmJiB0ZXh0KClbaV0gPT0gJ1x0JykgfHwgdGV4dCgpW2ldID09IG5vQnJlYWtTcGFjZSB8fCB0
ZXh0KClbaV0gPj0gSGlyYWdhbmFMZXR0ZXJTbWFsbEEpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTMyNCwxMCArMTI4NCw3IEBAIFN0cmlu
ZyBSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sIHx8IHN0eWxlKCku
dGV4dFNlY3VyaXR5KCkgIT0gVFNOT05FKQogICAgICAgICByZXR1cm4gdGV4dCgpOwotCi0gICAg
U3RyaW5nIHRleHQgPSBvcmlnaW5hbFRleHQoKTsKLSAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5
bGUoKSwgdGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIoKSk7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAg
cmV0dXJuIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBvcmlnaW5hbFRleHQoKSwgcHJldmlv
dXNDaGFyYWN0ZXIoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9v
bCBmdWxsTGF5b3V0KQpAQCAtMTM2NywxMSArMTMyNCwxMSBAQCBjb25zdCBTaW1wbGVMaW5lTGF5
b3V0OjpMYXlvdXQqIFJlbmRlclRleHQ6OnNpbXBsZUxpbmVMYXlvdXQoKSBjb25zdAogCiBmbG9h
dCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQ
b3MsIGJvb2wgZmlyc3RMaW5lLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywg
R2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKLSAgICBpZiAoZnJvbSA+PSB0
ZXh0TGVuZ3RoKCkpCisgICAgaWYgKGZyb20gPj0gdGV4dCgpLmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGlmIChmcm9tICsgbGVuID4gdGV4dExlbmd0aCgpKQotICAgICAgICBs
ZW4gPSB0ZXh0TGVuZ3RoKCkgLSBmcm9tOworICAgIGlmIChmcm9tICsgbGVuID4gdGV4dCgpLmxl
bmd0aCgpKQorICAgICAgICBsZW4gPSB0ZXh0KCkubGVuZ3RoKCkgLSBmcm9tOwogCiAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkg
OiBzdHlsZSgpOwogICAgIHJldHVybiB3aWR0aChmcm9tLCBsZW4sIGxpbmVTdHlsZS5mb250Q2Fz
Y2FkZSgpLCB4UG9zLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKQEAgLTEzNzksMTQg
KzEzMzYsMTQgQEAgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgbGVuLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSwKIAogZmxvYXQgUmVuZGVyVGV4dDo6
d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2FkZSYgZiwg
ZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3Zl
cmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGZyb20gKyBsZW4gPD0g
dGV4dExlbmd0aCgpKTsKLSAgICBpZiAoIXRleHRMZW5ndGgoKSkKKyAgICBBU1NFUlQoZnJvbSAr
IGxlbiA8PSB0ZXh0KCkubGVuZ3RoKCkpOworICAgIGlmICghdGV4dCgpLmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0
eWxlKCk7CiAgICAgZmxvYXQgdzsKICAgICBpZiAoJmYgPT0gJnN0eWxlLmZvbnRDYXNjYWRlKCkp
IHsKLSAgICAgICAgaWYgKCFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiAhZnJvbSAmJiBsZW4g
PT0gdGV4dExlbmd0aCgpICYmICghZ2x5cGhPdmVyZmxvdyB8fCAhZ2x5cGhPdmVyZmxvdy0+Y29t
cHV0ZUJvdW5kcykpIHsKKyAgICAgICAgaWYgKCFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiAh
ZnJvbSAmJiBsZW4gPT0gdGV4dCgpLmxlbmd0aCgpICYmICghZ2x5cGhPdmVyZmxvdyB8fCAhZ2x5
cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcykpIHsKICAgICAgICAgICAgIGlmIChmYWxsYmFja0Zv
bnRzKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGdseXBoT3ZlcmZsb3cpOwogICAgICAgICAg
ICAgICAgIGlmIChwcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSB8fCAhbV9rbm93blRvSGF2
ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMpIHsKQEAgLTE0NTgsMTIgKzE0MTUsMTIgQEAg
TGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxl
Y3Rpb25JbnNpZGUpIHsKICAgICAgICAgLy8gV2UgYXJlIGZ1bGx5IHNlbGVjdGVkLgogICAgICAg
ICBzdGFydFBvcyA9IDA7Ci0gICAgICAgIGVuZFBvcyA9IHRleHRMZW5ndGgoKTsKKyAgICAgICAg
ZW5kUG9zID0gdGV4dCgpLmxlbmd0aCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXJ0UG9z
ID0gdmlldygpLnNlbGVjdGlvbigpLnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kUG9zID0g
dmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CiAgICAgICAgIGlmIChzZWxlY3Rpb25T
dGF0ZSgpID09IFNlbGVjdGlvblN0YXJ0KQotICAgICAgICAgICAgZW5kUG9zID0gdGV4dExlbmd0
aCgpOworICAgICAgICAgICAgZW5kUG9zID0gdGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNl
IGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbkVuZCkKICAgICAgICAgICAgIHN0YXJ0
UG9zID0gMDsKICAgICB9CkBAIC0xNTM5LDM1ICsxNDk2LDMzIEBAIGJvb2wgUmVuZGVyVGV4dDo6
aGFzUmVuZGVyZWRUZXh0KCkgY29uc3QKIAogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0
KGludCBjdXJyZW50KSBjb25zdAogewotICAgIGlmIChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0Lmlz
OEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAg
ICByZXR1cm4gY3VycmVudCAtIDE7CiAKLSAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVy
YXRvcihtX3RleHQsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7
CisgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJ
dGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBpdGVyYXRvci5w
cmVjZWRpbmcoY3VycmVudCkudmFsdWVfb3IoY3VycmVudCAtIDEpOwogfQogCiBpbnQgUmVuZGVy
VGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGludCBjdXJyZW50KSBjb25z
dAogewotICAgIEFTU0VSVCghbV90ZXh0LmlzTnVsbCgpKTsKLQotICAgIENhY2hlZFRleHRCcmVh
a0l0ZXJhdG9yIGl0ZXJhdG9yKG1fdGV4dCwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkRlbGV0
ZSwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4
dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6RGVsZXRlLCBudWxsQXRvbSgpKTsKICAgICBy
ZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVlX29yKDApOwogfQogCiBpbnQg
UmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKLSAgICBpZiAoaXNB
bGxBU0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkKKyAgICBpZiAobV9pc0FsbEFTQ0lJIHx8IHRl
eHQoKS5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCi0gICAgQ2FjaGVk
VGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IobV90ZXh0LCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9k
ZTo6Q2FyZXQsIG51bGxBdG9tKCkpOworICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJh
dG9yKHRleHQoKSwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSgpKTsK
ICAgICByZXR1cm4gaXRlcmF0b3IuZm9sbG93aW5nKGN1cnJlbnQpLnZhbHVlX29yKGN1cnJlbnQg
KyAxKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQ
YXRoKCkgY29uc3QKIHsKLSAgICBpZiAoaXNBbGxBU0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkK
KyAgICBpZiAobV9pc0FsbEFTQ0lJIHx8IHRleHQoKS5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRlOjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNo
YXJhY3RlcnMxNigpLCBsZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6OlNpbXBsZTsKKyAgICByZXR1
cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgodGV4dCgpLmNoYXJhY3RlcnMx
NigpLCBsZW5ndGgoKSkgPT0gRm9udENhc2NhZGU6OlNpbXBsZTsKIH0KIAogdm9pZCBSZW5kZXJU
ZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRB
ZnRlckxhc3RUeXBlZENoYXJhY3RlcikKQEAgLTE1ODIsMTMgKzE1MzcsMTMgQEAgdm9pZCBSZW5k
ZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZz
ZXRBZnRlckxhc3RUeXAKIAogU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2ln
bmVkIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewotICAgIHVu
c2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0TGVuZ3RoKCkpOworICAgIHVu
c2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0KCkubGVuZ3RoKCkpOwogICAg
IEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uIDw9IGxl
bmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gZGVzdGluYXRpb24pOwotICAgIGlmIChpczhC
aXQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBk
ZXN0aW5hdGlvbiAtIHN0YXJ0KTsKLSAgICByZXR1cm4gU3RyaW5nVmlldyhjaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0LCBkZXN0aW5hdGlvbiAtIHN0YXJ0KTsKKyAgICBpZiAodGV4dCgpLmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4geyB0ZXh0KCkuY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBkZXN0aW5h
dGlvbiAtIHN0YXJ0IH07CisgICAgcmV0dXJuIHsgdGV4dCgpLmNoYXJhY3RlcnMxNigpICsgc3Rh
cnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQgfTsKIH0KIAogUmVuZGVySW5saW5lKiBSZW5kZXJUZXh0
OjppbmxpbmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCmluZGV4IGQ4NmYwYjRiODRmNGIxNDc0OWE1ZGNiNjhjODM3NGZlZGM1Y2Vh
ZWYuLmY0NjI5MGY1ZGVhYjBhZWJlOWM3YzgyNDBkMGQ2ZjM5NDU2NjgwNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC00Myw4ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flJlbmRlclRleHQoKTsKIAotICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFRleHQqIHRleHROb2RlKCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdDsKQEAgLTYzLDcgKzYxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXR0YWNoVGV4dEJveChJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9s
aW5lQm94ZXMuYXR0YWNoKGJveCk7IH0KICAgICB2b2lkIHJlbW92ZVRleHRCb3goSW5saW5lVGV4
dEJveCYgYm94KSB7IG1fbGluZUJveGVzLnJlbW92ZShib3gpOyB9CiAKLSAgICBTdHJpbmdJbXBs
KiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKTsgfQorICAgIFN0cmluZ0ltcGwm
IHRleHQoKSBjb25zdCB7IHJldHVybiAqbV90ZXh0LmltcGwoKTsgfSAvLyBTaW5jZSBtX3RleHQg
Y2FuIG5ldmVyIGJlIG51bGwsIHJldHVybmluZyB0aGlzIHR5cGUgbWVhbnMgY2FsbGVycyB3b24n
dCBudWxsIGNoZWNrLgogICAgIFN0cmluZyB0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hU
b1llblN5bWJvbCgpIGNvbnN0OwogCiAgICAgSW5saW5lVGV4dEJveCogY3JlYXRlSW5saW5lVGV4
dEJveCgpIHsgcmV0dXJuIG1fbGluZUJveGVzLmNyZWF0ZUFuZEFwcGVuZExpbmVCb3goKnRoaXMp
OyB9CkBAIC03Miw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dCBmaW5hbDsKICAgICBWZWN0b3I8SW50UmVjdD4gYWJzb2x1dGVSZWN0c0ZvclJhbmdlKHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29u
c3Q7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZl
Y3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQg
ZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4m
LCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBm
aW5hbDsKQEAgLTgwLDM1ICs3OCwzOCBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8RmxvYXRRdWFk
PiBhYnNvbHV0ZVF1YWRzQ2xpcHBlZFRvRWxsaXBzaXMoKSBjb25zdDsKIAotICAgIFBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKLSAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJl
bmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CisgICAgUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogCi0gICAgYm9vbCBpczhCaXQoKSBj
b25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5pczhCaXQoKTsgfQotICAgIGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmNoYXJhY3RlcnM4
KCk7IH0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7IH0KICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNp
Z25lZCkgY29uc3Q7Ci0gICAgVUNoYXIgdW5jaGVja2VkQ2hhcmFjdGVyQXQodW5zaWduZWQpIGNv
bnN0OwotICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gdW5j
aGVja2VkQ2hhcmFjdGVyQXQoaSk7IH0KLSAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0LmltcGwoKS0+bGVuZ3RoKCk7IH0gLy8gbm9uIHZpcnR1YWwgaW1wbGVt
ZW50YXRpb24gb2YgbGVuZ3RoKCkKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7IH0KKwogICAgIHZvaWQgcG9zaXRpb25MaW5lQm94KElu
bGluZVRleHRCb3gmKTsKIAotICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgZmxv
YXQgeFBvcywgYm9vbCBmaXJzdExpbmUgPSBmYWxzZSwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZh
bGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OworICAgIHZpcnR1YWwg
ZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
bnVsbHB0ciwgR2x5cGhPdmVyZmxvdyogPSBudWxscHRyKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZs
b2F0IHdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQgeFBvcywgYm9v
bCBmaXJzdExpbmUgPSBmYWxzZSwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMg
PSBudWxscHRyLCBHbHlwaE92ZXJmbG93KiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgZmxvYXQg
bWluTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgZmxvYXQgbWF4TG9naWNhbFdpZHRoKCkgY29u
c3Q7CiAKLSAgICB2b2lkIHRyaW1tZWRQcmVmV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1pblcsIGJvb2wmIGJlZ2luV1MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgZW5kTWluVywgYm9vbCYgZW5kV1MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBoYXNCcmVha2FibGVDaGFyLCBib29sJiBo
YXNCcmVhaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1heFcsIGZs
b2F0JiBlbmRNYXhXLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIG1pblcsIGZs
b2F0JiBtYXhXLCBib29sJiBzdHJpcEZyb250U3BhY2VzKTsKKyAgICBzdHJ1Y3QgV2lkdGhzIHsK
KyAgICAgICAgZmxvYXQgbWluIHsgMCB9OworICAgICAgICBmbG9hdCBtYXggeyAwIH07CisgICAg
ICAgIGZsb2F0IGJlZ2luTWluIHsgMCB9OworICAgICAgICBmbG9hdCBlbmRNaW4geyAwIH07Cisg
ICAgICAgIGZsb2F0IGJlZ2luTWF4IHsgMCB9OworICAgICAgICBmbG9hdCBlbmRNYXggeyAwIH07
CisgICAgICAgIGJvb2wgYmVnaW5XUyB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgZW5kV1MgeyBm
YWxzZSB9OworICAgICAgICBib29sIGhhc0JyZWFrYWJsZUNoYXIgeyBmYWxzZSB9OworICAgICAg
ICBib29sIGhhc0JyZWFrIHsgZmFsc2UgfTsKKyAgICB9OworICAgIFdpZHRocyB0cmltbWVkUHJl
ZmVycmVkV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgYm9vbCYgc3RyaXBGcm9udFNwYWNlcyk7CisK
ICAgICBmbG9hdCBoYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aCh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CiAgICAgZmxvYXQgaGFuZ2FibGVQdW5jdHVhdGlvbkVuZFdpZHRoKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKICAgICB1bnNpZ25lZCBmaXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3Bh
Y2VzKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3Bh
Y2VzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNoYXIpIGNvbnN0
OworICAgIHN0YXRpYyBib29sIGlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hhcik7CiAgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRSZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25z
dDsKICAgICBMYXlvdXRSZWN0IGxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpIGNvbnN0
OwpAQCAtMTE5LDIyICsxMjAsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dFdpdGhPZmZz
ZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9y
Y2UgPSBmYWxzZSk7CiAKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlKSBmaW5hbDsKLSAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBvdmVycmlkZTsKLSAgICBMYXlvdXRSZWN0IGxvY2FsQ2Fy
ZXRSZWN0KElubGluZUJveCosIHVuc2lnbmVkIGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRy
YVdpZHRoVG9FbmRPZkxpbmUgPSAwKSBvdmVycmlkZTsKIAotICAgIExheW91dFJlY3QgY29sbGVj
dFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIFZlY3RvcjxMYXlv
dXRSZWN0PiYgcmVjdHMpOworICAgIExheW91dFJlY3QgY29sbGVjdFNlbGVjdGlvblJlY3RzRm9y
TGluZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYpOwogCiAgICAg
TGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCAwKTsgfQogICAgIExheW91dFVuaXQgbWFyZ2luUmln
aHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5S
aWdodCgpLCAwKTsgfQogCi0gICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dCBmaW5hbDsKLQogICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZUJveGVzLmZpcnN0KCk7IH0KICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0VGV4dEJv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveGVzLmxhc3QoKTsgfQogCi0gICAgaW50IGNhcmV0
TWluT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3QgZmluYWw7CisgICAg
aW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgY291bnRSZW5k
ZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgYm9vbCBjb250
YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0KHVuc2lnbmVkKSBjb25zdDsKICAgICBib29sIGNv
bnRhaW5zQ2FyZXRPZmZzZXQodW5zaWduZWQpIGNvbnN0OwpAQCAtMTU5LDExICsxNTUsMTEgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPElubGluZVRleHRCb3g+IGNyZWF0ZVRleHRCb3goKTsgLy8gU3ViY2xhc3NlZCBieSBS
ZW5kZXJTVkdJbmxpbmVUZXh0LgorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZVRl
eHRCb3g+IGNyZWF0ZVRleHRCb3goKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgZmxvYXQgY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
ZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZTsgfQotICAgIHZvaWQgc2V0Q2FuZGlkYXRlQ29tcHV0ZWRU
ZXh0U2l6ZShmbG9hdCBzKSB7IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSA9IHM7IH0KKyAg
ICB2b2lkIHNldENhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoZmxvYXQgc2l6ZSkgeyBtX2NhbmRp
ZGF0ZUNvbXB1dGVkVGV4dFNpemUgPSBzaXplOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZW5zdXJl
TGluZUJveGVzKCk7CkBAIC0xNzQsNyArMTcwLDcgQEAgcHVibGljOgogCiAgICAgTGF5b3V0VW5p
dCB0b3BPZkZpcnN0VGV4dCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgY29udGFpbnNPbmx5V2hp
dGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4pIGNvbnN0OworICAgIGJvb2wgY29u
dGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdDsKICAgICAKICAgICBib29sIGNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZzsgfQogCkBAIC0xOTcs
MjEgKzE5MywyNCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlbmRlclRleHQoTm9kZSYs
IGNvbnN0IFN0cmluZyYpOwogCisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworCiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopIG92ZXJyaWRlOwor
CisgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSkgZmluYWw7CisgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSkgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCB1bnNp
Z25lZCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVs
bHB0cikgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dCBmaW5hbDsKKwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVy
ZmxvdyYpOwogCiAgICAgYm9vbCBjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29u
c3Q7CiAgICAgCi0gICAgLy8gTWFrZSBsZW5ndGgoKSBwcml2YXRlIHNvIHRoYXQgY2FsbGVycyB0
aGF0IGhhdmUgYSBSZW5kZXJUZXh0KgotICAgIC8vIHdpbGwgdXNlIHRoZSBtb3JlIGVmZmljaWVu
dCB0ZXh0TGVuZ3RoKCkgaW5zdGVhZCwgd2hpbGUKLSAgICAvLyBjYWxsZXJzIHdpdGggYSBSZW5k
ZXJPYmplY3QqIGNhbiBjb250aW51ZSB0byB1c2UgbGVuZ3RoKCkuCi0gICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdGV4dExlbmd0aCgpOyB9Ci0KICAgICBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBvaW50JiwgSGl0VGVzdEFjdGlvbikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBmbG9hdCB3aWR0
aEZyb21DYWNoZShjb25zdCBGb250Q2FzY2FkZSYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlw
aE92ZXJmbG93KiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIGlzQWxsQVND
SUkoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsQVNDSUk7IH0KICAgICBib29sIGNvbXB1dGVVc2VC
YWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZWN1cmVUZXh0KFVDaGFy
IG1hc2spOwpAQCAtMjQ0LDI4ICsyNDMsMjMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShURVhU
X0FVVE9TSVpJTkcpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHBhcnQg
b2YgdGhlIHRleHQgc2l6aW5nIHN0cnVjdHVyZXMgaW4gRG9jdW1lbnQgaW5zdGVhZC4gVGhhdCB3
b3VsZCBzYXZlIHNvbWUgbWVtb3J5LgotICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0
U2l6ZTsKKyAgICBmbG9hdCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUgeyAwIH07CiAjZW5k
aWYKLSAgICBmbG9hdCBtX21pbldpZHRoOwotICAgIGZsb2F0IG1fbWF4V2lkdGg7Ci0gICAgZmxv
YXQgbV9iZWdpbk1pbldpZHRoOwotICAgIGZsb2F0IG1fZW5kTWluV2lkdGg7CisgICAgZmxvYXQg
bV9taW5XaWR0aCB7IC0xIH07CisgICAgZmxvYXQgbV9tYXhXaWR0aCB7IC0xIH07CisgICAgZmxv
YXQgbV9iZWdpbk1pbldpZHRoIHsgMCB9OworICAgIGZsb2F0IG1fZW5kTWluV2lkdGggeyAwIH07
CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKIAotaW5saW5lIFVDaGFyIFJlbmRlclRleHQ6OnVu
Y2hlY2tlZENoYXJhY3RlckF0KHVuc2lnbmVkIGkpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IHRleHRMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGlzOEJp
dCgpID8gY2hhcmFjdGVyczgoKVtpXSA6IGNoYXJhY3RlcnMxNigpW2ldOwotfQorU3RyaW5nIGFw
cGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFN0cmluZyYsIFVDaGFy
IHByZXZpb3VzQ2hhcmFjdGVyKTsKK1N0cmluZyBjYXBpdGFsaXplKGNvbnN0IFN0cmluZyYsIFVD
aGFyIHByZXZpb3VzQ2hhcmFjdGVyKTsKK0xpbmVCcmVha0l0ZXJhdG9yTW9kZSBtYXBMaW5lQnJl
YWtUb0l0ZXJhdG9yTW9kZShMaW5lQnJlYWspOwogCiBpbmxpbmUgVUNoYXIgUmVuZGVyVGV4dDo6
Y2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QKIHsKLSAgICBpZiAoaSA+PSB0ZXh0TGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHVuY2hlY2tlZENoYXJhY3RlckF0
KGkpOworICAgIHJldHVybiBpID49IGxlbmd0aCgpID8gMCA6IHRleHQoKVtpXTsKIH0KIAogaW5s
aW5lIGNvbnN0IFJlbmRlclN0eWxlJiBSZW5kZXJUZXh0OjpzdHlsZSgpIGNvbnN0CkBAIC0yOTgs
MTAgKzI5Miw2IEBAIGlubGluZSBDb2xvciBSZW5kZXJUZXh0OjpzZWxlY3Rpb25FbXBoYXNpc01h
cmtDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmVudCgpLT5zZWxlY3Rpb25FbXBoYXNpc01h
cmtDb2xvcigpOwogfQogCi12b2lkIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHls
ZSYsIFN0cmluZyYsIFVDaGFyKTsKLXZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyosIFVDaGFy
IHByZXZpb3VzKTsKLUxpbmVCcmVha0l0ZXJhdG9yTW9kZSBtYXBMaW5lQnJlYWtUb0l0ZXJhdG9y
TW9kZShMaW5lQnJlYWspOwotICAgIAogaW5saW5lIFJlbmRlclRleHQqIFRleHQ6OnJlbmRlcmVy
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4oTm9kZTo6cmVuZGVy
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQu
Y3BwCmluZGV4IGYxNWJlZWM3ZGMwZGUzZGFjYjBlNzZlYjllNTQxNzE1OTNiODg0ZTUuLmRkOWFj
YzdkMTAzMjc3NDY4ZDhjOGU1YzI2N2VjMGRkMGIxZWQ1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCkBAIC04MCwxMiArODAsMTEgQEAg
dm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyVGV4
dDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBmb3JjZSkKK3ZvaWQgUmVuZGVyVGV4dEZyYWdt
ZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgYm9vbCBmb3JjZSkKIHsKLSAgICBS
ZW5kZXJUZXh0OjpzZXRUZXh0KHRleHQsIGZvcmNlKTsKLQorICAgIFJlbmRlclRleHQ6OnNldFRl
eHQobmV3VGV4dCwgZm9yY2UpOwogICAgIG1fc3RhcnQgPSAwOwotICAgIG1fZW5kID0gdGV4dExl
bmd0aCgpOworICAgIG1fZW5kID0gdGV4dCgpLmxlbmd0aCgpOwogICAgIGlmICghbV9maXJzdExl
dHRlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1fZmlyc3RMZXR0ZXItPnJlbW92ZUZyb21QYXJl
bnRBbmREZXN0cm95KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dExpbmVCb3hlcy5jcHAKaW5kZXggNzVlMjFjNWRmMzk0ODA2YmE4NDM0MjJmZmE4NThjNjI2N2Jl
ODhkYi4uYmQwMjQzYWQ5NDBhOGY4MzIzMTkwMTUyYWU3YzFkMjE4ZmU4NDEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcApAQCAtMjI0
LDcgKzIyNCw3IEBAIGludCBSZW5kZXJUZXh0TGluZUJveGVzOjpjYXJldE1heE9mZnNldChjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlcikgY29uc3QKIHsKICAgICBhdXRvIGJveCA9IG1fbGFzdDsK
ICAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKIAogICAgIGludCBtYXhPZmZz
ZXQgPSBib3gtPnN0YXJ0KCkgKyBib3gtPmxlbigpOwogICAgIGZvciAoYm94ID0gYm94LT5wcmV2
VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+cHJldlRleHRCb3goKSkKQEAgLTM5NSw3ICszOTUs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRq
dXN0aW5nT2Zmc2V0Rm9yQmlEaShjb25zdCBJbgogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4
dExpbmVCb3hlczo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghbV9maXJzdCB8fCAh
cmVuZGVyZXIudGV4dExlbmd0aCgpKQorICAgIGlmICghbV9maXJzdCB8fCAhcmVuZGVyZXIudGV4
dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXIuY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKDAsIERPV05TVFJFQU0pOwogCiAgICAgTGF5b3V0VW5pdCBwb2ludExpbmVEaXJlY3Rpb24g
PSBtX2ZpcnN0LT5pc0hvcml6b250YWwoKSA/IHBvaW50LngoKSA6IHBvaW50LnkoKTsKQEAgLTQ0
OSw3ICs0NDksNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnNldFNlbGVjdGlvblN0YXRl
KFJlbmRlclRleHQmIHJlbmRlcmVyLCBSZW5kZXJPYmplY3Q6OgogICAgIGF1dG8gc3RhcnQgPSBy
ZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwogICAgIGF1dG8gZW5k
ID0gcmVuZGVyZXIudmlldygpLnNlbGVjdGlvbigpLmVuZFBvc2l0aW9uKCk7CiAgICAgaWYgKHN0
YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhcnQpIHsKLSAgICAgICAgZW5kID0gcmVu
ZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICBlbmQgPSByZW5kZXJlci50ZXh0KCkubGVuZ3Ro
KCk7CiAgICAgICAgIC8vIHRvIGhhbmRsZSBzZWxlY3Rpb24gZnJvbSBlbmQgb2YgdGV4dCB0byBl
bmQgb2YgbGluZQogICAgICAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPT0gZW5kKQogICAgICAgICAg
ICAgc3RhcnQgPSBlbmQgLSAxOwpAQCAtNTY4LDcgKzU2OCw3IEBAIFZlY3RvcjxGbG9hdFF1YWQ+
IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyVGV4dCYgcmVu
ZGVyZXIsCiAKICAgICAgICAgLy8gU2hvcnRlbiB0aGUgd2lkdGggb2YgdGhpcyB0ZXh0IGJveCBp
ZiBpdCBlbmRzIGluIGFuIGVsbGlwc2lzLgogICAgICAgICAvLyBGSVhNRTogZWxsaXBzaXNSZWN0
Rm9yQm94IHNob3VsZCBzd2l0Y2ggdG8gcmV0dXJuIEZsb2F0UmVjdCBzb29uIHdpdGggdGhlIHN1
YnBpeGVsbGF5b3V0IGJyYW5jaC4KLSAgICAgICAgSW50UmVjdCBlbGxpcHNpc1JlY3QgPSAob3B0
aW9uID09IENsaXBUb0VsbGlwc2lzKSA/IGVsbGlwc2lzUmVjdEZvckJveCgqYm94LCAwLCByZW5k
ZXJlci50ZXh0TGVuZ3RoKCkpIDogSW50UmVjdCgpOworICAgICAgICBJbnRSZWN0IGVsbGlwc2lz
UmVjdCA9IChvcHRpb24gPT0gQ2xpcFRvRWxsaXBzaXMpID8gZWxsaXBzaXNSZWN0Rm9yQm94KCpi
b3gsIDAsIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKSkgOiBJbnRSZWN0KCk7CiAgICAgICAgIGlm
ICghZWxsaXBzaXNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLnN0
eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgICAgICBib3VuZGFy
aWVzLnNldFdpZHRoKGVsbGlwc2lzUmVjdC5tYXhYKCkgLSBib3VuZGFyaWVzLngoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggMWViNDY3
Nzc4MWUxM2U2Nzk0ODcwZDcwZTJhZjViMmM3NmM1MTAwYi4uYzgzNmQxZWM1ZjQ2OTRkZmVkNmNh
YTEzMTNmMmY4NDY4YWM5Y2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFz
b25GbGFncyBjYW5Vc2VGb3JGb250QW5kVGV4dChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cs
IEluCiAgICAgYm9vbCBmbG93SXNKdXN0aWZpZWQgPSBzdHlsZS50ZXh0QWxpZ24oKSA9PSBKVVNU
SUZZOwogICAgIGZvciAoY29uc3QgYXV0byYgdGV4dFJlbmRlcmVyIDogY2hpbGRyZW5PZlR5cGU8
UmVuZGVyVGV4dD4oZmxvdykpIHsKICAgICAgICAgLy8gRklYTUU6IERvIG5vdCByZXR1cm4gdW50
aWwgYWZ0ZXIgY2hlY2tpbmcgYWxsIGNoaWxkcmVuLgotICAgICAgICBpZiAoIXRleHRSZW5kZXJl
ci50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgpLmlzRW1wdHko
KSkKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd1RleHRJ
c0VtcHR5LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIGlmICh0ZXh0UmVuZGVy
ZXIuaXNDb21iaW5lVGV4dCgpKQogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lG
X05FRURFRChGbG93VGV4dElzQ29tYmluZVRleHQsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3Zl
cmFnZS5jcHAKaW5kZXggYTkxNjA0NWU0YmFlODU2OTBjNTIwNmI2N2Y1MjUwYjdmMjU4YmY1Zi4u
YjI5MjM1YjYzNzRjN2MzNTgwZWQ1M2EyMGMzYThjOTk2NWFlMGZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKQEAg
LTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRleHRGb3JTdWJ0cmVlKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkJiBjaGFyYWN0ZQogc3RhdGljIHVuc2lnbmVk
IHRleHRMZW5ndGhGb3JTdWJ0cmVlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAg
ICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0TGVuZ3RoKCk7CisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpOwogICAgIGlmICghaXM8
UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25l
ZCB0ZXh0TGVuZ3RoID0gMDsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdW5zaWduZWQgdGV4
dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHN0YXRpYyB2
b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxlYWZSZW5kZXJl
cnMpCiB7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkgewotICAgICAgICBpZiAo
IWRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlm
ICghZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHQoKS5sZW5ndGgoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgLy8gRmluZCBSZW5kZXJCbG9ja0Zsb3cgYW5jZXN0b3Iu
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byogY3VycmVudCA9IHJlbmRlcmVyLnBhcmVudCgpOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcApp
bmRleCAxOGU1YjY0YmQ5NzYxZGUxOWYxMjlmMGQ4Y2NmYTNiYWFkYzQzYzc3Li4yOWIzNmEwZjMy
NzVhNWU2MDAwYzIzMDc5OGYyMTUwODk0ZGRlYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHN0YXRpYyBWZWN0b3I8Rmxvd0NvbnRlbnRzOjpTZWdtZW50PiBpbml0aWFs
aXplU2VnbWVudHMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmCiAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oZmxvdykpIHsKICAgICAgICAgaWYgKGlz
PFJlbmRlclRleHQ+KGNoaWxkKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dENoaWxkID0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGQpOwotICAgICAgICAgICAgdW5zaWduZWQgdGV4dExlbmd0
aCA9IHRleHRDaGlsZC50ZXh0KCktPmxlbmd0aCgpOworICAgICAgICAgICAgdW5zaWduZWQgdGV4
dExlbmd0aCA9IHRleHRDaGlsZC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgICAgICBzZWdtZW50
cy5hcHBlbmQoRmxvd0NvbnRlbnRzOjpTZWdtZW50IHsgc3RhcnRQb3NpdGlvbiwgc3RhcnRQb3Np
dGlvbiArIHRleHRMZW5ndGgsIHRleHRDaGlsZC50ZXh0KCksCiAgICAgICAgICAgICAgICAgdGV4
dENoaWxkLCB0ZXh0Q2hpbGQuY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSB9KTsKICAg
ICAgICAgICAgIHN0YXJ0UG9zaXRpb24gKz0gdGV4dExlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCAw
NmI2MWNjNzU2NWYxYjlkMjdlMGZmMjUwOGFjMDYyODYzN2RjNjMyLi5lNTQzNTJkZmI2YjkwY2My
OTRmOGE0MTBjOGQ1OWJhMmM1YjU4ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0yMTcsNyArMjE3LDcg
QEAgdW5zaWduZWQgdGV4dE9mZnNldEZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwg
Y29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIKICAgICBhdXRvIHJlc29sdmVyID0gcnVuUmVzb2x2
ZXIoZmxvdywgbGF5b3V0KTsKICAgICBhdXRvIGl0ID0gcmVzb2x2ZXIucnVuRm9yUG9pbnQocG9p
bnQpOwogICAgIGlmIChpdCA9PSByZXNvbHZlci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRl
cmVyLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgo
KTsKICAgICBhdXRvIHJ1biA9ICppdDsKICAgICBhdXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUoKTsK
ICAgICBUZXh0UnVuIHRleHRSdW4ocnVuLnRleHQoKSwgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5l
eHBhbnNpb24oKSwgcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggMDY0MWYz
NzdjMDM3NGEyNzQxOTIyZDA3MmIyZTBlNTUyN2MwM2ZjNi4uM2U4Yjg3Y2JhNTQ3MzZlZmM5NjQ1
NjAwYjBhOTg3NDEyN2ViNGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgaW5saW5l
IHVuc2lnbmVkIGZpbmRDYXJldE1pbmltdW1PZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0
IExheW91dCYgbGF5b3V0KQogaW5saW5lIHVuc2lnbmVkIGZpbmRDYXJldE1heGltdW1PZmZzZXQo
Y29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0KQogewogICAg
IGlmICghbGF5b3V0LnJ1bkNvdW50KCkpCi0gICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0TGVu
Z3RoKCk7CisgICAgICAgIHJldHVybiByZW5kZXJlci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgYXV0
byYgbGFzdCA9IGxheW91dC5ydW5BdChsYXlvdXQucnVuQ291bnQoKSAtIDEpOwogICAgIHJldHVy
biBsYXN0LmVuZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0LmgKaW5kZXggMDU2NjAxZTVkZjVkZDUzOTM0NzI0ZWE3ZGViOGM4M2RkYjIwMDQy
Yy4uN2YxYmExYzRlNGE1YzI2MGVkNjhiNDQwZjNlZGQ4NDc5MmI5YWQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTM4OSw3ICsz
ODksNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRBZGRCb3JkZXJQYWRkaW5nTWFyZ2luKFJlbmRlck9i
amVjdCogY2hpbGQpCiAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Ly8gV2hlbiBkZWNpZGluZyB3aGV0aGVyIHdlJ3JlIGF0IHRoZSBlZGdlIG9mIGFuIGlubGluZSwg
YWRqYWNlbnQgY29sbGFwc2VkIHdoaXRlc3BhY2UgaXMgdGhlIHNhbWUgYXMgbm8gc2libGluZyBh
dCBhbGwuCi0gICAgaWYgKGlzPFJlbmRlclRleHQ+KCpjaGlsZCkgJiYgIWRvd25jYXN0PFJlbmRl
clRleHQ+KCpjaGlsZCkudGV4dExlbmd0aCgpKQorICAgIGlmIChpczxSZW5kZXJUZXh0PigqY2hp
bGQpICYmICFkb3duY2FzdDxSZW5kZXJUZXh0PigqY2hpbGQpLnRleHQoKS5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykK
ICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPigqY2hpbGQpICYmIGNoaWxkLT5wYXJlbnQoKS0+
c3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBEQ0xPTkUpCkBAIC00ODIsNyArNDgyLDcg
QEAgaW5saW5lIGJvb2wgc2hvdWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KFJlbmRl
ckJsb2NrRmxvdyYgYmxvY2ssIFJlbmRlck8KICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LT5pc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIG5leHQgPSBiaWRpTmV4dFNr
aXBwaW5nRW1wdHlJbmxpbmVzKGJsb2NrLCBuZXh0KTsKIAotICAgIGlmIChpczxSZW5kZXJUZXh0
PihuZXh0KSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0PigqbmV4dCkudGV4dExlbmd0aCgpID4gMCkg
eworICAgIGlmIChpczxSZW5kZXJUZXh0PihuZXh0KSAmJiBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
bmV4dCkudGV4dCgpLmxlbmd0aCgpID4gMCkgewogICAgICAgICBSZW5kZXJUZXh0JiBuZXh0VGV4
dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0KTsKICAgICAgICAgVUNoYXIgbmV4dENoYXIg
PSBuZXh0VGV4dC5jaGFyYWN0ZXJBdCgwKTsKICAgICAgICAgaWYgKG5leHRUZXh0LnN0eWxlKCku
aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UobmV4dENoYXIpKSB7CkBAIC01OTIsNyArNTkyLDcgQEAg
aW5saW5lIGZsb2F0IGZpcnN0UG9zaXRpdmVXaWR0aChjb25zdCBXb3JkTWVhc3VyZW1lbnRzJiB3
b3JkTWVhc3VyZW1lbnRzKQogCiBpbmxpbmUgYm9vbCBpdGVyYXRvcklzQmV5b25kRW5kT2ZSZW5k
ZXJDb21iaW5lVGV4dChjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlciwgUmVuZGVyQ29tYmluZVRl
eHQmIHJlbmRlcmVyKQogewotICAgIHJldHVybiBpdGVyLnJlbmRlcmVyKCkgPT0gJnJlbmRlcmVy
ICYmIGl0ZXIub2Zmc2V0KCkgPj0gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgIHJldHVybiBp
dGVyLnJlbmRlcmVyKCkgPT0gJnJlbmRlcmVyICYmIGl0ZXIub2Zmc2V0KCkgPj0gcmVuZGVyZXIu
dGV4dCgpLmxlbmd0aCgpOwogfQogCiBpbmxpbmUgdm9pZCBuZXh0Q2hhcmFjdGVyKFVDaGFyJiBj
dXJyZW50Q2hhcmFjdGVyLCBVQ2hhciYgbGFzdENoYXJhY3RlciwgVUNoYXImIHNlY29uZFRvTGFz
dENoYXJhY3RlcikKQEAgLTYyMSw3ICs2MjEsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRX
aWR0aChSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRleHQuc3R5bGUoKTsKIAogICAgIEdseXBo
T3ZlcmZsb3cgZ2x5cGhPdmVyZmxvdzsKLSAgICBpZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAm
JiBsZW4gPT0gdGV4dC50ZXh0TGVuZ3RoKCkpIHx8IHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCisg
ICAgaWYgKGlzRml4ZWRQaXRjaCB8fCAoIWZyb20gJiYgbGVuID09IHRleHQudGV4dCgpLmxlbmd0
aCgpKSB8fCBzdHlsZS5oYXNUZXh0Q29tYmluZSgpKQogICAgICAgICByZXR1cm4gdGV4dC53aWR0
aChmcm9tLCBsZW4sIGZvbnQsIHhQb3MsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdyk7
CiAKICAgICBpZiAobGF5b3V0KQpAQCAtNzY1LDcgKzc2NSw3IEBAIGlubGluZSBib29sIEJyZWFr
aW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRz
LCBib29sCiAgICAgYm9vbCBjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ID0gc3R5bGUuaGFuZ2lu
Z1B1bmN0dWF0aW9uKCkgJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbjsKICAgICBib29sIGNhbkhh
bmdQdW5jdHVhdGlvbkF0RW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBMYXN0SGFu
Z2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kID0g
c3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbjsK
LSAgICBpbnQgZW5kUHVuY3R1YXRpb25JbmRleCA9IGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYm
IG1fY29sbGFwc2VXaGl0ZVNwYWNlID8gcmVuZGVyVGV4dC5sYXN0Q2hhcmFjdGVySW5kZXhTdHJp
cHBpbmdTcGFjZXMoKSA6IHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0gMTsKKyAgICBpbnQgZW5k
UHVuY3R1YXRpb25JbmRleCA9IGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIG1fY29sbGFwc2VX
aGl0ZVNwYWNlID8gcmVuZGVyVGV4dC5sYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMo
KSA6IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICB1bnNpZ25lZCBsYXN0U3Bh
Y2UgPSBtX2N1cnJlbnQub2Zmc2V0KCk7CiAgICAgZmxvYXQgd29yZFNwYWNpbmcgPSBtX2N1cnJl
bnRTdHlsZS0+Zm9udENhc2NhZGUoKS53b3JkU3BhY2luZygpOwogICAgIGZsb2F0IGxhc3RTcGFj
ZVdvcmRTcGFjaW5nID0gMDsKQEAgLTgxMCw3ICs4MTAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywg
Ym9vbAogICAgIC8vIHdvcmRzIHdpdGggdGhlaXIgdHJhaWxpbmcgc3BhY2UsIHRoZW4gc3VidHJh
Y3QgaXRzIHdpZHRoLgogICAgIFRleHRMYXlvdXQqIHRleHRMYXlvdXQgPSBtX3JlbmRlclRleHRJ
bmZvLmxheW91dC5nZXQoKTsKICAgICBXb3JkVHJhaWxpbmdTcGFjZSB3b3JkVHJhaWxpbmdTcGFj
ZShzdHlsZSwgIXRleHRMYXlvdXQpOwotICAgIGZvciAoOyBtX2N1cnJlbnQub2Zmc2V0KCkgPCBy
ZW5kZXJUZXh0LnRleHRMZW5ndGgoKTsgbV9jdXJyZW50LmZhc3RJbmNyZW1lbnRJblRleHROb2Rl
KCkpIHsKKyAgICBmb3IgKDsgbV9jdXJyZW50Lm9mZnNldCgpIDwgcmVuZGVyVGV4dC50ZXh0KCku
bGVuZ3RoKCk7IG1fY3VycmVudC5mYXN0SW5jcmVtZW50SW5UZXh0Tm9kZSgpKSB7CiAgICAgICAg
IGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlID0gbV9jdXJyZW50Q2hhcmFjdGVySXNTcGFj
ZTsKICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzV1MgPSBtX2N1cnJlbnRDaGFyYWN0
ZXJJc1dTOwogICAgICAgICBVQ2hhciBjID0gbV9jdXJyZW50LmN1cnJlbnQoKTsKQEAgLTg0MCw3
ICs4NDAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogCiAgICAgICAgIGlmICgoYnJlYWtB
bGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRCcmVhayAmJiAoIW1fY3VycmVudENoYXJhY3Rl
cklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgpICE9IFBSRV9XUkFQKSkgewogICAgICAgICAg
ICAgd3JhcFcgKz0gY2hhcldpZHRoOwotICAgICAgICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0Jl
Zm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVBRChjKSAmJiBtX2N1cnJlbnQub2Zmc2V0KCkg
KyAxIDwgcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgJiYgVTE2X0lTX1RSQUlMKHJlbmRlclRleHRb
bV9jdXJyZW50Lm9mZnNldCgpICsgMV0pOworICAgICAgICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJ
c0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVBRChjKSAmJiBVMTZfSVNfVFJBSUwocmVu
ZGVyVGV4dC5jaGFyYWN0ZXJBdChtX2N1cnJlbnQub2Zmc2V0KCkgKyAxKSk7CiAgICAgICAgICAg
ICBjaGFyV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBt
aWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPyAyIDogMSwgZm9udCwgbV93aWR0aC5j
b21taXR0ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3Bh
Y2UsIGZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQpOwogICAgICAgICAgICAgbWlkV29yZEJyZWFr
ID0gbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBtX3dpZHRo
LmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIH0KQEAgLTkyOSw3ICs5MjksNyBAQCBpbmxpbmUg
Ym9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1l
YXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG8gaHlw
aGVuYXRlIGF0IHRoZSBmaW5hbCBicmVhayBvZiBhIGJsb2NrLCBzaW5jZSB0aGlzIG1lYW5zIHRo
ZXJlIGlzCiAgICAgICAgICAgICAgICAgICAgIC8vIG5vIG1vcmUgY29udGVudCwgYW5kIGEgaHlw
aGVuYXRlZCBzaW5nbGUgd29yZCB3b3VsZCBlbmQgdXAgb24gYSBsaW5lIGJ5IGl0c2VsZi4gVGhp
cyBsb29rcwogICAgICAgICAgICAgICAgICAgICAvLyBiYWQgc28ganVzdCBkb24ndCBhbGxvdyBp
dC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkh5cGhlbmF0ZSAmJiAhbV93aWR0aC5maXRz
T25MaW5lKCkgJiYgKG1fbmV4dE9iamVjdCB8fCAhcmVuZGVyVGV4dC5jb250YWluc09ubHlXaGl0
ZXNwYWNlKG1fY3VycmVudC5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSBtX2N1
cnJlbnQub2Zmc2V0KCkpIHx8IGlzTGluZUVtcHR5KSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FuSHlwaGVuYXRlICYmICFtX3dpZHRoLmZpdHNPbkxpbmUoKSAmJiAobV9uZXh0T2JqZWN0
IHx8ICFyZW5kZXJUZXh0LmNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKG1fY3VycmVudC5vZmZz
ZXQoKSwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSBtX2N1cnJlbnQub2Zmc2V0KCkpIHx8
IGlzTGluZUVtcHR5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lQnJlYWtIaXN0
b3J5LnB1c2goWyZdKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyeUh5cGhlbmF0aW5nKHJlbmRlclRleHQsIGZvbnQsIHN0eWxlLmxvY2Fs
ZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0aW9u
TGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5cGhl
bmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2UsIG1fY3VycmVudC5vZmZzZXQoKSwgbV93aWR0
aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxhYmxl
V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNlV29y
ZFNwYWNpbmcsIG1vZGlmeU1lLCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCksIG1f
bGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwpA
QCAtOTY1LDcgKzk2NSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4
dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24gPSBsYXN0
Q2hhcmFjdGVyRnJvbVByZXZpb3VzUmVuZGVyVGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbikp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgdGV4dFJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxhc3RCcmVha2luZ1Bvc2l0
b24udmFsdWUoKSA+PSAxICYmIHRleHRSZW5kZXJlci50ZXh0TGVuZ3RoKCkgPiAobGFzdEJyZWFr
aW5nUG9zaXRvbi52YWx1ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRlcmVy
LnRleHQoKS5sZW5ndGgoKSA+IChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9z
aXRpb24gPSB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVyQXQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1
ZSgpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0aW9uKQpAQCAtMTA3
Myw3ICsxMDczLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgIGlmICht
X25leHRPYmplY3QgJiYgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAmJiBtX25leHRP
YmplY3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFJJR0hUIHx8IG1f
YmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKSB7CiAgICAgICAgICAgICAg
ICAgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5zZXRPZmZzZXQobV9zdGFydE9mSWdub3JlZFNwYWNl
cy5vZmZzZXQoKSAtIDEpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MganVzdCBhIHNp
bmdsZSB0cmFpbGluZyBzcGFjZSBzdGFydCBpZ25vcmluZyBpdCBub3cgc28gaXQgY29sbGFwc2Vz
IGF3YXkuCi0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZzZXQoKSA9PSByZW5kZXJU
ZXh0LnRleHRMZW5ndGgoKSAtIDEpCisgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZz
ZXQoKSA9PSByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIDEpCiAgICAgICAgICAgICAgICAg
ICAgIG1fbGluZVdoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUuc3RhcnRJZ25vcmluZ1NwYWNlcyht
X3N0YXJ0T2ZJZ25vcmVkU3BhY2VzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTMx
MywxMyArMTMxMywxMyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0Ojpv
cHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICByZXR1cm4g
bGluZUJyZWFrOwogICAgIFJlbmRlclRleHQmIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqbGluZUJyZWFrLnJlbmRlcmVyKCkpOwogICAgIC8vIERvbid0IGV2ZW4gYm90aGVyIG1l
YXN1cmluZyBpZiBvdXIgcmVtYWluaW5nIGxpbmUgaGFzIG1hbnkgY2hhcmFjdGVycwotICAgIGlm
IChyZW5kZXJUZXh0LnRleHRMZW5ndGgoKSA9PSBsaW5lQnJlYWsub2Zmc2V0KCkgfHwgcmVuZGVy
VGV4dC50ZXh0TGVuZ3RoKCkgLSBsaW5lQnJlYWsub2Zmc2V0KCkgPiBsb25nVHJhaWxpbmdXb3Jk
TGVuZ3RoKQorICAgIGlmIChyZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSA9PSBsaW5lQnJlYWsu
b2Zmc2V0KCkgfHwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSBsaW5lQnJlYWsub2Zmc2V0
KCkgPiBsb25nVHJhaWxpbmdXb3JkTGVuZ3RoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwog
ICAgIGJvb2wgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQgPSBtX3JlbmRlclRleHRJbmZvLmxpbmVC
cmVha0l0ZXJhdG9yLm1vZGUoKSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1bHQ7CiAg
ICAgYm9vbCBicmVha05CU1AgPSBtX2F1dG9XcmFwICYmIG1fY3VycmVudFN0eWxlLT5uYnNwTW9k
ZSgpID09IFNQQUNFOwogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQ
b3NpdGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKICAgICBpc0JyZWFr
YWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLCBsaW5lQnJlYWsub2Zmc2V0
KCkgKyAxLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFr
U2hvcnRjdXQsIG1fY3VycmVudFN0eWxlLT53b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29yZEJyZWFr
KTsKLSAgICBpZiAoIW5leHRCcmVha2FibGVQb3NpdGlvbiB8fCBuZXh0QnJlYWthYmxlUG9zaXRp
b24udmFsdWUoKSAhPSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkKKyAgICBpZiAoIW5leHRCcmVh
a2FibGVQb3NpdGlvbiB8fCBuZXh0QnJlYWthYmxlUG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJU
ZXh0LnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBsaW5lU3R5bGUocmVuZGVyVGV4dCwgbV9saW5lSW5mbyk7
CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwpAQCAt
MTMyOSw3ICsxMzI5LDcgQEAgaW5saW5lIElubGluZUl0ZXJhdG9yIEJyZWFraW5nQ29udGV4dDo6
b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3JkKCkKICAgICAgICAgY29uc3Qg
SW5saW5lSXRlcmF0b3ImIGNhbmRpZGF0ZSA9IG1fbGluZUJyZWFrSGlzdG9yeS5nZXQoaSk7CiAg
ICAgICAgIGlmIChjYW5kaWRhdGUucmVuZGVyZXIoKSAhPSBsaW5lQnJlYWsucmVuZGVyZXIoKSkK
ICAgICAgICAgICAgIHJldHVybiBiZXN0OwotICAgICAgICBmbG9hdCB3aWR0aCA9IHRleHRXaWR0
aChyZW5kZXJUZXh0LCBjYW5kaWRhdGUub2Zmc2V0KCksIHJlbmRlclRleHQudGV4dExlbmd0aCgp
IC0gY2FuZGlkYXRlLm9mZnNldCgpLCBmb250LCAwLCBmb250LmlzRml4ZWRQaXRjaCgpLCBtX2Nv
bGxhcHNlV2hpdGVTcGFjZSwgZHVtbXlGb250cyk7CisgICAgICAgIGZsb2F0IHdpZHRoID0gdGV4
dFdpZHRoKHJlbmRlclRleHQsIGNhbmRpZGF0ZS5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0KCku
bGVuZ3RoKCkgLSBjYW5kaWRhdGUub2Zmc2V0KCksIGZvbnQsIDAsIGZvbnQuaXNGaXhlZFBpdGNo
KCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBkdW1teUZvbnRzKTsKICAgICAgICAgaWYgKHdpZHRo
ID4gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIGJlc3Q7CiAg
ICAgICAgIGlmICh3aWR0aCAvIG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKSA+IG9wdGltYWxUcmFp
bGluZ0xpbmVSYXRpbykgLy8gU3Vic2VxdWVudCBsaW5lIGlzIGxvbmcgZW5vdWdoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcAppbmRleCAx
MWNlMmI2ZjYxNDA4ZTg3NTliZTlkN2JmZTRkZWNiMTM3MTc4YmY1Li41NGYwYjUzNDAzNDJmODAz
Y2E4ZmI2NDA4OGRkOTRhNDI3NTA0Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBUcmFp
bGluZ09iamVjdHM6OnVwZGF0ZVdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbnNGb3JUcmFp
bGluZ0JveGVzKExpbmUKICAgICAgICAgQVNTRVJUKG1fd2hpdGVzcGFjZS0+aXNUZXh0KCkpOwog
ICAgICAgICBBU1NFUlQoY29sbGFwc2VGaXJzdFNwYWNlID09IENvbGxhcHNlRmlyc3RTcGFjZSk7
CiAgICAgICAgIC8vIEFkZCBhIG5ldyBlbmQgdHJhbnNpdGlvbiB0aGF0IHN0b3BzIHJpZ2h0IGF0
IHRoZSB2ZXJ5IGVuZC4KLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV93aGl0ZXNwYWNlLT50
ZXh0TGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fd2hpdGVzcGFjZS0+dGV4
dCgpLmxlbmd0aCgpOwogICAgICAgICB1bnNpZ25lZCBwb3MgPSBsZW5ndGggPj0gMiA/IGxlbmd0
aCAtIDIgOiBVSU5UX01BWDsKICAgICAgICAgSW5saW5lSXRlcmF0b3IgZW5kTWlkKDAsIG1fd2hp
dGVzcGFjZSwgcG9zKTsKICAgICAgICAgbGluZVdoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUuc3Rh
cnRJZ25vcmluZ1NwYWNlcyhlbmRNaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IGVjMWEwMTI1ZjAwOTE0
OTcyOTQwZDNmYmU3ZTgzYzg1ODU0N2UyMjIuLjI4ZmFmZGI1M2YzNzIxNjBlZjQ5N2Y5YWNmN2Ni
Yjg4ZDA1NmQ0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBhdXRvJiBzZXBhcmF0b3JzID0g
ZmVuY2VkLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oTWF0aE1MTmFtZXM6OnNlcGFy
YXRvcnNBdHRyKTsKICAgICBpZiAoIXNlcGFyYXRvcnMuaXNOdWxsKCkpIHsKICAgICAgICAgU3Ry
aW5nQnVpbGRlciBjaGFyYWN0ZXJzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHNlcGFyYXRvcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2VwYXJhdG9ycy5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIWlz
U3BhY2VPck5ld2xpbmUoc2VwYXJhdG9yc1tpXSkpCiAgICAgICAgICAgICAgICAgY2hhcmFjdGVy
cy5hcHBlbmQoc2VwYXJhdG9yc1tpXSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDI5ZmRhNDYx
NDE5YzAyZTJiYjkxZDE4ZTE2Y2RlMmY4YmQxODE1MTkuLjNiYWM5Y2E1ZDBhZTMzYTUwNTgyMzk3
M2QxMTNmNDY1ZmJkOTkzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIEludFJlY3Qg
UmVuZGVyU1ZHSW5saW5lVGV4dDo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiBib29sIFJlbmRl
clNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQgcG9zaXRpb24p
IGNvbnN0CiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uID49IDApOwotICAgIEFTU0VSVChwb3NpdGlv
biA8IHN0YXRpY19jYXN0PGludD4odGV4dExlbmd0aCgpKSk7CisgICAgQVNTRVJUKHBvc2l0aW9u
IDwgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0KCkubGVuZ3RoKCkpKTsKIAogICAgIC8vIEVhY2ggPHRl
eHRQYXRoPiBlbGVtZW50IHN0YXJ0cyBhIG5ldyB0ZXh0IGNodW5rLCByZWdhcmRsZXNzIG9mIGFu
eSB4L3kgdmFsdWVzLgogICAgIGlmICghcG9zaXRpb24gJiYgcGFyZW50KCktPmlzU1ZHVGV4dFBh
dGgoKSAmJiAhcHJldmlvdXNTaWJsaW5nKCkpCkBAIC0xNzAsNyArMTcwLDcgQEAgYm9vbCBSZW5k
ZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9u
KSBjb25zdAogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKikKIHsKLSAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8ICF0ZXh0TGVuZ3RoKCkpCisg
ICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCB0ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwogCiAgICAgZmxvYXQgYmFz
ZWxpbmUgPSBtX3NjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwCmluZGV4IDJjMDY4YjljMzk4YTYzNDY5Zjc3YjcwYzQ5Yjg4
NWNmNTA5NTk5MDAuLjVlOTk5Mzg2MjlkYjM5YzMwZjY2MTUyMzJiZTgyNzRmNDI3NTg3YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKQEAgLTgwLDE3ICs4MCwyMCBAQCB2b2lkIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVy
ZXIoUmVuZGVyU1ZHSW5saQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1JlbmRlclNWR0lu
bGluZVRleHQoY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwgdW5zaWduZWQmIGF0Q2hh
cmFjdGVyLCBib29sJiBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpCiB7CisgICAgYXV0byYgc3RyaW5n
ID0gdGV4dC50ZXh0KCk7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAg
aWYgKHRleHQuc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gUFJFKSB7Ci0gICAgICAgIGF0Q2hhcmFj
dGVyICs9IHRleHQudGV4dExlbmd0aCgpOworICAgICAgICBhdENoYXJhY3RlciArPSBsZW5ndGg7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIHRleHRQb3NpdGlv
biA9IDAsIHRleHRMZW5ndGggPSB0ZXh0LnRleHRMZW5ndGgoKTsgdGV4dFBvc2l0aW9uIDwgdGV4
dExlbmd0aDsgKyt0ZXh0UG9zaXRpb24pIHsKLSAgICAgICAgY29uc3QgVUNoYXIgY3VycmVudENo
YXJhY3RlciA9IHRleHRbdGV4dFBvc2l0aW9uXTsKLSAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0
ZXIgPT0gJyAnICYmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBub3QgYSBjb21wbGV0ZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcgaW1wbGVtZW50YXRpb247IGl0
IGRvZXNuJ3QgaGFuZGxlIG5ld2xpbmVzIG9yIHRhYnMuCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHN0cmluZ1tp
XTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnICcgJiYgbGFzdENoYXJhY3Rlcldhc1NwYWNl
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbGFzdENoYXJhY3Rlcldhc1NwYWNl
ID0gY3VycmVudENoYXJhY3RlciA9PSAnICc7CisgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNTcGFj
ZSA9IGNoYXJhY3RlciA9PSAnICc7CiAgICAgICAgICsrYXRDaGFyYWN0ZXI7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5n
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2lu
ZS5jcHAKaW5kZXggNjYwZTg2YTMyYTgxZDRkZTRjM2NiNTI2MzI2MmFlMjNmYmNhNTU4Yy4uMjMz
MzcwMWQyNDM2ZDEwNDA4NzI5NmNlMjkzN2YzMWMxYTQwNjU1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCkBAIC0zMTYs
NyArMzE2LDcgQEAgYm9vbCBTVkdUZXh0TGF5b3V0RW5naW5lOjpjdXJyZW50TG9naWNhbENoYXJh
Y3RlckF0dHJpYnV0ZXMoU1ZHVGV4dExheW91dEF0dHJpYnUKICAgICBsb2dpY2FsQXR0cmlidXRl
cyA9IG1fbGF5b3V0QXR0cmlidXRlc1ttX2xheW91dEF0dHJpYnV0ZXNQb3NpdGlvbl07CiAgICAg
QVNTRVJUKGxvZ2ljYWxBdHRyaWJ1dGVzKTsKIAotICAgIGlmIChtX2xvZ2ljYWxDaGFyYWN0ZXJP
ZmZzZXQgIT0gbG9naWNhbEF0dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0TGVuZ3RoKCkpCisgICAg
aWYgKG1fbG9naWNhbENoYXJhY3Rlck9mZnNldCAhPSBsb2dpY2FsQXR0cmlidXRlcy0+Y29udGV4
dCgpLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICArK21fbGF5
b3V0QXR0cmlidXRlc1Bvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UXVlcnkuY3BwCmluZGV4IDg2ZTRiZjJmM2Q1MWVjZmRjMmY4OGFjMDU1ODQ4MjhiNzJl
ZWFmNzYuLmZkODkwMjI5NGI2YTAwNGNhNTA1ODZmNTdhYmE2NDRiNmUwM2U1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKQEAgLTE2NCw3ICsx
NjQsNyBAQCB2b2lkIFNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0
aW5nTGlnYXR1cmVzKERhdGEqIHF1ZXJ5RGF0YSwgdQogICAgIHVuc2lnbmVkIHRleHRNZXRyaWNz
U2l6ZSA9IHRleHRNZXRyaWNzVmFsdWVzLnNpemUoKTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9u
T2Zmc2V0ID0gMDsKLSAgICB1bnNpZ25lZCBwb3NpdGlvblNpemUgPSBsYXlvdXRBdHRyaWJ1dGVz
LT5jb250ZXh0KCkudGV4dExlbmd0aCgpOworICAgIHVuc2lnbmVkIHBvc2l0aW9uU2l6ZSA9IGxh
eW91dEF0dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0KCkubGVuZ3RoKCk7CiAKICAgICBib29sIGFs
dGVyU3RhcnRQb3NpdGlvbiA9IHRydWU7CiAgICAgYm9vbCBhbHRlckVuZFBvc2l0aW9uID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCA3MzMx
MTA5YWY1YTA1ZmE3MzgxNGZlMzZiYmUyNzYxMTczNDY0NGJjLi5jYzM5ZjIyM2RmMWU3Nzg5ODlk
MzI2MmUxZTU0OTJiNWVmMzQ3OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVVwZGF0ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJl
bmRlclN0eWxlLmgiCkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICAgICAgYXV0byYg
dGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAgYXV0byogdGV4dFVwZGF0
ZSA9IG1fc3R5bGVVcGRhdGUtPnRleHRVcGRhdGUodGV4dCk7CiAgICAgICAgICAgICBib29sIGRp
ZENyZWF0ZVBhcmVudCA9IHBhcmVudCgpLnVwZGF0ZXMgJiYgcGFyZW50KCkudXBkYXRlcy0+dXBk
YXRlLmNoYW5nZSA9PSBTdHlsZTo6RGV0YWNoOwotICAgICAgICAgICAgYm9vbCBtYXlOZWVkVXBk
YXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudCgpLmRpZENyZWF0ZU9y
RGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Cisg
ICAgICAgICAgICBib29sIG1heU5lZWRVcGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVu
ZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmRh
dGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgICAgICAgICAg
aWYgKGRpZENyZWF0ZVBhcmVudCB8fCB0ZXh0VXBkYXRlIHx8IG1heU5lZWRVcGRhdGVXaGl0ZXNw
YWNlT25seVJlbmRlcmVyKQogICAgICAgICAgICAgICAgIHVwZGF0ZVRleHRSZW5kZXJlcih0ZXh0
LCB0ZXh0VXBkYXRlKTsKIApAQCAtNDA4LDcgKzQwOSw3IEBAIGJvb2wgUmVuZGVyVHJlZVVwZGF0
ZXI6OnRleHRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFRleHQmIHRleHROb2RlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoIXRleHROb2RlLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCF0ZXh0Tm9kZS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAg
aWYgKCF0ZXh0Tm9kZS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4o
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmlu
Z1BhcmVudC5wcmV2aW91c0NoaWxkUmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDgzNGMwZTNkOThlOGIyZGU1ZDk4MGFmYWZlNzYzNWYy
NDM3ZTFmMGQuLjU5N2NlZGQ3YzBhYWQzZTY3MzBmYjM4MDUxNTZhNTUwNzkzMDM4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMjUxLDggKzI1MSw4IEBAIGJvb2wgU1ZHVGVzdHM6Omhh
c0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0
cmluZyYKICAgICAvLyBUaGlzIGlzIHdoYXQgdGhlIERPTUltcGxlbWVudGF0aW9uIGZ1bmN0aW9u
IG5vdyBkb2VzIGluIEphdmFTY3JpcHQgYXMgaXMgbm93IHN1Z2dlc3RlZCBpbiB0aGUgRE9NIHNw
ZWNpZmljYXRpb24uCiAgICAgLy8gVGhlIGJlaGF2aW9yIGltcGxlbWVudGVkIGJlbG93IGlzIHF1
aXJreSwgYnV0IHByZXNlcnZlcyB3aGF0IFdlYktpdCBoYXMgZG9uZSBmb3IgYXQgbGVhc3QgdGhl
IGxhc3QgZmV3IHllYXJzLgogCi0gICAgYm9vbCBoYXNTVkcxMEZlYXR1cmVQcmVmaXggPSBmZWF0
dXJlLnN0YXJ0c1dpdGgoIm9yZy53M2MuZG9tLnN2ZyIsIGZhbHNlKSB8fCBmZWF0dXJlLnN0YXJ0
c1dpdGgoIm9yZy53M2Muc3ZnIiwgZmFsc2UpOwotICAgIGJvb2wgaGFzU1ZHMTFGZWF0dXJlUHJl
Zml4ID0gZmVhdHVyZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnczLm9yZy90ci9zdmciLCBmYWxz
ZSk7CisgICAgYm9vbCBoYXNTVkcxMEZlYXR1cmVQcmVmaXggPSBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGZlYXR1cmUsICJvcmcudzNjLmRvbS5zdmciKSB8fCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZlYXR1cmUsICJvcmcudzNjLnN2ZyIpOworICAgIGJv
b2wgaGFzU1ZHMTFGZWF0dXJlUHJlZml4ID0gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShmZWF0dXJlLCAiaHR0cDovL3d3dy53My5vcmcvdHIvc3ZnIik7CiAKICAgICAvLyBXZSBk
b24ndCBldmVuIHRyeSB0byBoYW5kbGUgZmVhdHVyZSBuYW1lcyB0aGF0IGRvbid0IGxvb2sgbGlr
ZSB0aGUgU1ZHIG9uZXMsIHNvIGp1c3QgcmV0dXJuIHRydWUgZm9yIGFsbCBvZiB0aG9zZS4KICAg
ICBpZiAoIShoYXNTVkcxMEZlYXR1cmVQcmVmaXggfHwgaGFzU1ZHMTFGZWF0dXJlUHJlZml4KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCBjMzEzMTM1YWVlMDg3ZjY4MWNlYzYwZDRiNWJiZWQ5OTc0YzFhMzRh
Li5hMzdkNjE1MTZhNjI4MDBmNWE0MzFiODkxYzcyNzM0ZjA5MDM1YmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC0zOTksMjIgKzM5OSwyMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9h
ZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygp
OwogCi0gICAgLy8gT24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zIGxpYnhtbCBhc2tzIGZvciB0aGlz
IFVSTCwgdGhlCi0gICAgLy8gIlhNTF9YTUxfREVGQVVMVF9DQVRBTE9HIiwgb24gaW5pdGlhbGl6
YXRpb24uCisgICAgLy8gT24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zIGxpYnhtbCBhc2tzIGZvciB0
aGlzIFVSTCwgdGhlICJYTUxfWE1MX0RFRkFVTFRfQ0FUQUxPRyIsIG9uIGluaXRpYWxpemF0aW9u
LgogICAgIGlmICh1cmxTdHJpbmcgPT0gImZpbGU6Ly8vZXRjL3htbC9jYXRhbG9nIikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gT24gV2luZG93cywgbGlieG1sIGNvbXB1dGVzIGEg
VVJMIHJlbGF0aXZlIHRvIHdoZXJlIGl0cyBETEwgcmVzaWRlcy4KLSAgICBpZiAodXJsU3RyaW5n
LnN0YXJ0c1dpdGgoImZpbGU6Ly8vIiwgZmFsc2UpICYmIHVybFN0cmluZy5lbmRzV2l0aCgiL2V0
Yy9jYXRhbG9nIiwgZmFsc2UpKQorICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHVybFN0cmluZywgImZpbGU6Ly8vIikgJiYgdXJsU3RyaW5nLmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoIi9ldGMvY2F0YWxvZyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyBUaGUgbW9zdCBjb21tb24gRFRELiAgVGhlcmUgaXNuJ3QgbXVjaCBwb2ludCBpbiBoYW1t
ZXJpbmcgd3d3LnczYy5vcmcKLSAgICAvLyBieSByZXF1ZXN0aW5nIHRoaXMgVVJMIGZvciBldmVy
eSBYSFRNTCBkb2N1bWVudC4KLSAgICBpZiAodXJsU3RyaW5nLnN0YXJ0c1dpdGgoImh0dHA6Ly93
d3cudzMub3JnL1RSL3hodG1sIiwgZmFsc2UpKQorICAgIC8vIFRoZSBtb3N0IGNvbW1vbiBEVEQu
IFRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gaGFtbWVyaW5nIHd3dy53M2Mub3JnIGJ5IHJlcXVl
c3RpbmcgdGhpcyBmb3IgZXZlcnkgWEhUTUwgZG9jdW1lbnQuCisgICAgaWYgKHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsU3RyaW5nLCAiaHR0cDovL3d3dy53My5vcmcvdHIv
eGh0bWwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gU2ltaWxhcmx5LCB0aGVy
ZSBpc24ndCBtdWNoIHBvaW50IGluIHJlcXVlc3RpbmcgdGhlIFNWRyBEVEQuCi0gICAgaWYgKHVy
bFN0cmluZy5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkciLCBmYWxz
ZSkpCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsU3RyaW5n
LCAiaHR0cDovL3d3dy53My5vcmcvZ3JhcGhpY3Mvc3ZnIikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIFRoZSBsaWJ4bWwgZG9lc24ndCBnaXZlIHVzIGEgbG90IG9mIGNvbnRleHQg
Zm9yIGRlY2lkaW5nIHdoZXRoZXIgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAxZWI3OTNkOWVmZTI3ZWMzNjA0OGYx
NWU0YWRhMTAwYTUwZmM4ODk0Li5mZDdiYTc4YjYzNzk4NDc4MzBlZGNkZTllZGQ0NzM5YjQ3ZmQ5
ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCkBAIC0yMjEsMTMgKzIyMSw5IEBAIHN0YXRpYyBSZXRyaWV2ZURlY2lzaW9u
IG1ha2VSZXRyaWV2ZURlY2lzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
CiAgICAgcmV0dXJuIFJldHJpZXZlRGVjaXNpb246OlllczsKIH0KIAotc3RhdGljIGJvb2wgaXNN
ZWRpYU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitzdGF0aWMgYm9vbCBpc01lZGlh
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChtaW1lVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby8iLCAvKmNhc2VTZW5zaXRpdmUqLyBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKCJhdWRpby8iLCAvKmNhc2VTZW5zaXRp
dmUqLyBmYWxzZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8v
IikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIik7
CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRUb3RhbFJlc291cmNl
U2l6ZUZyb21Db250ZW50UmFuZ2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUtleS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUtleS5jcHAKaW5kZXggM2M0OTkxY2M3NTlkMmZiNzU4NGQzZGFjYzQxMDQ1MzZi
MjAxYTZlNC4uOGZhODFkMTA5YTRjNzNjZDBiMzE5NWI4OGZmNWUzZGIxNTdjMzhlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
S2V5LmNwcApAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNo
YTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmNvbnRhaW5z
T25seUFTQ0lJKCkpIHsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5pc0FsbEFT
Q0lJKCkpIHsKICAgICAgICAgY29uc3QgdWludDhfdCBudWxsQnl0ZSA9IDA7CiAgICAgICAgIHNo
YTEuYWRkQnl0ZXMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAg
ICAgIHNoYTEuYWRkQnl0ZXMoJm51bGxCeXRlLCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCAwMWNlODEzYzNiYzkx
MjRjZjIyZTJmZDczNDUwNTBjYjg3MmM2MzM2Li4yNzQyOTM0YmQ0ZjRhNDljMmUzMjQ5MzM4NjZj
ODZmZjA0N2RmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVQb2xpY2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFdLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZVBvbGljaWVzU2V0Q3VzdG9tSGVhZGVyRmllbGRzKFdLV2Vic2l0ZVBvbGljaWVzUmVm
IHdlYnNpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICBXS1N0cmluZ1JlZiBuYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChrZXlzLmdldCgpLCBpKSk7CiAgICAgICAgIGF1dG8gZmllbGQgPSBXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZSh0b0ltcGwobmFtZSktPnN0cmluZygpLCB0b0ltcGwo
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGljdGlv
bmFyeSwgbmFtZSkpKS0+c3RyaW5nKCkpOwotICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQtPm5h
bWUoKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIlgtIikpCisgICAgICAgIGlmIChmaWVs
ZCAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpZWxkLT5uYW1lKCksICJ4
LSIpKQogICAgICAgICAgICAgZmllbGRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpmaWVsZCkp
OwogICAgIH0KICAgICB0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+c2V0Q3VzdG9tSGVhZGVyRmll
bGRzKFdURk1vdmUoZmllbGRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQppbmRleCBjYjJlNTY2OGU2MmE0Yzdj
MDFlYWZmOGZkNDIxOTFlYmY2MGNhYWViLi5kN2FhMjVhNGVkNWNmMDY5NDViMTZjYTQzYmNiZWI3
MWRlZmJhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCAtICh2b2lkKXNl
dEN1c3RvbUhlYWRlckZpZWxkczooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+
ICopZmllbGRzCiAgICAgCiAgICAgZm9yIChOU1N0cmluZyogbmFtZSBpbiBmaWVsZHMpIHsKICAg
ICAgICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKG5hbWUs
IFtmaWVsZHMgb2JqZWN0Rm9yS2V5Om5hbWVdKTsKLSAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxk
LT5uYW1lKCkuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJYLSIpKQorICAgICAgICBpZiAo
ZmllbGQgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWVsZC0+bmFtZSgp
LCAieC0iKSkKICAgICAgICAgICAgIHBhcnNlZEZpZWxkcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZSgqZmllbGQpKTsKICAgICB9CiAgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q3VzdG9tSGVhZGVy
RmllbGRzKFdURk1vdmUocGFyc2VkRmllbGRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA1YjA1YWFmMmUwOWNjOTM3MjkzMTVjZmFlNDMxNmYzNzZhYmJi
ZDEwLi43NTkwZDUxN2RkNzY3MmNkZmViZTNhNmZmYTk1N2ZhNjVjMGJmNjk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYyNTIsNyArNjI1Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBTCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdp
bmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7Ci0g
ICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkKKyAgICBp
ZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihX
VEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9wZGYi
KSwgV1RGTW92ZShvcmlnaW5hdGluZ1VSTCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBkZmVmNThiMDg1OWJhNTdlY2E2MmZkZDE3OGEx
ZTRlMWIzZDYwNjViLi4wMGMxYTcyOWFlMjg4MjY4ZTc0ZjJlYjAzODM4ZGM2N2RmZGE2NWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAg
LTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9s
ZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdAogICAgIC8vIEZJWE1FOiBX
cml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBt
ZXRhZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgpPyku
CiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5nVVJMU3RyaW5nKTsKIAotICAgIGlmICghc3Vn
Z2VzdGVkRmlsZW5hbWUuZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkpIHsKKyAgICBpZiAoIXN1Z2dl
c3RlZEZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIkNhbm5vdCBzYXZlIGZpbGUgd2l0aG91dCAucGRmIGV4dGVuc2lvbiB0
byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTUzMyw3ICs1MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlG
b2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBw
ZGZGaWxlbmFtZSA9IG1fdGVtcG9yYXJ5UERGRmlsZXMuZ2V0KHBkZlVVSUQpOwogCi0gICAgaWYg
KCFwZGZGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkKKyAgICBpZiAoIXBkZkZpbGVu
YW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG9wZW5GaWxlOnBkZkZpbGVuYW1l
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
NWM3MDkyNGNlOTE4MzA1ZmY2YWUwZTgzMmNlOTYzNmY1ZWNmMDI5Yi4uYWEyZmVmOThjYTg1Y2Zi
YTRlYTU0NDFmMGFkZDRjZDFiMWY5NWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgwMCw3ICs4MDAsNyBAQCBSZWZQdHI8UGx1Z2luPiBX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCog
cGx1Z2luRQogICAgIGlmIChpc0Jsb2NrZWRQbHVnaW4gfHwgIXBsdWdpblByb2Nlc3NUb2tlbikg
ewogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhcmFt
ZXRlcnMudXJsLnBhdGgoKTsKLSAgICAgICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigpICYmIChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWlt
ZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBlLmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0
aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNXaXRoKCIucHMiLCBmYWxzZSkpKSkpIHsKKyAg
ICAgICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigpICYmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BE
Rk9yUG9zdFNjcmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWltZVR5cGUpIHx8IChwYXJhbWV0ZXJz
Lm1pbWVUeXBlLmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIu
cGRmIikgfHwgcGF0aC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucHMiKSkpKSkgewogICAg
ICAgICAgICAgYXV0byBwZGZQbHVnaW4gPSBQREZQbHVnaW46OmNyZWF0ZShmcmFtZSk7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShwZGZQbHVnaW4pOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIw
MjQ2MjUyOWQ0YWQ3OGE0ZTlmNmY3NWQzZmYxM2M5ZmM1NGU1YzUuLjhiZDk3ZjZhNDFiNGVmMGVm
ZGNiOTQwYTk4ODBhNWU3MGQwODcyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJl
c3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS53b3JkQXRT
ZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQ7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4gdGhlIHN0cmluZyBjb250YWlucyBvbmx5IENK
IGNoYXJhY3RlcnMuCi0gICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSBy
ZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCAmJiAh
c2VsZWN0ZWRUZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICAgICAgcG9zdExheW91
dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVz
dWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNBbGxTcGVjaWFsQ2hhcmFj
dGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICB9CiAgICAgcG9zdExheW91dERhdGEuaW5zaWRlRml4
ZWRQb3NpdGlvbiA9IHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiB8fCBlbmROb2RlSXNJ
bnNpZGVGaXhlZFBvc2l0aW9uOwogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlz
dC5jcHAKaW5kZXggMWY5YmFlY2UwNjk1MGQ5NjI1ZjQ3Yjc5YzA2MDYwYzA2NjhiNmI5Yy4uNmQ0
NzRhMjZjNTIyYWU3MTdkOWJiN2EyMDhkMjM2YWIzOGU1Nzk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAt
Mjg0LDcgKzI4NCw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVTdHJpbmdP
YmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOwogICAgIG1fYnl0ZUNvdW50ICs9IG1hcmtlclBsdXNMZW5ndGhCeXRlQ291
bnQobGVuZ3RoKSArIGxlbmd0aDsKLSAgICBpZiAoIXN0cmluZy5jb250YWluc09ubHlBU0NJSSgp
KQorICAgIGlmICghc3RyaW5nLmlzQWxsQVNDSUkoKSkKICAgICAgICAgbV9ieXRlQ291bnQgKz0g
bGVuZ3RoOwogfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RT
ZXJpYWxpemVyOjphcHBlbmRTdHJpbmdPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgc3RhcnRPYmplY3QoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
Ci0gICAgaWYgKHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7CisgICAgaWYgKHN0cmluZy5p
c0FsbEFTQ0lJKCkpIHsKICAgICAgICAgaWYgKGxlbmd0aCA8PSBtYXhMZW5ndGhJbk1hcmtlckJ5
dGUpCiAgICAgICAgICAgICBhcHBlbmRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGFz
Y2lpU3RyaW5nTWFya2VyQnl0ZSB8IGxlbmd0aCkpOwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggNTZmNmRlYzBiN2Y1MmVlZWFmZWRhNjcxNTdjMzZlNzZhOWI2Y2FmNC4uYjdi
Y2E0NWIxNjA5YTc4MTRjNzIwN2RiMmYwY2I1NDFlZTA2YjhiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
QEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxh
YmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZWdF
eHBDYWNoZVNpemUgPSA0OwogICAgIHN0YXRpYyBOU011dGFibGVBcnJheSogcmVnRXhwTGFiZWxz
ID0gbmlsOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8UmVndWxhckV4cHJlc3Np
b24qPj4gcmVnRXhwczsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Np
b24+IHdvcmRSZWdFeHAoIlxcdyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIpOwogCiAgICAg
UmVndWxhckV4cHJlc3Npb24qIHJlc3VsdDsKICAgICBpZiAoIXJlZ0V4cExhYmVscykKQEAgLTM4
OSw3ICszODksNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhO
U0FycmF5ICpsYWJlbHMpCiAgICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJc
XGIiKTsKICAgICAgICAgfQogICAgICAgICBwYXR0ZXJuLmFwcGVuZCgnKScpOwotICAgICAgICBy
ZXN1bHQgPSBuZXcgUmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2Fz
ZUluc2Vuc2l0aXZlKTsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBh
dHRlcm4udG9TdHJpbmcoKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKICAgICB9
CiAKICAgICAvLyBhZGQgcmVnZXhwIHRvIHRoZSBjYWNoZSwgbWFraW5nIHN1cmUgaXQgaXMgYXQg
dGhlIGZyb250IGZvciBMUlUgb3JkZXJpbmcKQEAgLTQ4OCw3ICs0ODgsNyBAQCBzdGF0aWMgTlNT
dHJpbmcgKm1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhOU0FycmF5ICpsYWJlbHMsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVAogICAgIFN0cmluZyBtdXRhYmxlU3RyaW5nVG9NYXRjaCA9IHN0cmluZ1Rv
TWF0Y2g7CiAgICAgCiAgICAgLy8gTWFrZSBudW1iZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMg
YmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBlLmcuLCAiYWRkcmVzczIiCi0gICAgcmVwbGFj
ZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgUmVndWxhckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNl
U2Vuc2l0aXZlKSwgIiAiKTsKKyAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBSZWd1
bGFyRXhwcmVzc2lvbigiXFxkIiksICIgIik7CiAgICAgbXV0YWJsZVN0cmluZ1RvTWF0Y2gucmVw
bGFjZSgnXycsICcgJyk7CiAgICAgCiAgICAgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCA9IHJl
Z0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGNkZjU1Zjg0N2JjZjRkOTJjZjgwMjY2N2I1MjczMWUyZmUyMDAw
MTcuLjdjYzJlNTE1MjM2ZWFiYWQxNDdmYjczYTA1MmI1NzAzNzc1MjVlOTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9w
ZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKTogVXNlIGNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2UuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjp1cmxDb250YWlucyBjb25zdCk6IERp
dHRvLgorCiAyMDE3LTExLTIxICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBBdm9pZCB3YXJuaW5nIGluIGpoYnVpbGRyYy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA1MTY5ZTY5NmM3MjIyZjVhMmZlNDhlY2VlN2I1
ZGJiZTJhMGU1M2EzLi40ZDFjNmVlOWYxNmI4YWM0YzhhNDM4Zjk0YTc4YjRiOTAwNWQzNzBiIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTkyLDkg
KzE1OTIsOSBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKGNvbnN0IGNo
YXIqIHRlc3RQYXRoT3JVUikKICAgICBXVEY6OlN0cmluZyBsb2NhbFBhdGhPclVybCA9IFN0cmlu
Zyh0ZXN0UGF0aE9yVVIpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IFtbW21haW5G
cmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGJhY2tpbmdTY2FsZUZhY3Rvcl07CiAgICAgZmxvYXQgcmVx
dWlyZWRTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKGxvY2FsUGF0aE9yVXJsLmZpbmRJZ25vcmlu
Z0Nhc2UoIi9oaWRwaS0zeC0iKSAhPSBub3RGb3VuZCkKKyAgICBpZiAobG9jYWxQYXRoT3JVcmwu
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLTN4LSIpKQogICAgICAgICByZXF1aXJl
ZFNjYWxlRmFjdG9yID0gMzsKLSAgICBlbHNlIGlmIChsb2NhbFBhdGhPclVybC5maW5kSWdub3Jp
bmdDYXNlKCIvaGlkcGktIikgIT0gbm90Rm91bmQpCisgICAgZWxzZSBpZiAobG9jYWxQYXRoT3JV
cmwuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgiL2hpZHBpLSIpKQogICAgICAgICByZXF1aXJl
ZFNjYWxlRmFjdG9yID0gMjsKICAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IHJlcXVpcmVk
U2NhbGVGYWN0b3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKaW5kZXggYzg4YmIxODU1OWUxNTBkYzhjYzYyYTJmOTcyZWJhMmYzMzUy
Mzc3My4uMmNhN2U1MjNjYzJlMzdiZGQwODM2NmExNGYyYWVlODI0NGZhM2ZmOCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgV0tV
UkxSZWYgVGVzdEludm9jYXRpb246OnVybCgpIGNvbnN0CiAKIGJvb2wgVGVzdEludm9jYXRpb246
OnVybENvbnRhaW5zKGNvbnN0IGNoYXIqIHNlYXJjaFN0cmluZykgY29uc3QKIHsKLSAgICByZXR1
cm4gbV91cmxTdHJpbmcuY29udGFpbnMoc2VhcmNoU3RyaW5nLCBmYWxzZSk7CisgICAgcmV0dXJu
IG1fdXJsU3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc2VhcmNoU3RyaW5nKTsKIH0K
IAogdm9pZCBUZXN0SW52b2NhdGlvbjo6c2V0SXNQaXhlbFRlc3QoY29uc3Qgc3RkOjpzdHJpbmcm
IGV4cGVjdGVkUGl4ZWxIYXNoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>327404</attachid>
            <date>2017-11-21 06:07:14 -0800</date>
            <delta_ts>2017-11-21 06:39:31 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews126 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>922789</size>
            <attacher name="EWS Watchlist">ews-watchlist</attacher>
            
              <data encoding="base64">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
OZem68yavqfozdCR6t7goz5oxqrfC1zvMnJCV7rW787UnXXHrhOGwTZdl94X8iWu16Tpxr7FA1ma
vnWl5O6I2kW6du/BNVzi9+4o4b0WfV+7Pa6Vnnl97hRRDpoXv/feau+mzfk56TqIrOT2HH82C14d
Hxt6Ow/v8FN3pXC/r49mvUr4voq1vt96XaXLW2+SHaO+1pl3onpn7bqVeinTqkpdeWs2nA9vHp7M
9UQfHur11/FrWjc2jbRlvrhN0a3sx9VpbT6+D5xVo2lML9bl6r43lWZpPIl3rYkshfn2/PGR9MbX
zPd02WwOT0OxVD3jHErKWru9tHcDdZW0k1rUl871q2ZXJduuRyW/7d30fi/ZWtVlF/8fui6nE33X
T9L+0WrIreX4NlkN1Nt8s6qq9850o1/36i2QgsHboppq77PS63pU3evLqaIMKpXze6rFcuBKH5NM
eo8r4rJt7QfdSj3YqPXkZdSJ7M5SXC/aYNX32ndjX52XLHllLLv5fWL3pPZy+vKyrlf25rQu97vz
hdmbbCJtOzB6sipWnnMJHCd6cTd3z934aAtUrtToh4E7dHyn16iipHVHHqX+rDdx3d7RzfxWsrNG
jVg5vFY8rV07pPn1TUmHboONG4MwKPV8pzL70+YomO9d69IYBnHorviAwLlcBqkyXnTe3GPp/a2/
idVW3nnrrxO1f5/Nwk68ml28y7s/7kuvroMjZs0gdMMiulavF4bOru55x7rTG9VK7gWfnvS9o2Eu
et4kvYbn2+I6tr3rfu3s57ew3vCnt9jOklu6uovSqGWNBlZs34JAbBd5O9i3s8RUncM1mDnRzW4p
p9l6KRuxYn0sr51ehPymY2fT9cTOXuSNkqKJfiW35M5y0qi0hvt1d2q3t/H13K1GWnfpuSdfHp2v
93y3Vs+dc3TdzfSdYcnV3TCZjefNUr61893sdaPdjWZ+MT46d62X+dbHbGqm/v362rhURlEwUQaW
NJ6Pgm14c1zN2Z8Wq9x7+diPSq+5ldekRnewneyr/bRtVET/Fm0GrdxZLfrjwVhq+lF91jyGw2M+
vg205OifXxb3jaM47d2pUzoc5YY5Obytjr1rvu4dR2pgu92X3f1lOznVDsqL1ba8aDbP9UWopVdP
kvPDN4YKuv5nfvovUEsDBBQAAgAIANAodUvaCvNt5QkAADsSAAAVABwAX3dwdF9jZXJ0cy8wQjZF
NDkucGVtVVQJAAPXJBRa1yQUWnV4CwABBPUBAAAEFAAAAJ1W2XLqSBJ95yt4nA73bWtfMqIfShJg
MAizG7+VVCUQBrEJJPj6ydTt9sVt3BMxCjsCqapyOZl1TvrykKdJGvNcQq2OT8Bz/vMXPVN5OKbb
DOp6/T9Kqf32sTCSh5Sv6+FpE8kD1G3DVTWX9kSWNNybfeki4/npIOtsvdge0ny5gfpxyTXTmuHL
cMQaWXy47HL08nGofTyeyKof/lnI6MduzfNke9j8yOUxP/6Kja9TkeaXjw/0hNu87kncLQF/n+ua
Wld1UCzQ1bqmqHa91Rt/OcCSXB7qUA9k/O8HRqdoJeO8imy9jfl6uT3m/1ytv5yidRrXn+Wl3s6S
LXzyd7N4g8jhyO/gQA8idHMG6v/RFMOpR2n+26dt9PS24rQ+HW+2wJc99CgKRCYIBWQCSQxcgGqB
FoGtQayA4oCwwNbB1UA371vQBJgCdAu4C5EBwgXTAT0BNQZHgm6Dq0PEQRcQq/ctuDGoCrgWJIi0
DoYNigmKAVpMdjROxg0DiwC2c9+CJUHYwDlwAxQNEhVUE1QNTFllJMGywHIpQfMbC+jLxA2YiwKx
TvFwEyxOIWE8agK6AqYN0oREu28hjkB1yaPgoElwKmANlexgUpoKbkIGXQGJfd+C4YB0aD8eTDht
wxIIh171CJIIrJiqYLj0ej+GmIrFdRAIIwcLC6ERgI4Ax6UwHAPMpKqsct8CetFM4CpEiEMCkoMw
KB1FUAkwtaSyg1Ab+jfVRPTw0khCG1G1qrrEEiKNOiQxwTTJO1YE2+auhSgCQ1AvRTE1D9YFfWHi
ekxdqmGJI5A6NYku71swDVAFYYgueJWO5lJZnRgMBRKFsEWgDPPbfogccEy6CFKCEUNsgqNSB7oO
tbGIqQ2wb9GF+k0WDlqwQdOqWmAiaA0bCRtAUikFVtMkeAkr/k1XI24VeoZFfUWgccIBGxuT0rC4
Lt1QjMT65m5aCnWvySlNvONYQVm1qKaDVd1u9C4tAoR/czftCCJJWKkO7UE88X65NhnETnASMohX
HoFNvukoxMpKvqw0yt02kxnSp2Wauk1qoSqKov5isldTcc96XZa5zEh3jp/N/7Xs8SOyoY/L+YGn
WX6E+hdfPoMm644a987/zdMVQQsMCAWQ5OZrwDaRoNYApoDeBOZDA6FsgF1RlcKABdC0wdKgqVdE
YFLPeT443j2/7JQvifAv/9vzu7ykAjSfGr6pgO8SOTtNULHJA/ACYB5F1FDAc6grTAYBfreJA5vI
3mbtXgDkdnLkC3nHY5Au0hwV/UOwf0dpzOpDuTuJlJMs/V6dR5lKd0t52GD093w0qHZCin91Nu6O
6jMZ0RRxRuUlYAiMmH+Rv3+UjK1RqTG+9CzrId/cTSQcwYc2/169FkXxxz8+ldmPH5mzssTR1NdF
8X7YL8+aw+9tW5/lD2vNxR9frWp3vql/fJ4M/q8JCC+ZhuKjE+tj5dXqqklBLIjMgUQSVT9QG12X
bjauRje3Ge+rLYmApUEb0IKtkjjwiLiEx0S0KJjIjlyS0qJWyxtqR8ZFljUr6nU4MR8SOVIjkopt
gG2RZKE1o1pFRuEK8dzHcbweqkq8hSKM9yeySM0wJAVpLyGaFypphdDo5iCVysrmx3HXAJ6A4lbJ
muQdGxyV3K4SQUZEMsPJAmXZSsgR/kU3xw2NoEO/KICoG5g4OsUNmI4ZURZJBQvGhnyPo4qo+P5X
8AmpJcam4figE6roKNYq/cFxxqWzikpZYPoYjLTBuVFmIQhSyyDFQI9I0rGgOho4HVRahKXE33ZM
gpA4lL51Ax2qtFWNYzYnpkdVx2RlRLKM4oz4I++gPuCE4iL+ldrgaPBxHCuLhI3KaSskXDgZoQph
LuhLtcmsxOEiIXUSKEQaZXpbd+R4HFgQEPPv+mKZUDRQ0FANLGzFiJLFHkCDWCCsAlaqdjOR4QyF
Uw9SISohbdAoDKMiR5wZSVRdagMc0HB00g2qyC/kRTUyYO1+RhtVjYrTjU1NS351WjJVwgSBRXUy
bnoeI8f2xhFDqW6NVXUs5oLHSffiSvQ4zXTYEj8B1G9EGKUSPyJusVr7QY/XaLXDut8YjtvNts/G
jeprrdduB9nV99lWLljR9tiiHfia2ekxpeWP9q1RO9KDQcPziwnreUrZurI3bxFOPdbrNTKxrs1T
tYhaTeVt416ikaq8vYZKfGWyWShleG2UvRX+X5nWuzb5X98ut99qPW9QNlZs8LdVf1ae51rzyFvu
VQQY2ahdBIN553n71l6e45BhNN6ABYtF44Xheo0Ntj6+eKz7OrAfL3kTJalgq1lsttXuVNH20fht
FjjxaiXHp5XuZZ4/c1fhkzcYHF8uW602DJpGlMv9jnXL5rAjD0Nzw5Ny3m1m7qTXG+xmB21YOsX0
4fVyKddSSy2WT1rr3qWV8J2u10b9dJ0nB70IU7X/mB/Dybt9feqvFGW37aX7MB33G68OYw+X2fLY
e9yrvhEOw4PZs3bBe9nr1x79Mtsfrcs+mU5Z602cFE05d8K3wXXi2JdB1ygmD1NPt175bPkc93uD
l0CPlen81J4c7Pdrs7YYt+aFuF6yl61I23GqKJdpp9zLBzdfW8veMz/K/XBtML6ajHajhem/dNbz
huCz0GtYU2NVm7PF2Dz7S2mb19ZzU7CdmD/MH3fa/FroLcdnRYMx3vecwPfsMetQtZ6GvQZbMeqL
Vo2pExEsBjPPG2fvqbV4sa6712zS8Pe6Pj/33qajjZNeWVIdHPUarYDNFt7g6CVBJ946k9pTpB1e
HnzjuXkQefmqiTHrVpsHDta253sSYyjmwXSorD1WFP5i3n4u5tgLkydaqSWLanHoPcWFmLc7Uctd
zWflNtJDZbFQdaHHp0/fUix7quTRarkPN8NrLRyHR6GLQ5w1t2LVNuYj8xhp4TJqYd/pI7+ZLU/d
kXoUm0kebsrlm/95vRZkePza/uxlYZLnsru5bWsWeov3/fI9bbmF4rHBsclYn1oZAb14477ejp2+
0vXzk+1n6VsbG4Rldt/srC/xZH8I+UVx4v4pPBxW9tWMbeMQH7dTXhNP0Xb0/vDsP7NMDJv7p92z
lg/aQaDowyDvpE9yqK2fnY5fvMbPrbUZLzz5IqfnxrClDVJ/VFuNhmVgv8Uz4/XB9CwjdM+nRH0c
dTb90ozbXTvO3tlEfWF92dW5+V5My/V1GvYXRhGPs6tde/DUrGgpM7narF5P55djc9soHzkftUXn
8NwM4qD1Pg67drOMFrr7MjXWj6u1+RjNGruXYMPSWqzldqqPbX+snaMlW7bmi05v1QxaI7V3GfTz
y3UYJbFVbMo4OnRLPZzn143alG/DpZdZ+abGrnm6FLk+Z9fNw8or3d3WUl7eimLw558/ubARBl+Z
8L9QSwMEFAACAAgA0Ch1S41jgXwHCQAAOhEAABUAHABfd3B0X2NlcnRzL2NhY2VydC5wZW1VVAkA
A9ckFFrXJBRadXgLAAEE9QEAAAQUAAAArVfXbuPIEn3XV+hxF8JCzKGA+8CkTNnKtt4YmsrBEhW/
/p7iJA0szwIXl7AHdLOruupU1Tk9njjki2yRRLmgUhmPH+XRtzd+xuJwXOy2VFbLf0lX5e+fHwbi
sIjW5e5pE4sDlU3NlhWL98SG0KyHfYvZNspPB1F21rPdYZHPN1Q+ziNFNyb4oz9wgm1yuO1znPLT
qHk8ntir1/3PRcT/7NdRnu0Om39yccyPv2KL1ot0kd9+LvDT3eVlV2C3ILyfy4pcllWSDFLlsiLJ
ZrkeDj8ZOFkuDmUq+yL5s8HgFC9Fkv9bZN+3lV9P8XqRlNviVm5usx39dvDDxwdoDsfoCSD8AKoH
Gyr/pUiaVY4X+d+/beMn3KWn9en4sIU+7eFHkiiRyZIpxUtEhk2yTZpFskSZRYlBikZGRpZGmvrc
AzZksErJynizbJAp2NCWSUgUW6TFZFhkKCT0L2KAFY6AYcZOMoNkmOiUIIyEpIgshQNIYorj5x5s
nQxBukpRQobMTnREZZJmkIh4JU1JMSlWOdPnWSBalSOPdNIzSm1ORNbJVBkNySbJJAX+EaT03EOG
lklIk8mQyAIaFumICgFYpOAlJVMjVWHPInvuIYooMhl5Hf+alMBhTDYMY0J4Kt4RYURqSony3AOS
RRiqRmlEuuDjVIvgVsa5gjSTwUT8elGdpx5ShTKZ4gKNFLUoYExlsiPOLkJBizrKGpfmeS0ySjI2
V03OWtW5GVSDDxUG11FPyNS5xOoXHtAMukKGyjgAukjjFjJxehGGlnFISUKxwfA+xwEAIlOTW0hL
CQ2m2WRaFGe8iE5TJFIFF0j9qhYm2RYXK0UrahQLyqKiM1MSwCclTeOW0CKyv4gBzawVnYzpEAm3
nwLYNe4NTBZ6En+maFcURTz3oEucI85SBIOJoqAlACADopGicD+j4gBcyF/2pG6TiglKOBE0sx5T
qnGHKBEXRRP8VZc5wa9wQAxIJEXJ1GK4MIbFmNs2RYLzQnUQkvrFdGP0hP3pS3Dd77ZiCx41dF01
WTZkSZLkX0z2pkv2WS2Lay62LEDH391//+xGR7Chh8/5IVps8yOVP53lOTTsj4Jn5j9ouuDnFPFA
CFl2PvlQPJJ0qknkoZFAR7ViBHxyfXJcUmsUSORi0jH1DvlYN5k9aqAL/dm5zimfM9/f/v3klbgt
0AL/p/MLfV8cutFGUPXPEvbjORY6T5JLRgAyLD3Lh7MYHaOZeAb/r/tFcRd4Zh9wlVOR/tHRsDMo
T0TMF48zxJoxZNzg+IdQ/k9XDQwwSAHNrWQsgUrCvADiwwvkEBMrFRICKmGlxLimZD8wl40J15mS
wLYmRiVhqsXoYizlgrlAf1laMJFMsiAbM/MgY1rBzrbC+zGfmPZEogi2MpOUJLOkxYV6GTHzL6KF
APw0hx5AnvGDeYbsMdFLLLdZxqoJEUUkIBoeeJMiiynst9NN5gUkBT0AwYHxMcZMNzovgqeQvihA
SIFSyqeYD3zHUpGwFfQGYp9arEy4OOEdmIDEs6RICrxvM8jY/CjhsAI4UEoVVKJy1jg3E8xxYEZI
tW6x+sbFzQBaEsH5wy0EcsIyI9hDXNAopA5FxApEFIKhfoNFZsxBQ1L2m+RASKA0WER2QEzTC6ZD
vVIeHUvnegE0Vf1eCCQlPdyLceGwIt6vKcyhOBp3DhwNNJSU9RvmcIX6Qu0im3sAi491FzGJAvnE
5g3oAZYEiW9RgEsuAIQEakXWfIWyfplLSBk3No2lJdZZU2EOGcAlCZuBM64dkAdoGNrVkgocHpDH
O7ibwzNJpGSg9CZ7gENVZhz0ov9xozJl7jcoaPqAPBoJAozGQFfghqcX0ogLCqqPo3FbwgZcWeJC
RKE9CCx9RF5hb5AiIy79w48b1Jvdshf0h81a03OGQbFaCptNf3T3PGd5mjmXpuvMmr6n6M3Qkere
4KM+aMaq3wtc7zJyQle61u/O1J11x64ThsE2XZfeF/Ilrtek6ca+xQNZmr51peTuiNpFunbvwTVc
4vfuKOG9Fn1fuz2ulZ55fe4UUQ6aF7/33mrvps35Oek6iKzk9hx/NgteHR8bejsP7/BTd6Vwv6+P
Zr1K+L6Ktb7fel2ly1tvkh2jvtaZd6J6Z+26lXop06pKXXlrNpwPbx6ezPVEHx7q9dfxa1o3No20
Zb64TdGt7MfVaW0+vg+cVaNpTC/W5eq+N5VmaTyJd62JLIX59vzxkfTG18z3dNlsDk9DsVQ94xxK
ylq7vbR3A3WVtJNa1JfO9atmVyXbrkclv+3d9H4v2VrVZRf/H7oupxN910/S/tFqyK3l+DZZDdTb
fLOqqvfOdKNf9+otkILB26Kaau+z0ut6VN3ry6miDCqV83uqxXLgSh+TTHqPK+Kybe0H3Uo92Kj1
5GXUiezOUlwv2mDV99p3Y1+dlyx5ZSy7+X1i96T2cvrysq5X9ua0Lve784XZm2wibTswerIqVp5z
CRwnenE3d8/d+GgLVK7U6IeBO3R8p9eooqR1Rx6l/qw3cd3e0c38VrKzRo1YObxWPK1dO6T59U1J
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
eAsAAQT1AQAABBQAAABQSwMECgACAAAACil1SyXg0wgsAAAALAAAADEAHABjcnlwdG8vd29ya2Vy
cy9zdWJ0bGUvcnNhLWdlbmVyYXRlLWtleS1zdGRlcnIudHh0VVQJAANDJRRaQyUUWnV4CwABBPUB
AAAEFAAAAENvdWxkIG5vdCBnZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgLTQzMDQKUEsDBAoA
AAAAAC4pdUsAAAAAAAAAAAAAAAAIABwAZWRpdGluZy9VVAkAA4glFFrZJxRadXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAAEYpdUsAAAAAAAAAAAAAAAATABwAZWRpdGluZy9wYXN0ZWJvYXJkL1VUCQAD
tCUUWtknFFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAGCl1S3As4cRjAAAAawAAACUAHABlZGl0
aW5nL3Bhc3RlYm9hcmQvMTk2NDQtMi1zdGRlcnIudHh0VVQJAANgJRRaYCUUWnV4CwABBPUBAAAE
FAAAADMyMDTXNTTUNTJUMDC1MrCwMrHQMzU0UAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0Mrcw
NzKPVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAZ
KXVLr4T5TWMAAABrAAAAJQAcAGVkaXRpbmcvcGFzdGVib2FyZC8zOTc2ODcyLXN0ZGVyci50eHRV
VAkAA2ElFFphJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLAysdQzMLdUCE9N8s4s
CUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oH
CymkZBZDeakpelwAUEsDBBQAAgAIABkpdUt64ow5YwAAAGsAAAAnABwAZWRpdGluZy9wYXN0ZWJv
YXJkLzQwNzYyNjctMi1zdGRlcnIudHh0VVQJAANiJRRaYiUUWnV4CwABBPUBAAAEFAAAADMyMDTX
NTTUNTJUMDC1MrCwMrHUszAxVghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzKPVQhw8ixJ
zXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAcKXVLC1X0mKoA
AAAuBAAAJwAcAGVkaXRpbmcvcGFzdGVib2FyZC80MDc2MjY3LTMtc3RkZXJyLnR4dFVUCQADaCUU
WmglFFp1eAsAAQT1AQAABBQAAAC90r0KwkAMB/Ddp7gXMFxyH7nrpk7iIio4iIvtDQe1Le3p81vE
TbBLvTEh8OOfhCTyEnFJKKQppCuMBGucOIfbLqZTGNLh0TShX3XdhQwrLNgx+avYr7cp3DdtXYcy
xbY5hv4Zy9CLsh3n3y1RxeFThQoW9EUhkPO5KM/mN6XUPBSBdTSRiueh1LhAnkiFc1EOdZ5badCa
8yzQACLmeQsD1rs8qSxo/Av1AlBLAwQUAAIACAAdKXVLdVJA0WMAAABrAAAAJQAcAGVkaXRpbmcv
cGFzdGVib2FyZC80MDc2MjY3LXN0ZGVyci50eHRVVAkAA2klFFppJRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUysLAyNdczNDNUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5V
CHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAB0pdUvg
Kqy7YwAAAGsAAAAlABwAZWRpdGluZy9wYXN0ZWJvYXJkLzQyNDIyOTMtc3RkZXJyLnR4dFVUCQAD
aSUUWmklFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwsDI11zMzsVAIT03yziwJSS0u
CSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRk
FkN5qSl6XABQSwMEFAACAAgAHSl1S4rKbJljAAAAawAAACUAHABlZGl0aW5nL3Bhc3RlYm9hcmQv
NDY0MTAzMy1zdGRlcnIudHh0VVQJAANqJRRaaiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJU
MDC1MrCwMrXQMzQzUghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzKPVQhw8ixJzXXOz8lJ
TS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAdKXVLl3nHUmMAAABrAAAA
JQAcAGVkaXRpbmcvcGFzdGVib2FyZC80OTIyNzA5LXN0ZGVyci50eHRVVAkAA2olFFpqJRRadXgL
AAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLAytdAzNzJWCE9N8s4sCUktLgkqzctLLXIsKIg2
MjU3NrQytzA3soxVCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsD
BBQAAgAIACApdUvleoAaYwAAAGsAAAAnABwAZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDQ3NzAtMS1z
dGRlcnIudHh0VVQJAANrJRRaayUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrCwMrXU
MzI0UAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0q
y0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAgKXVLg5vrUmMAAABrAAAAJQAcAGVkaXRp
bmcvcGFzdGVib2FyZC80OTg5Nzc0LXN0ZGVyci50eHRVVAkAA2wlFFpsJRRadXgLAAEE9QEAAAQU
AAAAMzIwNNc1NNQ1MlQwMLUysLAytdSzMLJQCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3
No5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACAp
dUu4saXIYwAAAGsAAAAlABwAZWRpdGluZy9wYXN0ZWJvYXJkLzUwMDY3Nzktc3RkZXJyLnR4dFVU
CQADbCUUWmwlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIw0DMxtlAIT03yziwJ
SS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcL
KaRkFkN5qSl6XABQSwMEFAACAAgAISl1S9HQuPZjAAAAawAAACUAHABlZGl0aW5nL3Bhc3RlYm9h
cmQvNTAyODQ0Ny1zdGRlcnIudHh0VVQJAANtJRRabSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTU
NTJUMDC1MrC0MjDUMzAxVQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzWOVQhw8ixJzXXO
z8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAhKXVLyWcLiWMAAABr
AAAAJQAcAGVkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LXN0ZGVyci50eHRVVAkAA20lFFptJRRa
dXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMNQztTBQCE9N8s4sCUktLgkqzctLLXIs
KIg2MjU3NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwA
UEsDBBQAAgAIACEpdUuabnkNYwAAAGsAAAAlABwAZWRpdGluZy9wYXN0ZWJvYXJkLzUwNzEwNzQt
c3RkZXJyLnR4dFVUCQADbiUUWm4lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIw
0jMwNlUIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04t
KstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAISl1S2syBNxiAAAAawAAACUAHABlZGl0
aW5nL3Bhc3RlYm9hcmQvNTA3NTk0NC1zdGRlcnIudHh0VVQJAANuJRRabiUUWnV4CwABBPUBAAAE
FAAAADMyMDTXNTTUNTJUMDC1MrC0MjDSMzE0VghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcA
krEKAU6eJam5zvk5OanJJZn5ecGpRWWZyalFCsn5QPVgIYWUzGIoLzVFjwsAUEsDBBQAAgAIACIp
dUvn73uRYwAAAGsAAAAlABwAZWRpdGluZy9wYXN0ZWJvYXJkLzU0NzgyNTAtc3RkZXJyLnR4dFVU
CQADbyUUWm8lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIw0rO0MFUIT03yziwJ
SS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcL
KaRkFkN5qSl6XABQSwMEFAACAAgAIil1S9CJsehjAAAAawAAACcAHABlZGl0aW5nL3Bhc3RlYm9h
cmQvNTYwMTU4My0xLXN0ZGVyci50eHRVVAkAA28lFFpvJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1
NNQ1MlQwMLUysLQyMNYzMTVTCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMLa0sIhVCHDyLEnN
dc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACIpdUvdDm29YwAA
AGsAAAAlABwAZWRpdGluZy9wYXN0ZWJvYXJkLzU2NjUyOTktc3RkZXJyLnR4dFVUCQADbyUUWm8l
FFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIw1jMzM1IIT03yziwJSS0uCSrNy0st
ciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6
XABQSwMEFAACAAgAIil1S5ZIygliAAAAawAAACcAHABlZGl0aW5nL3Bhc3RlYm9hcmQvNTc2MTUz
MC0xLXN0ZGVyci50eHRVVAkAA3AlFFpwJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUy
sLQyMNazNLdQCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytwCSsQoBTp4lqbnO+Tk5qcklmfl5
walFZZnJqUUKyflA9WAhhZTMYigvNUWPCwBQSwMEFAACAAgAIil1S8CqsTFjAAAAawAAACcAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvNTc4MDY5Ny0xLXN0ZGVyci50eHRVVAkAA3AlFFpwJRRadXgLAAEE
9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMNEzNjNUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3
NrQytzA3No5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQA
AgAIACMpdUs0PvmxYwAAAGsAAABAABwAZWRpdGluZy9wYXN0ZWJvYXJkL2F2b2lkLWNvcHlpbmct
Ym9keS13aXRoLWJhY2tncm91bmQtc3RkZXJyLnR4dFVUCQADcSUUWnElFFp1eAsAAQT1AQAABBQA
AAAzMjA01zU01DUyVDAwtTKwtDIw0bMwMFUIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1
jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAIyl1
S5B5B1BjAAAAawAAADYAHABlZGl0aW5nL3Bhc3RlYm9hcmQvYmxvY2std3JhcHBlcnMtbmVjZXNz
YXJ5LXN0ZGVyci50eHRVVAkAA3ElFFpxJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUy
sLQyMNUzMTFSCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDyLEnNdc7PyUlNLsnM
zwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACMpdUsOPoXgYwAAAGsAAAAtABwA
ZWRpdGluZy9wYXN0ZWJvYXJkL2Nqay1saW5lLWhlaWdodC1zdGRlcnIudHh0VVQJAANyJRRaciUU
WnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjDTMzQ2UQhPTfLOLAlJLS4JKs3LSy1y
LCiINjI1Nza0MrcwNzKPVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpc
AFBLAwQUAAIACAAkKXVLUOxnp2MAAABrAAAALQAcAGVkaXRpbmcvcGFzdGVib2FyZC9jbGlwYm9h
cmQtZXZlbnQtc3RkZXJyLnR4dFVUCQADcyUUWnMlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIw0zM1NlEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDeyjFUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAJCl1SyuF1bVjAAAAawAA
ADMAHABlZGl0aW5nL3Bhc3RlYm9hcmQvY29udGVudGVkaXRhYmxlLXByZS0yLXN0ZGVyci50eHRV
VAkAA3MlFFpzJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMNczMbJQCE9N8s4s
CUktLgkqzctLLXIsKIg2MjU3NrSyMLa0sIhVCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oH
CymkZBZDeakpelwAUEsDBBQAAgAIACQpdUvFn4grYwAAAGsAAAAxABwAZWRpdGluZy9wYXN0ZWJv
YXJkL2NvbnRlbnRlZGl0YWJsZS1wcmUtc3RkZXJyLnR4dFVUCQADdCUUWnQlFFp1eAsAAQT1AQAA
BBQAAAAzMjA01zU01DUyVDAwtTKwtDKw0DMwtlAIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3
MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgA
JCl1S8a/b0pjAAAAawAAAEIAHABlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1jcmFzaC13aXRoLWV4
dHJhbmVvdXMtYXR0cmlidXRlLXN0ZGVyci50eHRVVAkAA3QlFFp0JRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUysLQysNCzsDRWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMLa0sIhV
CHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACUpdUso
WoMnYwAAAGsAAABHABwAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktY3V0LXBhc3RlLWV2ZW50cy1m
aXJlZC13aGVuLWRpc2FibGVkLXN0ZGVyci50eHRVVAkAA3UlFFp1JRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUysLQysNCzNDNRCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5V
CHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACUpdUv+
6oRSYgAAAGsAAABWABwAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktZWxlbWVudC13aXRoLWNvbmZs
aWN0aW5nLWJhY2tncm91bmQtY29sb3ItZnJvbS1ydWxlLXN0ZGVyci50eHRVVAkAA3UlFFp1JRRa
dXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysAQiPRMjU4Xw1CTvzJKQ1OKSoNK8vNQix4KC
aCNTc2NDK3MLc1PjWIUAJ8+S1Fzn/Jyc1OSSzPy84NSisszk1CKF5HygerCQQkpmMZSXmqLHBQBQ
SwMEFAACAAgAJSl1SxhK6xdjAAAAawAAADYAHABlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFn
ZS13aXRoLWFsdC10ZXh0LXN0ZGVyci50eHRVVAkAA3YlFFp2JRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUysLQyNNAzNLRUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3Mo9VCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACYpdUvI8p47
YwAAAGsAAAAzABwAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC1zdGRl
cnIudHh0VVQJAAN4JRRaeCUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjTSMzQ0
UQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwN7KMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xO
LVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAnKXVL+uo2XHQAAADWAAAALQAcAGVkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LXBhc3RlLWJpZGktc3RkZXJyLnR4dFVUCQADeiUUWnolFFp1eAsAAQT1
AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI01jMzNlEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2
tDK3MDc2jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XEZYrLKwsMBj
lYWxpYUFOVYBAFBLAwQUAAIACAAnKXVLzapWlGMAAABrAAAASwAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9jb3B5LXBhc3RlLWNvbnRlbnQtc3RhcnRpbmctYW5kLWVuZGluZy1jYW52YXMtc3RkZXJyLnR4
dFVUCQADeiUUWnolFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI00TO0MFQIT03y
ziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4H
qgcLKaRkFkN5qSl6XABQSwMEFAACAAgAJyl1S3EkpyVjAAAAawAAADcAHABlZGl0aW5nL3Bhc3Rl
Ym9hcmQvY29weS1wYXN0ZS1jb252ZXJ0cy1maXhlZC1zdGRlcnIudHh0VVQJAAN6JRRaeiUUWnV4
CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjTRMzEzVAhPTfLOLAlJLS4JKs3LSy1yLCiI
NjI1Nza0MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBL
AwQUAAIACAAnKXVLWbx3lWMAAABrAAAAOAAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3Rl
LWNvbnZlcnRzLXN0aWNreS1zdGRlcnIudHh0VVQJAAN6JRRaeiUUWnV4CwABBPUBAAAEFAAAADMy
MDTXNTTUNTJUMDC1MrC0MjTRszA2VghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw
8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAoKXVLvaDG
ymMAAABrAAAAXAAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWRvZXNudC1jb252ZXJ0
LXN0aWNreS1hbmQtZml4ZWQtZHVyaW5nLXBhcnRpYWwtY29weS1zdGRlcnIudHh0VVQJAAN7JRRa
eyUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjTVMzQxVghPTfLOLAlJLS4JKs3L
Sy1yLCiINjI1Nza0MrcwNzWOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mp
KXpcAFBLAwQUAAIACAAoKXVL6TfjKWMAAABrAAAAPwAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LXBhc3RlLWZpcnN0LWxpbmUtaW4tdGV4dGFyZWEtc3RkZXJyLnR4dFVUCQADeyUUWnslFFp1eAsA
AQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI01TM2N1QIT03yziwJSS0uCSrNy0stciwoiDYy
NTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwME
FAACAAgAKCl1S9p9sSdjAAAAawAAAC4AHABlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1m
bG9hdC1zdGRlcnIudHh0VVQJAAN7JRRaeyUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1
MrC0MjTVszCzVAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7J
zM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAoKXVLw39na2MAAABrAAAAPQAc
AGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWluc2VydHMtY2xlYXJpbmctZGl2LXN0ZGVy
ci50eHRVVAkAA3wlFFp8JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyNNMzsDRU
CE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4t
UkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACgpdUvQXuAuYwAAAGsAAAA5ABwAZWRpdGluZy9w
YXN0ZWJvYXJkL2NvcHktcGFzdGUtcHJlLWxpbmUtY29udGVudC1zdGRlcnIudHh0VVQJAAN8JRRa
fCUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjTTM7awVAhPTfLOLAlJLS4JKs3L
Sy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mp
KXpcAFBLAwQUAAIACAApKXVL9Rm8umMAAABrAAAAMgAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LXBhc3RlLXJ1YnktdGV4dC1zdGRlcnIudHh0VVQJAAN9JRRafSUUWnV4CwABBPUBAAAEFAAAADMy
MDTXNTTUNTJUMDC1MrC0MjTXMzIyVQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjAxNjKNVQhw
8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAApKXVLJ+ep
8mMAAABrAAAAPQAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLXJ1YnktdGV4dC13aXRo
LWJsb2NrLXN0ZGVyci50eHRVVAkAA30lFFp9JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQw
MLUysLQyNNOzMDZTCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDyLEnNdc7PyUlN
LsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACkpdUtFYmaZYwAAAGsAAAA9
ABwAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtd2l0aC1pbXBvcnRhbnQtcnVsZXMtc3Rk
ZXJyLnR4dFVUCQADfSUUWn0lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI01zM1
M1MIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstM
Ti1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKSl1SyZfxlhjAAAAawAAAEAAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvY29weS1wYXN0ZS13cmFwcy1wb3NpdGlvbi1hYnNvbHV0ZS1zdGRlcnIudHh0
VVQJAAN+JRRafiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjTXszQwUQhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzWOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAApKXVLHK0VtGMAAABrAAAAMwAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2Utc3RkZXJyLnR4dFVUCQADfiUUWn4lFFp1eAsAAQT1
AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDK00DM0sFQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2
tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAAC
AAgAKSl1S+CvtQdjAAAAawAAAD0AHABlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS13aXRob3V0LWNv
bW1vbi1ibG9jay1jcmFzaC1zdGRlcnIudHh0VVQJAAN+JRRafiUUWnV4CwABBPUBAAAEFAAAADMy
MDTXNTTUNTJUMDC1MrC0MrTQM7U0VQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzaOVQhw
8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAApKXVLlq+c
0WMAAABrAAAANAAcAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLXN0
ZGVyci50eHRVVAkAA34lFFp+JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQytNAz
MzdTCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDyLEnNdc7PyUlNLsnMzwtOLSrL
TE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACopdUuOkB7/YwAAAGsAAABSABwAZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHlpbmctaHRtbC1zdHJpcHMtamF2YXNjcmlwdC11cmwtYW5kLWV2ZW50
LWhhbmRsZXItc3RkZXJyLnR4dFVUCQADfyUUWn8lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDK00LM0MlIIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKil1S742/NVjAAAAawAA
AEEAHABlZGl0aW5nL3Bhc3RlYm9hcmQvY3Jhc2gtYWNjZXNzaW5nLWNsaXBib2FyZERhdGEtdHlw
ZXMtc3RkZXJyLnR4dFVUCQADfyUUWn8lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDK01DMyNlQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKil1Sykv+kZjAAAAawAAADEAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvY3JlYXRlTWFya3VwLWFzc2VydC1zdGRlcnIudHh0VVQJAAOAJRRa
gCUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjLQMzAyUAhPTfLOLAlJLS4JKs3L
Sy1yLCiINjI1Nza0MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mp
KXpcAFBLAwQUAAIACAAqKXVLMm+o+mMAAABrAAAAKgAcAGVkaXRpbmcvcGFzdGVib2FyZC9jdXQt
dGV4dC0wMDEtc3RkZXJyLnR4dFVUCQADgCUUWoAlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIy0DMyMlMIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKil1S2vglstsAAAA1gAA
AEkAHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1ub24tbm9ybWFs
aXplZC10eXBlcy1zdGRlcnIudHh0VVQJAAOAJRRagCUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTU
NTJUMDC1MrC0MjLQMzYyUwhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzWOVQhw8ixJzXXO
z8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcRlisMjE3pYVVAFBLAwQUAAIACAAqKXVL
oAByf2MAAABrAAAAZgAcAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRh
LW9uLWNvcHlpbmctcGFzdGluZy1tYWxmb3JtZWQtdXJsLWluLXNhbWUtZG9jdW1lbnQtc3RkZXJy
LnR4dFVUCQADgCUUWoAlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy0DO3MFEI
T03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1S
SM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKyl1S9dUIQ1jAAAAawAAAEsAHABlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1hcy1wbGFpbi10ZXh0LXN0
ZGVyci50eHRVVAkAA4ElFFqBJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMtQz
NTZSCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMDUxs4xVCHDyLEnNdc7PyUlNLsnMzwtOLSrL
TE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIACspdUspoKyVYwAAAGsAAABwABwAZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tcGFzdGUtYXMtcGxhaW4tdGV4
dC13aGVuLWN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEtZGlzYWJsZWQtc3RkZXJyLnR4dFVUCQADgSUU
WoElFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy1DOwMFIIT03yziwJSS0uCSrN
y0stciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5
qSl6XABQSwMEFAACAAgAKyl1S6vOAuNjAAAAawAAAEQAHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1jdXN0b20tc3RkZXJyLnR4dFVUCQADgSUUWoEl
FFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy1DMzMVcIT03yziwJSS0uCSrNy0st
ciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6
XABQSwMEFAACAAgAKyl1SybbpXdjAAAAawAAAEgAHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0ZS1wbGFpbi10ZXh0LXN0ZGVyci50eHRVVAkAA4ElFFqB
JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMtSzsDRQCE9N8s4sCUktLgkqzctL
LXIsKIg2MjU3NrSyMDE2Mo1VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakp
elwAUEsDBBQAAgAIACspdUvrqBCJYwAAAGsAAABHABwAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItZ2V0LWRhdGEtb24tcGFzdGUtcmljaC10ZXh0LXN0ZGVyci50eHRVVAkAA4IlFFqC
JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMtIzsLRQCE9N8s4sCUktLgkqzctL
LXIsKIg2MjU3NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakp
elwAUEsDBBQAAgAIACspdUufC8/MYwAAAGsAAABSABwAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItZ2V0LWRhdGEtb24tcGFzdGluZy1odG1sLXVzZXMtYmxvYi11cmwtc3RkZXJyLnR4
dFVUCQADgiUUWoIlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy0jMxN1AIT03y
ziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4H
qgcLKaRkFkN5qSl6XABQSwMEFAACAAgAKyl1S9R1jqtjAAAAawAAAE0AHABlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMtc3Rk
ZXJyLnR4dFVUCQADgiUUWoIlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy0rM0
MlcIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwNTGzjFUIcPIsSc11zs/JSU0uyczPC04tKstM
Ti1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgALCl1S82skYJjAAAAawAAAEYAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1zdGRl
cnIudHh0VVQJAAODJRRagyUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjLWMzA0
VghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xO
LVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAsKXVLxLih1GMAAABrAAAAQQAcAGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWFkZC1jdXN0b20tZGF0YS1zdGRlcnIudHh0
VVQJAAODJRRagyUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjLWMzQ0VwhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAAsKXVLVZVjkGMAAABrAAAAXwAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLXNldC1kYXRhLWlnbm9yZS1jb3BpZWQtbWFsZm9ybWVkLXVybC1p
bi1udWxsLW9yaWdpbi1zdGRlcnIudHh0VVQJAAOEJRRahCUUWnV4CwABBPUBAAAEFAAAADMyMDTX
NTTUNTJUMDC1MrC0MjLWMze2VAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjAxNjKNVQhw8ixJ
zXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAsKXVLimGrAmMA
AABrAAAAXQAcAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLXNldC1kYXRhLXNhbml0
aXplLXVybC13aGVuLWNvcHlpbmctaW4tbnVsbC1vcmlnaW4tc3RkZXJyLnR4dFVUCQADhCUUWoQl
FFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy0TM0MVQIT03yziwJSS0uCSrNy0st
ciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6
XABQSwMEFAACAAgALCl1S6GahVtjAAAAawAAAF8AHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1zZXQtZGF0YS1zYW5pdGl6ZXMtaHRtbC13aGVuLWNvcHlpbmctaW4tbnVsbC1vcmln
aW4tc3RkZXJyLnR4dFVUCQADhCUUWoQlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDIy0TOztFQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgALSl1S2ls71NjAAAAawAAAFAAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1zZXQtZGF0YS1zYW5pdGl6ZXMtaHRtbC13
aGVuLWNvcHlpbmctc3RkZXJyLnR4dFVUCQADhSUUWoUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU0
1DUyVDAwtTKwtDIy1TMwsVAIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11
zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgALSl1S2E3+I9jAAAA
awAAAEsAHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXR5cGVzLWlzLWluaXRpYWxs
eS1lbXB0eS1vbi1jb3B5LXN0ZGVyci50eHRVVAkAA4UlFFqFJRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUysLQyMtUzMTJTCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAC0pdUt4w1cH
YwAAAGsAAABCABwAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci10eXBlcy1wYXN0aW5n
LXBsYWludGV4dC1zdGRlcnIudHh0VVQJAAOFJRRahSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTU
NTJUMDC1MrC0MjLVMzU3VAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXO
z8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAtKXVLU1a9g2MAAABr
AAAAPAAcAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItZ2V0ZGF0YS1wbGFpbnRleHQt
c3RkZXJyLnR4dFVUCQADhSUUWoUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy
1bMwN1MIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04t
KstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgALSl1S7FW+v1jAAAAawAAADoAHABlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWNvcHktaHRtbC1zdGRlcnIudHh0VVQJ
AAOGJRRahiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjLTMzQ2UQhPTfLOLAlJ
LS4JKs3LSy1yLCiINjI1Nza0MrcwNzKPVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsp
pGQWQ3mpKXpcAFBLAwQUAAIACAAtKXVLolq0OmMAAABrAAAAPwAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtY29weS1wbGFpbnRleHQtc3RkZXJyLnR4dFVUCQADhiUUWoYl
FFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIy0zM2MFMIT03yziwJSS0uCSrNy0st
ciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6
XABQSwMEFAACAAgALSl1S6MZpARjAAAAawAAADkAHABlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWNvcHktdXJsLXN0ZGVyci50eHRVVAkAA4YlFFqGJRRadXgLAAEE9QEAAAQU
AAAAMzIwNNc1NNQ1MlQwMLUysLQyMtMzMTNWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3
No5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAC0p
dUvHBdNsYgAAAGsAAABAABwAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1w
YXN0ZS1wbGFpbnRleHQtc3RkZXJyLnR4dFVUCQADhiUUWoYlFFp1eAsAAQT1AQAABBQAAAAzMjA0
1zU01DUyVDAwtTKwtDIy0zMFcsJTk7wzS0JSi0uCSvPyUoscCwqijUzNjQ2tLExNzCxjFQKcPEtS
c53zc3JSk0sy8/OCU4vKMpNTixSS84HqwUIKKZnFUF5qih4XAFBLAwQUAAIACAAuKXVLA6XQ52MA
AABrAAAAPAAcAGVkaXRpbmcvcGFzdGVib2FyZC9kby1ub3QtY29weS11bm5lY2Vzc2FyeS1zdHls
ZXMtc3RkZXJyLnR4dFVUCQADhyUUWoclFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDIy07M0NVYIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgALyl1S3/rSJljAAAAawAAADcAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1wYXN0ZS1zdGRlcnIudHh0VVQJ
AAOJJRRaiSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MrLUMzG0VAhPTfLOLAlJ
LS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsp
pGQWQ3mpKXpcAFBLAwQUAAIACAAvKXVL7HS4wWMAAABrAAAAKwAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9oZWFkaW5nLWNyYXNoLXN0ZGVyci50eHRVVAkAA4olFFqKJRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUysLQystSzMDNWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAC8pdUu9Gt06
YwAAAGsAAAAtABwAZWRpdGluZy9wYXN0ZWJvYXJkL2ltYWdlLWluLWlmcmFtZS1zdGRlcnIudHh0
VVQJAAOKJRRaiiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjbQMzA1UwhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAAvKXVL+AO+u2MAAABrAAAARAAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9pbWctc3Jjc2V0LWNvcHktcGFzdGUtY2Fub25pY2FsaXphdGlvbi1zdGRlcnIudHh0VVQJ
AAOKJRRaiiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjbQMzG3UAhPTfLOLAlJ
LS4JKs3LSy1yLCiINjI1Nza0MrcwNzWOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsp
pGQWQ3mpKXpcAFBLAwQUAAIACAAwKXVLLRc1vmMAAABrAAAAKwAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9pbnB1dC1maWVsZC0xLXN0ZGVyci50eHRVVAkAA4slFFqLJRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUysLQyNtCzsDRUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADApdUt5nYJb
YwAAAGsAAABaABwAZWRpdGluZy9wYXN0ZWJvYXJkL2xpbmUtZmVlZC1iZXR3ZWVuLWJyLWFuZC1i
LXNob3VsZC1ub3QtcmVvcmRlci1wYXN0ZWQtY29udGVudC1zdGRlcnIudHh0VVQJAAOLJRRaiyUU
WnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjbUM7e0VAhPTfLOLAlJLS4JKs3LSy1y
LCiINjI1Nza0sjAxNjKNVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpc
AFBLAwQUAAIACAAxKXVLIulmqWMAAABrAAAALwAcAGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3Rl
LXRleHQtaHRtbC1zdGRlcnIudHh0VVQJAAOOJRRajiUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTU
NTJUMDC1MrC0MjbWMzE3VwhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXO
z8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAxKXVL4tami2MAAABr
AAAANQAcAGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC10eXBlcy1zdGRlcnIu
dHh0VVQJAAONJRRajSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjbWMzK0VAhP
TfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzKPVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJI
zgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAAxKXVLVhYEA2MAAABrAAAAJQAcAGVkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS0yLXN0ZGVyci50eHRVVAkAA44lFFqOJRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUysLQyNtEzMjRWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADEpdUv2D4gz
YwAAAGsAAAAvABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzgyNjctZml4LXN0ZGVyci50
eHRVVAkAA44lFFqOJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyNtEzsbRQCE9N
8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjO
B6oHCymkZBZDeakpelwAUEsDBBQAAgAIADEpdUsMuSzrYwAAAGsAAAAvABwAZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LXN0ZGVyci50eHRVVAkAA44lFFqOJRRadXgLAAEE9QEA
AAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyNtEztzBSCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQy
tzA3NY5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAI
ADMpdUsy2wUerQAAAJkEAAAwABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFuZC1zYW5pdGl6
ZS1zdGRlcnIudHh0VVQJAAOSJRRakiUUWnV4CwABBPUBAAAEFAAAAL3SvwrCQAwG8N2nuBcw3L8k
d93USVxEBQdxsc1wUNvSVp9fEUfpVG9MCPz4yGe14aUxS2uUxkLHwiGYQOost10aTzKMh0fTSL/q
uotFdqYI6Cle1X69HeW+aetayjG1zVH6ZyqlV2X7vv+sVJWG7yQVLOwPylOYoDiwc3NRwZtpCmei
CHTgXJQnm+dXBBzddCrL81AMVmOeWjAgUS4qYqZUAZw2eWoRgLT9R9lfUEsDBBQAAgAIADQpdUsx
nChJYwAAAGsAAABCABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWJsb2NrcXVvdGUtYW5kLXBh
cmFncmFwaC1icmVhay1zdGRlcnIudHh0VVQJAAOTJRRakyUUWnV4CwABBPUBAAAEFAAAADMyMDTX
NTTUNTJUMDC1MrC0MrbUMzKxVAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzKPVQhw8ixJ
zXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAA0KXVLSkTqOWMA
AABrAAAAQAAcAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWJlZm9yZS1ibG9j
a3F1b3RlLXN0ZGVyci50eHRVVAkAA5MlFFqTJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQw
MLUysLQyttQzMzNXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDyLEnNdc7PyUlN
LsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADQpdUtdY6/SYwAAAGsAAAAv
ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLXN0ZGVyci50eHRVVAkAA5Ql
FFqUJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdAzMTNRCE9N8s4sCUktLgkq
zctLLXIsKIg2MjU3NrSyMDE2Mo1VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZD
eakpelwAUEsDBBQAAgAIADUpdUukgcUsYwAAAGsAAABOABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWRvdWJsZS1uZXN0ZWQtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1zdGRlcnIudHh0
VVQJAAOVJRRalSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjHQszQyUAhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAA1KXVLb2B0Q2MAAABrAAAAMwAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1ldmVudC1vbmx5LW9uY2Utc3RkZXJyLnR4dFVUCQADlSUUWpUlFFp1eAsAAQT1
AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIx1DM0t1QIT03yziwJSS0uCSrNy0stciwoiDYyNTc2
tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAAC
AAgANSl1S1yVJ9NjAAAAawAAADUAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMt
YmxvYi11cmwtc3RkZXJyLnR4dFVUCQADlSUUWpUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIx1DM1MlEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgANSl1S6UDcL1jAAAAawAA
AEIAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUt
dXJsLXN0ZGVyci50eHRVVAkAA5UlFFqVJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUy
sLQyMdQzMzFUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDyLEnNdc7PyUlNLsnM
zwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADUpdUvLhQ3tYwAAAGsAAAA6ABwA
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLXVzaW5nLWltYWdlLWRhdGEtc3RkZXJyLnR4
dFVUCQADliUUWpYlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIx1DO3NFUIT03y
ziwJSS0uCSrNy0stciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4H
qgcLKaRkFkN5qSl6XABQSwMEFAACAAgANSl1S9wryYBjAAAAawAAADMAHABlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by10YWJsZS1jZWxsLXN0ZGVyci50eHRVVAkAA5YlFFqWJRRadXgLAAEE
9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdIzsTBXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3
NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQA
AgAIADYpdUvNiF5+YwAAAGsAAAA0ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5k
aW5ncy0wMDEtc3RkZXJyLnR4dFVUCQADlyUUWpclFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIx0rOwNFIIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwNTGzjFUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgANil1SyyzNshjAAAAawAA
ADQAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAwMi1zdGRlcnIudHh0
VVQJAAOXJRRalyUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjHWMzA3UghPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAA2KXVL2wprw2MAAABrAAAANAAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDAzLXN0ZGVyci50eHRVVAkAA5clFFqXJRRadXgLAAEE
9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdYzNrRUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3
NrQytzA3No5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQA
AgAIADYpdUv4M6tRYwAAAGsAAAA0ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5k
aW5ncy0wMDQtc3RkZXJyLnR4dFVUCQADlyUUWpclFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIx1jOxNFMIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgANil1Sy9mr+hjAAAAawAA
ADQAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAwNS1zdGRlcnIudHh0
VVQJAAOYJRRamCUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjHRMzA0UwhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAA2KXVLVzq3dGMAAABrAAAANAAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA2LXN0ZGVyci50eHRVVAkAA5glFFqYJRRadXgLAAEE
9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdEztTBWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3
NrSyMDUxs4xVCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQA
AgAIADcpdUsipRWpYwAAAGsAAAA0ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5k
aW5ncy0wMDctc3RkZXJyLnR4dFVUCQADmSUUWpklFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIx1TMwNFYIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgANyl1S4H1qE1jAAAAawAA
ADQAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAwOC1zdGRlcnIudHh0
VVQJAAOZJRRamSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjHVMzEzVAhPTfLO
LAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeq
BwsppGQWQ3mpKXpcAFBLAwQUAAIACAA3KXVL+5V8tGMAAABrAAAANAAcAGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA5LXN0ZGVyci50eHRVVAkAA5klFFqZJRRadXgLAAEE
9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdWzMDZRCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3
NrQytzA3Mo9VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQA
AgAIADcpdUvveH1YYwAAAGsAAAA0ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5k
aW5ncy0wMTAtc3RkZXJyLnR4dFVUCQADmiUUWpolFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDIx0zM0MlIIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgANyl1S85QoDNjAAAAawAA
ACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGlzdC0wMDEtc3RkZXJyLnR4dFVUCQADmiUU
WpolFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDIx0zM1M1EIT03yziwJSS0uCSrN
y0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5
qSl6XABQSwMEFAACAAgAOCl1S3UC4eB1AAAA1gAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtbGlzdC0wMDItc3RkZXJyLnR4dFVUCQADmyUUWpslFFp1eAsAAQT1AQAABBQAAAAzMjA01zU0
1DUyVDAwtTKwtDIx07M0NFQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11
zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XEYYVpnrGVlY4LHK3MLcyJwcqwBQSwME
FAACAAgAOCl1SwIj5AhjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGlzdC0w
MDMtc3RkZXJyLnR4dFVUCQADmyUUWpslFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDIx1zO1MFYIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAOCl1S0Hdl3JjAAAAawAAADMAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbWF0Y2gtc3R5bGUtMDAxLXN0ZGVyci50eHRVVAkAA5wl
FFqcJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQyMdezNLBUCE9N8s4sCUktLgkq
zctLLXIsKIg2MjU3NrSyMLa0sIhVCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZD
eakpelwAUEsDBBQAAgAIADgpdUtlKih1YwAAAGsAAAAzABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLW1hdGNoLXN0eWxlLTAwMi1zdGRlcnIudHh0VVQJAAOcJRRanCUUWnV4CwABBPUBAAAEFAAA
ADMyMDTXNTTUNTJUMDC1MrC0MrHQM7I0UwhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjAxNjKN
VQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAA4KXVL
VICNfmMAAABrAAAANAAcAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wbGFpbnRleHQtbm93cmFw
LXN0ZGVyci50eHRVVAkAA5wlFFqcJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUysLQy
sdAzszBXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5VCHDyLEnNdc7PyUlNLsnMzwtO
LSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADkpdUv7RljVYwAAAGsAAAArABwAZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtc3RkZXJyLnR4dFVUCQADnSUUWp0lFFp1eAsA
AQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDKx1DOwNFYIT03yziwJSS0uCSrNy0stciwoiDYy
NTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwME
FAACAAgAOSl1S63Xa2hjAAAAawAAACsAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAw
Mi1zdGRlcnIudHh0VVQJAAOdJRRanSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0
MrHUMzU2UghPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8L
Ti0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACAA5KXVL51kUBWMAAABrAAAAMwAcAGVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1yZW1vdmluZy1pZnJhbWUtc3RkZXJyLnR4dFVUCQADniUU
Wp4lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDKx1LM0s1QIT03yziwJSS0uCSrN
y0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5
qSl6XABQSwMEFAACAAgAOSl1Sxl57CdjAAAAawAAAC0AHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtdGFibGUtMDAxLXN0ZGVyci50eHRVVAkAA54lFFqeJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1
NNQ1MlQwMLUysLQyNdAzsTRQCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDyLEnN
dc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIADkpdUu/RqCpYwAA
AGsAAAAtABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMi1zdGRlcnIudHh0VVQJ
AAOeJRRaniUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MjXQszAwVQhPTfLOLAlJ
LS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsp
pGQWQ3mpKXpcAFBLAwQUAAIACAA6KXVL2Q5xbGMAAABrAAAALQAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS10YWJsZS0wMDMtc3RkZXJyLnR4dFVUCQADnyUUWp8lFFp1eAsAAQT1AQAABBQAAAAz
MjA01zU01DUyVDAwtTKwtDI11DM0NlcIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUI
cPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAOil1S85K
9mljAAAAawAAAC8AHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtY2VsbHMtc3RkZXJy
LnR4dFVUCQADnyUUWp8lFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI11DO1MFMI
T03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1S
SM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAOil1SyS5oDtjAAAAawAAACwAHABlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC0wMDEtc3RkZXJyLnR4dFVUCQADoCUUWqAlFFp1eAsAAQT1AQAA
BBQAAAAzMjA01zU01DUyVDAwtTKwtDI10jMwMVIIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIw
trSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgA
Oil1SweXaw5jAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDItc3Rk
ZXJyLnR4dFVUCQADoCUUWqAlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI10jO2
NFcIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstM
Ti1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAOyl1S1ZIlodjAAAAawAAACwAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDMtc3RkZXJyLnR4dFVUCQADoSUUWqElFFp1eAsAAQT1
AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI10rMwMVQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2
tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAAC
AAgAOyl1S5HUJTVjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDQt
c3RkZXJyLnR4dFVUCQADoSUUWqElFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI1
1jM2sFQIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04t
KstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAOyl1S36UICNjAAAAawAAACwAHABlZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDUtc3RkZXJyLnR4dFVUCQADoSUUWqElFFp1eAsA
AQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI11jMzMlIIT03yziwJSS0uCSrNy0stciwoiDYy
NTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwME
FAACAAgAOyl1Sy5VrTtjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0w
MDYtc3RkZXJyLnR4dFVUCQADoiUUWqIlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDI10TO0NFUIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAPCl1S0WB6VJjAAAAawAAACwAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDctc3RkZXJyLnR4dFVUCQADoyUUWqMlFFp1
eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI10TMzt1AIT03yziwJSS0uCSrNy0stciwo
iDYyNTc2tDK3MDc2jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQ
SwMEFAACAAgAPCl1S7nq6r5jAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4
dC0wMDgtc3RkZXJyLnR4dFVUCQADoyUUWqMlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAw
tTKwtDI11TMysFAIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0u
yczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAPCl1Sxtws2tjAAAAawAAACwA
HABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDktc3RkZXJyLnR4dFVUCQADpCUUWqQl
FFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI11bM0MlUIT03yziwJSS0uCSrNy0st
ciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6
XABQSwMEFAACAAgAPCl1S1qEbGJjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC0wMTAtc3RkZXJyLnR4dFVUCQADpCUUWqQlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUy
VDAwtTKwtDI10zMzMlMIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/J
SU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAPSl1SzhpvCtjAAAAawAA
ACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtc3RkZXJyLnR4dFVUCQADpSUU
WqUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI11zMwt1AIT03yziwJSS0uCSrN
y0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5
qSl6XABQSwMEFAACAAgAPSl1S7UuynFjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtdGV4dC0wMTItc3RkZXJyLnR4dFVUCQADpSUUWqUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU0
1DUyVDAwtTKwtDI11zM2MlMIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11
zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAPSl1S/ZVerBjAAAA
awAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTMtc3RkZXJyLnR4dFVUCQAD
pSUUWqUlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDI11zO1tFQIT03yziwJSS0u
CSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRk
FkN5qSl6XABQSwMEFAACAAgAPSl1S07Bn8RjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC0wMTQtc3RkZXJyLnR4dFVUCQADpiUUWqYlFFp1eAsAAQT1AQAABBQAAAAzMjA0
1zU01DUyVDAwtTKwtDI117OwMFEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIs
Sc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAPSl1S/YvEOZj
AAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTUtc3RkZXJyLnR4dFVU
CQADpiUUWqYlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDK10DM0s1AIT03yziwJ
SS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcL
KaRkFkN5qSl6XABQSwMEFAACAAgAPSl1S4A4Pl5jAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC0wMTYtc3RkZXJyLnR4dFVUCQADpiUUWqYlFFp1eAsAAQT1AQAABBQAAAAz
MjA01zU01DUyVDAwtTKwtDK10DM1MlMIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc1jlUI
cPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQCl1S3uj
QqxjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTctc3RkZXJyLnR4
dFVUCQADpyUUWqclFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDK10LMwN1QIT03y
ziwJSS0uCSrNy0stciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4H
qgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQCl1S/dbXeNjAAAAawAAACwAHABlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtdGV4dC0wMTgtc3RkZXJyLnR4dFVUCQADpyUUWqclFFp1eAsAAQT1AQAABBQA
AAAzMjA01zU01DUyVDAwtTKwtDK11DMyMVEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwNTGz
jFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQCl1
S/nKi1hjAAAAawAAACwAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTktc3RkZXJy
LnR4dFVUCQADpyUUWqclFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKwtDK11DOxMFcI
T03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDcyj1UIcPIsSc11zs/JSU0uyczPC04tKstMTi1S
SM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQCl1S1of+c5jAAAAawAAADcAHABlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMS1zdGRlcnIudHh0VVQJAAOoJRRaqCUU
WnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MrC0MrXUszQ2VwhPTfLOLAlJLS4JKs3LSy1y
LCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpc
AFBLAwQUAAIACABAKXVL+VBqa2MAAABrAAAANwAcAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10
ZXh0LWF0LXRhYnNwYW4tMDAyLXN0ZGVyci50eHRVVAkAA6glFFqoJRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUyNLAyMNAzNjBXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3No5V
CHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEApdUuF
9lyWYwAAAGsAAAA3ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0w
MDMtc3RkZXJyLnR4dFVUCQADqCUUWqglFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTI0
sDIw0DM3MlEIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIwNTGzjFUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQSl1S6gA2S9jAAAAawAAADUAHABl
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTItc3RkZXJyLnR4dFVUCQAD
qSUUWqklFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTI0sDIw1DM2NVAIT03yziwJSS0u
CSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRk
FkN5qSl6XABQSwMEFAACAAgAQSl1S3pdmqFjAAAAawAAADUAHABlZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC13aXRoLXN0eWxlLTMtc3RkZXJyLnR4dFVUCQADqiUUWqolFFp1eAsAAQT1AQAA
BBQAAAAzMjA01zU01DUyVDAwtTI0sDIw1LO0NFcIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tLIw
NTGzjFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgA
QSl1S9c5hLRjAAAAawAAADUAHABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0
eWxlLTQtc3RkZXJyLnR4dFVUCQADqiUUWqolFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAw
tTI0sDIw0jOzsFAIT03yziwJSS0uCSrNy0stciwoiDYyNTc2tDK3MDc2jlUIcPIsSc11zs/JSU0u
yczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAQil1S20V0mNjAAAAawAAADUA
HABlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTUtc3RkZXJyLnR4dFVU
CQADqyUUWqslFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTI0sDIw1jO2MFIIT03yziwJ
SS0uCSrNy0stciwoiDYyNTc2tLIwtrSwiFUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcL
KaRkFkN5qSl6XABQSwMEFAACAAgAQil1S/CmtpVjAAAAawAAADMAHABlZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLXN0ZGVyci50eHRVVAkAA6wlFFqsJRRadXgLAAEE9QEA
AAQUAAAAMzIwNNc1NNQ1MlQwMLUyNLAyMNEzMDVXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrQy
tzA3NY5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAI
AEIpdUsjUj8DYwAAAGsAAAA1ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXVucmVuZGVyZWQt
c2VsZWN0LXN0ZGVyci50eHRVVAkAA6wlFFqsJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQw
MLUyNLAyMNEzsTRXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMDE2Mo1VCHDyLEnNdc7PyUlN
LsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEMpdUv+09fblQAAAIICAAAz
ABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXdpdGhvdXQtbmVzdGluZy1zdGRlcnIudHh0VVQJ
AAOuJRRariUUWnV4CwABBPUBAAAEFAAAAL3RvQrCMBQF4N2nyAs05OY/3aqTuIgKDuJieodATUoa
fX5F3IQMUjrew4GPw+UMTAPQcCBMtcBaJqljgpzxtgvlhFM5PGLE3I3jhSsjoLVKancl+/W24H2T
hgF9CSkeMT+Dx0x8evc/EenD9L2wpyv+QykKktco4aydixKmRhlrhJiLUlYuQ2nKlvqVpmBdfZX6
a9ULUEsDBBQAAgAIAEMpdUuZdAgGYwAAAGsAAAAnABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXhtbC1zdGRlcnIudHh0VVQJAAOuJRRariUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1
MjSwMjDTMzE1UwhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7J
zM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACABDKXVLT3dYZGMAAABrAAAAQwAc
AGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0aW5nLWVtcHR5LWh0bWwtZmFsbHMtYmFjay10by10ZXh0
LXN0ZGVyci50eHRVVAkAA64lFFquJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUyNLAy
MNMzMzZXCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMLa0sIhVCHDyLEnNdc7PyUlNLsnMzwtO
LSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEQpdUvNkcuKYwAAAGsAAAA+ABwAZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RpbmctaW50by1wLXNob3VsZC1ub3QtbmVzdC1wLXN0ZGVyci50
eHRVVAkAA68lFFqvJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUyNLAyMNOztDRRCE9N
8s4sCUktLgkqzctLLXIsKIg2MjU3NrQytzA3NY5VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjO
B6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEQpdUtMqgNwYwAAAGsAAAAqABwAZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RpbmctdGFicy1zdGRlcnIudHh0VVQJAAOvJRRaryUUWnV4CwABBPUBAAAEFAAA
ADMyMDTXNTTUNTJUMDC1MjSwMjDXMzK2VAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjAxNjKN
VQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACABEKXVL
8M4w+WMAAABrAAAAMgAcAGVkaXRpbmcvcGFzdGVib2FyZC9wcmVzZXJ2ZS1jYXJldC1jb2xvci1z
dGRlcnIudHh0VVQJAAOvJRRaryUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MjSwMjDX
M7W0UAhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8LTi0q
y0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACABEKXVL1EjAdGMAAABrAAAASgAcAGVkaXRp
bmcvcGFzdGVib2FyZC9wcmVzZXJ2ZS1saW5lLWJyZWFrLWF0LWVuZC1vZi1wYXN0ZWQtY29udGVu
dC1zdGRlcnIudHh0VVQJAAOvJRRaryUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MjSw
MjDXszA3UQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0sjA1MbOMVQhw8ixJzXXOz8lJTS7JzM8L
Ti0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACABEKXVLflzorWMAAABrAAAANgAcAGVk
aXRpbmcvcGFzdGVib2FyZC9wcmVzZXJ2ZS11bmRlcmxpbmUtY29sb3Itc3RkZXJyLnR4dFVUCQAD
sCUUWrAlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTI0sDKw0DOwMFAIT03yziwJSS0u
CSrNy0stciwoiDYyNTc2tLIwMTYyjVUIcPIsSc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRk
FkN5qSl6XABQSwMEFAACAAgARCl1S6BqfxljAAAAawAAAC4AHABlZGl0aW5nL3Bhc3RlYm9hcmQv
c2VsZWN0LWVsZW1lbnQtMS1zdGRlcnIudHh0VVQJAAOwJRRasCUUWnV4CwABBPUBAAAEFAAAADMy
MDTXNTTUNTJUMDC1MjSwMrDQM7EwUQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0MrcwNzaOVQhw
8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIACABEKXVLaDmA
NmMAAABrAAAASQAcAGVkaXRpbmcvcGFzdGVib2FyZC9zaW1wbGZpeWluZy1tYXJrdXAtc2hvdWxk
LW5vdC1zdHJpcC1jb250ZW50LXN0ZGVyci50eHRVVAkAA7AlFFqwJRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUyNLAysNCzMDdWCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMDUxs4xV
CHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEUpdUsb
39WmYwAAAGsAAABBABwAZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMy10cmFpbGlu
Zy13aGl0ZXNwYWNlLXN0ZGVyci50eHRVVAkAA7ElFFqxJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1
NNQ1MlQwMLUyNLAysNQzMjBRCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMLa0sIhVCHDyLEnN
dc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBBQAAgAIAEUpdUv1wOI8YwAA
AGsAAAAtABwAZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNi1zdGRlcnIudHh0VVQJ
AAOxJRRasSUUWnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MjSwMrDUMzUzVQhPTfLOLAlJ
LS4JKs3LSy1yLCiINjI1Nza0MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsp
pGQWQ3mpKXpcAFBLAwQUAAIACABFKXVLzHofp2IAAABrAAAALgAcAGVkaXRpbmcvcGFzdGVib2Fy
ZC9zdHlsZS1mcm9tLXJ1bGVzLXN0ZGVyci50eHRVVAkAA7IlFFqyJRRadXgLAAEE9QEAAAQUAAAA
MzIwNNc1NNQ1MlQwMLUyNAAiPWNLC4Xw1CTvzJKQ1OKSoNK8vNQix4KCaCNTc2NDKwtTEzPLWIUA
J8+S1Fzn/Jyc1OSSzPy84NSisszk1CKF5HygerCQQkpmMZSXmqLHBQBQSwMEFAACAAgARil1S9WC
k0xiAAAAawAAADMAHABlZGl0aW5nL3Bhc3RlYm9hcmQvc3R5bGVkLWVsZW1lbnQtbWFya3VwLXN0
ZGVyci50eHRVVAkAA7MlFFqzJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUyNAAiPQtD
E4Xw1CTvzJKQ1OKSoNK8vNQix4KCaCNTc2NDK3MLc2PjWIUAJ8+S1Fzn/Jyc1OSSzPy84NSisszk
1CKF5HygerCQQkpmMZSXmqLHBQBQSwMEFAACAAgARil1SwyzUvtjAAAAawAAACsAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvdGVzdGNhc2UtOTUwNy1zdGRlcnIudHh0VVQJAAOzJRRasyUUWnV4CwABBPUB
AAAEFAAAADMyMDTXNTTUNTJUMDC1MjSwMjTUMzYwVQhPTfLOLAlJLS4JKs3LSy1yLCiINjI1Nza0
MrcwNzaOVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpcAFBLAwQUAAIA
CABGKXVLe8xq12MAAABrAAAANwAcAGVkaXRpbmcvcGFzdGVib2FyZC91bmRvYWJsZS1mcmFnbWVu
dC1yZW1vdmVzLXN0ZGVyci50eHRVVAkAA7QlFFq0JRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1
MlQwMLUyNLAyNNSzMDBUCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3NrSyMDE2Mo1VCHDyLEnNdc7P
yUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBAoAAAAAAC4pdUsAAAAAAAAAAAAA
AAASABwAZWRpdGluZy9zZWxlY3Rpb24vVVQJAAOIJRRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACAAuKXVLVHzSwmMAAABrAAAALQAcAGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1jcmFzaC0w
MDItc3RkZXJyLnR4dFVUCQADiCUUWoglFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTKw
tDKy0DMxMVMIT03yziwJSS0uCSrNy0stciwoiDYyNTcytjK3MDM0j1UIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAUip1S1VN+qBdDgAAojYBAA0AHABl
cnJvcl9sb2cudHh0VVQJAAOrJxRa0yQUWnV4CwABBPUBAAAEFAAAAO2dfW/bOBKH/99PIRS3uy1Q
UeKLKNLA4tBLc9vcdttekm4PKIpAlmlbjSxpJTlt9nDf/YaSk7iulcRJenuWBwVsx5b4MvPj8BlS
Ut8fz43zKj9zGHX8YODLAQtJqKgU3GE+DT8476sqHXyKygw+FsnIYYIGwQfn2Qufal8PHAon+PCP
DoTgA9+pTHlmSic2ZZ2MkziqjTPKTeW8en3sJFmczkfGiTLn4LnzaZrEU2cW1fEUfq+n5uLcLJqZ
796va5n2GVf+NS2TbctUyAfOQZbUA+fIVFWSZ85eBNU4SeVkee3EeTZOJvPSjJz30ySzhx29XBzZ
HPihs/6Q3qL+P8MyXGp60bJZMTspSjPOy9MB9DeJzVdt9KkEGz0rbG89RgRhofP4bZZ8fuK8efHG
C4gk3HdeJsPSgG3gCEbCZbu5rlOaaj5LsgmYtJxFqZMXpoxqMGHV2caQs4s2xnlpOhvnazFw9vLZ
LMpGTppkZuD86M2r0quGSeZN67qAFowd77c8nc9M5T2P6sjbf3fkvTPDX5J68fa3eZKOvEOTmqgy
blJM88xUyWyeRnVeeml0ns9rtzZV7dqupHXVlkxsNx13z3mex1B6Vh/moJlHnZW9bAo6hnLaAjxb
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
SwMEFAACAAgAQil1S9sI00I7AAAAPwAAAFIAHABmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQJ
AAOrJRRaqyUUWnV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRn
ZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIAEIpdUvbCNNCOwAAAD8AAABTABwA
ZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAkAA6wlFFqsJRRadXgLAAEE9QEAAAQUAAAAcywp
Sc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQ
SwMEFAACAAgARSl1S9sI00I7AAAAPwAAAC0AHABmYXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRl
bGVnYXRlLXN0ZGVyci50eHRVVAkAA7IlFFqyJRRadXgLAAEE9QEAAAQUAAAAcywpSc0tKFEoyVdI
zSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAA
Sil1SwAAAAAAAAAAAAAAAAwAHABmYXN0L3BhcnNlci9VVAkAA7slFFrZJxRadXgLAAEE9QEAAAQU
AAAAUEsDBBQAAgAIAEopdUvypRkuYwAAAGsAAAAyABwAZmFzdC9wYXJzZXIvc3RyaXAtc2NyaXB0
LWF0dHJzLW9uLWlucHV0LXN0ZGVyci50eHRVVAkAA7slFFq7JRRadXgLAAEE9QEAAAQUAAAAMzIw
NNc1NNQ1MlQwMLUyNLAytNQzMTBSCE9N8s4sCUktLgkqzctLLXIsKIg2MjU3MrYytzAztoxVCHDy
LEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZDeakpelwAUEsDBAoAAAAAAFEpdUsAAAAA
AAAAAAAAAAAJABwAZmFzdC94c2wvVVQJAAPJJRRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CABQKXVLTvsg+IgAAADnAAAAJQAcAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50
eHRVVAkAA8glFFrIJRRadXgLAAEE9QEAAAQUAAAApY6xDsIwDET3foV/oHhgywwTbCA6u60rIjlx
5ThS+XsC5Q9YTiffye8mTWsU8qgZ2EwtwBKFvxIQ8aFSExc8kROehxsOPF6i45VeWv3OxQsuVBy3
ImhctNrU6tvT+lmnQ7uCxMxwBBZOnB1iWtW8a0nYLQSomcYGdQVRmn/w/9D9/pznz4buDVBLAwQU
AAIACABQKXVL/aIuZI8AAADuAAAAJwAcAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3Rk
ZXJyLnR4dFVUCQADyCUUWsglFFp1eAsAAQT1AQAABBQAAACdjjEOwjAMRfeewhcoHtgywwQbiM5u
64pITlw5jlRuT6CcgOXL/3/bepOmNQp51AxsphZgicJfCYj4UKmJC57ICc/DDQceL9HxSi+tfufi
BRcqjlsRNC5abWrrzXk/0tzHtKp5Xy0eWgYSM8MRWDhxdtjbrjVhHyFAzTQ2AFcQpfkH8idG1lKn
5+dFuxPp3lBLAwQUAAIACABQKXVLsrvGZ4cAAAA0AQAAJAAcAGZhc3QveHNsL3hzbHQtY29udGVu
dFR5cGUtc3RkZXJyLnR4dFVUCQADyCUUWsglFFp1eAsAAQT1AQAABBQAAADNjjEOwjAMRfeewhcA
i7UzTLBR0TmkrmrJiaPEQe3tSTgFw//Dl77e8xoSizPWCJSz5hFWFvrViIgvlRqo4NWZw9v8xJne
dzZ8uEOrTVSs4OqK4V6kx05eo1G06Uh03iwICEeCC5BQaDu0W6o2cPw44QVa14bTDIFs06XxVQf/
f1p7f2GX+wJQSwMEFAACAAgAUSl1S8Lr9caMAAAAYAEAADQAHABmYXN0L3hzbC94c2x0LXRyYW5z
Zm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQJAAPJJRRaySUUWnV4CwABBPUBAAAE
FAAAANWOMQ7CQAwE+7zCHwgWbWqooAOR2gm+xJLvjHwOgt9DUvAHit1mipnR8kOUQqwAu5t3kER5
uw4Rb6ZL5ooHCsJjf8Geh5MEnultS1y5RsVENfBVdV204VRqMs9tWJucpswl2tGpzrs5soJKYdgD
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
WnV4CwABBPUBAAAEFAAAADMyMDTXNTTUNTJUMDC1MjSwMjXQMzQwVQhPTfLOLAlJLS4JKs3LSy1y
LCiINjI1Nza0sjC2tLCIVQhw8ixJzXXOz8lJTS7JzM8LTi0qy0xOLVJIzgeqBwsppGQWQ3mpKXpc
RlisMjYywGeVibGRKbWsMgVycFtlbmFubEyOVQBQSwMECgAAAAAAYSl1SwAAAAAAAAAAAAAAABMA
HABodHRwL3Rlc3RzL2xvYWRpbmcvVVQJAAPlJRRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CABYKXVLTuUxypsBAAAHBAAAPwAcAGh0dHAvdGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1j
c3MtYmxvY2tlZC1ieS1jc3AtYWN0dWFsLnR4dFVUCQAD2CUUWtglFFp1eAsAAQT1AQAABBQAAADV
U8Fu00AQvecr5uZLbSccAOWGQlKQColw72izHsejrGfNzjiQv2ectNAUpRLHypeV9s3b9948d44Y
muQ6hBxqqit1STcpHkgosgt30dWrmFYjYtI9Ay9i15FeQBbrr9X6bglfllX14XY5h/sWQeKQPEIg
UWhigkVkRVao0A+J9AibGMgfjTKhVzogZOIT9ZpL8hl4g9vLAo6B+OAC1Q+Uc8gyjuwx9y36fW7k
eZ8wmKIsK+Czwk8KAbYItOOYsC7+FfgNm0GwBo0wzkGr2s/LcvbmXTG1bzZ/P51Oy/GKeFcmPL8s
pXQuhO/dj8KL2AveGQuQQh1RgKOC63t0yRSDjhnoMeDo54nL2JyursTxyrUGYoTZ2wvR+MvGFMHB
eb9PtAi0Ttqb0+m00huwpmQDi2swJx7psquC/7TlPxQ/b/OKmKT9GP3QGf7F4n9yXAdc85j08mBo
uQo9s16w3bckoGg/Q+f25keGhCbV6Unv5txf8+SYMf21/FDsMbxxP9IiKjzu+DxvvNsQ/d7S3h5f
cv8YTu92WMBk8htQSwMEFAACAAgAWCl1S31yg70bAgAAVQUAAD0AHABodHRwL3Rlc3RzL2xvYWRp
bmcvZG8tbm90LXByZWxvYWQtY3NzLWJsb2NrZWQtYnktY3NwLWRpZmYudHh0VVQJAAPYJRRa2SUU
WnV4CwABBPUBAAAEFAAAANVUTXPaMBC98yv25gMI4R76wYmUQNtpWpg40xw7Ql6wBllytWsK/75r
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
4R6Axe4198dwarXCAfTE/CrPe2nvN1BLAwQUAAIACABZKXVLdl2tJiABAAC6AgAASAAcAGh0dHAv
dGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1zY3JpcHQtc3JjLWJsb2NrZWQtYnktY3NwLWV4
cGVjdGVkLnR4dFVUCQAD2iUUWtolFFp1eAsAAQT1AQAABBQAAADVkc1uwjAQhO88xb4ASeilFTdE
Q3ugJar7AsbZkC2xN1pvkOjT1/ypAqncKx/n82hm1lsK0Ij1CGOoqTZqRSvhHUXiYLsl23rBsjgQ
I38Dz9l70itkvno3q2UJb6Uxs5dyCh/YDBFrUIYugdCq9tM8nzw8ZkV6k+lTURT5QaKwyQUjD+Iw
5t8oPO4wbLTNviKs0dnkA6RQM0YIrGD7Hq1AyqQtQnRCvY6juBRN0CntELg5anMOikHBoBuEdA8V
d+T22X+Le3uABQWK7TO7wSf+7q1ebag7XIVD9HKX6PgnenK9cvtsKYJiVPB2m/rEQTBFtXrMWwke
x4rOhoDyW7k/C/ZcFy6Dnf4mz3XHbpv2Xu/vNb8M09sNZjCqZsaMfgBQSwMEFAACAAgAWSl1SwS0
Sl4uCQAAqSIAAEwAHABodHRwL3Rlc3RzL2xvYWRpbmcvZG8tbm90LXByZWxvYWQtc2NyaXB0LXNy
Yy1ibG9ja2VkLWJ5LWNzcC1wcmV0dHktZGlmZi5odG1sVVQJAAPaJRRa2iUUWnV4CwABBPUBAAAE
FAAAAN1aa2/bRhb97l9B2NgaKExSsiRHkh0tElveLTZtjCrYflwMyaE4MclhZ4a25O7+973zokiK
lBWk6WIbIyY5z/s8584kN4nI0sXJTYJRBI8MC+SECWIci7fnpYjd6Tk0c7FN8eJknpL88cKZPxFO
BI6c304c+CPwRrgRDilDgtB87uQ0x9eqK6AswswNqBA0mzvDYuNE8I6j65P/nOjlzCIhTSmbO2eD
0Uz1efckxXckjk1/gMLHNaNlHrl2aDyVP/WN9A6cpiRyzqIo0n0xzYUbo4yk27mT0ZzyAoVGwAyx
NQGRhzhzBrqpoKCc0oPhFDR6wkqgZNiSdDQadazPUc5djhmJa52cvGC1R31TN8WxmDsDb2LbI8KL
FMEiJAfLGAmfSSQSmDwY/MXIh6KI5OtqppbNuEa+Nb1jxCV5AkKJanhCnzBraTSZTK77jI2xNoMn
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
5Ap9gw4No6K6DB6ZqsYZCVE7swuNKEEWFZEbJ6xLkVq3X1i7YAry97qO2C6VZVaPJGVa1MoHb1Hh
tkYrWAxlK71+v/+v9RgrjXGdmukU1HhwDv3xYHwG02kPKkMe1tFUCAoKKnIxUZYxbIgpeOOuEuki
xEWLeI2ehaoiOcL0Z9ff8uurOXyd5/nFx/kEbksEDk20CI5YYB0izIIX9AI52iaS7GAZHNld4owp
O9ogZGwj1aI42gxsgqejGYwH8hvjqDhQTiDL9jZtifZBJXJ1yCLLhvBZ4JGcgxUC3fsQU1X+okLZ
OXy7wKKpqt3bRd3gumEsQAK0bqAt+kTr8dn5cJSe8eT9aDR6rn9qje441lwZ535UP4epFdIR1iQW
IIEiIIMPAqau0cQkE6T1/WTihbOw7rZORPDfi3XkEcbvjlTjNv0nCAb2ffdCDENpuBx0q66SA0j9
kTWezTrNq2/pspOKn7v4DyS/mrMFeeLyMth0jXj5/Ux+Mr5weO3bsOebBOfT2D3vMd9tSQzt5ZLQ
D8kTNxGTXCOd5uV+tpIv4z1GOMwat8G1xeESUeCpwNBeRWmriw2MSKRVSnkIPbW8yPNev/cLUEsD
BBQAAgAIAFspdUsW5lFwnQAAADQBAAA6ABwAaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtY3Nz
LXdpdGgtY3NwLW5vbmNlLWV4cGVjdGVkLnR4dFVUCQAD3iUUWt4lFFp1eAsAAQT1AQAABBQAAACF
zEEKAjEMheH9nCIX0DuIOrgQHBgvEKeRBttUknTE29vBlS50E3jk48/IAlfFTLCCwGF0VB+0zGxc
BNOxYOiL9ovo8hfelpzZf5KehS3uylQzyW96QAmJTpIa2s9N25/qR+0c2cDJHDLeyMCqEnhEb4dg
UFqyYBOKkML9vQ0QzJ+JLBI5KFmpOhE82GN7SZE20F35Up3W0A2bcexeUEsDBBQAAgAIAFspdUtj
TsVWPAkAAPYiAAA+ABwAaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtY3NzLXdpdGgtY3NwLW5v
bmNlLXByZXR0eS1kaWZmLmh0bWxVVAkAA94lFFreJRRadXgLAAEE9QEAAAQUAAAA7Vprc9s2Fv3u
X4GxZ+uZjklJtuVIsuOdxI/uzqaNp8psP3ZAEjQRgwQLgLacdv/7XrwokiJlpWna/bDxxKIIELj3
3Mc5YHKRqZxd7l1kBCfwkROFUZxhIYl6fVipNJgdwm2pnhm53FswWjwcocUjlVSRBP26h+CPIisV
JCTmAivKiwUqeEHOzVDERUJEEHGleL5Ak3KFErgmyfnef/bscm6RmDMuFuhgfDI3Y+EtZeSapqkb
j3D8cC94VSSBn5rO9E9zI7uD5Iwm6CBJEjuW8kIFKc4pe16gnBdcljh2BuZY3FMweUJyNLa3Sg7O
GT8EYeDRIzEGZZOOpScnJz3rS1zIQBJB08agpJ+I2aO5acBIqhZoHE79/YTKkmFYhBaAjLPwiSYq
g4fH4785+3CS0OK+ftLa5kKjr9rRcebSIgOjVD09449EdDyaTqfnQ2ATYmEIdUzewV7SPZwyjsEN
Qe8z1Y6cnnUF7mPwxW/FAXqqwMVxx2WFI0aCmDDW8jIw67ZQesrAu8DEUKfak8Dl2rIliXXsBpPG
PNxOmW66uJz1uENCjcuV3eFmVUJ4YX1wjRyhUH90PRw0T9KERM/6NzKmvmU8frjDQoXg6iKlQqog
zihLBoHV2y3h+aNtiwmSQ2iPXtjP7eHhtwkXRHpKK+2mPusgWxSNMQswo/dQG4r3uCWIzvR/4CJh
xMPh1tEQ6u8ZsQFd53NcCalDo83uViCOIDqVjxjsWSeOLR5j3jYrWnm+mQ73gjyfdxIznL4ULwsx
ChV/EeYwFTzvgO36o95Do/5DlUdEQDaRZnbZu97wzTbqsnY+bzVAXy59bdBX8unpaW+7aUa/7jF6
oaktAVsGdcN3eeDSsy9FrLmtdDpxDavhuHGxt+FYkhiEZUuTKoWuTm2mA9B3E5c13pFWrcJDga1W
MwR4mq/ghyD4IdA3rEE0x/ekFZkFOq4BjxjWKOqJMbQGsAFMcVeo6/c6KrPT+WDvTUm6bgA6rWDF
mh4b1dzzaJIm7Uch2HJ4+pzMz7dxer2S6zJNO1xVDNN1kmwsgBLChp8g8xetGX2LllVZcqGAaYXL
ZAA1z0mhJPp2BPvhSmXc4m3ZWIsZyHoFeRr7SJkHzJwB/q/naGMwpISZ7NvZmU9s3W4wY1fegt7Z
x5bLcrwKOvSegy5wt47HNe90twbct+5TV3Zd0q1t+uwMeUksbQZPJHqgKlBCl51FwhqOwmN53nDj
1Dl9IBVWlXxbRcDhNR+Gunp6zdGPKM5ZhEV73G+dMmIqdD2Q80/13bo5ndg6djpKX3q1oK+HJeFQ
59gq5dZpkdIVseu4fjxuuxRio0FsmW2y+BOFXiA6qVav+SmgRUJW0KS2uLYmwoYJfX65ZtSit5nr
YoU20xVsLzXBfhFfvWjo2drQiU1iT0L2mzHWXdcM5r7WBtfKrLU1TQXOrYWdOmnLiEaNXA102k1s
nkFr8ifH9YSBcATNvAMxnc1v1+nlOHlg0ADRHqtlZLIpj9vi2K1h4dvM4UFJkPg+a7d545uCP+qM
m6MfPEd2ziRnr3xD2zRzS5E0Tjsyx1bLN3tuwQXcPh/oMs5/LcFk3+bWD1/X474pDEeELXAKFXa0
8bi9bxYxhFyAq/voN7R/vlcTcYO+u08zDAqdp4F6LknvUvuDFrmJnSNuRphpkLUYxVqMDnDUQU6k
9MJjEOe+sDSqY2ka9S5UCBQDguiR8kpe1XdAzH4ixVWDLPt43kuOLsU0yUX3cshakwm+t7vvLhNd
EznxHLiTNS41QOMQpWuiRRdO9g2IvibPRhVUVdHsO57fE/q4SHnsMOSV0v2iWX4RqwyTuCHIlxRs
AQabeEeaZGlWAQ3zISN2p5Fj2nuwX/ugOFIwFtnZLtUkeqRY92T1vcsJMDYS/AkCDkogw/CsE0VU
hVoE1X6cnjkVX0sR9913By1k9d9xm0T9K52uxs9pAqcs65gOkPSH7x5GAR3GJX4E7AEB0uGV5klv
g+qCSXhiJdP65Ydn/54YHFxfXzdK+mB2e307ve3tTyAu+7P45uamz+oFyUvoUK3gO5nWmRnCJVja
qvyb+Ww8c30rZgSLn4088EcBfcccmzI95WLk3rpdyFjQEmIq4tf7mVKlXIxG+CNehfec38NDJZU6
dc29EaORHH38pSLieTQJT8Nj9yUEaRl+lPuXsK5Z7xK1V455QgIdQ/IE8/4OkdbBfH06azwCRrkX
hRFPnuED6gHsxlK+PvQnAf2+MJtcjv4N8YSeNbrGCo9uflqOfiLRv6hyH28rypLRj8C7WJKAlhmk
iaR5BYqbixFkDsAbKAIdF47zFVNypD0f6TtyBKDpLBhB9erLIJYSVLPK4KIMIOFiEoC4qTAL1UqB
yZO2pY0XRYebI+YAP3RfH+yRzEBpJ50p+lSDWi+EzItTIFk/w7wKWOuLw8sJ4Arjl61ZUPEvzwHW
PrzMYRdkFVIA9ZZAcxfqTnBbhZi9A2huubjVM9wqED8w+YsNP97B8OPdDdctnKpt5pqPptGN6jm8
dMObru0WTmgpL8bST9oKyzdFJMvzHbA5Gcbm6v0Py/fvbtD3N8vlm+9uFoYaJK9ETGAJaY+5V5YH
ECRxJbRiuoO+Fz8DloJYUf/NAYgMW7QBVLf5augD6/M/bEqLR6x7pV16YR8wv2z9xBmJHwLYLHBF
tp4Qon8q4BPGUEQQsACHYgg/K8H+WDRP/yQ0dTf+fWAmVZ4//+8COP0MAH8kaSXhoKSXgKxAuisD
HU2OX4Vj+JksZuPxuG7Q0LsNJHJk6Pbn/JcQejW4HWNYBdQJSjiRoBGgCssSShqgNIKnBrsRBZ6a
oYFw/ZUAnv0fwC8D8NVnAGje8E3OWkiSFfgCmhIjp2jWAEmUYZkdmStTjUcIat7UYVVInIL4MC8N
bVUPoVl30t8P51flsD9KkpzsEKzZ7sx+Swsqs2s4MOlz1dcTJKc7mD3f3Wz7b0fvC12FN4/6xPV1
zJ7uIgDHnwv314P5bBd7tyjWDxnVb6qBd3P8AIUmK0HseVUX0p0VGlBsuNAdxgkPqatadzOZETgR
+46ItOCHIVPTCCslKBzbSYj+1Lqz/4zxsnxcz9sK8KsdAN7SVA3IFwlhl3dvlktwCq5ehOOvFsOT
LSeFL4ll58McWOEsaP67y38BUEsDBBQAAgAIAGEpdUtnpxdNlQEAAHIEAAA/ABwAaHR0cC90ZXN0
cy9sb2FkaW5nL3ByZWxvYWQtc2NyaXB0LXNyYy13aXRoLWNzcC1ub25jZS1hY3R1YWwudHh0VVQJ
AAPlJRRa5SUUWnV4CwABBPUBAAAEFAAAAM2TwY7TMBCG732KueWySVokBOoNdVtAWmhF9gW89qQZ
1h5H9qRQnp5JWmC7YhGXFSgXK/79z/ePPcEQQ5tMQCjBkWvEJNmleKBMkY2/icZtYtqMill4JF7F
EEguJKvtx2Z7s4YP66Z583a9hNsOIcchWQRPWaCNCVaRBVmgQTskkiPsoid7VMuEVuiAUGSbqJcy
J1uAVblWzmAYiA/GkztbLqEoOLLF0nZo70s1L/uEXomKooL3Al/Ie7hDoD3HhK76Z4BuCOH411Cf
sB0yOpAIYxjoRPplXS9evKrm+i2Wr+fzeT1uEe/rhKdquf6GKZYeeS9d9TlrDWvUB0jARczAUcD0
PZqknCBj8p8xHoSL7bT3RBd+g+uJERYvL7jxqx4TBHOu8QAmQ2dydzWtpu5cgTa9GDibFkvi0a54
XuL/u8GPB21DTLm7jnYIqv/jTL4z7DxueURfH1Sdn5SeXC/cbjvKIKhjEMy95slDQkU1MvHuTqOl
mQwzJjiPWv51xz8apU9cOv093S4YkUR3+hgqmM2+A1BLAwQUAAIACABhKXVLktNIDAwCAADBBQAA
PQAcAGh0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLXNjcmlwdC1zcmMtd2l0aC1jc3Atbm9uY2Ut
ZGlmZi50eHRVVAkAA+UlFFrlJRRadXgLAAEE9QEAAAQUAAAAzVTLbtswELz7K/amg03TClCk8Mmp
47RF08aIgubMUGtrG4oUuCsn7teXkp2HkabopWiggwhqNDszy6VSCvT34NoaWZ8aMXpxXehrvPlC
sn99aMmV+hIdGkZFTRU8MtWtMxKidmYbWlGCLCoit05YVyKN7nZYu2BK8mvdROyWim2kRhRHq+5I
KmW5UT54iwrvG7SC5VjuZTAcDt+ILGOlNa4XNZuBykfHMMxH+RHMZgOoDXlYRVMjKCipLMREWcaw
IabgjTtP3GchnnWIl+h5qGuSA8xwfvGtuDhfwNdFUZx8XEzhqkLg0EaL4IgFViHCPHhBL1CgbSPJ
FpbBkd0mzpgipA1C9mQoA5vgqTSD8UB+YxyVe8opZNnOpq3Q3qpErvaRZNkYPgvckXNwg0BrH2Jq
zv9TWLZ1vf17VZe4ahlLkACdHeiaP9U6PzoeT9KTT99PJpPHc5COSF+O9U+MQTn0a6nGPzgVsSbx
AAmUARl8EDBNgyYmoSCd9Ucfz9yFVf/tlRh+p9eRR8jfHQjH+/SfIJh9kWdqGCrD1ahf9fmMIMWe
tZ7NKk2D7+iyfyz5bUf8YtzOyBNXp8GmS8XLn0fzk/GlwwvfiV9sEpxfx+54D/muKmLorpqEvk2e
uI2Y5BrpNS93I5Z8Ge8xwn7k+KnRD2FBdxul7b7FYEQi3aQTMYaBWp4UxWA4+AVQSwMEFAACAAgA
YSl1SyhSUrmaAAAAMAEAAEEAHABodHRwL3Rlc3RzL2xvYWRpbmcvcHJlbG9hZC1zY3JpcHQtc3Jj
LXdpdGgtY3NwLW5vbmNlLWV4cGVjdGVkLnR4dFVUCQAD5SUUWuUlFFp1eAsAAQT1AQAABBQAAACF
zEEKwkAMBdB9T5EL6B1ELS4EC/UCsRNpsJNIkqnXd4orXdTNh/95/IwscDfMBBtInPpAi850ZmcV
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
S7gMbXNjAAAAawAAAFoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jb3B5LXBhc3Rl
LWh0bWwtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1hY3Jvc3Mtb3JpZ2luLXN0ZGVyci50eHRVVAkAA+Il
FFriJRRadXgLAAEE9QEAAAQUAAAAMzIwNNc1NNQ1MlQwMLUyNLAytdAzMTRXCE9N8s4sCUktLgkq
zctLLXIsKIg2MjW3MLIytzQzN41VCHDyLEnNdc7PyUlNLsnMzwtOLSrLTE4tUkjOB6oHCymkZBZD
eakpelwAUEsDBBQAAgAIAGApdUuhTAXxYwAAAGsAAABbABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
bGlwYm9hcmQvY29weS1wYXN0ZS1odG1sLWNyb3NzLW9yaWdpbi1pZnJhbWUtaW4tc2FtZS1vcmln
aW4tc3RkZXJyLnR4dFVUCQAD4yUUWuMlFFp1eAsAAQT1AQAABBQAAAAzMjA01zU01DUyVDAwtTI0
sDK10DO3sFQIT03yziwJSS0uCSrNy0stciwoiDYyNbcwsrIwMjUxiVUIcPIsSc11zs/JSU0uyczP
C04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMEFAACAAgAYCl1S+2JLFdjAAAAawAAAFMAHABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jb3B5LXBhc3RlLXVybC1hY3Jvc3Mtb3JpZ2lu
LXNhbml0aXplcy11cmwtc3RkZXJyLnR4dFVUCQAD4yUUWuMlFFp1eAsAAQT1AQAABBQAAAAzMjA0
1zU01DUyVDAwtTI0sDK11DMwNVQIT03yziwJSS0uCSrNy0stciwoiDYyNbcwsrIwsDAzjlUIcPIs
Sc11zs/JSU0uyczPC04tKstMTi1SSM4HqgcLKaRkFkN5qSl6XABQSwMECgAAAAAAayl1SwAAAAAA
AAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkA
A/klFFrZJxRadXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAMwpdUsAAAAAAAAAAAAAAAAuABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL1VUCQADsCYUWtknFFp1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAYil1S0fWbECtAQAA0AsAAEsAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvaW1wb3J0LXNjcmlwdG5vbmNlLWFjdHVh
bC50eHRVVAkAA+glFFroJRRadXgLAAEE9QEAAAQUAAAA1ZZdb9MwFIbv+ytejYuAaEvarZ8SF6xU
gLTRaa2QuDTOCTkisivbWRMq/jtOtnZbRS64At8klvz45DmvI9mL1ef16mqJ6+V6/e7Dco5NRrC6
MJKQs3VItcFCK0fKYU2yMOwq3OicZYWEDUnHd4TISsNb17NGRpAeF6wshAKrO5Fz8lByjihSWknq
1c+qGUZRH58cdpzn+Ebg70obSvqdxb80e/3m7d/J5awIkzluKS0sJXAaVHopRxC4V/AFpPCTYGeR
CZt1m1HznS58M1GhrEipx6quFiHRVE87iO2WhPHGcHUGx4aetKnTZq4ljzbh0TQ04/EgOOOL4IyD
+48ncXDG58EZj4MznoVmPB0GZzwKzji4M2/2H595uajIQDi8jLvxK1j+6ROO43Icxx14a5WQ+cK0
a0Halo+Gx9WXuZY/sP+4ub761UYeWZ1U2F+u3n+9R6fdwfiBnUwvymHcsCeVb07LPkMP8IZKh/0L
51+n/HAyKwezIw/UEEyhHrkdJy6rwTnONhlbj1i/R3W0lKY+6zrow4Y2V1CCv54W1D/7o/Lt8iBx
/rTBuPMbUEsDBBQAAgAIAGIpdUsZTBe0SgIAAIoNAABJABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ltcG9ydC1zY3JpcHRub25jZS1kaWZmLnR4dFVUCQAD
6CUUWuklFFp1eAsAAQT1AQAABBQAAADVVk1P3DAQvedXjOghrZKQZNlvqdLysSpVoaDNCtSjSWYb
q8aO7Alki/rf6yS7QBF74FRyiZ3MmzdvXix5giCA8EqJ8hZNeMKIhfPrJLzGm2+cNstRyUUWLlAg
MxjwIlcSDb8tBSOlQ8HWqqSA0FCg0ZSCTJgTFWH9xYQG01JzWoepkoSSks37pRI8XYfxfhzy20Jp
CkyqeUFSyRQDrApMCbN9qsjxPO8dSmQplUw0AmczCGI/jsCL/V4fZjPHO774nlyczeF8niSHX+ZT
WOYIRpU6RRDcEKyUhuO2HmwLQlsRMq5t9/wOwW0rBkanLtTyGJcGmAQu75jg2YZyCq7bqqqf62br
uvvwleCeCwE3CPynVNoa+p+leeHnN6oTXCKMprDAVWkwA1KAlVVFCAxaDZYhZTYInAzkzOR+s2sK
+WC7cUtp2MoeDFmzuZAprMMErCiQaSsZqDbhsaNnfapVE9thyE7Fg/H7lQyvSx7GnXN52O+ey907
y6Oocy6PDrrn8rB7Lk865/K41zmXx4Puudy922/yjm+/4PBsvlhOwY6X/oHf9wf+0AmWOTfQTLBN
Mq5Wlq2m2kpuJi4EO42VaDmc4PIwSRzPTsOogRF8jPzoExj+2/6vKKqGUeR4YD2QGeorjve7MLsI
Br2n/COh0l/wcLo8P/uzE/oIVtkaHo4uTn602LEfDzfg0bhf9aIW/IL78iXxv9gteokVwcMHssvL
hN5oUsWTpwSAGgW6lE/Ae55RXiOnsPc2x/deV72Yb2UcPG8ycv4CUEsDBBQAAgAIAGIpdUvjkRiQ
2gAAAHQEAABNABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L2ltcG9ydC1zY3JpcHRub25jZS1leHBlY3RlZC50eHRVVAkAA+glFFroJRRadXgLAAEE9QEAAAQU
AAAA1dNBbsIwEAXQfU7xd2wcJKBAyS6Kom5oQZgLuM5YGSmyI3uCyu2bRO2uB2h2I33Nn7eZ6vKh
L+ca77XW5VtdoGNPOGwK3MgNiRpIAH2RHYRgkGzkXvBJ1owhWBJak1o1Tz54SwohYjX4ZBzl7Ke6
FZpAUywwfU8mgj2kpZ+2PEWLhiNZ4QchuDmrghfyAj2ejixPXEPH9rnOqr/Fx6WJj7vFiU9LE7/u
lyY+/ePPK8/17V5go7Zqp17UXh2ye8sJQmk0TKvk3Ng1Ff2C85mGh+kGWmfZtdQ6+wZQSwMEFAAC
AAgAYyl1SzbY34S+CQAAbTcAAFEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvaW1wb3J0LXNjcmlwdG5vbmNlLXByZXR0eS1kaWZmLmh0bWxVVAkAA+klFFrp
JRRadXgLAAEE9QEAAAQUAAAA7Vtrb9vIFf3uXzGI0bjdihT1tCQnLhJb6RZNNkEU7KKfiiE5NCch
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
lkiVRW63dNPRoz7tB9TMbQlkK3F48OaQB8HbQ47eHvLwFSPbv31UQA3sBP1gFzT7gTAKgnoYBI4H
lltkqC4ZLrZpthkcDDbrj7hMv8P9p/nZ6c+t0gexzJZwf3R+8q3TjvrhcCU+GMV1HHTiJ94XT41/
167Vc6wN3L8z9vZsQRzV0fvNAoBGBaoSG+GCZaaAOI7H0Ptnp09va804jjZVo8D+WnsvPap6f2lo
8OA9DK31w6HW+3PCs+k6sv3HGxI4vwBQSwMEFAACAAgAYyl1S52gPLiOAAAAwAAAAFUAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5v
bmNlLWFsbG93ZWQtZXhwZWN0ZWQudHh0VVQJAAPpJRRa6SUUWnV4CwABBPUBAAAEFAAAAGWOsQ7C
MBBD93yFRxgogm5sHRiQGCraHwjJhZ5ULlUuLXw+KRMSi4dny3ZzPd/6E9qm67A57OutaX7J8Y/U
K+kHVmTSXHQgUAjkMmKAxWJH9nhGP48EdYmnvJMojlZnpgqXjMmqkoIDJMJF0ViyL5uE5YHSvLDy
vSAr/ttvR0plyqYy9SY3Z/KVMesf8wFQSwMEFAACAAgAYyl1S4X8Q/OoCQAA+isAAFkAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5v
bmNlLWFsbG93ZWQtcHJldHR5LWRpZmYuaHRtbFVUCQAD6SUUWuklFFp1eAsAAQT1AQAABBQAAADt
Wmtv28gV/e5fMYjR9e7WfOhpSXZcJLbSLZpsgsjYRT8VQ3JoTkJytJyhLSfd/947L4qkSDkuHDgF
kiASOc9zX+feGeUsEVl6fnCWEBzBV0YERmGCC07E86NSxM7sCJq5uEvJ+cEipfnHY7S4oZwKEqHP
Bwj+CLIRTkRCVmBBWb5AOcvJqeoKWBGRwgmYECxboMF6gyJ4JtHpwZ8HejmzSMhSVizQoT+aqz73
FU3JJY1j0x/g8ON1wco8cuzQeCb/1jfSO3CW0ggdRlGk+2KWCyfGGU3vFihjOeNrHBqAGS6uKUAe
kAz5umnNQDglR0FSkOiGKEDJoIV0NBp1rM9xzh1OChrXOjn9RNQe9U2dlMRigXx3YtsjytcphkVo
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
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNj
cmlwdG5vbmNlLWFuZC1zY3JpcHRoYXNoLWV4cGVjdGVkLnR4dFVUCQAD6SUUWuklFFp1eAsAAQT1
AQAABBQAAADNkEFvwjAMhe/9Fe/GJkEn4DJxq1A1TWIDEf5ASF1qqUuq2MD490sqJm2H3XdK/Cy/
99nVpt4fVthVxuBh/rR8LNbbd7Pd1Hirjale6hV69oT58wp7as9CDTSAPsmdlWAhLvKgOJKzqQlW
QWelm44/H7yjKULE5OzFtjRjn+0maALltsIOA9kI9tCO7m4ziQ4NR3LKF0Jox946eCWvMCk6st6w
Cz27W/kH8WL+f4mrn1df5Kv/UpZZOXQsUJIElb1c+DgmjgaZOfnft8jksL75rkf+Eq+KwYokYk4o
15DGvYSecLXRsz8JbCRcWPiYxDyfM7SLlKqeYgqVLlxHnrIo8lN8AVBLAwQUAAIACABjKXVLhIHn
6s0JAADiKwAAYAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9tb2R1bGUtc2NyaXB0bm9uY2UtYW5kLXNjcmlwdGhhc2gtcHJldHR5LWRpZmYuaHRtbFVUCQAD
6SUUWuklFFp1eAsAAQT1AQAABBQAAADtWmlv3EYS/a5f0bCwVhKI5NyXbC1saZws1o4Nj5FgPy2a
ZFNkTLIn3U1pZG/++1ZfHJJDzkixvPICkaEZkn3V8epVFeVnscjS86NnMcEhfGVEYBTEmHEinp8U
InJmJ/CYi9uUnB8t0iT/eIoW1wlPBAnR5yMEP4JshBOSgDIsEpovUE5zcqaGfMpCwhyfCkGzBeqv
NyiEaxKeHf1xpLczmwQ0pWyBjnvDuRpzXyUpuUyiyIz7OPh4xWiRh46dGs3kv+pB+gRO0yREx2EY
6rGI5sKJcJaktwuU0ZzyNQ6MgBlmVwmI3CcZ6ulHawrKKT0YSUGja6IEivsNSYfDYcv+HOfc4YQl
UWWQJ5+IOqN6qJOSSCxQzx3b52HC1ymGTZIcLGMkvElCEcPiXu9vRj4chkl+Va7UshnXyKu6d4y4
SR6DUKKcHtNrwhoajcfjsy5jE6LN4EqfvIazuFkcpRSDGiy5ikXdc3LWBaiPQRd7FAXTJwJU7DVU
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
b2NrZWQtZXhwZWN0ZWQudHh0VVQJAAPpJRRa6SUUWnV4CwABBPUBAAAEFAAAANWSQWvDMAyF7/kV
79YN2o6EHUZvoYQx6NbS9A+4jtIIgh0spV3//ey0g112325CT37vk1G5qfaHFXZlXeMhfyoes/X2
o95uKrxXdV2+Viv07Aj5ywp7akehBupBn2RHJRiIDTwojmRNFMEq6Ix086ly3lmawwfMRiempQW7
ZDdD4ynJCjMMZALYQTu6uy0kWDQcyCqfCb6dtLV3Sk5Rx+jAesXO92yvy1+Ii/zfET//XeLy550U
6U4OHQuUJCKkl9S20Sr5GJxNz813zsSXWiMt8aYYjEjk4hQYiGC9E98TLiY4dieBCXGchY99XMu4
ZrLXi7+Fm56C3obuH9QssyxJ2RdQSwMEFAACAAgAYyl1SzmjLxXHCQAAvysAAF8AHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNl
LWJhc2ljLWJsb2NrZWQtcHJldHR5LWRpZmYuaHRtbFVUCQAD6SUUWuklFFp1eAsAAQT1AQAABBQA
AADtWmlz1EgS/e5fUYFj8cyEdfTp7jZ4A+xmZmNhIDAxE/tpoySVrAJJ1aMq2W3Y+e+bdakltdRt
L541e0BgHXVlvsx8mSnzLBFZenbwLCE4gktGBEZhggtOxPOjUsTO7Ahec3GbkrODRUrzT8docU05
FSRCXw4Q/BFkLZyIhKzAgrJ8gXKWk1M1FLAiIoUTMCFYtkCD1RpFcE+i04PfD/R2ZpOQpaxYoEN/
NFdj7iuakgsax2Y8wOGnq4KVeeTYqfFM/q0fpE/gLKUROoyiSI/FLBdOjDOa3i5QxnLGVzg0Ama4
uKIg8oBkyNevVgyUU3oUJAWNrokSKBm0JB2NRh37c5xzh5OCxrVBTj8TdUb9UCclsVgg353Y9xHl
qxTDJjQHZIyENzQSCSz2/T8Z+XAU0fyqWqllM6aRd03rGHFpnoBQopqesGtStDSaTCanfWATomFw
pU1ew1ncLI5ThkGNgl4lomk5Oesc1Megiz2KAfRUgIp+S2WBg5Q4IUnThpaO2reB0k0C2jnKhtLV
bgq82kh2SUJpu16nUYubLtN2F+OzFndwKH+11ics1yswL+wPqpFj5MpLW8Ne8TiNSHArfyIl6suU
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
/rH/PZLtN5r5/nrq+48o8KxfYAR2ziNS/AKt8Dcn9/z+QJ8MH1Hegb8faMUD6MtPH968/v2bk3+w
S/5KAxbdoi8v3178TSswOx5MjQYns/F6/JgeMxju1qBlhXdtEzy+AqN9ClgV9K8zDuXQlhYng/Vo
/phajPdroX/VjYoy30ivvtyi0Xy4QE9/K5k4/fraSO/zmFhM7o3FaD6ooTHzLRpfUec9PgzTf8El
hhUKsuPSOkhtH1+bk3trMxzV1JlWHl7V3o+v0+x+3Pl+aXlnUud//2s6z9ZFfXl/5un/t/tPUEsD
BBQAAgAIAGMpdUs0ValQXgEAAJ0FAABTABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1ibG9ja2VkLWFjdHVhbC50eHRVVAkA
A+olFFrqJRRadXgLAAEE9QEAAAQUAAAA3ZDPTsJAEMbvPMV46sGULUjUEGNCCBoTFWJ9gWU7pWvq
bjMzBXl7t1DQgx4IB4z7L7vZmW9+842nz+n0cQJPkzQd3U+G8FogsK/JIJSWBXJPMPZO0AmkaGqy
soaZL61ZQ2YJjdglQsSGbCUxk4nAhHBtHYN2YN1SlzZrJYcQRc47g/HmjKIuPAisbFnCHMEunCfM
up3xiaDmmvFyUGg+1y5TptCkjSDxX+M8zLwXzGvGDMRD6XUGhUg1VKrXv+omYfaG10mSKG7xlNny
7nC3tIpwC8FqC9t941DV6KAMViDzyOC8gK4q1BTIQRov9o19a9fnm79ffDmlq/K/jZ26cr2JyC0F
G2Xl2xTeCTJw4esyA/wIyYKAS2wK+npRNIGEoMOuNIUUJPLEO6KqLRJG3I7OHen3xuCbszjOm/tM
SwFK7d9JHN+GFX2lzEZpeohC72iF/tEKF0crDH5W+ARQSwMEFAACAAgAYyl1S7N6pM6lAQAAvgUA
AFEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxl
LXNjcmlwdG5vbmNlLWJsb2NrZWQtZGlmZi50eHRVVAkAA+olFFrqJRRadXgLAAEE9QEAAAQUAAAA
3ZJNb9swDIbv+RW8+eAqiodiK3LK1gXDsI8M9bCeFYmptSmiIVJp8u8nO0kxYNh6bFEYtmFb5Pvo
MZVSoH9QyFtk/d6I0cvbVt/i+pOX0+1d9sHpGwxoGJXvO4rIfpuDEUo6mANlUYIsKiHnIKw7kV4P
b1gz2py8HLSlKBilPT1/o+DtQTfTRm/J5YCKbfK9RIoW1TqQ/YVO4b5HK+imspdJXdfPGNVYySaM
oIsFqObiEurm4goWi0l9vfrarj4v4cuybd9+WM7he4fAlJNFCJ4FNpTg+pgK51g45oLzqTjwO4Tq
mKs42QoGSOMjg4ng484E704t51BVR7bxWlVT+Chw70OANYK/i5SK0aejWpd/8/qyM1yb6LTtTCru
MPGzA/2vPviL6gY3mdGBEAQyDobRmmvdvHoznZWjmV/NZrPHpqzM5UhRxnGknf7kEmtN6QxewBEy
RBIwfY8mFXSQQcbDzv7YL23Gb/8Q86Re5YWrhVUMh3HJxqciUu7pVMPnjgzcUQ4OcF+qBQF3OCRS
vuuGhQnBlLM3qZRgSpT4jNSfUya/AVBLAwQUAAIACABjKXVLkpP/MQQBAAAzAwAAVQAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9u
Y2UtYmxvY2tlZC1leHBlY3RlZC50eHRVVAkAA+olFFrqJRRadXgLAAEE9QEAAAQUAAAA1Y/BToQw
EIbv+xTjaU9QWE00xJhsCHpRIfIEtQxSg5TMDKv79pYF9OLFcNppJ+mk///9bZo/l/ljBk9ZWe4f
sgResB4YKxAHrdMVNCJ9olS8uw4jv+LkJooixWgGsnJUxnWCnZTzXLjWmqMiZDeQQVZsyPYSvjO8
otGeDFagcsjQOQHd96gJbAfSIEzagMlAZQmN2AOCq0936ZQDSxBMSeEmPfcP5F17PClqSywgn262
8AJk4MYNbQX45c2CgAccA93w1oxCQtC+e03egkSOeHlRP4f4Cuba3JP+wAS2txdBUI/nQksDSv3M
URDc+b39tRT7svwPIV5N2K0mXK4mXP1N+AZQSwMEFAACAAgAYyl1SwXiRtGICAAABiAAAFkAHABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlw
dG5vbmNlLWJsb2NrZWQtcHJldHR5LWRpZmYuaHRtbFVUCQAD6iUUWuolFFp1eAsAAQT1AQAABBQA
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
/KpKVX0BjodFl72lQAndhfPRNVDWjy6vPn5/9/HbG/Tdzd3dN3+8WVuaUaKRGQURyl2ZrpwLUfAh
ck6EBJbUNYhfHULBco6MACn20VIRNndJOJRVD9jknRO9dhvsL+d4+3s3GKM/a+AjzlFKEbCIkJTE
3goAGPjuy3rw5NfvwRSS5GxZYPV76NkS834eQAwJ+ut16uK3CUv70fVjh8aPLv30vrdfRx4K4kpf
5o8XgzR/RXyW/0F8fqR5o+ByZEQITJBhYihB85O38Qx+5uvVbDZ7iZSBxm0clK8lUGPA0RkGydCl
ICKogl4BGLSuwaMQPNv47OLbibzI7dwERL5szL484Z/+L2SW/s0m18krQnT2/5Ncv8yZi1c48+20
Mz9W/Mlqa/96hvSj8OqrYJyCuIuGE0S3YAjcOugDNcaLZlOYhZIigAVcKyRsoVIKuEB579T/DYOX
rzB4NW3wL8mYwYdt4KEBtn/+/zdQSwMEFAACAAgAZCl1S3l2/QLmAAAA0QEAAF8AHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNl
LWlnbm9yZS11bnNhZmVpbmxpbmUtYWN0dWFsLnR4dFVUCQAD6yUUWuslFFp1eAsAAQT1AQAABBQA
AADFkMFqwzAQRO/+irmppbVDcjT0YIxbUtwmVPkBRV7HC0IKkuziv6/stJceeu1lWIZh5rH14V0e
2gZvjZTVS1PiNBCCG70mGA4RvfOonY1kIyTp0XOccXSG9YyOPenIE0EE7fka8+C1gE5xxTZAWbCd
lOHuu7KEENZZTfmi83oKUWAf8cnG4Ezgi3WeuiKr/5PsYfP0J1zVNh+nEs/VvsXddrO9/3GOlZSL
s/vl7BbnNHBApBCTDipC4YawTiXmoM6GQiIzbAmvalJyhX8ETZSIe4jRBtVTfosIpL6rp5BeUGTZ
spR9AVBLAwQUAAIACABkKXVLeeYAHqkBAAAABAAAXQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVuc2FmZWlu
bGluZS1kaWZmLnR4dFVUCQAD6yUUWuslFFp1eAsAAQT1AQAABBQAAADVkk2P0zAQhu/5FXMLKHWs
rBBIlZBaloAWCrtqKvY8dSbEkmtH9ri0/x7nA4FYwRVxSewZed5n3hkhBMgvzsQTBfkWGWX92MhH
On7UvPzeRG1auSdDGEjooXeWgj5Fg+y8NHh1kQVTYOEpRMNB9syDHCNBBlLRa75K5SyT5Wa5Pzij
1VVWZSVPro2GRFBeD2ydVUnkq3WeRLQBO9LWaEuCLgMpprbkC2dFUfwn2Kg4opmgNxsQ1eoFFNXq
JWw2mbi9/9zc72r4VDfN9n29hvEFVK/WsKcuBmqBHdAlaTMBwiwFR1KYkqA5QI+hX02niWAFzkM+
64sZIIfW0ZhmwGEg9KAtcE9LNRG8glb7ZK0+E7huyt3OXcOPtmHuu8yKJ8iHsZSLXlGiDwxdIvjD
81908p/qOYweo7YB0Ca4MxrdLiXXkOezteP3Oh3zvIQ7hm/amGQFzJ63/xqtkK//Trfd1fvDGt5t
73bwrJLV8wyW0MO2acbQze+hmyl06HWAaSvTaDBNEWaMSS5xBzyaNOB52vABz9hMDayAzpSouycL
keoNaeeTDWX2HVBLAwQUAAIACABkKXVLSh7vLtYAAAA6AQAAYQAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVu
c2FmZWlubGluZS1leHBlY3RlZC50eHRVVAkAA+slFFrrJRRadXgLAAEE9QEAAAQUAAAAZY/BasMw
EETv/oq5JQUnJbkUfDPBBErShCg/sJHXaMFIRlqb5u8rO72U3pYZmPf2cPkyl1ODc2NMfWwq9OIZ
u48KN+7GxC00gL/ZjsogJBtlUDzYUi4hmuAouXK5fPCWS4SI1egTdbwRP8+t0AaeawUNA1OEeKjj
37VNihatRLYqEyN0S3cIXtkrTEZH0SeuoRf73Bb1qbndK1xrY7Deve/f/ib7Obk7SVBOWUodZSwm
6qV9GWZWokefjV56+KSJzKJSgif2kO7fB3lviJyy0bYoZlLxA1BLAwQUAAIACABkKXVLKdPP1ZoI
AADyHAAAZQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9t
b2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVuc2FmZWlubGluZS1wcmV0dHktZGlmZi5odG1sVVQJ
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
8my8/gNQSwMEFAACAAgAhSl1S28/qNxPAQAAFQMAAHcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLWVuZm9yY2VkLXBv
bGljeS1hbmQtbm90LWluLXJlcG9ydC1vbmx5LWV4cGVjdGVkLnR4dFVUCQADKSYUWikmFFp1eAsA
AQT1AQAABBQAAADNkj9PwzAUxPd+imPyUlO6FoRUVYUFaNSwIQY3flEspXZkOy359rz8aVpVwEyU
wZbP7+53yWrzlm5e1nhdp+nyeb3Ae0FYORvJRqSU1d7EBokrTdZAhMybKsrgMwjrLAmBowrQVJoD
edIwFp4q56N0tmywd5qm2NUR2lGAdRGhoszkDRTEoGQLcY/IvlVvczRliUIdiC+A8pyyeIukJBUI
ZFjoobS+mgBtPAs5xxTOnyJdjj0Y1W3FgCdPeLLHEyhIafK3k9V1KaWxhPl8gY9t54gN031iS3kd
mDpyzC8eFolD9R1hR5niQ5gYmCUU027FpWV9QFHboHKSxrbDxbkgVVWkfNtkG/ai8REQLu/OfvlM
f+X/r4knEzk8kyev9rSAeLiRMm/XiYoFZrNxfyflI7/ifCVZpimb6ZFpIDryz9IDsMMoaiP/IHT8
lw7ab1BLAwQUAAIACACFKXVLZxkN18gJAADMKAAAewAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaW4tZW5mb3JjZWQtcG9s
aWN5LWFuZC1ub3QtaW4tcmVwb3J0LW9ubHktcHJldHR5LWRpZmYuaHRtbFVUCQADKSYUWikmFFp1
eAsAAQT1AQAABBQAAADtWmtz27gV/e5fgcbTdbtjkpJtOZaUuJPYcptpNvFE290PnU4HJEERCUhw
CdCW0/a/9+JFkRQp2zt5bDp1JiaJ532ce88FkmepzNj53rOU4BgeGZEYRSkuBZHPDyqZeGcH0Czk
HSPnezNG8w+HaHZDBZUkRv/aQ/AjyVp6MYl4iSXl+QzlPCdz3RXyMialF3IpeTZD42KNYngn8Xzv
P3tmObtIxBkvZ2h/dDzVff4VZeSSJontD3H0YVXyKo89NzQ5U3+aG5kdBGc0RvtxHJu+hOfSS3BG
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
BYlocgeVl55vR8O2+nOuucmEkvFXCukPJiKSJAANH13r8EaEwkCN6oGVNlg6RIA4K2JzecV46lMP
tybwnAk8YwKzlEpQcPr8onj58kF9/AjU6DuR0xn6+zttdfQWvP0P9I4klQAUwMJkDYYESsbIEkJI
IgydUD4I8KlID/WbjlXtIG3pKhc4UWlVrW/d6ICDiwKsqxCmnNZA5SZp8ET3DcB5y39f0LYnv8K2
35g1v4nsefQAX00e66vx+H85EO616fEDbHr6a2z6/wD4mnTwdNhl+9evLtHf3rxbLK/Bea9+WiBP
XZD7YFNGfFONq4e1nH9JbgjjhT4I/6GAou1oMj09+uNXzMdnw8pdvXj1GsoimgHy4MQABQ6cJ+HU
pepWAA7ULpdQASlQQikJ51ZG4m8yFZ48wEzTYTN9UZ3NP+3cHwCbcTtVnzxA9R1Q6tX/kwh2+gkE
8+zPZxHw6ScQ8ErdwLsDG5Pz33mevpS/xjJFQdBsGnnedys5N7/1hM+i1dlv3ezTTyDg9YvlEsgt
rrnUMuktnKQMcfqfRfbx6LcabePxpzSrKip6TKsopN+6Wxnzq9/qjHZQ/uLt1Vfk6/H4caI9ho06
D30N+Sww/4nxv1BLAwQUAAIACACFKXVLcogZp1sAAABeAAAAdQAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaW4tZW5mb3Jj
ZWQtcG9saWN5LWFuZC1ub3QtaW4tcmVwb3J0LW9ubHktc3RkZXJyLnR4dFVUCQADKSYUWikmFFp1
eAsAAQT1AQAABBQAAAAVxjsKhFAMBdDeVVywlVcIChZW6jQWltZ+IgR8SRij4O7V6pxxYocKRJ23
u1UhOEdaoadnsL8udBxYNIbJbKcw0tyzfzQqTuKhpYt2tfgexitq5EVV5mk3/JIHUEsDBBQAAgAI
AKYpdUv2Z8pWoAEAAOECAACXABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1pbi1vbmUtZW5mb3JjZWQtcG9saWN5LW5laXRo
ZXItaW4tYW5vdGhlci1lbmZvcmNlZC1wb2xpY3ktbm9yLXJlcG9ydC1wb2xpY3ktYWN0dWFsLnR4
dFVUCQADaCYUWmgmFFp1eAsAAQT1AQAABBQAAAB1kkFr20AQhe/6FQ9y2BYsEQJtwT0FWymmaWyi
tDmvd0fxlPWu2F3Z9b/vSFZxKMlF0rKjN9+bN4v1Q7O+r/Gjbprbb/UcTztCCn00BMcpow0Ri+Az
+YyGTB85n7AJjs0JliOZzAeCSiZyl8sUjYKRcs0+QXuwP2jHdpKcQykfvKEyU8pKVVhlHNk5bAn8
4kMkWxWLt5jeY1Bh+1sghs4YtEkpHHWCJSdgoicIiNSFmMvg3Qn7YGmGbZ9hAyX4kJE6MtyeoKGm
SmmhviJL3+7cZoTcabHqA6htpWWFjSOdCMRSGKGt/U/hMqAZZIwT0mvZA+vxqCZ75T975dmewo60
pfjGUBx7wqc5Hqntk9jMwvVH/s4kFOc4ZKpGyyU4J4FPu9n4NSYwEqneJ91SyX5QU5eJ6K4jHYfR
DXSXcF9FHtrx7p1cquJqs1ri58Nj3WwEffWrRimbsa9E2lH1TNvvnIfXJFAt6UAudPtB7EMnK3Pz
5frzzcfi7nZ1LyvAe/EYJLWj5sz+ZVxMQZXclpL6YF92yGjnyBbFVb2+Oz/+AlBLAwQUAAIACACm
KXVL27GTy18CAAAwBQAAlQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaW4tb25lLWVuZm9yY2VkLXBvbGljeS1uZWl0aGVy
LWluLWFub3RoZXItZW5mb3JjZWQtcG9saWN5LW5vci1yZXBvcnQtcG9saWN5LWRpZmYudHh0VVQJ
AANoJhRaaCYUWnV4CwABBPUBAAAEFAAAAN2T0U7bMBSG7/MUZ9qFN7WOKdLGxKapjJapgkFFNrh2
kxPiybGj+KTQt99xkgLa4AVWRY0dO8ff//8nUkpQN952NQa10KTV8jZTt7g5NzTevnXGFuoaLeqA
0jSVdxhM3VlNvlVW73xHkjCQbDF0loKqiBoVnwQVMO9aQzuVe0foKBvna29NvlOzdKZqX3QWZchb
05DzLudDnORDJLrStzkWsul3S4eGKmzjsna+H/6zxbeM0fiW9k/wocGcsEjpgZLJZPKfy9U5ddr2
YudzkLPpEUxm008wnyeT06vL7OpiCT+WWXbyfXkMPyuE4DuuCNYEAi4OpwM57NFhYIfCtOyj2SKI
gV2GNhcQhWrjAmgHxm21NcVY8hiEGPRFb4RIYUVwb6yFDYK5Y3QOJYEXoV6DEH7zmyni0RCLoxBw
rwMUaJmMCzIDjIZ4Z3fAbuMUNh1B4TEA2wiB+8GUO9Agxp18hPgMbDAMJg6UlWatzgOWJR+Zwrrv
CBhCAV0Uf1V4cmgK7OOI9Lzs1uh+KkZ5ci9PDvIEVKgLbNMXorLGIXw4hmssu8A6icEe+HVCxhgC
YV9zzYtgKDB9qKb9qM+gRxKdC7qM/RariSdLdNOgbqN3Ee8p3meh+7JfeyUYJn67Xi3g1+X1Mlsz
++pmCZKbo065tsV0+LbibayQLnCL1jd1rPau4a45PDr4ePg+mZydrC64C0zNKvlb43wNGXfXNyfD
cnQLDj4awH2Ua2uxSCCRidz/EnnW6jr235c3UpZxvNZUgVKP8wMpv/Ilnr+0PskyFlw8+jr4EKUt
r87G/z9QSwMEFAACAAgApil1S2ZBArjqAAAAbAEAAJkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLW9uZS1lbmZvcmNl
ZC1wb2xpY3ktbmVpdGhlci1pbi1hbm90aGVyLWVuZm9yY2VkLXBvbGljeS1ub3ItcmVwb3J0LXBv
bGljeS1leHBlY3RlZC50eHRVVAkAA2gmFFpoJhRadXgLAAEE9QEAAAQUAAAAXY/BTsMwEETv/orh
5Eudci4IqaoCF6CRzA+49kYxcu1o7abk7zE0BcRqD7vS7L6Z3f5V759bvLRab5/aDd4Gwi7FQrFA
kz2xLzO6FLydIdPhnWxRmS1kTJGkxNlkOAp+IiYHH8E0Ji4qxTDjmBytcDgVuEQZMRXkkazvZxjI
RVkR8g6lcscL5uxDwGAmqgegvq/IBl0gkwnkq5BhnPv3Ac5zFVYfKyS+Wvr7dvLme5VLPHWNpy7x
JAYyjrgRQqilxCObI20g72+U6r/mzpQB6/XPfqvUQ235e9Jtta5uHOijAgohW/ZjacQnUEsDBBQA
AgAIAKYpdUvk++xygwkAAMIiAACdABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1pbi1vbmUtZW5mb3JjZWQtcG9saWN5LW5l
aXRoZXItaW4tYW5vdGhlci1lbmZvcmNlZC1wb2xpY3ktbm9yLXJlcG9ydC1wb2xpY3ktcHJldHR5
LWRpZmYuaHRtbFVUCQADaCYUWmgmFFp1eAsAAQT1AQAABBQAAADVWv1T28gZ/p2/YgvTcL1Bkg02
ATuhk4BpM80lTHy9+7GzklbWhpVWp12BybX/e9/9kiVZMjCTS1qYIGk/38/neXcnr1KZsYu9VynB
MTwyIjGKUlwKIl8fVjLxzg6hWcgHRi72Zozmt0dodkcFlSRGv+8h+JFkLb2YRLzEkvJ8hnKek7nu
CnkZk9ILuZQ8m6FxsUYxvJN4vvefPbOcXSTijJczdDA6Odd9/jVl5Iomie0PcXS7KnmVx54bmpyp
3+ZGZgfBGY3RQRzHpi/hufQSnFH2MEMZz7kocGQFzHC5oiDymGRoZJoKDsppPUrCQKM7ogVKxx1J
T05OetYXOBeeICVNGp2CfiF6j+amHiOJnKGRP3XtMRUFw7AIzcEyVsJ7GssUJo9Gf7by4Tim+aqe
aWSzrlFvbe9YcWmeglCyHp7yO1J2NJpOp/MhYxNizOArn7yHvYSdnDCOQY2SrlLZ9pwadQnqY9DF
bcXB9FSCiqOOyhKHjHgRYaylpafXbVnpPgXtPO1DFWr3JS42ki1JpHw3GDR6cjtkuuFiY9bZHQJq
VKzNDot1Ae6F9UE1coR89ehqOCieoDEJH9RfpEV9y3h0e4NL6YOqs4SWQnpRSlk8aFi13RLmH+1a
rCQZuPbokf3sHs78JuC8UA1phd3URR1Ei6QRZh5mdAW5IXmPWiVRkf53nMeMOHPYdZQJ1XdKjEM3
8RxVpVCuUWJ3MxCH4J3KeQz2rAPHJI8Wb5cUrTjfDodVSR7mncD0p4/5y5gY+ZI/amY/KXnWMbbF
R7WHsvqHKgtJCdFEmtFlWp3g2zBqo/b8vAWALl36YNBl8mQy6YWbpvdrjFELTU0KmDSoAd/GgQ3P
vhAx4rbC6cQCVkNxrWIv4BiSGDTLDpAqSpWdSkxrQIcmNmqcIq1chUmeyVbdBfbUn6BHSfCtpxqM
QDTDK9LyzAwd1wYPGVZWVAMjgAaQAUSxb6ir98YrZ5PzQexNSLIBABVWsGJNj41s7pkaJ3F7Kjhb
DA8/J+fzXZxer2RRpimHzYphuo7jrQVQTNjwDHL+qDTBj2hZFQUvJTBtaSMZjJplJJcC/RjAfriS
KTf2NmysihmIeglxGjlP6Ql6zAD/12OUMBhCQg92cHbqAlvBDWbs0knQO/rYcFmG116H3jOoC2zT
8ajmne7WYPed+9SZXad0a5s+OX1eEEOb3j0Jb6n0ZKnSzljCCI78YzFvqDGxSh8IiWUl3lYhcHjN
h77Knl5x1BTJOQtx2e53WyeM6AzddGT8S91ag9OJyWNbR6lXVy2o9+GScAg5dpZym7BI6JqYdSwe
j9oq+VjXICbNtln8ngIWlJ1Qq9f84tE8JmsAqR2qbYiwIUKfXhaMWvR2ZlEsV2LahO2lJtgv5OtH
BT3dCDo2QexIyHxpYe17zWD2sxa4rsxaW9OkxJmRsJMn7TKikSOXA0i7bZsHqDX5veV6wqBwhJr5
CcR0en69CS/LyQOd2hDtvrqMjLfL43ZxbNcw5tuO4cGSIHY4a7Z540DBHXVGzd6fHUd2ziSnLx2g
bYu5I0kapx2RYVPLNzE35yU0zwdQxuqvSjDRt7nRw+X1qG8IwyFhM5xAhh1tTTftehFNyDmouo/+
jfbnezURN+i7O5thqNB54smHgvQutT8okR3YOeKmhGmArItRrIrRAY46yIgQrvAYtHOfWxrZsdRA
/RQqBIqBguiO8kpc1i1QzH4h+WWDLPt43pUcXYppkovCcohaHQkO2+23jUQLIieOA58kjQ0NqHGI
VDnRogtb9g0UfU2eDSvIqryJO47fY3o3S3hkbcgrqfCimX4hqzST2C6IlwRkAQYbO0WaZKlXgRrm
55SYnQLLtCuQX+kgOZLQF5rRNtQEuqNYYbL8ycYECBuW/B4cDpVAimGuLYqo9FURVOsxObVVfF2K
2G+HDqqQVf9GbRJ1VzrdGj+jMZyyjGLKQcIdvnsYBeowLvAd2B4sQDq80jzpbVGdN/ZPTMm0ufxw
7N/jg4Orq6tGSh+cXV9dT6978QmKy/4oXiwWfVLPSFYAQrWcb8u0zkgfXkHSVuYvzs9GZxa3IkZw
+S9dHrijgGrRx6ZUDXkV2Fu3VyIqaQE+LaPX+6mUhZgFAf6M1/6K8xVMKqhQoavbAkZDEXz+rSLl
QzD2J/6x/fChtPQ/i/0LWFevd4HaK0c8Jp7yIbmHcX8FTytnvp6cNaaAUPaiMOTxAzwgH0BuLMTr
Q3cSUPeF6fgi+AX8CZgVXGGJg8Wvy+BXEv6DSvt4W1EWB5+Ad7EgHi1SCBNBswoqbl4GEDlgXk8S
QFw4zldMikBpHqgWEQgSVSUwRWATYmm/b8D9kVJ7HGQ8rhi4QssNMRjBJrkHm3gkh5NCRGKv0KO9
nFBIsVJ145zr160hHLicqIRyLVA7VZj5ci3BIuO2IRr3UIfbPfp+YKhd3RsgCPFOvzoxofZlkx0E
MJa7UfqqYVO/HF68yENRzMF5MOiiNRRgpTlw3DsGSoPDi8uPH5Yf3y/QT4vl8s3fFjMNVYJXYB5Y
Qphj16VxA3J+QMYRAAIlMUXmiwMgPeMMD6JNf2o4w+o8CpvS/A6r3DVLz8wE/cc4Tzl+0+ajdxIg
jTEUEgRAxEsS+1YJiFEwnXs0zdhIucML223HPttJIoXT1uN+etRH4ye45/iZ7hlyhzYdDz+DT5QT
kDMv2RgW3WOhDuXgM1APvIJs3POcPSBIKjjzAzuimBMB0A52KEhEkweozfR8Oxq21Z9zzV4mZ4y/
UgBImIhIkoAYPrrRAIBMDqqoHlhpE0tHCCLOithcXnGi+tTDrQk8ZwLPmMAspSAMzqffNF6+fVKf
PCNq9K3JdIY+kaQS4HdYiqzBdEDTGFmSCEmEoRNKCgFeFOmRftPZqV2ibVvlAicKatWK1nEuVHBR
gD1VTCk3bcCgARM80X0DAbzlsW9ozcmwNQ9u3l2hf374tFjegF3f/bJAnrqB8kFfRnxDd+phtfKv
yB1hvNCV5g8FYN7xy9Hp8V++o3LTYeWu37x7D6hCM4gKoGTAByjYoKxRsA9OhdS/AgBRAQNIDIUh
I/H/JQ4fP8FMp8Nm+qY6m7vTx+FkM26n6idPUH1HKPXq/1UEm3wFwTz784cIOP0KAl6rKy5X7zA5
/5Pn6VuvGyxTFATNppHnvVjJufmrJ/whWp3+r5v95VcQ8ObNcgnEE9c8Z/jo8aLge9P6yx1EtPh4
/R1Z5Ox5kj0HIjsPffiEg5f+ryv/BVBLAwQUAAIACACmKXVL37ugllwAAABeAAAAlwAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9u
Y2UtaW4tb25lLWVuZm9yY2VkLXBvbGljeS1uZWl0aGVyLWluLWFub3RoZXItZW5mb3JjZWQtcG9s
aWN5LW5vci1yZXBvcnQtcG9saWN5LXN0ZGVyci50eHRVVAkAA2gmFFpoJhRadXgLAAEE9QEAAAQU
AAAAC0/MLFHIz1PIyy/JTKt0yc9LVSjJzE1NUcgvLdFRKCjKT04tLlZIzs/VSywoyEnVC09N8s4s
AVHO+XklqXklei6pZak5+QW5QLZCQWaKgq2CkbmBmZGyq78bFwBQSwMEFAACAAgAyCl1S9t0bXtK
AQAA9wYAAF0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEv
bW9kdWxlLXNjcmlwdG5vbmNlLW11bHRpcGxlLXBvbGljaWVzLWFjdHVhbC50eHRVVAkAA6cmFFqn
JhRadXgLAAEE9QEAAAQUAAAA7ZTNTwIxEMXv+1dMwqGayEZMlMgNl8VsRCCsH+fSnYVJSrtpuyj/
vbMLMV68afwIl7bJa9783hxeMpvms0kK92meD2/TATysEbytnULQ5AOU1kFiTUATIEdVOwo7mFtN
agcFOVSBtgjCK0dV6HqnBCj+Lsl4kAbIbKWm4mA5ACGMNQq7QyFiyAK8kNawRKCVsQ6LOEp+CCj5
bUA3f3dDmgxC73IACyxrjwUEC/jKJAFBwn4uOyjJIlDwsJZ+fda+2lFnwAlEbbwssUumsRNQWGzk
ALKqUDrGhNAEf0/xIZstW+2TJfwj4qsj8bcT94/EX0fcmWcjeJwu0nzO7NlTCl0un03M1hrjZ1ze
UWiug0E8wi1qW20as5OKW+mi3zu/Po3Gw2zCzUcbzmhrLiVJgcyq7T5GpXI3srwKjs9NpaTWWERR
J52N98cbUEsDBBQAAgAIAMgpdUs3Im6+SgIAAF0JAABbABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1tdWx0aXBsZS1wb2xp
Y2llcy1kaWZmLnR4dFVUCQADpyYUWqgmFFp1eAsAAQT1AQAABBQAAADtlktv2zAMx+/5FAR28AZH
9jxgLZZT0sYdsnVNEHftWbWZhoAiGRadNN9+lO3ugW23AWuHHfzS488fKZGWUgrSG2faHfp0rlmn
+W2R3uLdR+LhcdaSqdI1GtQeFdVbZ9HTrjWaXZMafXQtK0bPqkHfGvbplrlOQ4tPPZZtQ3xMS2cZ
LRfD98oZKo9plmTpzlWtQeXLhmq2zpaoRJyplsY6DCP0Ch9qLBmrhB94FMfxs4DWJbfadMjTKahs
fAJxNs7ewnQ6is+XV8XyModPeVHM3ucTuN4ieNc2JYIhz7BxDZz3APBIAD0CVNRIOGiPEPUIyjdl
BIFXk/WgLZDda0PVIDmBKOoxZ1GUwILhQMbAHQLdW9dIYP8e0fmTIzp7PjGCn4gMWYTs7QTWuGk9
VsAO8EFQGEFDb1gkSi2dQOxhq/123L11tsYgLkSt9XojmWODXASVw9DNoOsadSOcwMHzr25855zb
dH2/icI/hXzyH/kPIqvZZb6+nsBqVhQjdR1qsUzQ3CdGhz9QkiSLMe7woxPOmiPQ5hvxAOUDlYyH
x8qcSNqKRKj2nbF8HqYJWyNT5OKDC1npnUE46MaSvQ/ZWUmYPui9LnoIbbAJGclbkB+R1/fYiSWw
DEoH8hiCBxezxWU+/1Xt6Bfk9OkuyHNEfrFazOHz1TovVgK/uMlByVruEtE2mPSng/AYFJI57tG4
ehfUXtZSet+cZq/fvRrFYd2kvtNOvJTTgmwEYtkIXYUXWNoc53KoCAGQelzK9sJqFIv9fHkx3L8A
UEsDBBQAAgAIAMgpdUtsU3vAFAEAAKQDAABfABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1tdWx0aXBsZS1wb2xpY2llcy1l
eHBlY3RlZC50eHRVVAkAA6cmFFqnJhRadXgLAAEE9QEAAAQUAAAA7ZCxbsIwEIZ3nuLfWCBSh3Zg
iyBFrWhBmBdwnQs5ybUj30HK29cJVFX3TlUHS5Z+3/99vuX21Ww3FV4qY8p1tYDnQLi7X2BPzUmo
hkbQB7mTEizEJe4Ub+RsDsEqaK20s/EWYnA0Q0yYnoLYhuYchrop6khDrLBdRzaBA7SlW9tckkPN
iZzymRCbMVvGoBQUJqMT6wW76Nldisnyrxg//Bv/nnG5qfaHBXalMZMDSeZqa3NzwJX25cgC633s
f34hBn8BN9++NyUZnPJ7dAOGSQoc2lyhmTCyqtUwls1SHslH+wgXg0RP6G0KHI4ZGOq8pGd7tuYq
YT0lRc/a4p1E7JHGsgLboalnoWF1eCyfNtWqmHwCUEsDBBQAAgAIAMgpdUvJXYlIeQkAAMwoAABj
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1z
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
q78bFwBQSwMEFAACAAgAySl1S4rYR2DVAQAAyAQAAFQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLXJlZGlyZWN0LWFjdHVh
bC50eHRVVAkAA6omFFqqJhRadXgLAAEE9QEAAAQUAAAAzZJfa9swFMXf+ykO3YM3SBylXZvUMMaa
ha3QLmMJgz2q8s2sTUhGkht7Yd99186fhbLA+jAYBltYv3t07rmazD7MZ7dT3E3n8zfvphkWBSG4
yiuC0SFi6TwmzkayEXNSldexwUdntGqQa08q6gdCEpTXZewHrxIoxqW2AdJC2wdpdL6VzJAk1llF
/fbddMskSXETsdLG4J6gv1rnKU9PJo+dGW0JowyfaFkFyhEdqGZHkSCxOZ8FlORN6BhQyFD0ulV3
Tg/cSVLZIJfU17ZVS5A7arcjZFmS9GwXsQ1g381Bj27Z7R0J4w+GD4waJ3MUMZbZYDA8G6WCn2E2
FkIMwlZnoDbCO92N7MDTJrrAK/aSlkX5uvLm1VbMOCVN4UJ8opg05GO/lCGk38JBbP82kW6Ew4v/
d4ZGNuQhI56LnniBoH8QONj6UogTsGubk/+saXUEOVZ+frmvvuaJfcf6/eLu9ucxcs+6vMH6evb2
ywYd98ZbdDR+WZ+JDt3BC6oj1s8ifx4LX1yd18OrLQ20CHxlf1MrnceixTKcLgodGAmc+aogTosb
Qk5L8nwBdzPq7nM3phz3DQPd5eSQwcWldyV5w7+Ncasd0Q0wPf1bz6IWT0F/AVBLAwQUAAIACADJ
KXVL8eMA1pUCAABoBwAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3QtZGlmZi50eHRVVAkAA6omFFqqJhRa
dXgLAAEE9QEAAAQUAAAAzVRbb9MwFH7vrzgaDwG1zoWyrauE6NZVgNgoWqtNPLrJ6WLw7Mg+WRMm
/jvOpVuBVrCHSVOlOm2+fOe72GGMQXCpZX6DNjjlxIPJ1Sy4wsUnQe1ykguZBBcokVtkIku1Qitu
cslJm0DyUufECC0xgzaXZIOUKAuqf2xgMc6NoDKItSJUNGt/f9FSxGUQ+VFwo5NcIrOxERkprWJ0
RIkwGBPDInMLJj4V1Ol2u89ZK48p57JWOhoBi3p96Ea9qA+jUYeNp59n07MJnE9ms+P3kyFMjbgW
CqrxwyCIXh/6oftEw0EYhiAsKE3ApdQrTGBRwnEco7Vs7JQZLdlxdYc1HP4WdikUQjSEeZnhxBht
hjA22hHoZmxjAKTmCSSoRDOkgbTKLtDq3MQIs5Qboa4hq2Nw0+ap01dHBqsUKUUD3LEs0bgsfqOO
eW4bag7rnCpzmdEZGlluOuRQ5+l3un+5macIrRgpLMFSGxg3HcG6JGhagmaIuEXwGiXMmtiDqlIu
lAWuQKhbLkXSUg7B85omq++yvvQ8Hz4SrISUsEAQ10o7+duk1UEfDl1ay9oqacDCSSJ0htooFljn
AMIFlnKb9uqrelAPnBUvV5Yv3XZVFZsHica2/yxDbpxeoCqBezsbJvWyvrcjjW2KN5TWHW3dgf86
C6bdHDaoa/WzNHuXG/m2JZM65jLVlh5JxiUaYhm31v9mN3J74kia07L/jFt0b67qlBG8DHvhK7Di
B4KLtjgIw04XnG6VoLkUuNqF2UXQP3h4/sTV9h3uPszPz37uhN6DdVLC3cn09GuDHfQGLfZw8KZ4
HTbYNXqOBcHdC3LLn9T7R/0iOlrDASoMmFw9wFYiobTCDWHvad89e/+tOizCR2F/AVBLAwQUAAIA
CADJKXVLw3wiP8YAAAApAQAAVgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3QtZXhwZWN0ZWQudHh0VVQJAAOq
JhRaqiYUWnV4CwABBPUBAAAEFAAAAF2PwWrDMBBE7/6K/QE7di4tuhljeklqqPMDiryNFoRWrDYE
/30V1EMIe5ydNzPT8r0upxnO87qOX7OBRehGEbxqMofDcPzo+nKD+ez7HihDZAUbAj9wg+sOo3OY
cztxVOHQjk+lrYyumd7hgSLCYOCyJ5xFWAxMwsXPNTU7oaQQ2G6wYaSaUV/+i/1g5rs4hNVboXiD
xIHc3jUXX9opZs3w8KgeBWyB/KJIwbySnb3nSrZQNBJ0+pyWhBNK2F/32TI4OuyaP1BLAwQUAAIA
CADJKXVL0aq0YZMJAABIJQAAWgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
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
KWpKaoT9BC5x1kolA1h7SoRe0MqKKbY+gPSGFcIVg3bWFhqAlxJU2omZ771usgWQG2yWCURZorCe
L1DjwL2cRyLNrF3b4MZTjB8xbXvUnKaE83h7P4z8EyfDKIp+dbD8UWzNc7xta1gW5dvKqjd/mUwo
tMRK4Vz4xT3y7ZktaZsY7/7DXfTXQPOXEbyMBtErcPIbgre23ouiXh88b52jvZK42ITZlGBn72H/
kTLZV7h7Pzk7/b4Reg82+RLujs5PPnfY4WC4wu4PX9fbUYddoydYE9y9ID/8nHr3YKeOD9ZwgAYD
ttIPsIXMqWhwCWw9792z9dusozr6I+wPUEsDBBQAAgAIAMkpdUuKdaPmXgAAAGsAAABiABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRu
b25jZS1yZWRpcmVjdC1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHRVVAkAA6kmFFqpJhRadXgLAAEE
9QEAAAQUAAAANYu9DcMgEIV7pngTeIB0LtK5iGIvQOBZICGD7i5C2T7XuP1+1u35Ph54rfsejlIV
RjXFLLRCQUTmSRFmaJI6DK3HjBS/6ujz88BdFSaDz0P6oDTHrfV5F1e/EpfwB1BLAwQUAAIACADJ
KXVLqghIv1IJAAD+IwAAZgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3Qtc2FtZS1vcmlnaW4tcHJldHR5LWRp
ZmYuaHRtbFVUCQADqiYUWqomFFp1eAsAAQT1AQAABBQAAADtWmtv3LgV/e5fQcToul1Yj/F47Jlx
4kXiR7dosgkyxi76qaAkymIiiVqSssdJ97/38qWRNNI4wWbhRdEYsSQ+7+Pcey6ZPM9kkZ/vPc8I
TuBREIlRnGEuiHxxUMvUmx9As5APOTnfW+a0/HiIlndUUEkS9HkPwR9J1tJLSMw4lpSVS1Sykpzp
rojxhHAvYlKyYokm1Rol8E6Ss73f9sxydpGY5Ywv0X44Xeg+/5rm5JKmqe2PcPzxlrO6TDw3NJ2r
n/ZGZgfBcpqg/SRJTF/KSumluKD5wxIVrGSiwrEVsMD8loLIE1Kg0DRVDJTTenCSg0Z3RAuUTXqS
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
iBJ6NNg4vHPDN5hA8OYZY/V+nnHXQBQd1zFjb+kNHn9ZFBmYoQGEgoRSJd5ivSrTVXldfsqoU0RP
DNxJrSJhOza4e8uyzK6X66JMYHL6MozpmSSv4jgelDw9T/M0T6Bxrkui6FefyI4FRmKo+KHgod5o
Ek6iocJ9oxlvW/0dK3azY6hqbQTNu4Mn44rMrRbfBnmAG8WwazovTz9epUV5fZmWy/VZAhkhH41X
+YcEnoIxaHVPOW1k+RbHFPvY7xxaN/uLtcxmswM/nM3LOdDKu/Mft8RP7vxKi35DDIwI/MT/x833
T3yDNRqDhmBotZW65Y68jyef7D9diMA2/PT5Czad3vCqjuPqye90FkBwuIOs6jcd45Y5vHUBJcO6
HnL8Jhu5aCO/SsXbkflPwbwe79h+VyAM/58TRS14kIcDQwbruOstE7qidp3G8f299wNQSwMEFAAC
AAgAyil1S+D/XZkCDgAAtmUAAIEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxv
Y2tlZC1ieS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZmLmh0bWxVVAkAA6smFFqrJhRadXgLAAEE
9QEAAAQUAAAA7V37c9rGFv49f8XeeG7cdhDozcOx7yQ2vuncJvY1bjudppNZ0MooEYhKwsbJzf9+
z770AgGucIU7dSYGtKvd8/jO+c6uluTlOJ74J89ejgl24GVCYoxGYxxGJD4+nMeu0jmEy1F875OT
Zz3fm35qoN6tF3kxcdCXZwh+YrKIFYeMghDHXjDtoWkwJUesaRiEDgmVYRDHwaSHtNkCOfCeOEfP
vj7jw4lBRoEfhD10oBpd1tY893xy5rmuaB/i0aebMJhPHUV2dTv0T3YiPkMU+J6DDhzH4W1uMI0V
F088/76HJsE0iGZ4JASc4PDGA5E1MkEqvzQLQDmmR0h80OiWMIHGWkFSwzBWjB/haaREJPTcTGPk
fSZsjuykik/cuIfUpiWvO1408zEM4k3BMkLCO8+Jx3Czqv5TyIcdx5veJHdy2YRr6Lu8d4S43nQM
QsVJ93FwS8KCRpZlHZUZmxBuhib1yQ8wVyRudv0AgxqhdzOO856jvU5BfQy6yKkCML0Xg4pqQeUY
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
nsCxuwM4mkky7Jr1wtFQK8DRTLNh15RwLH0QWTsGDa1SSuwaDWs/MGjoO8CgnVTdhrVo14pBowIG
7RSDupHDoHyyXD/uqhQcnUQ/8JPUbxfPy+o3i1XBLJqaUqHdlXbZ8olP/arbVVRPqwDN1KTqa55i
1alou1LKNUHbPeF9o7ODnKtliL9dM/F3q0Awy/xtCcFV51RqR6CpViN9G9ZB+4FAU9sFAhPaNwxY
CdUKQVOvAsEM8Wt6EYL08FH90KtS12gp8RtqUlw/8DxV/SYwK612ExO0EwtkzoTUr12VCkZPaRxC
Uar3R8651G+HKuWMbj7lSs6stJ1jP51KzuxUreT09p7w6C52cPROUsmZdr2VnFVlC0fvZCBoSwgu
HTmtHX5Wtb0b02ro3f2An7WLzRtDTZ+ZqgvDqBV/VcocI+V4rZ3s33x5XzxI/F6eJH5fOEpcPzKr
lDhGWgSAI6X6wPVS3/d/oQ0fq0q5ZDzpMsGqUiEZaZlgW8tVQv3KVamBjJSA9PSRaqbyERHQeJ8/
nV8IkEKv5IR+/cbpVHrAktlnSQrE5EBwwQYlR/brN0GVrSYzu0xK4v7BX0Oo3Qh2pQdtmeSXbnas
O9hdiIf0CyL1G0KrYog0FeqqvX1AFMyRfPGlfmtU2QMzM8V728rnzieSG+wqxaOl/kVyQ5US0soc
Ckk3Crf91lX9ulcpCq3Mc4hOEgBrv0hWv8JVSkHL/stsGtpVqkar85RXA3an0oGHTC1grt00LLDe
/uhfpSC09VWkt7xkLiif+Xrm++z3M2s3RlvdwbdR1OUtrYf8A0iFF/YvL75s8f+35f9QSwMEFAAC
AAgAyil1SxEQ85GXBAAAjBUAAIIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3kt
YW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeS1hY3R1YWwudHh0VVQJAAOsJhRarCYUWnV4CwAB
BPUBAAAEFAAAAO1XbW/aSBD+3l8xoh9IJAz2rt/gFJ3y4jaRmsCBe1LVVNViL8F3jo3sJYGL8t9v
bIPtcJBsuUulSEc+hJeZZ5+ZeWZmfdq/GvU/OXDpjEbHH50euFMOaTxPPA5hkAqYxAmcxpHgkYAR
9+ZJIJYwiMPAW4IfJNwTwR2HZuolwUwoaeI1wUNzFkQpsAiC6I6Fgb+C7EGzGcWRxxV/fjtTWKoI
vhDNZhsuBNwHYQhjDsFNFCfcb787fUvcwiDioPfg65DP4kRAPwqX32DIJ/OU+yBi4AtkKDgwKPgg
nMfwRwhEClOWTlv5u5xCCzCy5jxK2YQrQZRhN8GPefazADabcZYgfRBZQsroajHHk/y3Hcl5hv7b
IqzRN5vw//tMilvIljwBJuBAbamHkAZ/cbBVdWGq6jvAakc+T34P+P0Ok13uROuW7idh7P0JD+fu
5afHnaalcewv4eGkf/alsLVbmrkytmx9oXWN3HgDe7AJnNkSdWW6NnYxD/DwPkvHpr1m2IsVj+KV
GUEyjyq7+8AX08ywB43B8WiElfHLHihK025sIXfAsBrL23ieHq7A6JOIjO4GzQFLRH/8B1YdHi4+
DI8vnU22VM38dPg6jhN06MEBmS1QBikX8F7NX4ffasFsq5Ju2QvTMGtWz5SbYp00Q30BMrPaDvmM
BLY57RaDvfIimDlTVze8ZApN6dNCv1hwijOwcToaQFLMQWxHju3o9xo7Tj8ZIudhcbBGSUsz1mcv
foAwWTMmFpFiTErK6JFR7l+5zpX73f0ywJGDIxbHCRNBHHW8dKYUwciEQCytRfcKQS+T3tWlQtCr
rHdxVzbOXXfw/bw/cnugEaut4p/Ww5mhSqW+S1vGXrzNskeosbAkeJsVb0LXvIfOB2foDLfI5B/+
dumPJ6L/VIhZr9N5GnMnXW2GjlesivWmKBZFR2trnWIMZbtXkThWUyvJmCqey8Iwvue+Ml4qIb9h
3lLhEe4mD7+a5YcoLPKlkCsxanY2MMfZACiQC+WtANuz6UyqmLbV0vZToVaToSUlQ62uQwvZD53f
Pjsj9/ul4573z3owQEnKSdDE7t+PdSlCSrH/pWjXZKiRGu3PwwsZFWqVDHHBoP9Likt4ceNIOym7
4zK6IJXirOyEQguZCH6V8a5UhUlBd8FTcfTf9wXRX6sviPkKfUGs/RaMXfaFbsptmEog6ILsj46O
8l6As2P3GPCTFGXdaJHuXpSpWt1e1AWlEpxppTjNymbzw3Wj2n/XjR5+9mNvfovCkakgrTSIHBAP
pYYo1z9rZtNX0yatbzFtqzZlUCqNEJK1eKXn60brGjt+wpOEJ3nO8m/ugjhkgktx1GvV7GYcy6ej
HK/25NhMp4wYphRofax0EZTSMfMnquq/+J8eNWUOqNUsH8zbns/yXPDJpAhHindVMKKazyQjh46T
4CaIWCiFXGt0yyiL+C9ybKivnGOjdv3Nl9e2HP+yusMr2IMymLV7gJ2lod3e3Hk/tsAM8+csMMN+
rSFh1q+M2gsLLNfd2kAGnGzIbj1bc6BUMDFPFS/2M33jTeLxsSH/gK/invkbUEsDBBQAAgAIAMop
dUvdL+LcpAUAAD8cAACAABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdGhhc2gtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1i
bG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3ktZGlmZi50eHRVVAkAA6wmFFqsJhRadXgLAAEE9QEAAAQU
AAAA7Vhtc9pGEP7uX7FVPpCMOfSGJFDr1nZM6kzjQIEkkwmZzFk6glpZYqSTDWXy37uS0Eso2Gda
p0mn2DMg3d6zz77c3t4RQkB+HfrJFYvlM8qp3Hszkt+wy188vv46TTzflYfMZzRmxJvPwoDF3lXi
Ux5Gsk+XYcIJZzEnEYsTn8fyjPO5nL6J5Zg5SeTxpeyEAWcBH62fB6HvOUtZbaly7ETenM9oPCPU
98Mb5pLLJfHZR+osCQumYeTgq3k2gdAAR/3Q+T2Xitg8jHgxyBZz5nDmtviCHxweHv53LKMOT6if
2XV8DERtqiYcqk1LgePjg8On/Zej/oseXPRGo5OfezaMZwziMEF48L2YA2qCpzlNKHhCThRcL0Kn
edcMGjlfEkdOA1KrqBfEQAPwgmvqe+4a0oZGIwgDhxE3uZoTGqOLFrzRaMFzDjee78MlA+9jEEYY
iW+NnO8FDNo2vBtm/od+4C/fw5BNk5i5wENgC6TIGVDICSGeQ3EQPB5DGupm9ivj0AQ0rZEEMZ1i
egUpdgPckKXDHOh8zmiE/IGnHinNqxkdTrOxHd65jf/Xyhi2M1b1b8XlZHAyGqG8W9LKYXAk/ys+
B+RZRK/ShPzhO0Km6e8B5TOQ5fJZIeRH/G/UJz0dDSBf+/jlMKTk2vi2/3Lcezn+MH47QJehGUiG
ci8MZCeer2vFATkfjwcfzvujsQ2qZrUU/FPtjqIo66Fh71lv2BvakJYxW5Y/F/qiFa01n80PyLD3
66veaPzhojc+75/ZMEDu1dtXw+c23MUKK3O28LEg02u2VpKi/5SW6aN/waijo6PMEDg7GZ8APh2Q
lVSFSbJXkhs6uC0FnCAVyZa+jnBITSliUxZFLEJO+HTthbgTonS5OvB9bdE04hnVDJPo+iV1p4ri
3vmtHzVgW3lGZWw6zXXs0IYiYeR99ALqrzk/FJnv1+svDQ60Wl9dhqEniuE8ffBFzClPYuKELnpN
U5RPn/7vCvYnh50fi4ByeKw0lScQe38wwCW5MLGSHgJuTYHLotceu9klswtAU7sVwGkaRFidjy9e
fNotW0qH7hJWp/2zt7lwB1vAtbTVaS/UrpFLb6APNqFTYU0pZAvpMboDVo9Sr2xOUI3OoqCSf1Ip
iJKgErzxXNzZUNIGadf+KG3j95hiWJZXYRI/WaPpn1lldDeZDmjE+5e/Yfxh9fzZ8OSit0lYV9KJ
bXh3GUY4wYbH2nyBCREzDo+U7PPkfd2ebdFqW52FaZh1sVsCr2O8VEO5CzQV2wF6SzJsnbU7LTrr
aRr6z2wrm9NEIq7rGxG/M/I69m/SttZF2qX/dIi0h7lqVdeaqlFoX9yHs1aQ1ixNjLRWssYpKWuB
1krICs1Sm/p+VrRL13fbYla0K993sd2XdrZ+YgHo6k1jP+pmuWJ0Y2GJUDcr6ppeUC9aU0kAoFMC
oE4E+CfaJxG9qlKljqmgYrG9XAi6ykq1k1bRWxsAoZB2rKa6ZzqqtXy0xPJRrSekhQZsa+0Fc9HE
YrAn8TIbdR3LgRjzWj6qWo15evwQil2Vj7j1IMA9jyySUNEqdVipiloTKjS9Si90DM7fp3MVUtR+
sCWimQ+xRDRrz32nUy6Rtim48VR5gnPQgL8cFMVYt42m1t2Pta5U/Y2y0HUR2nqVeqqV1uvVpHaa
neBxdlKdZ0UCqVfJiCwQEHMOYSZfrI7rD5eken1zU7cmqRBMlSqalq73KrMnUnNSntMzt2VvyrO6
JNQ81Ip1yrI8UGWAW07VQqj1ItNF1HsdxYU01AKXlepth7rMHdVtghBuFTVNMW/xR4ZdXkMIQdcW
vWWUkfw7fjaUh/azUeuRsx3trmsSIdBah9BJPXHr1YoQovmFdjWj82AFw6z3lOodu1qWfoWAELq2
kX1Fqc2QapdGk/WtkXSPiwEFt54/AVBLAwQUAAIACADKKXVLN+mWHxECAABaBQAAhAAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWFsbG93
ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5
LWV4cGVjdGVkLnR4dFVUCQADrCYUWqwmFFp1eAsAAQT1AQAABBQAAADNU99vmzAQfuevuPHCSw2k
0X6ILZuilC6T1oQBfZimqXLNUawRG9kma1T1f98l0HR7mPq0qQbJ9n3nu+87+xbrVbH+nMJFWhTz
j2kCrVQIk2kC33LstHGwVu3uO+RY9xYrcBrwFkXvEDhYYWTn4BoFJxCks9Bw25wcVkorgSegDQS9
srxGJtU+eACVxj3sgHcdcgNSgWtwjMasEVBJg8LJLYKuD9hCK4fKQUGpjXQ7yHQrxS70snlRkHt1
ZDVECT0abBzeueEbTCB494Kxer/OuGsgio77mLH39AePRxZFBmYoAFFBolIl3mK9KtNVeVV+zahS
xJ44cCe1ioTt2ODuLcsyu1quizKByenrMKZvkryJ43hA8vQ8zdM8gca5LomiP30iOwqMxKD4QfCg
N5qEk2hQuC80422rf2LFrnesxRsudgxVrY0gU3c4wLgitNXix+A1cBzBsGs6L0+/XKZFeXWRlsv1
WQIZMT8aL/NPCTzFyaDVPeW0keVbHFPsY39waN3s/0uazWYHGXA2L+dAO+/Of7wgP7nzKy36DVFh
RMRP/OdxFf6Jb7BGY9AQJ9ptpW65I+9jO5D9ty4JbMNPX75i0+k1r+o4rp6cp7MAgkNjsqrfdIxb
5vDWBZQM63rI8Zds5KKNvJGKtyPnf0Xm7dh4+8uBMHx274sq8QAPz4cM1nHXWyZ0RVU7jeP7e+8X
UEsDBBQAAgAIAMopdUv1gTnlDA4AAPZlAACIABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQt
cG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3ktcHJldHR5LWRpZmYuaHRtbFVUCQAD
rCYUWqwmFFp1eAsAAQT1AQAABBQAAADtXftz2sYW/j1/xd54btx2EOjNw7E7iY2bzm1iX+O202k6
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
6vambsxSIZgyVbSsuaqk9liqj4uzeua37E1xXpeE+ofKYkppFmeqDHDDyVoItVpmOoj6oOO4kIZK
5LJivelcl7mjvFEQwi3DpinmDn9k2MVVhBB0ZdW3jCKUf8fPhvLYfjYqbXK2p913VSIEWukR2qkn
dl6vCCGaX2hfM9qPVjHMSluZVcOd+1qWfysJIXhtLf1WxTZDqlwcjZc3R9IDLgcU3Hz+BFBLAwQU
AAIACADKKXVL64QA9xICAABeBQAAhQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGlj
eS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1leHBlY3RlZC50eHRVVAkAA6smFFqrJhRa
dXgLAAEE9QEAAAQUAAAAzVPfb5swEH7nr7jxwksMJN0vsWVTlNK10towoA/TNFWOOYo1aiPbZI2q
/u+7BJpuD1OfptUg2b7vfPd9Z99ydVGsPqdwnhbF4lOaQCsVwvRlAt9y7LRxsFLt9jvkWPcWK3Aa
8BZF7xA4WGFk52CNghMI0llouG0m+5XSSuAEtIGgV5bXyKTaBQ+g0riDHfCuQ25AKnANjtGYNQIq
aVA4uUHQ9R5bauVQOSgotZFuC5lupdiGXrYoCnKvDqyGKKFHg43DOzH8BhMI3r9grN6tM+4aiKLD
PmbsA/3B45FlkYEZCkBUkKhUibdcXZTpRXlVfs2oUsSeOHAntYqE7djg7p2WZXZ1uirKBKazN2FM
3zR5G8fxgOTpSZqneQKNc10SRX/6RHYUGIlB8YPgQW80DafRoHBXaMbbVv/Eiq23rMVrLrYMVa2N
IFO3P8C4IrTV4sfgNXAcwVnYNZ2Xp18u06K8Ok/L09VxAhlRPxgv87MEniJl0OqektrI8g2OOXax
Pzq0bv4fNM3n870OOF6UC6Cdd+c/XpGf3PmVFv0NcWHExE/8Z3IZ/sQ3WKMxaIgU7TZSt9yR+6Ej
yP5bowS24bNXr9nR0ZpXdRxXT85H8wCCfW+yqr/pGLfM4a0LKBnW9ZDjL9nIRRt5LRVvR9L/isy7
sfd2twNh+PxeGJXiAR8eEBms4663TOiKyjaL4/t77xdQSwMEFAACAAgAyil1S9ww/XAIDgAA/2UA
AIkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0
aGFzaC1hbGxvd2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVw
b3J0LXBvbGljeTItcHJldHR5LWRpZmYuaHRtbFVUCQADrCYUWqwmFFp1eAsAAQT1AQAABBQAAADt
Xftz2sYW/j1/xd54btx2EOjNw7E7iY2bzm1iX+O202k6mQWtjBKBqCRsSG7+93v2pRcIcIUrJ1Nn
YkC72j2P75zv7GpJno/jiX/y5PmYYAdeJiTGaDTGYUTi48N57CqdQ7gcxUufnDzp+d70QwP1br3I
i4mDPj1B8BOTRaw4ZBSEOPaCaQ9Ngyk5Yk3DIHRIqAyDOA4mPaTNFsiB98Q5evL5CR9ODDIK/CDs
oQPV6LK25rnnkzPPdUX7EI8+3ITBfOoosqvboX+yE/EZosD3HHTgOA5vc4NprLh44vnLHpoE0yCa
4ZEQcILDGw9E1sgEqfzSLADlmB4h8UGjW8IEGmsFSQ3DWDN+hKeREpHQczONkfeRsDmykyo+ceMe
UpuWvO540czHMIg3BcsICe88Jx7Dzar6byEfdhxvepPcyWUTrqHv8t4R4nrTMQgVJ93HwS0JCxpZ
lnVUZmxCuBma1Cc/wVyRuNn1AwxqhN7NOM57jvY6BfUx6CKnCsD0XgwqqgWVYzz0iTIivp/TUmHj
5qx0NwbtFOZDCrW7EM9SyQZkRH1XChp2cx4yRbgIzEq7A6DU2YLP0F/MwL0wPqhGGqhJX4oalooX
eQ4ZLulvxER96QejD5c4jJugas/1wihWRmPPd0oNS6cbwP2NTYOFZAKubWyZT8whzc8Bpwxplxzs
LIk6QEvsjbCvYN+7gdiIgzVqhYQi/RWeOj6R5hDjUBPSz2PCHZrieTQPI+oaKnYxAvEQvDOXHoM5
E+Dw4GHibZIih/NVONyEZHlUAGbT2uYvbmLUjIOtZm66YTApGFvkRzoHtfqb+WRIQkATyaKLX5WC
r6ZRgdpuN5cAZbisS4Mykk3TXJtust5PcgwdyOIhwMMgSfgCBwKe6yDCxc3ByRAJK6M4U3FtwuEk
UWqWDUlqFtLopGIKA8psIlAjFcnFKtyk8GhlTWBP9hH0CAn+oNALXCBvgm9IzjM9pCcGH/qYWpF2
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
VGjBC2s6R1IKJuG5kb1efiwFtK1StteYu45bkrqn5ARrZTrGAyZTqe0m76HBNqXdhGgstSzMnGsb
G1oqxSYbxX6w6CQt+sGgt+x4/PAZ9lzQquzwvt9HzP3csUmsqumsfM+/AbC1Qmx5lhJiaw0ZNVLI
3dNh53T4afi+hzMT9xc2P5U8juq+mOp5MCohWJ5ZJY8KwV4nvWkrhWAXWW/i0aNyOBz2Ph12B8MW
mJZXM/BttnBuGEqpb5Kq8yjc7rpHiDP3FHC7BW6LrHD3O286/U5/C03+pd9Y66NH1J9IOW3V63dj
rovlHK/7+WBfzfV8rNfNmlnPx1B6sNEV3JpGQRm3iX5HaZuyQB8tdBbhxvfxOd8qOo0CnYZhfIM/
qZi2Sg2UshFNLrdYbrA2nUzVGsismo+jn1nin6fEP7NMQA9R9ztn553B8NNJZ3jYfd2CHnJRjXsu
tv3jUK/ZRwg2vhLsEv9MqwT7vH+kQj+z4B9uFtR/iGoJy89xoi7w+KLCB6ugmpd6yLmQkuA3Fe2C
TSRjk2RC7n3/hrDsJ2sIy/2ODWF5j1spjXVD2K7aTimYgSqIem9vL2sCeN0etgG/KUG2narVfBRk
YhTnFWNOiAJmUlDN9NJpfHtRKTbeRaWF34PYn12lZ2OFypGCfIgB7SHH0MrFj5rS5OlISQpSus4d
TqooF9ywrLSnCx5fVKoX2OJjliQsyXKV/XLN45BKNWh2qYpNE62v7z2ZvS23PBWj5TmSppKQEQ3G
hhE8+En2NBUHpVplk3jbZTLLRX7f42rT0y7qZBnuPcnITMcJ/8wjGipZLjW456yL+B9y7BhPnGOn
dNDNttW2HL+C4s6sYrO0+BtpGmq1zSX3bRvLcX/MxnIaTzYc3NLp0HB2bKyMcCufKkatDb6thmlm
SEgqZ0L34yAlNp4Zvn6tqN/jDVws/wBQSwMEFAACAAgAyil1S+OyhMg3BgAAph4AAHkAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9j
a2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5LWRpZmYu
dHh0VVQJAAOsJhRarSYUWnV4CwABBPUBAAAEFAAAAO1YbVPbRhD+zq/YKh+cDJb1Zsm2UlogmJIG
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
dUs28/1JFgIAAAQGAAB8ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWFsbG93ZWQt
YnktcmVwb3J0LXBvbGljeTItYWN0dWFsLnR4dFVUCQADrCYUWqwmFFp1eAsAAQT1AQAABBQAAADV
k11P2zAUhu/5Fa/YhTep6dKyQum0i9J1K1uhgQJimnZh4pPVarCD7fRjaP99Tlooq8iu2Z0tPz56
z3Ps3uh0PBr2cdIfj7uf+x1cTAhW5yYmpNI6JNqgp5Uj5TCmODfSLRHpVMZLCGkodnJGYDY2MnOB
NTFD7HEulQVXkGrGUynWJTtgTGkVUyDy2yzgNnC0cIzVcewwl2mKG4L8qbQhUd/pPZetKsuTBH49
4c3WftD9cnc5s9f5IDk5ve4O46Po6o7k1+mnaXs0nKm9y4OpHURvz84Oww8MzybDnFsISn2TPpNv
B4YybVygVbrErRZUw03uIDRZKO1gM4plsgQHW5M+JnsP57Nnq6hloxPutSkNShLvsI4oJW4JJD1o
wIXYqrCRXYMfyTrS07IzycstWysKHhQFK0UME+KCTIXYlzr0VCpCq4Pv56UMjLz4HzinJLd+IM4b
XPiEjryvVR5fLub+ENJZr9lOauWqjFC6Y7myPKFAqqI228yOZxlxUwy58PjkQW161kl5ViHnH/H/
r8CN5stNnPJl8UMcXoe18A2s/EVoh+FiPwx34FMr/8avJM0rkKrrrebj7aNUx1PcDy5Ohr+ryEdW
iyXuj0Yfv63Qdq2xv2YP2u8WzbBktypH22X/Qh/gC/9NcP+q+C3bfKO9t2gcPvJAAcHkasPNpXCT
AuxgN+qOx96wKEfwMMyV/Pruzh9QSwMEFAACAAgAyil1SzNQK9myAgAA5wcAAHoAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2Vk
LWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5Mi1kaWZmLnR4
dFVUCQADrCYUWqwmFFp1eAsAAQT1AQAABBQAAADdlFtz2jAQhd/5FTvpg9sBYZvcCJ3OAAlt2pBA
Qm6dTh+Eta41CMmxZC7N9L9XvlBSGvKc6RMyOjr+9qzWhBBwb5VIp6jdE2qo27sbuXc4PuOm/Omm
XDD3CgVSjYTHkZKo+TQV1KjEFXSpUkMMakMS1Kkw2o2Mid3sH+1qDNKEm6UbKGlQmlH5PFSCB0vX
r/uuDhIem4jqiIyFCibIyHhJUIYqCew6zpWESkaoEGpebCcYq8SUmw2CixgDg6xuFqZSrVb/h5po
YFIq8orabSB+bReqfs3fg3a7Uj0eXIwG/R6c90ajzqdeC64jBK1Saw+CawP2TXBc8MEKEApCYDyx
afEZglOAEp0EDmTlUC41UAlczqjgrLRsgeNIJQMkLJ3GhGqbzcI4Th0+G5hzIWCMwH9IldgWVOBZ
uG0wTxDsOqKN/QPS+fJwM9P36Wl4fnHf6Qfd4e0D8rPJx0lz0J/J3ZvDiT4dupeXR94HB55FgznV
wFDYKi2UrQfKeJUUS5gqhjUYpwaYQg1SGdD2BvFwCRScUmkxnfdgLHvRkqLSiNrcpAIMQxtiHYb5
HQLkVpgAZWzDYZ12DWxPSqSntjNO80enjIisIiJFRA5ESBkm9dfd9n/hBJcI+y34dpXHAQMb/Xe4
wjDVtiXGZriwiAZtYgWQ9Quo3QRuNGTTU8tXOUOenpNKTUM7sTLzdtbdo3GMNMnanCX55Eqti1Zh
vrclnZf4XysxPE/sN14vMhl2RiOrZ7nhCq2wsi2wX95siAy89WreO9D8J0LT8xYHnlepgq1K2jm4
5TjfptlmsN9Yn+9mX2R4PL0+7//aKv0jVmwJj93ByddC26z5B6X4sLm3aHiFeMN7uGn8t3alvrbj
BI9vsqnaPOA3dxf+0foAQKaCJJVr4ZwzE2XKFuy8lOtO5TdQSwMEFAACAAgAyil1SxC0haNOAQAA
KAIAAH4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2Ny
aXB0aGFzaC1ibG9ja2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQt
cG9saWN5Mi1leHBlY3RlZC50eHRVVAkAA6wmFFqsJhRadXgLAAEE9QEAAAQUAAAAdZHLTsMwEEX3
/Yq786YOL/EWi1IVKihtSgB169oTxWqwg+0E8ve4KYWqEruxZubqzPFwNs1mkxGeRlk2uB9d4aUg
DK0JZAIykrXToUVqSy1bMC+drgL3Tsa6EMenZ3zw8PHa+EU9zp+mi8FE3qZvH6QfV3eri9mkMSev
5ys/Tg/m88vDGwZmrJHEVf1eceF5oK/AGD6Fh6JSN+RIQRs4qqwL3JqyxbtV1MeyDlCWPIwN8BVJ
nbcQYD+TEZNdI0T2aoP6qcsShWgoLoDynGRIkJYkPIF0HHQQSu0lQGkXByNHH9ZtkXZjGy26J/tR
xLeK+EYRQ0FCkUt6w32xpTaEo+MrPFNe+3hniGBfcT1QxNiYxZKkiE3o4CO9L/pd1UnrkFhtvMiJ
a7OOY39KRFWRcGt3a7ydf/o9CTbvev98btJLB1kWx1WXtyXbJCW9b1BLAwQUAAIACADKKXVL4Ort
V8cJAADaJgAAggAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJl
cG9ydC1wb2xpY3kyLXByZXR0eS1kaWZmLmh0bWxVVAkAA6wmFFqsJhRadXgLAAEE9QEAAAQUAAAA
7Vr5c9y2Ff5dfwXGmkZJRuTe8h62OraOuokPxes46XQ6HZAERVgkQROgtGs3/3sfLi7JJXfldsZK
Oo0nXpJ4AN7xvfc9IHkSiSQ+PXgSERzAT0IERn6Ec07E06NChM70CD5zsY7J6cE8punNMZrfUk4F
CdDnAwT/CLISTkB8lmNBWTpHKUvJQg15LA9I7nhMCJbM0SBboQCeSbA4+O1AL2cW8VnM8jk67I9m
asy9pDE5p2Foxj3s31znrEgDx4qGU/mnupHegbOYBugwCAI9FrJUOCFOaLyeo4SljGfYNwomOL+m
oPKAJKivP2UMjFN25CQGi26JUigaNDQdjUYt63OccoeTnIaVQU4/EbVHdVMnJqGYo747sd8DyrMY
wyI0Bc8YDe9oICKY3O//yeiHg4Cm1+VMrZsJjXyqR8eoS9MIlBKleMRuSd6waDKZLLqcTYh2gytj
8hL24mZyGDMMZuT0OhL1yEmpMzAfgy12KwaupwJM7DdMFtiLieOTOK5Z6ah1a166i8A6R8VQQu0u
x9lGsyXxZew6QaMm1yHThIvBrPU7AKqfrfQOF6sMwgvrg2nkGLnyp2lhp3qcBsRby7+RUvV5zPyb
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
QWnDe8Tq5EtjNRj+P1jVYOnL8v00sJHbGbPRPWK2IxFV4K6eLZfgrUC50wZIO3K/bx6a4R532wUn
D7mbQN/2j/vfIXlWRNN+f3XS7z9gtZt2K4wgU1LoSt7Due13p/fsyx09GT6gvoP+fkcr4KLPL969
evnb707/wS79Swvg7I4+P39z/jdtwPR4cGIseDwdr4YPiZjBcLcFjShcNUPw8AaM9hlgTdB374dy
qGnFYDpaDWYPacV4vxX6v8uivEg32qtrRqk+9OwfCyYWu3hCS/w3TNr4UZdST3r6f2n7N1BLAwQU
AAIACADLKXVLZUajbxoFAAAuFwAAggAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGlj
eS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5LWFjdHVhbC50eHRVVAkAA60mFFqtJhRadXgL
AAEE9QEAAAQUAAAA7Vdtb9pIEP7eXzGiH5xKGPyKDVV0IgltcpcEAqRq1VTRxl7KXhybepcELsp/
v/EL2OEg2eMuvatU8iG8zDz7zMwzM+v97umge9yBk85g0H7facFwTIFH09ijEDAuYBTFsB+FgoYC
BtSbxkzMoRcFzJuDz2LqCXZLQeFezCZC5bGngIfmhIUcSAgsvCUB83PIFihKGIUeVf3pzUQlXBV0
JhSlBkcC7lgQwBUF9jWMYurXXu2v47aJS4kBvh8Tw26o7V+/nd/yj9PD0cnpx/axt9f78I2y367f
Xbvd49vQPHeu+WGvfnbW1HYVWMsM7ggHnwYYJHLCcCCmkygWahQGc7iJfFqFq6kAP6IcwkgAn1CP
jeZAQMktkabyFgRyn2RU00DHBNMWRkBHI8xhDXoBJZwCZWgYA/H9FYQi2VXAkuSUyrC3jKQflTxF
6iJFapYiBcaU+DTekNj/a9EDFlKwWvC5nyYDupj4L9CnoynHggjM4AwZCor5yvggnEfwR2CCY5r5
uJq+SymkuVOmIScjqrIwwVaK2pHJhJI4KXKSx5KgipijUfrbhuQ8Qf/HIqybPxDjnyPr58j6L4se
kHkSv4Adraq9Ac7+oOBq2qyhaa8A2yjECD4werfBZJO7oTeX7ntB5F3D/eHw5Phho+nSOPLncL/X
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
Pi7LKhOl16xDkTDyPnkB9XPtN8M+haKkoVZ7cFFHm+YgWUjxBhdUxJw42OsU29C0L18e+OSD54ak
hQp4rFW1J8C93xlgJk4b2EA2ATfjALvga49drpNZB2Do7QJgJ/ETXO0PDw++rJddSIfuDK52urvv
MuFWVW/k0s1Wfaq3rUx6Cb23DJ0IG9pcdi49RHfA1aPEK8sL9JY5nVPJXokURHFQCF56LjZ0lLRB
uW5rUFZxfEwxNLPzMOZPckTzK8us9jLbHo1E9/Q3zAG4erHX3z7sLJM2tWRhHd6fhhEusOGxMZli
UnAm4JGWvp58KNu0KmL1ZmtqtRtlsWuCb2LMdEu7CTQRWwN6TUKsXLU+NVr5MgP9Z7W05WUyUTeX
o35j9M0k+qt2bWWd/p0+0u5nqnXTqOrWXPv0NpyNOWmjaciRNhascUnCWmKqkLLCaOpV825W1Beu
b9flrKgXvm/jsUZZO/XIBaBtVq27UW8sKsa0pk0Z6o2CumHOqc+nMkUCoLUAQJ0I8FdMDjJ6da1I
nYaGiuW2TCloo9RJWwh97T4rFdJWs6rfMR31Uj425fJRLydkEw1YNdVK5mIDm8EdiS+y0TSxHcgx
L+WjbpSYJ5O3VOyKfMStBwFuOa0rUk1roaOZqCjNelLLi/RCx+D6uwyIUorq91YiRuM+SsRo3nHf
aS1KpN6Q3HiKPME1aMA3ZyQ51nWrarTvxtrUivkGp0ypdm0Wqac3k359dVI6yJ3gSe6kOMrJBNIs
khFZICDmHMKcfLc+bt5fkprlzU1fmaRSMEWqGEZS70VmnyjVk8URNXVbemdxTFWkhocCvp7ALw5V
KeD6Y6gUeGnAMrS01+BxKyW54lBcViiFXoqd1UZ0ZJliL52m1xgipaJRmhCThL/NIVxKQetPNXNL
+07N3DLurU6scgnqNzTzNL5z3VLopSpsWqUOkyKV/pI4yf+TUG5xJtaw4/4BUEsDBBQAAgAIAMsp
dUsSmlfGoAIAAJYHAACEABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1h
bGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQJAAOtJhRarSYUWnV4CwABBPUB
AAAEFAAAAO1US2/aQBC+8yumXHxhsUnUJnVKK0qd0jYJDjZVeoqW9TisMF5nd02Covz3DthAGiXK
papyqEHyPmZmv8es+8OzaHgSwGkQRb2vgQ/xFKGvcou5hQhFqaVdQqgyKZbgGKFlYZnRgsZTvvf2
Het9vx4vzEU5SE/PLnon4nP48xrlj9nx7HB4ssj3xwczMwjd8/P3XtcBJ1e5QJaU84JxwyzeWseB
G24gwUwuUGMCMgeNhdKWqTxbwlwl2IJJaSFRaCBXFkyBQqZL4ODUkQTTOQJL2IsK6o3MMpjyBVIC
YJqisG0IM+QGASUFauBJ8qgCJFJTIOFogdIbSA/LLiRfT51aIraRiFUSOTBFnqBuN/qPhc1kjtDZ
92GEaWmIpyVgt5RukWBUysIEBadNkNYQejNtrUdr0daQnDI3PEUm81U5ZycJLwrkeqXdCt4Dn7aU
QKXrvWfMfQLx/1b4O60Q9qKI6iVrwBvLK/3aDXpY/TSONZ+jD86HN4ylq3HI7RRcdzv3GPtIf2eX
0o/CWiJ6CSSQib9yMg7O4sv4V0g2UmsQHm6lyl1hClaFNwZxHF4OhlHsQ2fvoO3Rr+Mfep5X7YyC
42AUjHyYWlv4rvtnjGtqsq6o2G/IV9zdTrvjVgxXXcwmmRIzTNhkyTK84mLJME+VFrRUqcl4njCe
ZeqmiqqdqDbbxbRojILzcRDFl6dBPBh+8SEk5NvF8eibDy9h0mhUSWca11Az1Eesan+yaGz331Pq
drtrGvClF/eAZo275s6gpn/XTJQo56veIiBNv/k6rGi2mhpT1Bo1YaLZQqqMW4re3hlaf/h9eOKm
U1p1FSn6mTwKUVpeyZxn9ekvlz2C3R2GdvvVeU6cNkUqS2nBWG5LwwR93Jr+nufd3zd+A1BLAwQU
AAIACADLKXVLfVrX94oOAABCaAAAiAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGlj
eS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZmLmh0bWxVVAkAA60mFFqt
JhRadXgLAAEE9QEAAAQUAAAA7V35c9NIFv6dv6KX1JKZKcvW6SskUyFxltkBkknCHDVMUW2pHYvI
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
9etXb9K/f1W9MTobOLSv3l3p3+efIMl9sH/882mD/6+D/g9QSwMEFAACAAgAyyl1Szbz/UkWAgAA
BAYAAIMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2Ny
aXB0aGFzaC1ibG9ja2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWFsbG93ZWQtYnkt
cmVwb3J0LXBvbGljeTItYWN0dWFsLnR4dFVUCQADrSYUWq0mFFp1eAsAAQT1AQAABBQAAADVk11P
2zAUhu/5Fa/YhTep6dKyQum0i9J1K1uhgQJimnZh4pPVarCD7fRjaP99Tlooq8iu2Z0tPz56z3Ps
3uh0PBr2cdIfj7uf+x1cTAhW5yYmpNI6JNqgp5Uj5TCmODfSLRHpVMZLCGkodnJGYDY2MnOBNTFD
7HEulQVXkGrGUynWJTtgTGkVUyDy2yzgNnC0cIzVcewwl2mKG4L8qbQhUd/pPZetKsuTBH494c3W
ftD9cnc5s9f5IDk5ve4O46Po6o7k1+mnaXs0nKm9y4OpHURvz84Oww8MzybDnFsISn2TPpNvB4Yy
bVygVbrErRZUw03uIDRZKO1gM4plsgQHW5M+JnsP57Nnq6hloxPutSkNShLvsI4oJW4JJD1owIXY
qrCRXYMfyTrS07IzycstWysKHhQFK0UME+KCTIXYlzr0VCpCq4Pv56UMjLz4HzinJLd+IM4bXPiE
jryvVR5fLub+ENJZr9lOauWqjFC6Y7myPKFAqqI228yOZxlxUwy58PjkQW161kl5ViHnH/H/r8CN
5stNnPJl8UMcXoe18A2s/EVoh+FiPwx34FMr/8avJM0rkKrrrebj7aNUx1PcDy5Ohr+ryEdWiyXu
j0Yfv63Qdq2xv2YP2u8WzbBktypH22X/Qh/gC/9NcP+q+C3bfKO9t2gcPvJAAcHkasPNpXCTAuxg
N+qOx96wKEfwMMyV/Pruzh9QSwMEFAACAAgAyyl1S3jdfO24AgAA9QcAAIEAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5
LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWFsbG93ZWQtYnktcmVwb3J0LXBvbGljeTItZGlm
Zi50eHRVVAkAA60mFFqtJhRadXgLAAEE9QEAAAQUAAAA3ZRbc9owEIXf+RU77YPbAWGb3AidzgAJ
bdqQQEJunU4fhLXEGoTkWDLgZvrfK18oKQ15zvTJFx0df3tWa0IIuDdKJDPU7jE11O3djtxbHJ9y
U166CRfMvUSBVCPhUagkaj5LBDUqdgVNVWKIQW1IjDoRRruhMZGbvdGuxiCJuUndQEmD0ozK56ES
PEhdv+67Ooh5ZEKqQzIWKpgiI+OUCLynQUpQTlQc2FdRvoFQyQgVQi0KVYyRik252CC4jDAwyOpm
aSrVavU/Ko0GJqEiL6zdBuLXdqDq1/xdaLcr1aPB+WjQ78FZbzTqfO614CpE0Cqx9iC4NmC/BEcF
Jqw4oQAFxmMbGp8jOAUv0XHgQFYV5VIDlcDlnArOSssWOI5UMkDCkllEqLYRLY3j1OGLgQUXAsYI
/F6q2HaiAs/CbYN5gmDvQ9rY2yedrw/Xc32XnEzOzu86/aA7vHlAfjr9NG0O+nO5c30w1SdD9+Li
0PvowLNosKAaGApbpYWy9UAZr5IihZliWINxYoAp1CCVAW0PEp+kQMEplRbT+QDGshctKSoNqc1N
KsDJxIZYh2F+lAC5FcZAGdtwWKddA9uTEump7ZzT/NEpIyKriEgRkQMhUoZx/XW3/V84wSXCXgu+
X+ZxwMBG/wMucZJo2xJjM1xaRIM2sQLI+gXULgI3GrIhquV3OUOenpNITSd2cGXm7ay7R6MIaZy1
OUvyyZFaF60m+dqWdF7if63E8Dyx33i9yGTYGY2snuWGK7TCyrbA/oCzITLwzqt570HznwhNz1vu
e16lCrYqaefghuNim2abwV5jvb+b/Zjh8eTqrP9rq/SPWLEUHruD42+Ftlnz90vxQXN32fAK8Yb3
cNP4b+1KfWXHCR7fZlO1ucFv7iz9w/UGgEwFcSLXwgVnJsyULXjzUq5vKr8BUEsDBBQAAgAIAMsp
dUsQtIWjTgEAACgCAACFABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1h
bGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWV4cGVjdGVkLnR4dFVUCQADrSYUWq0mFFp1eAsAAQT1
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
CKikQeHkFkHXe9tKK4fKQUGpjXQ7yHQrxS70Vs/if62Is2VRkHu1j3ePbIwUerTYtLxjw68xgeDT
G8bq4Zxx10AUPcgxY5/pDx6vrIoMzNg2goMEp0qGEpXpeXlZ/sioPsSAcHAntYqE7djo7p2UZXZ5
si7KBGaH78OYvlnyIY7j0ZKnx2me5gk0znVJFP3tE9mJZCRG1vekR87RLJxFI8Oh2GzTavEbK7bZ
sRavuNgxVLU2glTd/gLjqnrqNWKcjGHXdF6efr9Ii/LyLC1P1kcJZIT8QXmRf0vgJUwGre4pp40s
3+KUYoj9xaF1i/9PabFY7GnA0bJcAknerf/YID+59Sst+muCwgiIn/ivoxX+gW+wRmPQECaStlK3
3JH3w0iQ/smkBLbhh2/fsfl8w6s6jqsX9/kigGA/nKzqrzvGLXN44wJKhnU95ngmG7loI6+k4u2E
+V+B+TgN3tAcCMNX976oEvfm8fmQwjruesuErqhqh3F8d+f9AVBLAwQUAAIACADLKXVLRR/UbxMO
AABGZwAAiAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9z
Y3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1i
eS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZmLmh0bWxVVAkAA64mFFquJhRadXgLAAEE9QEAAAQU
AAAA7V37c9PGFv6dv2IvmQttx7L19iMkHUic0rmF5MZpO53SYdbWOhbIlivJiQ2X//2efellyXaQ
UwWGMMS2drV7Ht8539nVGp5Noql3/OjZhGAHXqYkwmg0wUFIoqOni2isdJ7C5TBaeeT4Uc9zZ+8b
qHfjhm5EHPTxEYKfiCwjxSEjP8CR6896aObPyCFrGvqBQwJl6EeRP+0hbb5EDrwnzuGjT4/4cGKQ
ke/5QQ8dqEaXtTXPXI+cuuOxaB/i0fvrwF/MHEV2HXfon/REfIbQ91wHHTiOw9vG/ixSxnjqeqse
mvozP5zjkRBwioNrF0TWyBSp/NLcB+WYHgHxQKMbwgSaaDlJDcMoGD/Es1AJSeCOU42h+4GwOdKT
Kh4ZRz2kNi153XHDuYdhEHcGlhES3rpONIGbVfXfQj7sOO7sOr6TyyZcQ99lvSPEdWcTECqKu0/8
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
pV12e/hTv+btKprrqY2cToHmJQ+06tS3UynxdtoN7aGwf3cPmVdL0X+7Xvo31SpITPN/WyKx6BBL
7Qg0tWrUb8Nq6GEg0NT3gcCY/A0D1kP1QtCoAsEU/Wt6HoL0ZFL90KtS3WgJ/RtqXGLf8bBV/Saw
Kq15YxO0YwukDonUr12VOkZP2BxCUar3OQdf6rdDlapGN7/ges6stKdjf3H1nNmtWs/p7YfBptY+
dnP0TlzPmXa99ZxVZTtHT8gGFJFIXDuPWjv8rGr7OKbV0LsPBH772Mgx1OT5qbo0jFrxV6XYMRKm
19rxXs7HN/lTxm/kMeM3uXPG9SOzSqFjJKUAOFKqD4wv9X3zFW3+WFWKJuNLLhasKmWSkd7u1MqL
hfq1rFISGQkR6Xpc8ycFkAiExpvs2f1cnOR6xef367dNt9Izl9SmS4yA+KBwzgYlB/prN4FdZd/J
TK+ZutIEd/6SQv1GqPTsLZUDk52PTQe+c/GQfH2kfkPoVQyRpERdtXcPiJw54q/F1G+NKhtiZqqG
b1vZ1Pml5IYqNaSlfiW5oUolaaXOiSS7hrt+J6t+3avUhlbqoUQnDoCNXzOrX+EqJaFlfzU7iHaV
otHqfMGLArtb6QhESnNtlx3EHPfJrrWboV2lLLT1IupbXz/nlE99efNN+tub9RtD28NXVdT1/a27
/NtJuRf2D2A+a/H/Puf/UEsDBBQAAgAIAMspdUvZ+eh9kwQAAEYWAACDABwAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1s
ZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWFjdHVh
bC50eHRVVAkAA60mFFqtJhRadXgLAAEE9QEAAAQUAAAA7Vdtb9pIEP7eXzGiH0gkDOtdvwCn6JQX
2kRqAgfuSVVTRYu9BN+5tmUvCVyU/35jG7DDQbLlLpUiHfkQXmaefWbmmZn1af9q1P/Ug8veaHT8
sdcFZyogjWaJKyDwUwmTKIHTKJQilDAS7izx5QIGUeC7C/D8RLjSvxNQT93Ej6WWJm4dXDTnfpgC
D8EP73jge0vILtTrYRS6QvNm32ONp5oUc1mvN+FCwr0fBDAW4N+GUSK85rvTt8Qt8EMBZhe+DkUc
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
jRdiEUfxYpHg+8raqcVTqhkm0fUxdSeK4t76rZ/UYFthQWVsMlnp2KENRcLI++gF1F+Tvi8y36+X
YBodaDQeXo6hK/LxVQLhi5hTnsTECV10m6Yonz//39AcTg67VhYB5fBYqStPIPb+YICLcm7ibnoM
WKICl0WvPfZpl8wuAE1tlwDnaRBheTm8evF5t2whHboLWJ53L96uhFt11VxLW63mXG0bK+kN9N4m
dCqsKblsLj1Ed8DyUeqVzQlqS5/nVFafVAqiJCgFP3kuVjeUtEHaVyelbRwfUwzN4jpM4idrRP0L
y4z2JtsejXh3/BvmACyfP+ufXXU2SetKOrEJ78ZhhBNseKzN5pgUMePwSMk+T95XbdoWsabVmpuG
WRXbE3wdY6Yaym2gqdgO0D0JsXXW7tRoradp6D+zqWxOE4m6vhn1W6Ovp9Hf1sJIu/Sf95F2f6Va
1bW6auTa53fhrOWkNUsTI60VrHFKylqgxRKyQrPUun6YFc3C9e2mmBXN0vdt7JylnS2gWADaet04
jLpZrBjdmFsi1M2Suqbn1PMWVRIAaBUAqBMB/okmSkSvqpSpYyqoWKygC0FrlXhaX0Jv6QLEYmrW
1QPzUa0kpCWWkGpzw4JtLb448QOzUS3SUddxPxBjXklIVaswT48hQsErExJrDwLc8egiCe1ahQ4r
VVFpRYWml/mFjsH5h/SvQoqa97ZGNPNe1ohmHVh5WsUaaZqCpadMFJyDFvzlwCjGumnUtfZhrHWl
7HCUua6L0NbL3FOtdMdejiqn2hEea0fluVYkknqZjcgCATHpEGb01XZy/f6yVK+WN3VrlgrBlKmi
Zc1VJbVHUn1UnNczv2VvijO7JNQ/VBZTSrM4V2WAW07XQqjVbaaNqHc6kgtpqEQu26y3ne0yd5S3
CkK4Zdg0xdzjjwy7uI4Qgq6sessoQvl3/Gwo9+1no9ImZzXttusSIdBKj9BKPbH3ikUI0fxKdc1o
3duOYVbaSku5ra5l+ZdLCMFrG+mXb7YZUuXyaLS+PZLucEGgYPH5E1BLAwQUAAIACADLKXVLyHuv
GRUCAAAUBgAAhQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tl
ZC1ieS1yZXBvcnQtcG9saWN5Mi1leHBlY3RlZC50eHRVVAkAA60mFFqtJhRadXgLAAEE9QEAAAQU
AAAAzVNLb5wwEL7zK6ZcuMTAbvoS7bZabUhTqclSIIeqqiKvGYJVYiPbrLKK8t87LOTRQ5RT1Rgk
ex6e+b4Zz2p9Vqy/pXCaFsXyS5pAKxXC7HUCP3PstHGwVu3uF+RY9xYrcBrwGkXvEDhYYWTnYIOC
kxGks9Bw2xzsT0orgQegDQS9srxGJtUQPIBK42B2wLsOuQGpwDU4RWPWCKikQeHkFkHXe9tKK4fK
QUGpjXQ7yHQrxS70Vk/if6mIs2VRkHu1j3eHbIwUerTYtLxjw68wgeDjK8bq4Zxx10AU3csxY5/o
Dx6urIoMzNg2goMEp0qGEpXpWXlR/sioPsSAcHAntYqE7djo7p2UZXZxsi7KBGbzd2FM3yx5H8fx
aMnT4zRP8wQa57okiv72iexEMhIj6zvSI+doFs6ikeFQbLZptfiNFdvsWIuXXOwYqlobQapuf4Fx
VT32GjFOxnnYNZ2Xp9/P06K8OE3Lk/VRAhlBv1ee518TeA6UQat7Smojy7c45Rhif3Zo3eI/cFos
FnsecLQsl0CSd+M/tMhPbvxKi/6KsDBC4if+C2mGf+AbrNEYNASKpK3ULXfkfj8VpH80LIFt+PzN
W3Z4uOFVHcfVs/vhIoBgP5+s6q86xi1zeO0CSoZ1PeZ4Ihu5aCMvpeLtBPpfgfkwzd7QHQjDl/fC
qBR39vEBkcI67nrLhK6obPM4vr31/gBQSwMEFAACAAgAyyl1SwJ4fXYPDgAAT2cAAIkAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9j
a2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGlj
eTItcHJldHR5LWRpZmYuaHRtbFVUCQADriYUWq4mFFp1eAsAAQT1AQAABBQAAADtXftz08YW/p2/
Yi+ZC23HsvX0KyQdSJzSuYXkxmk7ndJh1tYqFsiWK8mJDZf//Z596WXJdpBTBYYwxLZ2tXse3znf
2dUank2iqXf86NmEYBtepiTCaDzBQUiio6eLyFG6T+FyGK08cvyo77mz9w3Uv3FDNyI2+vgIwU9E
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
tEGH/ezknn09PK6O0o7dSb7ajf0LfYAXzTfH+rD97bt8Nkyr7HTLAy2EULrf3MpozltwhIO3ZxfT
pmHdPcHDY27KHxz0fgFQSwMEFAACAAgAzCl1S7CIEvkvAgAAiQgAAHoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1l
bmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeS1kaWZmLnR4dFVUCQAD
ryYUWrAmFFp1eAsAAQT1AQAABBQAAADdVVFv0zAQfu+vOI2HgFo3yTRG6VO7rcBER6um2oQQD25y
JRauHezLmlDx33GSdoVK5ZVtT3F8n7/7vrNPxxgD/1bLfIXWv+LE/dFd5N/h4qOg7eciFzLxZyiR
W2QiS7VCK1a55KSNL3mpc2KElphBm0uyfkqU+dWO9S3GuRFU+rFWhIqi7f9USxGXftgNfRsbkZHS
KkbGpdRrTNiiZKiW2sRundVQxpXbljr+3oQNZtrQLohFhjFh0qWCWu12+zl44jHlXNaOBgNgIbTD
TngOg0GLTYdRBIlIAAuXmxCafN1W+3LyKZqMR3AziqLh+1Ef5qmL6txlBSksgRMAl41u2AmHRrlj
NK6K4h7BawiZNbEHlU0ulAWuQKh7Ll3ihrIPnteYTPLVqvS8LlwTrIWUsEAQ35Q27k7+q6qMcetu
sqBHJ45STkxYpjQx/OGumpF+VnWUQiGc9eHLrH7XMFGy/AozXOYWEyD98Hr59v06vpi7IAiykHKb
dupVraEDzpqXK8uXrmFVxe1BorEKE/AsQ26cfqB01w2VvT9M62UdO1Kdf+l/YorD8ImXvDLwaCW7
2YAGOMHLoBO8Ait+IvSCoDgPglYbnG6VoLkVuD6GOUbw+nR//qKaCbD5ML8Z/zoKfQDrpITNxeTq
c4PtuSmxBb/pnRWnQQM+4J4eEv+N3aHnruNh86Jq/MMDYS8owrf7AwAVCkyu9sC1SCitkH04eTe8
HtdDq7qKg8F10voNUEsDBAoAAgAAAMwpdUtvKUXrGQAAABkAAAB+ABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktZW5m
b3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQJ
AAOvJhRaryYUWnV4CwABBPUBAAAEFAAAAFBBU1MgZGlkIGV4ZWN1dGUgc2NyaXB0LgpQSwMEFAAC
AAgAzCl1S/RpaB40CQAALCcAAIIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJs
b2NrZWQtYnktcmVwb3J0LXBvbGljeS1wcmV0dHktZGlmZi5odG1sVVQJAAOwJhRasCYUWnV4CwAB
BPUBAAAEFAAAAO1aa2/bRhb97l8xiLF1tzApypIcPRwvEj+2RZMmiIIWi8ViMSSH5sQkh+EMbSlp
//veeVEkRUpOsVh7gcSISc7z3nMf584kZ7FIk/ODs5jgEB4pERgFMS44ES+OShE50yNo5mKdkPOD
eUKz22M0v6OcChKiLwcI/giyEk5IAlZgQVk2RxnLyEJ1+awISeH4TAiWztEwX6EQ3km4OPjjQC9n
FglYwoo5OvRGM9XnXtOEXNIoMv0+Dm5vClZmoWOHRlP5U99I78BZQkN0GIah7otYJpwIpzRZz1HK
MsZzHBgBU1zcUBB5SFLk6aacgXJKj4IkoNEdUQLFw5ako9GoY32OM+5wUtCo1snpZ6L2qG/qJCQS
c+S5E9seUp4nGBahGSBjJLynoYhhsuf9xciHw5BmN9VMLZsxjXxrWseIS7MYhBLV8JjdkaKl0WQy
WfSBTYiGwZU2eQ17cTM5ShgGNQp6E4um5eSoC1Afgy52KwbQUwEqei2VBfYT4gQkSRpaOmrdBkr3
MWjnKBtKV7svcL6RbEkCabtep1GTmy7TdhfjsxZ3cCgvX+kdrlY5mBfWB9XIMXLlo61hr3ichsRf
y99IifoqYcHtO1wIF1SdR7TgwglimoS9wMrtljD/eNdiBUnBtMd79jN7WPi1wzm+HNJwu4n1OvAW
QQOcODihNxAbgnWoVRDp6T/iLEyIhcOsIyGU3zHRBt34c1AWXJpGit2OQOyDdUprMdizchwdPEq8
XVI0/HzbHW4Ksl60HNOd7LOXhhi5gu2F2Y0KlrbANvlR7iFR/6VMfVKAN5G6d+lWK/h2GjVeO5s1
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
Y2UtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGlj
eTItYWN0dWFsLnR4dFVUCQADryYUWq8mFFp1eAsAAQT1AQAABBQAAADdk8FuEzEURff5iquyGJDi
aBLRNmTXhgCVUlI1ERJCLIz9wli49mC/aWaI+Hc8SZtCpLClZWfpHV+ddy2PZ+/ns+kEl5P5/Ozt
ZIRFQYi+CopgTWQsfcDYOybHmJOqguEGV94a1UCbQIrNLSGLKpiSRQwqg0q4NC5COhh3K63Rd5Ej
ZJnzTpHgQrIwUTjPgr5X0gr2Qlc3N02W9XDBWBlr8YVgvjofSPc6439kmqRKIaNgqvkRuv0nhVnj
CMcjfLqm0gfGzNnmM65pWUXSYA+qkyETJLY+KU7JNIThiELGors5bRS6SJtllYtyScK4NjuD9tSO
GbIsSYakD24L2W33285+uZkdKOcv+k9LuD942oW3/o/V2MqGAiTjed7NXyCaH4Rhntcned5Bsnaa
wgdDqwPIoevHg93tc+vVN6zfLS6nPw+RO9brBuvz2euPW3TY7Z/csafDl/Ug37B7yVf7sX+g9/Ai
fXOsn7W/fZ/vD/O6/2rHAy2EULkHbmU0Fy04wtGbs4tpalhvnuD+Mbfl9446vwBQSwMEFAACAAgA
zCl1S/3qKvkzAgAAiwgAAHsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2Nr
ZWQtYnktcmVwb3J0LXBvbGljeTItZGlmZi50eHRVVAkAA68mFFqvJhRadXgLAAEE9QEAAAQUAAAA
3VXfb9MwEH7vX3EaDwG1bpKKjdKn7keBiY1OTbUJIR7c5EosXDvY5zVh4n/HSdoNKpVXtj3F8X3+
7vvOPh1jDMJrLd0KbXjGiYeTmyS8wcVHQZvPiRMyC2cokVtkosi1QitWTnLSJpS80o4YoSVm0DpJ
NsyJirDesaHF1BlBVZhqRago2fxfaSnSKoz7cWhTIwpSWqXIuJR6jRlbVAzVUpvUr4sGyrjy21Kn
39uwwUIb2gQHDMsCU8KsTyV1ut3uszDFU3JcNpbGY2AxdONefATjcYddHScJZCIDLH1yQmgT9jvd
0+mnZHoxgctJkhy/n4xgnvuodj4tSGEJvAI4bYXDVjm00j2j8WUUtwhBS8isSQOofXKhLHAFQt1y
6RO3lCMIgtYl5ZyYsExpYvjD62akWeZWqyoI+nBOsBZSwgJBfFPa+Jv6f1K9qoJx6++3pMco7tmU
TAqFcDiCL7PmYcNUyeorzHDpLGZA+v718s379Xwp90EQZCHnNu81q0ZDD7y1wCnLl75jVc0dQKax
DhPwokBuvH6gfNsNtb0/TOtlE9tTnX/pf2KK48ETL3lt4NFK9sMBDXCCl1EvegVW/EQYRlF5FEWd
LnjdKkNzLXC9D7OP4HDwcP6kHgpw92F+efFrL/QerLMK7k6mZ59b7NBPiQ34zfB1OYha8A731S7x
39gteu47Hu5e1I2/eyAeRmX89uEAQI0C49QDcC0yymvkCA7eHZ9fNEOrvoqdwXXQ+Q1QSwMECgAC
AAAAzCl1S28pResZAAAAGQAAAH8AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJs
b2NrZWQtYnktcmVwb3J0LXBvbGljeTItZXhwZWN0ZWQudHh0VVQJAAOvJhRaryYUWnV4CwABBPUB
AAAEFAAAAFBBU1MgZGlkIGV4ZWN1dGUgc2NyaXB0LgpQSwMEFAACAAgAzCl1S9gQOv86CQAALScA
AIMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0
bm9uY2UtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBv
bGljeTItcHJldHR5LWRpZmYuaHRtbFVUCQADryYUWq8mFFp1eAsAAQT1AQAABBQAAADtWvtv3DYS
/t1/BRHj6l5habXrXWcfjg+JH9eiSRNkgxaHw+FASdSKsSQqImXvJu3/fsOXVtJKa6c4nH1AGjQr
iUNy5ptvHmR7Fos0OT84iwkO4SclAqMgxgUn4sVRKSJnegSfudgk5PxgntDs5hjNbymngoToywGC
fwRZCyckASuwoCybo4xlZKGGfFaEpHB8JgRL52iYr1EIzyRcHPxxoJcziwQsYcUcHXonMzXmXtOE
XNIoMuM+Dm5WBSuz0LGi0VT+qW+kd+AsoSE6DMNQj0UsE06EU5ps5ihlGeM5DoyCKS5WFFQekhR5
+lPOwDhlR0ESsOiWKIXiYUvTk5OTjvU5zrjDSUGj2iCnn4nao76pk5BIzJHnTuz3kPI8wbAIzQAZ
o+EdDUUMkz3vL0Y/HIY0W1UztW7GNfKp6R2jLs1iUEpU4jG7JUXLoslksugDmxANgyt98hr24mZy
lDAMZhR0FYum56TUBZiPwRa7FQPoqQATvZbJAvsJcQKSJA0rHbVuA6W7GKxzlA8l1e4KnG81W5JA
+q6XNGpykzJtuhjOWtyBUF6+1jtcrXNwL6wPppFj5MqftoW96nEaEn8j/0ZK1VcJC27e4UK4YOo8
ogUXThDTJOwFVm63hPnH+xYrSAquPb5nP7OHhV8TzvGlSIN2E8s6YIugAU4cnNAVxIZgHWYVRDL9
R5yFCbFwmHUkhPI9JtqhWz4HZcGla6Ta7QjEPnintB6DPSvi6OBR6u3TosHzXTqsCrJZtIjpTu7z
l4YYuYLdC7MbFSxtgW3yo9xDov5LmfqkADaROrv0V6v4bho1rJ3NGgnQhktXGrSRPB6PO9NN3ftV
jpELTXQI6DCoEr7hgaFnF0W0ug06nZiEVTNcmdiZcHSR6IVlT5LKCxmdUk0DoM0mhjXWkEaswiRH
R6saAjzVK9hREHzjyA9aIZriFWl4Zo5GFeB+giWKUjCA1AA6gCrmCbXt3nplOp715t6IRNsEIGkF
K1blsRbNHVPDKGxOBWfzfvEZmS321fRqJZNl6nqYqOgv12G4swAKSdI/g8zu1WbwA1qWec4KAZW2
MEwGUNOUZIKjHwawHy5FzDTeuhrLZgZYL4CngfWUmqBkeup/JSOVwUAJJWzT2akltkw3OEkurAad
0iNdy1K8dlrlPYW+wHwaeVXdaW8NuO/dp4rsKqQb23Tp6bKc6LLp3BH/hgpHFDLsNBJaceSO+KJm
xtgYfcgFFiV/VfpQw6t66Mro6VRHThGMJT4umuN26yghKkK3Ayn7XH2tktOJjmPTR8lH2y3I5/6W
sC9z7G3ltrSI6JrodUw+9pomuVj1IDrMdqv4HYVcULSoVq352aFZSNaQpPaYti2ENRW67DLJqFHe
piaLZVJNE7CdpQn289n6XkVPt4oONYltEdJvSlnzXFUw81opXHVmja1pVOBUa9iKk2YbUYuRi55M
u4vNBnpNdmdqPUmgcYSe+QGF6XR2vaWXqck9gwqI5ljVRoa77XGzOTZraPh2OdzbEoQ2z+ptXtqk
YI86Xn30g62RrTPJ6XOb0HbV3BMktdMOT7Hu5es5N2MFfF70ZBljv2zBeNfm2g4b116XSIJ9ksxx
BBF2vDNdf1eLqIKcganP0O/o2eKgKsS18t2enWDo0FnkiE1OOpd61quREWwdcWOSqARZNaNYNqM9
NeowJZzbxqMX5y631KJjqRL1Q0ohlBhoiG4pK/lF9QWa2c8ku6gVy646b1uOdompFxeZy4G1igk2
t5t3w0STRE5sDXyQNoYa0OMQIWOiUS5M29fT9NXrrF9CVGX1vGPre0hv5xELDIasFDJf1MPPT0pV
ScwQ8CUCXaCCDa0h9WKpVoEe5kNM9E4DU2lXoL+0QTAkYMzX0oZqHN1SLHOyeGM4Acr6BbsDh0Mn
EGOYa5oiKlzZBFV2jE9NF1+1IubdZgfZyMp/vWYRtVc67R4/pSGcsrRh0kHcHr47Kgr0YYzjW8Ae
ECCtulI/6e2UOmfonuiWaXv5Yat/hw8OLy8vayF9OL2+vJ5cd+YnaC67WXx1ddWl9ZykOWSohvNN
m9aSdOERNG1E/tVs6k1N3goSgot/q/bAHgXkF3VsiqXI2cDcup3xoKA5+LQIXjyLhcj5fDDAH/Ha
XTG2gkk55ZK66tsgoT4ffPxUkmIzGLpjd2ReXGgt3Y/82Tmsq9Y7R82VAxYSR/qQ3IHc38DT0pkv
xtPaFFDKXBT6LNzAD8QD6I05f3FkTwLyvjAeng9+BX9CzhpcYoEHV78tB78R/2cqzM+rkibh4D3U
XcyJQ/MYaMJpWkLHzYoBMAfgdQSBjAvH+TIRfCAtH8gvfMBJUBZQKQYmIJbm/R24P5BmD43CQL6A
AFeh0JPQ8TcOyeCYEMBzrkQdKIH63KuHCyKjxgyOHOiQSpy4Yi3A7mHT3Npt09HuiLoF6PsubweQ
PgC1ROTRCDVvlbZykLIyK6iuFba9ytH5EHwE4+cNKcgedZnvMp/ni05BaAOOzt+9XC4hcENE1gAo
hKgG0TUzwPmgqv3ptwxC9H6zjNBem/boyx5gvLLp4u0vy7evr9Cbq+Xy5d+v5irVclYCCWAJro+N
F5pGyPIIaSIBFgXRTfJ3h1C0NRwORIt6VekYy/M0bEqzWyxzj156rieovzQHZVZ2KHcyJhzyCVgF
jZ0Tlmm62Uq66CcBiTpJkE8QpFdWkHAH/P8hrKOnDysgmDuYO1Krpwvkyf8FkE+ZiuNvVPzvADn5
CiDVXdpkjv75XpVF9DZLNv9C70lUcjgqw8K2TmBTKcDGAMMgtJ0cxZjHx+pJ4XOMwA0KkjLjOIKa
r+7qNM4hI1IMakeeQxMEWKu2d+uOmqNYpMZ6PPqY2J7+CWy/odmH5vOvRXM4+kbVh4I7/TPgfoOz
D85ZP5xwlJG7CfS9d+z9FcnDJ5p63vrU8x5R4aHXrzECR2dw6v8VToJPT/Hh10M9GT2mwqP7kVZn
J/Tlxw9vXv/x5PQ/2ad/ZQELN+jLq7eX/9AGTI+Hp8aC59PxevSolBnvt6DlhXdtFzy+AZP7DLAm
6Ov8QznUtmI49dbD2WNacXq/Ffo/9aKizLbaq5tLqT603J9KJhbXL396ra4pZNloXVVoiXsvLGqX
b0fnZrguu/1R91xnA/1/yf0HUEsDBBQAAgAIAMwpdUv3pHwalAEAAKoGAACDABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQt
YnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LWFj
dHVhbC50eHRVVAkAA7AmFFqwJhRadXgLAAEE9QEAAAQUAAAA3ZPBbhMxFEX3+YqrshiQ4mimKiVk
14YAlVJSNRESQiyM/cJYuHaw3zQzRPw7nkkbIFLY0rKz9I6vzruWx7N389l0gsvJfH72ZjLCoiRE
XwVFsCYylj5g7B2TY8xJVcFwgytvjWqgTSDF5paQRRXMikUMKoNKuDQuQjoYdyut0XeRI2SZ806R
4FKyMFE4z4K+VdIK9kJXNzdNlg1wwVgba/GZYL44H0gPeuN/ZJqkVkJGwVTzA3T7TwqzxhFORvh4
TSsfGDNnm0+4pmUVSYM9qE6GTJDY+qQ4JdMQhiNKGct+d+oU+kibZZWLcknCuDY7g/bUjhlytSIZ
kj64LWS33W87+2U3O1DOX/Qfl3BRPO7CW/+HamxlQwGS8TTv588QzXfCMM/r0zzvIVk7TeG9ofUB
5ND158e72+fWq6/YvF1cTn8cInes1w0257NXH7bosF+c3rEvhif1cd6xe8lX+7F/oPfwIn1zbJ60
v32fL4Z5Xbzc8UALIVTuF7c2mssWHOHo9dnFNDWsuye4f8xt+YOj3k9QSwMEFAACAAgAzCl1S4lh
YeU2AgAAlwgAAIEAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9j
a2VkLWJ5LXJlcG9ydC1wb2xpY3ktZGlmZi50eHRVVAkAA7AmFFqwJhRadXgLAAEE9QEAAAQUAAAA
3VVRb9MwEH7vrziNh4BSN8k0RulT263AtI1WzbQJIR685LpYuHawL2vCxH/HSdoVKpVXtj3F8X33
+fvOPh1jDIJrLYsl2uCUEw8mN3Fwg7fngtafcSFkGsxRIrfIRJ5phVYsC8lJm0DyShfECC0xg7aQ
ZIOMKA/qHRtYTAojqAoSrQgVxev/mZYiqYKoFwU2MSInpVWCjEupV5iy24pJvONJxVAttEncVt5k
MK5cVOrke4symGtDmyCWOSaEaY9K6vi+/4Ks8YQKLhtjwyGwCPyoGx3DcNhhs1EcQypSwNJJIIT2
2F7HP5l+jqcXE7icxPHo42QAV5mL6sKdClJYAicATlr5sNEPrQHHaFwxxT2C1xIyaxIPardcKAtc
gVD3XLqDW8oBeF7rlTJOTFimNDH84XQz0iwtlsvK83pwRrASUsItgrhT2rj7+n9SnaqccetuuaSn
KO7FlEwKhXA0gK/z5l3DVMnqG8xxUVhMgfTj6+Xr9+v4Eu6CIMhCxm3WbVaNhi44a16hLF+4vlU1
twepxjpMwPMcuXH6gbJNN9T2/jCtF01sT3X+pf+ZKY6iZ17y2sCTlexGBBrgBK/DbvgGrPiJ0A/D
8jgMOz443SpFcy1wtQ+zj+Dt4TZ/XM8EePh0dXnxay/0EazTCh7G09MvLbbvpsQa/K5/VB6GLXiH
e7ZL/Dd2g75yHQ8Pr+rG302I+mEZvd8mANQoMIXaAlcipaxGDuDgw+jsohla9VXsDK6Dzm9QSwME
CgACAAAAzCl1S28pResZAAAAGQAAAIUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS8xLjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9s
aWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQJAAOwJhRasCYU
WnV4CwABBPUBAAAEFAAAAFBBU1MgZGlkIGV4ZWN1dGUgc2NyaXB0LgpQSwMEFAACAAgAzCl1S9zj
Q0o8CQAAMycAAIkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvc2NyaXB0bm9uY2UtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9j
a2VkLWJ5LXJlcG9ydC1wb2xpY3ktcHJldHR5LWRpZmYuaHRtbFVUCQADsCYUWrAmFFp1eAsAAQT1
AQAABBQAAADtWmtv20YW/e5fMYixdbcwKcqSHEl2vEj82BZNmiAKWiwWi8WQHIoTkxyGM7SlpP3v
e+dFkRQpOcVi7QUSIyY5z3vPPfcxk5zHIk0uDs5jgkN4pERgFMS44ES8OCpF5EyPoJmLdUIuDuYJ
zW6P0fyOcipIiL4cIPgjyEo4IQlYgQVl2RxlLCNnqstnRUgKx2dCsHSOhvkKhfBOwrODPw70cmaR
gCWsmKNDbzRTfe4NTcgVjSLT7+PgdlmwMgsdOzSayp/6RnoHzhIaosMwDHVfxDLhRDilyXqOUpYx
nuPACJjiYklB5CFJkaebcgbKKT0KkoBGd0QJFA9bko5Go471Oc64w0lBo1onp5+J2qO+qZOQSMyR
505se0h5nmBYhGaAjJHwnoYihsme9xcjHw5Dmi2rmVo2Yxr51rSOEZdmMQglquExuyNFS6PJZHLW
BzYhGgZX2uQ17MXN5ChhGNQo6DIWTcvJUZegPgZd7FYMoKcCVPRaKgvsJ8QJSJI0tHTUug2U7mPQ
zlE2lFS7L3C+kWxBAmm7XtKoyU3KtOliOGtxB0J5+UrvcL3KwbywPqhGjpErH20Ne8XjNCT+Wv5G
StRXCQtu3+FCuKDqPKIFF04Q0yTsBVZut4D5x7sWK0gKpj3es5/Zw8KvCef4ckiDdhPLOmCLoAFO
HJzQJfiGYB1qFUQy/UechQmxcJh1JITyOybaoBs+B2XBpWmk2G0PxD5Yp7QWgz0r4mjnUeLtkqLB
8206LAuyPmsR053ss5eGGLmC7YXZjQqWtsA28VHuIVH/pUx9UgCbSJ1dutUKvh1GDWtns0YAtO7S
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
aXB0bm9uY2UtYWxsb3dlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5
LXJlcG9ydC1wb2xpY3kyLWFjdHVhbC50eHRVVAkAA7AmFFqwJhRadXgLAAEE9QEAAAQUAAAA3ZPB
bhMxFEX3+YqrshiQ4mgS0TZk14YAlVJSNRESQiyM/cJYuPZgv2lmiPh3PEmbQqSwpWVn6R1fnXct
j2fv57PpBJeT+fzs7WSERUGIvgqKYE1kLH3A2Dsmx5iTqoLhBlfeGtVAm0CKzS0hiyqYkkUMKoNK
uDQuQjoYdyut0XeRI2SZ806R4EKyMFE4z4K+V9IK9kJXNzdNlvVwwVgZa/GFYL46H0j3OuN/ZJqk
SiGjYKr5Ebr9J4VZ4wjHI3y6ptIHxszZ5jOuaVlF0mAPqpMhEyS2PilOyTSE4YhCxqK7OW0Uukib
ZZWLcknCuDY7g/bUjhmyLEmGpA9uC9lt99vOfrmZHSjnL/pPS7g/eNqFt/6P1djKhgIk43nezV8g
mh+EYZ7XJ3neQbJ2msIHQ6sDyKHrx4Pd7XPr1Tes3y0upz8PkTvW6wbr89nrj1t02O2f3LGnw5f1
IN+we8lX+7F/oPfwIn1zrJ+1v32f7w/zuv9qxwMthFC5B25lNBctOMLRm7OLaWpYb57g/jG35feO
Or8AUEsDBBQAAgAIAMwpdUtagCMqOAIAAJkIAACCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9y
Y2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1kaWZmLnR4dFVUCQADsCYU
WrAmFFp1eAsAAQT1AQAABBQAAADdVVFv0zAQfu+vOI2HgFI3ScVG6VO7rcC0jVbNtAkhHtzkuli4
drAva8LEf8dJuhUqlVe2PcXxfff5+84+HWMMgmstixXa4JQTDyY3cXCDi3NBm89xIWQazFEit8hE
nmmFVqwKyUmbQPJKF8QILTGDtpBkg4woD+odG1hMCiOoChKtCBXFm/+ZliKpgqgXBTYxIielVYKM
S6nXmLJFxSTe8qRiqJbaJG4rbzIYVy4qdfK9RRnMtaFNsM+wzDEhTHtUUsf3/ZfkjSdUcNk4G42A
ReBH3egIRqMOm43jGFKRApZOAyG05/Y6/sn0czy9mMDlJI7HHydDuMpcVBfuWJDCEjgFcNLqhwcD
0DpwjMZVU9wheC0hsybxoLbLhbLAFQh1x6U7uKUcgue1ZinjxIRlShPDH043I83SYrWqPK8HZwRr
ISUsEMSt0sZd2P+T6lTljFt3zSU9RXEvpmRSKITDIXydNw8bpkpW32COy8JiCqQfXy/fvF/Hl3AX
BEEWMm6zbrNqNHTBWfMKZfnSNa6quT1INdZhAp7nyI3TD5Q9dENt7w/TetnE9lTnX/qfmeKo/8xL
Xht4spLdjEADnOB12A3fgBU/EQZhWB6FYccHp1ulaK4Frvdh9hEc9rf5x/VQgPtPV5cXv/ZCH8E6
reD+eHr6pcUO3JTYgN8N3pb9sAXvcM92if/GPqCvXMfD/au68XcTokFYRu+3CQA1CkyhtsC1SCmr
kUM4+DA+u2iGVn0VO4ProPMbUEsDBAoAAgAAAMwpdUtvKUXrGQAAABkAAACGABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQt
YnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1l
eHBlY3RlZC50eHRVVAkAA7AmFFqwJhRadXgLAAEE9QEAAAQUAAAAUEFTUyBkaWQgZXhlY3V0ZSBz
Y3JpcHQuClBLAwQUAAIACADMKXVLag1NXT4JAAA0JwAAigAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRub25jZS1hbGxvd2VkLWJ5LWxlZ2FjeS1l
bmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItcHJldHR5LWRpZmYu
aHRtbFVUCQADsCYUWrAmFFp1eAsAAQT1AQAABBQAAADtWmtv3MYV/a5fMbDQKA1ELvcl765kFbYe
TRA7NrxGgqIoiiE5XI5FcmjOUNq1k//eOy8uySVXclBUKmALFsl53nvuuY8Z+ywWaXJ+cBYTHMIj
JQKjIMYFJ+LFUSkiZ3YEzVxsEnJ+sEhodnOMFreUU0FC9OUAwR9B1sIJScAKLCjLFihjGTlVXT4r
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
LbrM9VPObidbD44h4W4ShNuInNu817w1Qj1w3Xilsjxzh1fVbB6kGutpAl4UyI2z3GzltqNnfboT
U8/tCGSn49F/5zgavGLL7ppBA5xgL+yF+2DFV4TjMKyGYdjxwflWKZobgatdmF0ER4Pt+pnUyRd4
PFtcnH/bCf0B1ukaHmeXp59b7HEvGm7Ab48Pq0HYgl9wX70k/hn7hF5gRfD4htzwy4KjYRWNtgsA
ahSYUm2BK5FSDgcjt6Pdv78HuzvFDkbRM7mh+0u7f35pdjvfAVBLAwQUAAIACADMKXVLFplWnYEA
AAChAAAATgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9z
Y3JpcHRub25jZS1hbGxvd2VkLWV4cGVjdGVkLnR4dFVUCQADsCYUWrAmFFp1eAsAAQT1AQAABBQA
AABNzTEOwjAQRNE+p5gSCoJISeeCAokCkVxgsddkpWgdeZ3A8XGoaKZ4xXx3uzyGM+6u77E7Hbt9
4/6l22QYxVDYSt2RwTGyL0gRhJUmCTCfZS4HTep5o4VbXAtmMmODRGiCT2ppYrwpq+gL9XIVk2cl
0vA7polzbVCujQ/7pXBomy9QSwMEFAACAAgAYCl1S5KahN1uAAAAcwAAAF4AHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy1zdGFyLXNlY3VyZS13
ZWJzb2NrZXQtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAPjJRRa4yUUWnV4CwABBPUBAAAEFAAAADMy
MDTXNTTUNTJUMDC1MjSwMrXUMwJykvNz9RILCnJS9cJTk7wzS/T8UkvK84uyM/PS9VxSy1Jz8gty
U/NKoo1MLQ1MrCxMDEwtYxWc3aCqFIKDfTwS81KKMxKzUxXSEjNzUlMUNHQtLQzMNbkAUEsDBBQA
AgAIAGApdUvDveu5KwEAANICAABeABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvZGVmYXVsdC1zcmMtc3Rhci1zZWN1cmUtd2Vic29ja2V0LWFsbG93ZWQtYWN0dWFs
LnR4dFVUCQAD4yUUWuMlFFp1eAsAAQT1AQAABBQAAADNkEFPAjEQhe/8inerJgtZRIVwE9yoCQhh
iYnH2p2ViU1L2i6wEv+7y0KIIdm7tybzzZvvdTx7TWeTBNMkTR+ekiGWK4K3hVMEzT4gtw5jawKZ
gJRU4TiUmFvNqkTGjlTgDUF45Xgd2t4pAVXhko2HNGCzkZqzU+QQQhhrFLUD+SBEBy8BW9YaHwT+
NNZR1mmNL500G8LdEAvKC08ZggXtKpdAkDhergKUrIbg4LGSfhXVr/pYhKqDKIyXObXZHNIEMkuH
cYBcr0m6ShThUP3c4087m9ezhm9oEu7e/F9jLUtykAFXcRRfw/M3YRDHu/s4bqGyNhm5N6ZtA9K0
3u2dt0faqi/sn5fTyU8TeWZtVmI/mj2+H9FB1O2d2P7gdhfX6EXwfJFc5h7ZX1BLAwQUAAIACABg
KXVLzOmECsgBAABzBAAAXAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2RlZmF1bHQtc3JjLXN0YXItc2VjdXJlLXdlYnNvY2tldC1hbGxvd2VkLWRpZmYudHh0VVQJ
AAPjJRRa5CUUWnV4CwABBPUBAAAEFAAAANWSQXPTMBCF7/kVezOMrchuoYSc0rQZYGibTNxph+NG
3mANquSR1k1Ch/+OYofCdMgdTra1b99+by0hBMg7Z9oHCvISGeXsvpT3tPqs+fCYttpUckmGMJDQ
Te0sBf3QGmTnpcGda1kwBRaeQms4yJq5kfuTIAOp1mveSeUsk+Xy8L1wRqudrGiNsUUEr0Rg9KLT
k9jQKjj1jVigMW5DlaBtQ4qpGvKWB2ma/h/UqLhF0zFPJiCK7ATSInsPk8lALM7LEipdgfKETBC5
y657OBCD9GJ+U86vZnA9K8vzD7Mx3NYEwbVeERgdGNbOw0WPB7/4oAeMrj4uSz8SJEF53XSoCezT
oLYB0IK2j2ji8N5yDElinVXUrSRJhvCJYaONgRWB/mqdj5v/C5TRluDtGJa0bgNVwA5oG2FiHIR+
dHRQGIugOUCNoc66t25aBjFE0tqA6/iP7N4tgcrRvsyATUPoIynwPvtzkD/iuXVXO7KHo8TFyT+M
HO8meUCGV3mWv4agvxOM8nx7lueDFCK3rcjfadoc0xwzKE5/909NvGrw9PH2+urHUemz2FU7eJrO
L7/02lFWnB7E70ZvtnmvfWG9WM5eOvfin1BLAwQKAAIAAABgKXVLm8ANlhwAAAAcAAAAYAAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2RlZmF1bHQtc3JjLXN0YXIt
c2VjdXJlLXdlYnNvY2tldC1hbGxvd2VkLWV4cGVjdGVkLnR4dFVUCQAD4yUUWuMlFFp1eAsAAQT1
AQAABBQAAABQQVNTIGRpZCBjcmVhdGUgV2ViU29ja2V0LgoKUEsDBBQAAgAIAGApdUt9R2UjtAgA
AFUfAABkABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGVmYXVs
dC1zcmMtc3Rhci1zZWN1cmUtd2Vic29ja2V0LWFsbG93ZWQtcHJldHR5LWRpZmYuaHRtbFVUCQAD
5CUUWuQlFFp1eAsAAQT1AQAABBQAAADtWVtv2zgWfs+vIBLsZGcQSXZsp7bTZtEmzs5g22lRFzPY
pwUlURYbSdSQVOK0O/99D2+yJEtOCxToPOwUU0vkIfmd63eoPk9lnl0dPU8JjuEnJxKjKMVcEPni
tJKJNz+FYSEfM3J1tMxocXeGlvdUUEli9PkIwX+SbKUXk4hxLCkrlqhgBbnUUyHjMeFeyKRk+RKN
yy2K4ZnEl0d/Hpnt7CYRyxhfopPRZKHn/FuakRuaJHY+xNHdhrOqiD0nmszVn+ZB5gTBMhqjkziO
zVzCCuklOKfZ4xLlrGCixJEFmGO+oQB5THI0MkMlA+W0HpxkoNE90YDScQfpZDLp2V/gQniCcJo0
JgX9RPQZzUO9jCRyiUb+zI3HVJQZhk1oAZaxCB9oLFNYPBr9zeLDcUyLTb3SYLOuUU9t71i4tEgB
lKzFU3ZPeEej2Wx2OWRsQowZfOWT13CWsIuTjGFQg9NNKtueU1LXoD4GXdxRDExPJag46qgscZgR
LyJZ1tLS0/u2rPSQgnae9qEKtQeOyx2yNYmU7waDRi9uh0w3XGzMOrtDQI3KrTlhtS3BvbA/qEbO
kK9+uhoOwhM0JuGj+htpqK8yFt29w1z6oOoyoVxIL0ppFg8aVh23hvVnhzbjJAfXnj1xnj3Dmd8E
nBcqkVbYzVzUQbRIGuHMwxndQG5I1qMWJyrSf8ZFnBFnDruPMqF6T4lx6C6eo4oL5RoFu5uBOATv
VM5jcGYdOCZ5NLxDKFpxvh8OG04eLzuB6c+e8pcxMfIle9LMfsJZ3jG2rY/qDGX1X6s8JByiiTSj
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
ZGVmYXVsdC1zcmMtc3Rhci13ZWJzb2NrZXQtYWxsb3dlZC1leHBlY3RlZC50eHRVVAkAA+QlFFrk
JRRadXgLAAEE9QEAAAQUAAAAUEFTUyBkaWQgY3JlYXRlIFdlYlNvY2tldC4KClBLAwQUAAIACABg
KXVLGiapyrEIAABOHwAAXQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2RlZmF1bHQtc3JjLXN0YXItd2Vic29ja2V0LWFsbG93ZWQtcHJldHR5LWRpZmYuaHRtbFVU
CQAD5CUUWuQlFFp1eAsAAQT1AQAABBQAAADtWVtv2zgWfs+vIBLsZGcQSXZsp7bTZtEmzs5g22lR
FzPYpwUlURYbSdSQVOK0O/99D2+yJEtOCxToPOwUU0vkIfmd63eoPk9lnl0dPU8JjuEnJxKjKMVc
EPnitJKJNz+FYSEfM3J1tMxocXeGlvdUUEli9PkIwX+SbKUXk4hxLCkrlqhgBbnUUyHjMeFeyKRk
+RKNyy2K4ZnEl0d/Hpnt7CYRyxhfopPRZKHn/FuakRuaJHY+xNHdhrOqiD0nmszVn+ZB5gTBMhqj
kziOzVzCCuklOKfZ4xLlrGCixJEFmGO+oQB5THI0MkMlA+W0HpxkoNE90YDScQfpZDLp2V/gQniC
cJo0JgX9RPQZzUO9jCRyiUb+zI3HVJQZhk1oAZaxCB9oLFNYPBr9zeLDcUyLTb3SYLOuUU9t71i4
tEgBlKzFU3ZPeEej2Wx2OWRsQowZfOWT13CWsIuTjGFQg9NNKtueU1LXoD4GXdxRDExPJag46qgs
cZgRLyJZ1tLS0/u2rPSQgnae9qEKtQeOyx2yNYmU7waDRi9uh0w3XGzMOrtDQI3KrTlhtS3BvbA/
qEbOkK9+uhoOwhM0JuGj+htpqK8yFt29w1z6oOoyoVxIL0ppFg8aVh23hvVnhzbjJAfXnj1xnj3D
md8EnBcqkVbYzVzUQbRIGuHMwxndQG5I1qMWJyrSf8ZFnBFnDruPMqF6T4lx6C6eo4oL5RoFu5uB
OATvVM5jcGYdOCZ5NLxDKFpxvh8OG04eLzuB6c+e8pcxMfIle9LMfsJZ3jG2rY/qDGX1X6s8JByi
iTSjy4w64Ptl1EbtYtEqgC5d+sqgy+TpdNpbbprer2uM2mhmUsCkQV3wbRzY8OwLEQO3FU4TW7Aa
imsVewuOIYlBsxwoUiVX2algWgO6amKjxinSylVY5Jls1VNgT/0KenCC7zw1YADRHG9IyzNLdF4b
PMywsqISjKA0AAaAYp9QV++dV+bTxWDtTUiyKwAqrGDHmh4b2dyzNE7i9lJwthgWX5DF5SFOr3ey
VaaJw2bFMF3H8d4GKCbZ8AqyeBJN8BNaV2XJuASm5TaSwah5Tgop0E8BnIcrmTJjb8PGqpmBqJcQ
p5HzlF6gZQb4v5ZRYDCEhBZ25ezCBbYqNzjLrh2CXulzw2U53nodes+hL7BD56Oad7pHg90PnlNn
dp3SrWP6cPqsJIY2vQcS3lHpSa7SzljCAEf+ubhsqDG1Sp8IiWUlXlUhcHjNh77Knl44aolkLAsx
b8+7o5OM6AzdTeTsUz1aF6eJyWPbR6lH1y2o5+GWcKhyHGzldmGR0C0x+9h6PGqr5GPdg5g022fx
Bwq1gHdCrd7zk0eLmGyhSB1QbUeEDQh9etli1KK3ua1ihYJpE7aXmuC8kG2fBHqxAzo2QexIyLxp
sPa5ZjD7WgOuO7PW0TThODcIO3nSbiMaOXI9UGn3bfMIvSZ7sFxPMmgcoWf+AmK6WNzuwsty8sCk
NkR7rm4j4/32uN0c2z2M+fZjeLAliF2dNce8dEXBXXVGzdkPjiM7d5KLZ66g7cM8kCSN247Isenl
mzW3YByGLweqjNVftWCi73Cjh8vrUZ9IhkOSLXECGXa2t9yM6000IReg6jH6Lzq+PKqJuEHf3dUZ
hg6dJZ58LEnvVseDiKxg54qbkkwXyLoZxaoZHeCok5wI4RqPQTv3uaWRHWtdqL+ECoFioCG6p6wS
1/UINLOfSHHdIMs+nnctR5dimuSiajlErY4EV9vtu41EW0QmjgO/CI0NDehxiFQ50aIL2/YNNH1N
ng0ryKqiWXccv8f0fpmwyNqQVVLVi2b6hVmlmcROQbwkgAUYbOwUaZKl3gV6mA8pMScFlmk3gF/p
IBmSMBcaaRtqAt1TrGqyfGNjAsCGnD2Aw6ETSDGstU0Rlb5qgmo9phe2i69bEfvuqoNqZNX/ozaJ
uk863R4/pzHcsoxiykHCXb57GAX6MCbwPdgeLEA6vNK86e1RnTf2J6Zl2n38cOzf44OTm5ubRkqf
zG9vbme3vfUJmsv+KF6tVn2olyQvoUK1nG/btI6kD4+AtJX5q8V8NLd1K8oI5v/R7YG7CqgRfW1K
lcjzwH51ey4iTkvwKY9eHKdSlmIZBPgj3vobxjawqKRCha4eCzIaiuDjHxXhj8HYn/rn9sWH1tL/
KI6vYF+93xVq7xyxmHjKh+QB5P4BnlbOfDGdN5YAKPuhMGTxI/xAPgBuLMSLU3cTUN8L0/FV8Bv4
E2pWcIMlDla/r4PfSfgvKu3Pq4pmcfAeeBcL4tEyhTARNK+g42Y8gMgB83qSQMWF63yVSREozQM1
IgJBoooDUwQ2Idb2/R24P3oMYpJgWOKBWsoXXBUdAZ0nUbdW4HwSe9D7VDjz5VaCRuO2Io3vSKf7
M/p+PzSu7v3IXG06IurSg9rfi3ZyUIwKJ6g/GOy6kNOrMVgf5q9aUlAXmjI/FKEoL3sFgeBPr969
XK8hJWMUQTcAuQc+WGuD+HYNOBbAfivI598AcheY/hk2OtSFpy1uhQ5iP4CLfYFfNPbrt7+u375e
oTer9frlP1dLXd8Fq3hEYAth7qrXJnaRC15kohfcxInpzH84gU7BZJ6KZf2qOQCrSzwcSot7rAqe
2XppFui/oOpGROfPbsxHv0jggSxDIUFQvRkn8Vf6/5sa8PwrDKiv9bMlek+SSkCfDluRLRgOYhkj
W8VCEmGYBM4TKMUiPdNP2hJnCAyujVAVAidQcPSHAmPRmBElBjFUllCBwaqac3eGb7iEJXpuwHff
05qTr7Xm+Pz/5hw253TYnEBO6jSJ/j46G/2IVDuB5qPR9mI0+o6AZ8OAEfgZ7ur8N6D2vxzui683
9HjyHfE+e9rOmpXQ558/vHn9518N/vwQ/FoBaO7Q51dvb/5t8M/PxhOrwLP5dPs9w2VxGH/HBe/e
r7oe6FVgr7lodOeqFdHTTdndj26EoYnU/4z+P1BLAwQKAAAAAABiKXVLAAAAAAAAAAAAAAAARAAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1
cmUtcmVxdWVzdHMvVVQJAAPoJRRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABiKXVLZ+uV
go8AAACcAAAAfgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Vw
Z3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBncmFkZS1yZWRpcmVjdC1odHRwcy10by1odHRwLXNj
cmlwdC1pbi1pZnJhbWUtc3RkZXJyLnR4dFVUCQAD6CUUWuglFFp1eAsAAQT1AQAABBQAAAAdx8EK
wiAYAOB7T+GxoJlastx1K4LGiFx0iA62/YVM/YeTev2i7/YJxvOM80xwwmTBecE2lMkN6dBTM44O
6BUeR5toA+mDcbDhRSt4g8PRQ0g3IZUShVormd9Joy/nWsM0WQyrf0oMAbr0Ozm07Yk4ND15Guug
J/Oh3OsUwfhdjBgr9MYGreslydSWicXsC1BLAwQUAAIACABrKXVLY6qsbIIAAACoAAAAQAAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVy
ci50eHRVVAkAA/klFFr5JRRadXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBti
UCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4U
JpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIA
CABrKXVLY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAA/klFFr5
JRRadXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1y
tsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUw
ziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACABsKXVLYEtmEJEAAAD7
AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1lbnQtc2VjdXJp
dHlPcmlnaW4tc3RkZXJyLnR4dFVUCQAD/CUUWvwlFFp1eAsAAQT1AQAABBQAAADtjjEOgzAMRXdO
4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06AzJk9LJEQVtXire36S+vOdf7q
nLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IPSPghQPQglBVRm/PpX8hyuj3kRAd0
rYMFJ62MAhMjSC0ls+LchH/oj0PfUEsDBAoAAAAAAGwpdUsAAAAAAAAAAAAAAAAaABwAaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9VVAkAA/wlFFrZJxRadXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AGopdUsJx7PERAEAABYIAABOABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1wcmVmbGlnaHQtY3JlZGVudGlhbC1hc3luYy1zdGRlcnIudHh0VVQJAAP3JRRa9yUUWnV4
CwABBPUBAAAEFAAAAO2Uv07DMBDGd57CD4DjP40bO5vrpAuIpUIMiMFJ3WI1sSPHBfXtcSiwMAAS
ndrFJ5/u/N33k3UUkwISAikBmJWElERktMhB6/tMD0NnsgfT3NiY3Zn46sPOum1WmRfT+aE3Lj5S
JnJScobZ/AlUdtwp73fWrKIPemtA+6zdNvWAwXe2PYBN8D2gIHqAr5PGVAo2tjPl8UQI3Y8mjKjZ
227d+IhubRN0OKAPTROQ8sGsbL/vdNKY8rY1I2IMcyWXHEpRFDCf1RTK2SKHquK4lrhQlZJoraNO
/S5q6yaVarrL5NK2Olrv0ELUC17TJWRzwWCe1zK9pyQUimDOxUwJXn+NdHQ6fsassS6lj6bGK/pb
sClMIyWY38AWCSwh7AL2Z7DsT2Dp+4/lF7A/guXspKsAT2DpBey/r4LzBSuKk66CswD7BlBLAwQU
AAIACABqKXVL74QylGUBAAAsEAAATQAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtc3luYy1zdGRlcnIudHh0VVQJAAP3JRRa9yUU
WnV4CwABBPUBAAAEFAAAAO3WT0/DIBQA8Lufgg8g5U/LCr11tLtovCzGg/FAOzbJ2tK0TLNvL3Xq
xcOWuO0iFwik9PF+eSGPYpJCQiAlALOMkIyIiOEZqG0bqb5vdPSkqzvjogft3u2wNd0mKvSbbmzf
6s49UyYSknGG2ewFFGbcSmu3Ri+dHdRGg/pVdRt/BvS2MfUerAfbAgqcBfjWx5g+BWvT6OwwIoQe
Rz2MqNqZZlVZh+5NNahhj75i6gFJO+ilaXeN8jGmfVPrETGGucwXHOYiTWESlxTm8TyBsuC4zHEq
C5mjlXLKn++cMt0UpZjWuc/S1MoZ26G5KOe8pAvIZoLBJClz/z+ZQyEJ5lzEUvDy50qHTMfvOapM
57cPSY039FRYP01X8pi/YFMPSwgLsEdhCbtoxeIJlgbYs1dsgD0Rln5WLA9PwVHYGF8U9v9W7IyE
ruBqsKErOAcsDW/sZWBFaLeuBhvarTPApqEr+DPsB1BLAwQUAAIACABqKXVLLSvs/0UBAAAWCAAA
SwAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWhl
YWRlcnMtYXN5bmMtc3RkZXJyLnR4dFVUCQAD9yUUWvclFFp1eAsAAQT1AQAABBQAAADtlL9OwzAQ
xneewg+A4z+NEzub66QLiKVCDIjBSd1iNYkjxwX17XEosDAUhkzt4rNPp/v8/XQ6ikkOCYGUAMwK
QgoiEiYy0Lgu0cPQmuTJ1Hc2TEG5Ppg+JKV5M60bunh/pkykecEZIewFlHbcK+f21qyD83pnQPOq
+53td2BwrW2OYOtdBygIDuDbqDGVgq1tTXE6EUKPo/Ejqg+23dQuoHtbe+2P6EvTeKScN2vbHVod
Naa8bcyIGMNcyRWHUuQ5TBcVhXKxTKEqOa4kzlWpJNrooNHkQtt+Uimnt4wubaODdT1aimrJK7qC
LBMMpmklYz8loVAEcy4WSvDq50snp+N3TGrbx/TJ1HhD/wr2wYR35/cR0i+wJILFLLuCPQc2w3xW
sHgCSy8SrJh1FVwuWJL+Cyz9nFh+XQVnwVIxK9iLmNgPUEsDBBQAAgAIAGwpdUs8ruBOKwEAAAsE
AABAABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tY29va2llLXN0b3Jh
Z2Utc3RkZXJyLnR4dFVUCQAD/CUUWvwlFFp1eAsAAQT1AQAABBQAAADtkr9OwzAQxneewg+A4z+x
Gyeb66QLiKVCDIjBSd1gNbEjxwX17XEoICQGYO9y5zud/N3301FMCkgIpARgXhFSUZYxkoPOj5me
psFkD6a9sXFJyrtoXMxq82IGP43p/Uh5yYpKcEL4E6jtfFDeH6zZRh90b0D3rF1vXQ8mP9juBPbB
j4CC6AG+ThrLKNjbwVTniBC6n02YUXu0w671Ed3aNuhwQh+aJiDlg9na8TjopLH0bWdmxDkWSm4E
lGVRQJY3FMp8zaCqBW4kLlStJNrpqNHiQlu3qNRLLZNL2+lovUPrslmLhm4gX5UcMtbI9J+SsFQE
C1HmqhTN10pnp/NnzlrrUvtsar6ifwV7Z+KrD4cE6QdYksBivrqA/RUsZ/+6WPoOVlzAfgf7BlBL
AwQUAAIACABsKXVLqD/oVyoBAAALBAAARgAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jv
c3Mtb3JpZ2luLW5vLWNyZWRlbnRpYWwtcHJvbXB0LXN0ZGVyci50eHRVVAkAA/wlFFr8JRRadXgL
AAEE9QEAAAQUAAAA7ZK/TsMwEMZ3nsIPgOM/jRsnm+ukC4ilQgyIwUndcmpiR44L6tvjUEBIDMDe
xac73fm776fjlBWYMcwZoqJirOJ5JlLS+SEz49jb7MG2NxCzOxtffTiA22e1fbG9Hwfr4iMXZc4q
KahYPqEapoP2/gB2E30we4u6Z+P2aQaNvofuhHbBD4ii6BG/ThpzK9pBb6vzSwi5n2yYSHuEftv6
SG6hDSacyIemDUT7YDcwHHuTNOY6dHYiQlCp1VpiVRYFzhcNx2qxyrGuJW0ULXStFdmaaNK8iwbc
rFLPuUouoTMRvCOrslnJhq+xWJYC53mj0n9a4VIzKmW50KVsvlY6O50+Y9aCS+WzqemK/xVsCvNK
CeYPsEUCy5i4gP0dbPEvsPz9YuUF7Hewb1BLAwQKAAAAAABrKXVLAAAAAAAAAAAAAAAACQAcAGh0
dHAvd3B0L1VUCQAD+SUUWtknFFp1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAayl1SwAAAAAAAAAA
AAAAABAAHABodHRwL3dwdC9iZWFjb24vVVQJAAP5JRRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAABrKXVLAAAAAAAAAAAAAAAAFQAcAGh0dHAvd3B0L2JlYWNvbi9jb3JzL1VUCQAD+iUUWtkn
FFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAayl1S5Yk15UtAQAACwQAADUAHABodHRwL3dwdC9i
ZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1jb29raWUtc3RkZXJyLnR4dFVUCQAD+SUUWvklFFp1
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
d2HdCkzmyfY+xNE24qiCGJ9Btq8RKuhaBrK7z7fP7NV2178iwDeCcjjsFnonw9aHbQ6aYZ/6Zv/B
foG9AXkOmQlZCPmU5w4sls4TyAlYf1jr1drslJuVt+NFCid1msZQ1rUTrbkNjTpyVLhcYwbM4z5l
IZrbuqkVcO4g5489s+GSpsgJl7v0c8z8GM4d6Gts6Qmq0x7eIcPjXTfgxqNvKQnsJ6kfZQXSVFY7
1fH1C0wVxHwbS5tK05rV1VjTDGxq7J5QmCuTDThwNkpfB5xi9RqgLXkmPGIUy32Z4VOxnRHrbsB0
Iii/1phg5a+Ff5VFholJEOPQdOHm2JWIs90pGXGhJjwlbKJgCNM1YSv6r5Vzo3w4YCEcu/q02xLC
Zc5HcJoOfr8duOPJ9WB8Pjz9hr6MR73+YBs40sqdt8hG92ePJeOfqVAZjnWvgd5+6B4dvcsN723h
zIR7tfHmuLXFB3VvrDeoB0tCbJkSjwbUM7dsuZCKJCgVXOW3TweQq96qIaTw/o8Waqu91A2b8/bB
eXB0/+QHcAn+Lxa2esV/AVBLAwQKAAAAAACoKXVLAAAAAAAAAAAAAAAACQAcAGltcG9ydGVkL1VU
CQADayYUWtknFFp1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqCl1SwAAAAAAAAAAAAAAAA0AHABp
bXBvcnRlZC93M2MvVVQJAANrJhRa2ScUWnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACoKXVLAAAA
AAAAAAAAAAAAIAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQJAANrJhRa2ScU
WnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACoKXVLAAAAAAAAAAAAAAAALQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL1VUCQADayYUWtknFFp1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAyyl1SwAAAAAAAAAAAAAAADkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS9VVAkAA64mFFrZJxRadXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAKgpdUuPNBpwRAAAAKAJAABcABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvZmFpbHVyZXNfUlNBLU9BRVAud29y
a2VyLXN0ZGVyci50eHRVVAkAA2smFFprJhRadXgLAAEE9QEAAAQUAAAAc84vzUlRyMsvUUhPzUst
SixJVUhUyE6tVChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnZU7ajaUbWjakfVjqodVUtztQBQSwME
FAACAAgAqCl1S1QCybI2AAAAwAIAAFsAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS9mYWlsdXJlc19SU0EtUFNTLndvcmtlci1zdGRlcnIu
dHh0VVQJAANsJhRabCYUWnV4CwABBPUBAAAEFAAAAHPOL81JUcjLL1FIT81LLUosSVVIVMhOrVQo
SMws0lEoLkksKS1W0DUxNjDhch5VO6p2kKkFAFBLAwQUAAIACACpKXVLVALJsjYAAADAAgAAZQAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5
L2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12MV81Lndvcmtlci1zdGRlcnIudHh0VVQJAANtJhRabSYU
WnV4CwABBPUBAAAEFAAAAHPOL81JUcjLL1FIT81LLUosSVVIVMhOrVQoSMws0lEoLkksKS1W0DUx
NjDhch5VO6p2kKkFAFBLAwQUAAIACADHKXVL+8m/ukoAAAAgDwAAVwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXMu
aHR0cHMtc3RkZXJyLnR4dFVUCQADpiYUWqYmFFp1eAsAAQT1AQAABBQAAADtysEJgDAQRcG7VfwC
FATTQSpZcBFREkk2B7u3D3lznlzHvavU0OHFm4XLdPmrx842q4fF6FrStqYpc7lcLpfL5XK5XC6X
+9P7AVBLAwQUAAIACADKKXVLjzQacEQAAACgCQAAYAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBLU9BRVAu
aHR0cHMtc3RkZXJyLnR4dFVUCQADqyYUWqsmFFp1eAsAAQT1AQAABBQAAABzzi/NSVHIyy9RSE/N
Sy1KLElVSFTITq1UKEjMLNJRKC5JLCktVtA1MTYw4XIeVTuqdlTtqNpRtaNqR9WOqh1VS3O1AFBL
AwQUAAIACADLKXVLVALJsjYAAADAAgAAXwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBLVBTUy5odHRwcy1z
dGRlcnIudHh0VVQJAAOtJhRarSYUWnV4CwABBPUBAAAEFAAAAHPOL81JUcjLL1FIT81LLUosSVVI
VMhOrVQoSMws0lEoLkksKS1W0DUxNjDhch5VO6p2kKkFAFBLAwQUAAIACADLKXVLVALJsjYAAADA
AgAAaQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVy
YXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYxXzUuaHR0cHMtc3RkZXJyLnR4dFVU
CQADriYUWq4mFFp1eAsAAQT1AQAABBQAAABzzi/NSVHIyy9RSE/NSy1KLElVSFTITq1UKEjMLNJR
KC5JLCktVtA1MTYw4XIeVTuqdpCpBQBQSwMEFAACAAgAeCl1SxKx8NnKAgAADjQAABoAHABweXdl
YnNvY2tldC53cy5sb2ctZXJyLnR4dFVUCQADFCYUWtQkFFp1eAsAAQT1AQAABBQAAADt2V1v2jAU
BuB7foXVm4KWxvlOk7t90G3a1E1QtRcIRSY5KRYhzmxTxn79TGjXVG13MZVqSEeJhJI4Oi928ugI
Jp7jxieue+K5xAlT1zW7FYf+lEyGo9G30ZRk2ZLxOsvsK5iNRb4APQZ5AzIlw585NJqLmvCaNFLk
oBSvr4mEHytQmpRSLFPSP05T99gioRPEgUUcsw96F5LlMGP5gvSXwgyVkEOtSc6qilRM6UHaI+SM
V0CO6HijNCzpVz6TTG7omWRLWAu5UPT7Rs9FbZd3Z+glSGXyKOrZMa34jDbtiO1RN7rdbI4sUvEa
SJgkVid+dps903MJrDAhCFFQlXbJa67md5f7t58WyStugmesKKS5ffBKqX0/aFM/THWfdrQ78YnV
RQXyvZlR9Vxkq72jE/xSVKslKPqBaUaHV2Nq1v0L1/RCiErRcS55oxVdw2zBdbOhes5l0TCpN3Qp
iqzZmCuqTU2VNvVZJWroRI8ir42eZSa7zrI/oS3yl4Tb7/9akxuF8dMJbx+C/msFid2os8r3Mdal
KW7nlVDw8ll2a9dJ4Z36bYq2XmcuqtU+puJRed/ZrUZb7758th1oK9g+YFX/hsN6spZcQybKUoFO
uwdvZquyBJkp/gumgx5IKYxek6GUtSC+NyXvpFiAMYA30OtNHosYWFEYvqSIrhfbjtl2LoZJhCKi
iCgiingoIkZW5DtGxKu3o/PP5x+fMvHhG5cStxXv3zfeRDaTDSMnJBcFkMAxq2BeS8WugZwJOeNF
AfUzYYNgHw1t5EfY0CLfyDfyfXB8nwYHxHfi74fvBPlGvpFv5Puw+E4s343393tEEnkoIoqIIqKI
ByRiEu1TxBBFRBFRRBTxkETca4+I/1mhiCgiiogi3okYoIgoIoqIIh6IiJ5reb6/RxFD7BFRRBQR
RTwgEZPtsH2JeOpgj4gioogo4v8p4m9QSwMEFAACAAgAaSl1S+5i5DEJAQAAjwIAABoAHABweXdl
YnNvY2tldC53cy5sb2ctb3V0LnR4dFVUCQAD9iUUWtQkFFp1eAsAAQT1AQAABBQAAAC1kM9Og0AQ
h++b7DtwJ7UsjVVJOBhaoDVNt/yx4K27rLCt7FZ2C+L7+J5a9ahJTePcJvObfN9MmCR4iC6QgSxk
xB3XtOKiNHAjtaTySUGQ7stmUzDH6BhRku6YhsCTQjCquRSO8T2HIGZ0sGYk/swMbille+0YzY3V
PizjF/Q6iVajopjhmotFUolUuRC8ORBAAMJ/twjJrt9WeZEFWcXtcact5W2iw7a13N92so/SFVdc
dY0U5bE9Q/ZnRhjcjdQCz9I28A+9NFWOvGGdLXV29DoBdu5jzGUdjb1pZPv1nCBN+ty3cf0s8Wzl
nnjtH2i2Ha/n6dUwwIeW79hk2pn33uX1+JGoL9o7UEsDBAoAAAAAAM8odUsAAAAAAAAAAAAAAAAb
ABwAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQJAAPWJBRa1iQUWnV4CwABBPUBAAAEFAAA
AFBLAwQKAAAAAADPKHVLAAAAAAAAAAAAAAAAGwAcAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4
dFVUCQAD1SQUWtUkFFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAaip1S4/KUlpxKQAAxq8AAAwA
HAByZXN1bHRzLmh0bWxVVAkAA9cnFFrXJxRadXgLAAEE9QEAAAQUAAAAzT1rdxu7jd/zKyZK25Fq
PezcpL31QzmpkzTe5nVsZ9turtdnJFHWxCONOjPyo7f+7wuA78eMpCQ9Z293k4hDgiAIAiAIgoeP
X308Pv/Hp9fRrJpnw0eHZXWfseGjUT65j359FMF/86S4Shf70e4B/Zzmi6o3TeZpdr8fvWXZDavS
cdKNymRR9kpWpFOjXpn+i+1He3vL6uDRwyMOdRj93oLcy9i02o+eLe8OzNIqX4pCaDjbE01MqM8Q
qttir/+czanN0u5llFdVPodh9H8SFapif5FX7X7BylVWlb0iv+1E1UQ0u52lFeuVy2QMfS3y2yJZ
NrXan6ZFWfXyaa+6X7IwjGKeZBzGhGDYbTqiUcXuql5VADmn0GI/yvJbVoyTkommotoymUzSxRWM
eHmn6FTN9tl8Wd13ESP6l1t7V9QT5b1bNrpOq94KZg5mL2PjCjFdME7Z3jz/V+gbgOiPYSoYzAb+
naQLVkh6A7FnLL2aVbK3PgxWkmScZ3mxH10Vyb3HJyXQJ2MFb2PQVzQdJePrqyJfLSY9AYXo61dP
p0UyZ93ILpxfyVlJJ0Cn6OfdXclyEt0/8CIH3pdJUiU9drdMFhM2OWpNk6xkrQsBbZKWyyy5Nyjz
pMrzbJRIeizzMq3SHFbQNL1jE94j8epT2X/Bu1e/iQWSLL2CRvSN4zTN8qSCWewBJixzZ1YtIJ9O
xdUoaT99/rwb6T92+3/qiPp5MWEFZ6Qyz9JJVKawrAvza69IJumq1Cuyz+nRG61gWS3WzZBBdhAG
DtX31Lh9TDSfKDqniwy4rTfK8vH1gS2hop+g4a6UVJrwBcuAcDcCkfGqKBG3CZsmMMeCm1dFAdxs
c2mB02V+DY+aU8htY1Xt4ZR6DJGMYJQrSSDiiZ6QT1jABeOeXNskPYEJkqta1qM6VOWKTcJ1Ofk4
iiV0uWSTXrFaLJCvWFJk9705K8vkilmj2yfS8jl5Mtk1dcGtmMZRnk3WTpXi1p/sheZJkQYYTVwi
WeFZLXhHOJhflISQPYhhwlpAHZfJJQlU4ws9X+I8lhvIJ1kViLtYOb2ocQS0mVwZim5PpbTnEO56
5SyZ5Lf8g/z/Jz///POBJd9Jnwiuy0EfpaAZ+k9LX9wgzx00sqkQVg3ipm7YWTJSYkvNr5hYnKtZ
OpmwhUmiZZ6Ckil67AZWX2lqJjEIpWJM2IJYwrD4SSJaw62uAqoblRSK2NsSJHnW+1eezz3GrRf3
u+aq3rWE4p/+8Fubf/d2vZnXRYp2cnaBD9wvqLhVcT0Z64cZkP1PdzcR1CZTgiyOnkMdUkC7oHT4
//X/+LzTQEhtIRoD7E0zdgc9GoaJV+qjNcoSV0soxs1hnKBSAU3OeOvZOYxuvwTZAFI0nYPUbOAH
WwuFe5dKcnf3t7aSfKZNk5ruhoYAa1QxIT7kwEDHAf2I2yTlcQHPYXFQR0VScnX5RKgYUGtltdkS
kPb3M8foUb/F0J/LkaMdKcqeaVNtU+NGclgdpsNo9tTd4MD/nqEB4TcsPTMa2fogtD+SE/ZHqcXl
RPdgWZbjIs9oD3A4EDstvuOKUjAsVwuwGcDKhk6psDVUtaDauEiX1fBROo3at+kCllcfMTsF1c2K
jpDj8nd/spovX5bnINjbQIdHN2CNXl2WVYKMMF0txjg90VWWj5LsDEvbnUd8hAj+sagqdyT4nyiK
jowyspSAJ2bnSKL96MtF1//2sZrhknS/AXWv7z8lZVnTdpaUb6tqKb6Sye1VOEGmfZOk2Qp0eV0l
pEFjnXlaljCnp9zg9zEp5IdfH+wP5SxfZZPz/OoqY4QK1KmKlQN+Cn0D+JphEnP9La1mZxWsvACd
YPWxfFXVNNccY5FS1Xl4pP8sWLUqFpoNgMcVJ7x89ery9PXZ53fnZ+10sVxVkh0sFpGbImACqiT4
WDCmZNGoLMawSVpl2aWo3/9a5gtiZqfqUGMAeiutXt/BjrKEn22ki8QBmRcYnt1Bv1gOur6sTrDg
47Qd92OxjUHOFdWOot6eybxi6F+wdTdqtS4OfLrQx365GpUVSkDUVgSt042cL7yTnWivc2FTEb8v
w2MYDKJz2I/nRVLco1TsRsCIOfQQncNmsRycET3KAZe6y/sBaHGY9kvijwGILYCd4+a4HGCRoOzl
bQGqqegvYcOPVnL0p+d92d2bk7+/f70fncImZ1zlBYj+KLnJQSUCsOkKOR5GPmUg8scMP4J8ntFI
I9i1RMsiH8M2IFqArVz2FX1Ds/Rl76KfscUVNB9Gzzsu0bHOgUnoIIxdh5TzpBrPWHlGXoe8aC/y
CdjspfhpCiv80hfVvc7Nj23VGgSi1ZoT/b3dZRhWsGo9ZLBSNgLr1zNhmoRZJrgR/Tg9v1+yGqqA
vQIKhT7CiiH4vNUH+Ke5LBDNNYTuOKJQoRxYQYsVV20a2YLNQfsRTImcg06fVzkGlCe8ng1hmhev
k/GMPr1LcfXOgD0zpgb7sgDDsw/sWuXoROuLBn2wkbJAKxc/XEUntCNsg9gyVqtYPquSRclqkuZR
lVyViE708vOrk49ccL9Q8okvVxLAJ0JUAbx+KqXUO/1dyitshstLSy8PyGNXkGEb1GlFMnZ7AONs
LNiznxdXcYe3PrDaLmHJp4icBPIichsO+v3+II72ozjWbRFPaCWa71DPWiB6eO9E5oAHsZAPYuAP
EQMl7IwKZforMBdM6llyvgedV9W9pJ6mmdWOCGbx7HrAJkgxUHd8JggU/JL71UQCd3zgTdteB/3l
AqdDaCWgOHdBEI3BZI8NoSHBwNTRJz0UgBrtQOkLdAon1VF1V8WWWI0PJ+lNNIaeyyPXtTE0vtFG
eRjDMGisMFWHA/g6PMQi2T+UcjUe88nGAlTgTp0hbxrbq6pCiwjoRjZRm/OMXFlbItvi23ranaAh
1xI9HuJWh1dJFvAVDCDqLSJXLe+SkFf0U6xL44DmDbiz12RUJeS6aIMonIO0Mq0R7tp7ly6uYcLF
d72M9dc+oahm1PcIGhNsw9Qg/rlixb0Sz3E/BMTgIKMlfjvmTnpkvnjH680ep2op2BtXqWoAm60s
WZasvolJxnW1BS3rkEVcDwxqgwjXFvppfouiyNSDGk4X5Bn6QOOORzjDo2+ajD50TaXVEvgJB0Ge
f24F+/W7fFfhkCDUtsDKaSkL1aKAvVzJqpcViBuYV9aOrROH2GrDMefQiefPxXI7h51C0XawSJZL
2NO/PX//Tmh2PObzzKd0UbKiejn5moyBqFhb06CmQjseMRBF7PUC8SOoAa4RjWFVYxsUYFjTRrGZ
FY1VV6yb+MJUrbzeOTnNj4jE2urYiLeo6SZcpIEtUEsg+/6yerq795Pg4Vou5/UbWdHQkpsyI25B
DY3GJa5prmnrg93yAU/y8QplWH9cMOyDS7S2QVFe1ZBnMEiTFAcm0GOWZU1QJwZUrNsHcXEGwxLz
ZJH8JZhx1ELYEAda5/L+ka5lbUvp5YcFcm1yB9o/pppCCLSKpU+4iNq074Ty3QP469DsTuISpTs7
rnmWcQlu1P6SXthWGP/m2DEhiU16DwxGx+cSQh5n/SDgt8BPlj6mjq58acMVZNwxWOfBXswWUMt0
JpgzACA1Ef5nih4+z13RqnOg2FCYUIK9eBOxGeBtOtILrpekUwuXieg2tER4DbUstpKe9fUMsQSz
8d9pmY4y9tIyRYwF0CBE3MNlRLN1EfUts8bUV49r+jOZZJyxpDhBl/9NkrVtH47FDbKOMekb1MZd
5UoelPgyxvAjbtCzgXZluNLaW6MEGlQN2YTUjZ7u7u4qk93SjuX9YtzGn90oKa5KOa0A6pz73dqy
bhsQjfAHsl9230YCiEYH0UMXPfYO89zwSaItUDtfVpfKwjW5R3ukjyKrUvTvfysG0rOfL7L7s1l+
+1k5/qRvs93xXAsKVkik4lLikSwSUicOqfBNYcXh4b9Wyq+0fMxbDSS8kGrHEdUYyXVjawBfA8m3
X6C2ZcKEtwsoqUOECWmdbgRaxtoLGHoH9BH8mysgLXGJnX17qht9MYCAOrqoMdf//wwitIFYOwzu
kP9cMnRt2CwnZvpx0J/dN52tl5OU1t7jLB9TvyBwzrgfoKO9LdM0Y/uDAd/W79poGO6QPycl+5RU
M4uSI1GoV3UIcdeuKBjSPEdihgchK2i5KTtCY21WVUtA2PUSBSrvHOm+XkTteABEz4uK9v7yQwd9
F4MR6C/YF9QAiaGz1eJ6YHmCTA9QCM8N5we28QPb/aGJ+sCPu+Ygp2HSSnVi1UISDLhDvSyzQWuf
F5VAlr2nf+zvwv/29n9+9uwn/rnrtZIt7AagXOzKt8vKrIp8lM3ystr/GeoO/sZGf00r1SLFQwEQ
WoPbn8bo/e8ts6RCH0/P69MB1LIdF1D7PP98+q7NDzkMJkSySP6j1ZmxKrpm93j6IKnkuoX5kUeV
FPx0qg3Vw75gCeAL1LhA75B9VgKl2vnnu4xbYh21oKWDMZS0qBwh1qwvOVxTsQTXkivxg0tU9GWx
VQNZdUNXms7Y+PoMDBFWnJSnPLSqTaEX2+JpbHZWBdo4BKUP0wIGPBncWoZABXPCFGXrgHJQYPXj
3694KJyS4awazxBiN/p1Dvtl4MFF3hvnRdl6AANsxhZtINfR0GAacSQthSbgCs3Fau9Gbu0kY0XV
br09P/8ExhZSCpQw7GNAj8NvNqcDKRaJuLRutASDtmTkjYfesVzGJ+DamET8OLEljTxnQnDqkMIW
ryhPZCIciRQgQLu3fDHO0vH1UathJlsRkp87SAMMyR2NsWAp7mVNhocl7nJ5dxSbp3paLfB3u5ql
Zac1jH5ZPf3Dn/YOB1jfdVGKqviHqVU4P71BqNZWFtH6kNykVwnYNBQRiCVty42Cpdpz1jVg1VAS
WYzr/j+TYRSmrDFaO25SDTvgbhUkqG1MNthwR9BGkkgQWs+yj/f/V5xDR1JqHJ9oVw4zsprS3yLo
uqzlYsPfYXCoBoX+fIJFHOr5y+2agoVlp5KNI4cj01LY7q+FBd6WpjjskMbVKsmso/xSVrPcFijD
eGXylZ/99eRT7NpAEiwd+nGrkn736Uy5HUfmUQ424ABldf4rWDnk8DEa1zl87H7+O8lWTPVDDS3f
j+Gj18NQNqUBQxwWRb/7ndUW/6tpHL95efJOHjKB+eq1i0z4ROHz138/j6GLyP1w8v7lX17v1H6m
88+445gDNDZzZg0RVBOJoqs7R9w89uAv2hR8kxe0Gj6OvkJ9k5lIuvKwEP6xbx+pGh9mSXlZUpRN
p86zYAfj9Jercmb2KzSn3cgMVPIMWOsjbCrIOlJzRtai2kI8spnJHhUvO7DdzcYy0jVVKXQXf3p5
dhZraoSta9Cq5SUz5Nkl2g6aSAZwa4Y3WPbGwZQcFXDQ+5Ozs5MPf7GWtz5ynyfXDGRUgao+qdA1
2DP0PY/GK5cp/AlKNwKB2xPrurqrIsQcF7MJlze5hXmNRM8ypqtfwwh2SFiADxocX3oGz/Nrtijr
5Q4/pShLNkGeI2fVx0V2L4h6sjhlVaHFFof2ZfeCSOisTvFxj3+kBRy7YlXXUc00KxKjiJAB5Jx2
zU6ZAmDFRowtklEGnADg1g7D2s7aoO1IwO2I7TAWjQLxUYvgsSx1NzhWDU4wGvfmwxbLWawMUJkU
mEU3uVwVYQMNBO01jPphi/Efn748exvXk1oHa34Xmc9P3r/++Pm8oSMzanHjrpRwc/jDCKAMwPJP
76UD2bQ55DFJk6sv6HJXrTH8YB0EVTFudIZxbMJ+MMfiScVRAm/inSTRraIjA0GrBleAd5V3rqSE
uBiqw65+G9D6fPp5A8ekwbI+RokITJqOl9CGlAIb42Lc06YNUHGw/15klBHpoBM4L0BETvXBnhPb
QodB1TyzTv9Ena7ZEcbudCkchH4jHo/sAzanpVZw2I7/Wt9qkk6nsg3+24oTCcs5tJF4nNXlEgMD
tRFAA9upGRlvwjvEitgjL4u26PgW627Y463V163VizAv/UgD4geh1PFs0RAk3cjcbQnrJXJjD+LY
M2i0CuVKpBMO2kPoKuYVD6v8IFjDfsWY2rrjLzfuXW2iPP9dQDOhbqz5pAfy+Cg0ChGo4sxIkyPt
k8f5PTCsKOC0L7eaigRdjCeYRrKCuTcL92z3YEgUY4WsES7fS6ijWkL9CGLV0YiHbLsEevBGZrON
f1lhM5xt3HCdlWrZyfAEB5MQqTcBbgliSz4ebA1rHT8Yxo25THF89naKxniJ5ZdLVozVYew2FJNo
EPQ2Tiv9C5TPbztxx1c5tSJGb5weC/+AvTm7FBuXS8LacPxuRa0lXQ3Aqq5IBThOeDbY7ukCNusY
yDTKk2Ly+fQd7Nb5obfGrXT37BiVDYRuterjbYzWylTa2UmtgAEJacecMzSChBvAkokpUs2HGvUi
J2TYBNvqtixTWDrcxJmMsSvtSV1mxFJPJFnKgSLVpSqkhfQEVuYtmI+nq0V5hJL8d7TNOEI2gYWe
T9jn05PjfL7MFxg9JXFzLV/ck5zmt7abxHIXCBV2yL283+kTEBwVyzhdxLYddhS8MFYyhZVz53gc
dNJ8j7LykZPaRDQl8spjQ1FneFgVQ6nWZeFhNbFcykHXsamvuWcUWxl+HMOVehS6G2QCOPD7d4IL
G7xCtfKCvAQBFeVZFOYlOS+YTGDlGr96eB1vBxdCRvgNfWw21gu3yY2pF/jFDFOAbijnBBxB0a2h
mHY1EgWBSAN0OwEeOnX1hTkh2PkWc0gOlC6waJG+vksc1jf1KMhi97WhZ2zwS7kzMLbdYx5GuqXV
rvxkZswcgXK8ZfrSmiE6NukTRgeLmZWD2LHdHD9bx5UqKCCkaKGOXKmxrTxGH5TLYlG9PJR9C8b/
3t7rO2jge35A8SLosVbKwULLBH6YGIdazcbHF93DhTiOnYHezIt7OokN9jAAXQB/oIIc2uElvuXD
75nRWaq4XNalAL6qYIz/y/cO4DcR50f/hOkLE5xMAMNLLLWIBkvufTkAZT6JqA4E7u5AF+xWKSMB
4kXU1tdiiJsxzAOmAf6ypYS0oCVwivYIHYRpopMaETUPPPPK0H0YTSpxO3DinImuNX5RPzg5OCcK
ia7uJhgMCq3prvoxOkkd/6GYuPBk5djqcsybHWw0Id9HLmt6ary8NJQa16s9blD/OgiTKruny1TW
L/M5U+GwkQhz+FVF1vGjLX2k50Vh8GBqnJwM1uFxvlpUmsjynmeTd1UEaFAaB2iMgQoqOpdKXJY3
Y2uteAeqTRuyG/fEGDs5lu1KexVsFrMq50xDge6/NRTXC1n9NuixGZhPo3ecqjZIddeCR9O4W74r
BDxjyYQV7h2dShyDWsHPFu11OzkB2ldOLEAgjKnlHOlMrRXtYpurNQEvAqwV2hIYntxfvSU038IG
TWDsRVzM9kjX8a90Y7JtBoA43CqjPjr7kVJiT1pGLFAvAYNABZlIKovIEgoWggpcdWHPB0Gs5Sg5
Ul2+LTxRF83kQi4qYyEn3WhkLOSEpAwFcmUM950wee2R2OY8dIz9jfB1011O0vp0N8GTJbSN43jQ
YRs/g+9RUUz3YXXIjLtLxLQo/M4pb493Ts1bnfWzRWYENVNqXh8xJ5MJxZEpy2PK1zEGQq/mpAqQ
2lSHIgxwHkuUAdvYR8atXo49Hr3QSWkpR+85uwFnHACYibMh9gzWyIx+uKjyDwNe27MDHDdK44Ul
Wwdh7cAxU32UhYM9SRtbbH6bTWnBtdwMNX6GtWzW4IWwOiOXgLEF32IaTThuPJopzj14ZEP0SHPz
EIe1oMPhbA1aw8WrDkBgVtXGxT1lMEZg0zvYs7F5DKVKwW0khyK3kfxXvI54G06Gs9341hmJvnVs
HFaWX8nhUUEEBWtHGELj1/8sHttOXDJfZkxNHP0KHMC4AxOBAo1D03IbDTAwp8fZasJkZiSxmx2Q
S10mKIKpo75umfgM7TBmiEKGZCWUlhIIl5I1rGP7vUIUsJz4wSXyeOtFrpfdf2bX6/blbX25P8+s
QupU5U1oPGutcgpQVClYHPPJTdtSgtnD7KQtroe7SOdtfqvAgcULQbEss2TM2oP//fJL+ctdsnux
82/1r98MMMBZXN0ChvqvFSY64umNMD0zMQM626N5skiu6KZyn+6RnOOgz/COBm4jfn0A6hlF/Uto
eAuTAAMS/vXy5iqirG1HLZ6+jhI3irRw+O/W8HCZZ/dXGOqIiRlBr+12d6M9/ON5d2+3JZuDQsz2
n4zHY8qddXNFU2d1jtnwfkTve9T9Hva/TfclXV05luHBR9polwZogog580VlZN2RaYfzyqube5KO
qkDVad6svvl2kht+x/JauoUDbPffWqY7bRygOS9tuqCra5lXb3Wp67g1oZI7w6+mw59fZgV8vT9l
N7DVokhK3ZzfsEf274tNXdmOC1HTFc90qOWC88Nyg9BFaqZa2J75UAsJjOkwmOBBsAHC3oGGPxw8
2ngk/px9MwEenLvp4THbHbr8aY9O72ZRwtKFdL7XcF0t4nNNEoQvvNGFTaKHwLIEGOHFgJfwJac4
+3YCYi6LK1aJrA1/vj+hWeb31oXaMtIpEGg6OhJyXwMMDWWmdv1yTR7zndeRBKV8x3oxmakf+Og2
64w7QAxvvLMFljtgM2YYI1hh5mF1VnlUrpZ4SS/K2F06zq+KZDlLx4Q1qY0FTJd96+Cch+XV8QN2
qMfsOKBG6xqPahpbodRcKXEc2T/R23+DAfxlNLrnuzna5HsyTMwCnpRwNI44PsE7D9zRQh7JppHu
OqtRDHJ925Hfls7UdNsjDcgXe2JF7R6Eri1qIIcGMi/wbEJlEw5Yc0VQyGqYQLJDMYMvIgRlJmAL
JNMItjNxUA6XYEYSZGVzZ2/5RcSCMLNlYAPY3PvSylqBhlMVSz6s5iNbh6oluYWsqJECX8w+hNfB
k2WWDHAw537+Y/SamaizOnyZuD2ptbqW7+TzUtm6EL1gpPJW+FGFRqtkA6vG6sAO6tBGREhP1dsQ
Uu5Ky1EBehE1WJj7Ua3te+AoS5316ShqMBpNxaTwMUcZ1GxBdaaufn/CaP3/yfO5NtmNIgyFu/24
eMUyuhTGncfm90vM7/2GZ009iv4g0idf8z3g39CohuKf8Q0Eo/wtWdhYHz/wLwRvYrezwPw+qun3
wAegOrA7bADhD4oC/46NUxHFlasiq8tKUpfGyTg80ecPVoIoypPupCm3AmTSiuwNvLpMcTrtwS+9
9pf//aV38fvOLxiONtCRsEaqTUwJuBFeVNXGiYpi87MpIB2YKJAxX1ibMO14ozWbEjB3eaYuwTdA
2m5jYx9O/R6HeuUSgcfIt03QIjheXc8Whbjn699KLvVZF7Zjy7vYbzJTfBng1rpGPFE/jshJ1R8H
aWDSmYc2Ns2E3dicEjeXDUkMa5XwaQkuEUulVCKvnJ2NTugWfZX6wIm+q0I55ey8dYT9q3Q6bU5s
lnxBl9Bvjlq4TFoXXi66H7OCQ+8duNwmj4HccitPk8hr6Y3FGIgRXKzHQy40F5B7gqHCI7yaTZc/
DowD0RAbrZGeRuiEHbnc+ZGQjcjcjh9mFzIKbf4Jm4ffhpYNGYNsKeWbtFAVl3lJ2sbOWrQ6mhQJ
hr+K1GveJ3MFOgvbvd8l47aOw6fhbZ5R98BfIn/G5yRKvzkwD30CjgIDE4Z2CoAcWUriDJ/SwNS/
DkQhTgfR06hnD1qEkv8d1Lcvaju1YrPKl6FuhAiu7+cfbj9cPOuOQpR/SZFwOv/ZFpEa2zyTgmEc
Xt8+M3A7/32+KtnHVRWUy3Sts0+vrLDJOUliugtqF/XNHMsnb05fvn8d16RIgY30ydRtH6VlxJO/
3bL4hkVzRGlCBwv5lE6MFWWahbHrcwzKWkMMGunjNLbkwzLXVz3Z3kNVm26Rpps1A3NZXSTB69iJ
BWVqvOY2RlBhnZKsGXJDFpzvJqSTPNRU9AozUwWqNKcmqOiF3tOLNrAzqh2lD8CITHXxwMxjTllQ
jLke6AB31HDImrvrHO93Oo+PIkujOAyLN6LqmCr/HWSTDZvEZgfEllNMUrMe6j9MqP/woYKQDADl
MtJgyseaJg4pa/aKrg+skf15PspQEknPT9Vkf7aZe2epi48hdUI+raDTamPgNVexG1S1Wn/JZPIa
cyKhx4Eh3JiogYwX27LdkUY6cfY6WEDEelCgDzQkfmZnhoCpUzsrLgzWGLPUiJwau5p4+BEL5QMC
0qXnx5ldgY4Q8W/Y44PbJ8f5r+yehmjJYjc7GM/ONWdVAtVRKPCCcpZOK6tkXBUZFNTIzPI2hW11
1OYJDPvTIp8fz5LiGPe0or34aQkUfG02itN432IzezCX/C2r8/wNPmJLIXYOW46A3a4PHKBfNwP6
AXbeG8O83gzmJ8xeCAyzMdxsM7jvki3Gz5ph8rRRx5rrNgI6bgYqk2luC7ZqBsuzLWwLdLol0Dd8
YTXAfvBXms+cIVMWF5rbjlXmgHYNY6SmB2f89ahINglhIhOHe6GzhqnQjGlm7PboRuOPQ1yuxc1I
6EtM+zLKplJEhQs1j3tN5zs/lBKmBPmPUsMVKT+GGD+GLQywwquzNTvLLJzkR2hG+mINCq/NZ1M8
RERHzSNodzZ8ZMVHxBPXISQCD1xsMh6ZV3S9MA91GnyB5Tu69eRyqNNAasQf2aVQBXUcV2mOXDfh
jakxJZwuv9SiH/JxjtSEyRd3VFSZCFM85wfs0v7kVw4WcRVdL/LbKFncVzN8fi8Z4UaBoKBxFp1U
oipmwBslo+w+GtOlAIxPzCNNgSJCqGAGE5z+o/A4rKgTTGOLfjnrAoRDO+H0VXW9VaEypMYdfryH
5yMH9q1fA7xzUZ/DdGJoFA2b7m9Iu/qLxPIC0NyreUws1JWM9Qn0NoHhVWyjTq2tst2AH9u+MZoF
ZadfrY6XDQyQyKP8rums3Xqq1nIv+HBc57lRY8uDKvGMq9e6n+ISjcMP78Zr2lrHD9MsT/B5mx5I
CnVqV9+tceIcH86eDqW8IEofDqDkcFnwp3YtirVkhtPXk1TGuEJFM/6/3rkdQsWMov8BM2l4Z5xt
pghpv2b3PAmtxbnyXpVRxAOfzBAAtkwKsUuuRQr22L0Fu8UXRgGnPmVF5okdflnQZYoo9roSY7Um
xcLka54u2qp7gdJGdDE9acIxLt49d/sQ5jAgSmjis+dx0L6zzChXcJIdso2lrhpFh9GuzBPIC4ZH
kWmpe4nJRdZU7fC00NrQYFI+Qf3JcOHqwoCEFF/VfcG13hA1NNHgmxEO40VKwkVKxkpS5Ea9tb7G
WDGcndsYDSRWdbsGZ3WR356KW1WqerMTFUwI2Sgt8d4wd3KCeMqLSRm10z7rq2fk0Sa4SdkthiZi
zu4cbzt8xbj222RBFgNec8M8qXhsBD/xbEIMSjxErl5q7wdO8CQZl3QDhKOFztUAyesvxh7PkkWD
yWZzS61H32AA7b4NMXfg+CZf2d2M2Bi1yyydTNiCXqRilUkaxZf9jd6qwROmMOtqQ1EnsvrGbbAV
mgrzkM+XK89ocfH3XiWrE1kbrXMutWRQrkl8wwnT4MYFFQUqtSzjbtTkFDUcufrqRxP97Y1evQpT
TWWaJq3IDpzr8IiP7kpmASFGVv19XGLlv/Hnt8vkRoXYqCfIHDxrHocMj2aTYZDiiztOFH0jq+pj
q1gn3fg1EspzP0L9eBA9yMd/jfG4t/ZD+6e1QqCtI/RM8kn/vEXSS0ycgIdvTubnXk61ythtgHNQ
J2VEm+bkreKlWXzX3gwSwJARgWF9QlfRwUYZXXld3ci6bIu9feEfwIq+ULU0q+rzGUwOrUFT7OoZ
DIaiBVh1UrF52yNpN/qvs48f+vzGVDq9b2OHKrAEtpt0WoAp0t10yUXBs088PopaZwzWf1rdvy6K
vGg5mQ9mGOkE1Q2xYKFBz6fVzdTXUr5fZI8Oy1EImYO8qhtk83C2GI03Fq19ECH/cU5gJI6NJVtr
DloFZ9GEgBVcsjYBdflsgnYATZObGhhZtcFsTydOqidqYM8WFSmD/ojzHzCeyWehofmyzPy+eaTI
E7EIevB9JRefkfuBowwyiiOaL8ZCDPvpRbjc5gkuP5fsg9ivrJfYG+7kgx3xTJrb6Qb76c4wNd06
3jsvvPumTRv3nvVkjk5bgqzLDYrH10Zh0MfDP5lcucGE0/aacp08EbnG+AWBTqSzoHxx0vZddCIv
2pFeQrlhRXWeS1q9FdmCFPOI/EtuDluR0KkuY3JTetOHjv1kyH9otOn86ktZjDcbrhXzqEW5Yzdu
gGxdIKbR94d84Xav6bglbdx0683dGOlKRmWegfVrv4zTOMvilVq7pXoIJzS/D9u9Ewtr79SO2aFb
zI5xyt/aluFn/KGGv1BqCit0iL/THQobivbpQW337cZNGOONqO6gpG+lILqOguFPjtVjTR8wmJyj
ZbxHZr5JxgP77RjZ38SdYJhSHR1D6RFM2DpK9jdxJ3RXTSTOCtG57rl409ldeyG1DuF+Dnwm3V7B
iXDTCFB+nU5z+vn16/BbpllFT9MkbhQwvdGwbYxCefC9PM/0wmRNq6aMzg+BVyCENfIeDAtLf5Kl
0aA3TYtEwsd/W57ptluCL2ySR0G0Uz5HszRkR1AE06v81oljfVwXTfjExo8HuIoAvVSkmRA1OPP6
LuzmEdseeA/9dZFaExgKTJAzOGNbrxOJGe960CUvmbyKLtt0wfK1CGLmMfLcprF5rWhBlwnzqb8R
pSh5w/nHcya/tS8wbJZEyThwMsFgvhAzFbO4bmkKxcey3EheZEvD+gHs7HjbiJm82cjzcNkPhXvJ
uIyMUyJv2ZGff0vQ0qhhZEO2km3xe1FGQi6Rc4vOWLBNOuFJSFRaq8LK3xVbea7cLwQFZa/02fQ4
Sq2h+F3figeZu834NQGr8XfnPjWohIMRuVWtLF116bsChMa6W6R7ERnWAnle7KGlPNsOPbVUk3rG
QULgWdYiKhLGWPnHZDYYmRLPXhqBFDKBnQ9ylCWwsZTHL9Zm4MQq7u0jcbew7hyTvkv5Tj/cZ2b4
u8X8MP9Upgwq8jklJdFIOQdXOHbrfJAvEddeBIEJED4lxrbRGr+VEpE/2Bl6FU/Xs1OX+ln6MNP+
Gk5PYehFsVpa8kim/2kdLoWYiIHNYHyTnnidtceSIrsHFVGWaMgPEVucLHaXIsPT1/7hYDls1SFg
PEvlync7aRmQoa4lqEZ+KEqPxvFkrBOV3Mrm+YNGRHjm1G9BhFpCl/R3JCYDcahN/CTXlQDuq8T6
p7C6WugZA8camLQCWHlA9yAGPPk35SdXibm/tX/7XbwwBrNkApakTq0os221VVDLgt12EBdrS9ww
K9ZjYlvOi9nWZhH8Qtd2KI17KA1ZPULOO5Hb4mQ373rk42nvELflysiD961MY72vZ0zaG/wgMra2
JePMWDTFMyh8YzkCI0487RfR07T4kB/iE9Aj35rBHOzX9a/jbUngAAhFZMWXVU6Ui2CjI8ZIb59Y
qQRrB2W+62nup3SytOWQv0ydjFFqY3I9I/ErL7wUKfhaQ/s31+BLy7Dhxo0EytBV7cCkMg3S+qkg
WtZj7YZgDlu6ngiJkaFeYlM3U5pcaHBFoE0TgZjk2jh5iL/ZoDy5eJgYzgWiNxzqhDOY7qS961rn
356t1NqybXUS2ZV5Cfx4Fhm00oCj836HjVS9f9i3q73TxHhtx9ZTZK7npbbvkHXe2Pnm5HXc3ltQ
9sH3/PnHnoETA4ogkBabf9TFfYWHA/5E/fDRIWUOyBdZnsA+xbYEW0NtxOJuTqa9FWtR+wJFRVWP
Nkp5no2SQuaUbtnBc24LUWmRV6w1/FwykvxpN/raja5J7meYZh5jR2QkK2zJ4f/GWMIjmqmajDPu
0q8pidUsueLyQXcppdTX5CbhlNi/ydMJDFnnvOZQX2aZFUAMRJHd8fzX2wGV+AXAyk9bAQZKm/4V
91l4y+vUGoqqNnQ5YabfRc2a4XAxpozaESMPD/m5HwLwRUkrwmyaMGo87BnldwBWnO3JozPooTnA
oTWk3Gcatt4vcwTWIGUtwM3xCZ2ntYbimIsDa0CA7+COWsjIMlIxShegLMCcyqcR5fgkZhYRh0wG
CnL7p2WR1Qh33HYA1skjX1gGPqpTFCqHA+rSYAy9ZsQ/HyleMVVya6g+Dyhf66P/A1BLAwQUAAIA
CABqKnVL/IP2M4edBQAIrB0ACgAcAHN0YXRzLmpzb25VVAkAA9cnFFrXJxRadXgLAAEE9QEAAAQU
AAAApP1pkzPHlSaI/pW2+XobtPA1Iu43iVJNaarU0oiaqR671vYaEkBmQkQCWQDyXTTW//2GLwg/
7uHn8Uh2lzX5kmI4fDnrc7b/9387Hu6H2313ON8P1//t//tf/t//bXe7Kf+Ht4/T/bi7nD7ezuF/
8H/cfDvu76+b7fv76Xi4be6XTdfZn17vb/6/uR5u01e36c//P9H91/8iemP+63+RZpDD9Ddp3V+G
//E//+t/AYtpsJhKiyn3Z2UaixmwmCY7c4tJvVzsfHjZ3o9fD9NSAiw1locc8b4EOuTw2RsbwGKW
LOYOLPvGYgosJslivbv+rrGYBIsJsljn/iIbd4Z21hd3lu/s6XTZ/bp5vlzftvf78fyy2V0mcv9+
x6+qyUOI0VMJXdStsT2e3XJhfXh3elzxEO+Hq2PE7UuD3mxXPESL3iDx0sXcC8uJqdxqz6fD96fL
d/9V/PPG/Z1jq+mEwqqwmr8v5bamw0s8FnjfTjf1j4/b/fj8g9uXX0iTheSYnvSx0PZ0fDlvDuc9
XEWqtIpwfxYmWyWeR/MLjGkB60jW6myBl+vl4/3GkXq4EomvZF5C8UuQY3SOvrtheatBhsPrUAO5
VCKoFlsBS4i0RCAdudxK61kUuVUqSR6LnLY/Lh93vIQpjzLUXhaQhk0LaPdnPdT3AJ6FLOH/rPIl
9sfrYXc/Xs54I/QkRDTklH67b6/4RqQmROIJXmTrXK7743l7Co+M77Yn59KebGt3y1+MJHTmH6pY
wBNJ+0RarHpjnvUkOYgUSYQv6J0XAEpX9uDWcArEf+H+cHvd7i/fuIUm7hXd4Pfi9Z4jfx1uJPu4
Zz8eu/ljZ2zYyseG/+Vh/lh4mS8qnw/8b4v5c6cSrVl+PPIfy/Sx27hcfqz4jdv08bRvo5YfC/5j
PX/shLiqnFnyH5v543765d4uP7b8x2N6aeMubfGx6PgLU+mlpz9aEajtaeLew/X2NDGOI9rz/ua/
dkSMjxPNj2S6CW89/4+06Oa63R8/bhM//jgdsBUjkxXjFH0Ud/ky346T8XF/vR4Om6/b08fhhs0P
Rcxwd/SxsmRmBvb8WmLMTqmD/AtLXZ43x7fJsrqBS+qzrUQ1zW8F+T3dkG9FV9banY7v+HJkss3c
2VR8tpkINtfD+2F739wmgXqYpOp+783Ry3d2STsmh8yprEicackv79fLZIfep0N+eblOix+uX+6v
2/OX1u11xKB32x5atwfO3ens3FEhAqIANCtMtpY2rbXAvgRxQHvmVR9sBFxPJerHI7wMHERNLsdT
bOtAYC1hczLNSP5+ed+cDs/3x6IzO4MF1ZjxkBLghtAyXbYvJVvEBG676/O11KozAopSxDG0TsaD
MwKZLKmj7wRqyYmBub945v4Slv+CeLvvkpR3JBZVHllxchAv1y9RTnzBcoI8pE6knkSPXys+wt49
gv/X0x+P59PxfNgcToe3ySMBv0CYycxvHJZ9Orwep99oSmyTv0SNTG4fb074u3864gdROXfX3/X1
cnXicN8Q3DZXJTU2OF/u0129Hq7H+6G1nMlJpcUOdfsisnxhCgy8ZkLEm4uw+YBEhCFohegK97Us
WfJ6fHn9lNzRXU4JNQPHoz7n++awbwEskiBdjpl0676B+BFE/Lid2ZKRbsd/HuhqHk0CbNNXbYKG
OENk37eV7fF8vB8n39Gv17i7XD01rSgBtiZ0dnecEIqLY3lG7Eyxws5EN9aZ7Iiqa4sdZAEnYrPS
+RutnQELuBszwq3KnWytEVy+yG5MNe0MYA4LYg67y9N1Jri9H3aOdu/HC3jJIXNCHhYsFT0IiE1C
3vn3yBFCRN7ne2gJCITRiy6nJgntgCjEGoaAytWPXiUjEI3ajBa0ZB2/b5d1C+YarcqO++Pz8+Hq
JHZAtPGLqHzBIMXOl7Mjq2BIOEjvcAWkYTODRC5do8vt6OC8L969/fJ8+bh+CYcFT9F9Uu4A2u3y
V1hQSuAiJLrsmBv80gZ4IZxiMms+JkEfoAX/J86U6B0fB1Bq6PoCoo9fSvClSF96d0bHfbxcj3v/
hfvDZjKM3li9708QwyrejfFeVbwT/3kIh7CEGBYwZAGVIFyyAHeh4XuVvg/hSZO+f+zfsJ/H4Iv/
nALy+c+D7Uvy8wSNz79X/Pc6fU9B8Gz74POBbF/F2FH5Obi8nnxOwgDZ5+DwlnxuEnC+P97eJ1bf
+GXgAvT2CQEXC4ADCHJ9Xq/1gY7P27eDl9eBl267y3uA1r6/nRaM6RbposerynjX7cf5vv0+cZME
3/bkW3+PQe+/Xw/Px++eh9lvJf2WXOLjd0UPfleSb3V6/v1hd9peHRTlbp//aTV/bhzUa4b8pyW6
roH8tEzR+8eRJ4XL/64pr1pEhPb6djxPFuXLD7zxCHKoMow23xn4caXq7zxvHNx3NK0XbzV/O4Jv
Lfl2SL/7nx/b0/F5cuH/myPZxoMtzp3/vkDfDvVv58cGNKrIg3mejfbHfN8WfCvSt0FDqPx30Tvb
kr5t/rvgvlXtrbxs+D+2X7e33fX4HsJHk+8of1I/yY3ceGN8sZ5byPYhAGRlNDjDBUzfqp/0T2bT
bST3reqCkvDfOm633eNb97tqozfCDuwvRxkfvtaz0TF9PUmVftq2YH+4tzr74chm8YeFnk4Mdh0E
U/jYzH7u9LGe/k+YjQG/rLr0y87fEEP2sZ4+DtZJ9Wth02X70JFd/jT4bUFOrWZL9PH1AN9K2z7/
eMzfCtyYtINK33ZzkGf61v207KaHVoZ/rODuzfedftltW4rp0Ir92AzkzHYGTKZbmk48bVrzm+7I
XYv0ZbytcTOAZzayy09sMgITjrR5nhrJM4veOYNjTqAKPZUcA0IaPnepIWLssivrNpY/uDJG5UQ2
LD6W4GORiQNlSpbW/JX3lLM0/eWHHBIGCCKbPpb0yiNnKUAmohvzXxbltgfLb9sOuTTRy8fmvx4N
ObTn0OJ7Oe2clwnTaxNiGboFsVj38/zX9Mp9oEyK7N7sRGpApIwykwoq/7ifmMTyIsWM+b2ZQppp
KM06xYiFWXmM/K0PffraTtvoZfm17HhaG4Z0bOFdRiGWktgCSTxmsiXfu0Hv1REq91ZDUrjxl0f4
XolY7HRpvSkkMXps2xeKb6GuDU+mMYZR0ZrBTkC77ozOv+2LI0vA2tJwJBqECpKklupbQ02MmcaA
GO+JHPa/vPhaAVkoekJi9OMoziZh2AN5pnLWyr6Wk0EHFIA1hc60C4kgAYWpTAwnIhHTqb9MNwbe
KjPpJP3lx431gMKI3vI3VsqiSYjzskhZZtuzkTEAI4N76PhWAigu9UjpmUWRKQwNjfRtZ3JDY1hQ
aAeubOhynTkubJzd5ng8QksHnn2yzTaCN2glVdrZ9vVDHoGzK8O8WRApAzLiTcEgpR0OlKYS9My2
oHEx2ZUv0Pkg752bSI5DJomyEYBDVJ+/WCkKLZL+9MJE5dDj5mlz3PBiJWQqc1wisLcn6a8PlLmj
7kGSwQ4if6+FZBCSl+NDJ/MHW1ilwvA6d1CC2fgslYBxaAr+6BbGHdD2vQCvPV3ZZGfw7KELs7R/
uD4TfQl02zKmyTKblshKkJYeWFJreHb2JGAO+lKSmgmJtSRgLctYKDOBA51JbVmdZFFwFfVPWyDI
pBWFLBoLREGAl4q4X5AIS1dTYxClT9t2sKfucusfuD1ypLsWFet/mIQoUJpjD6T3Q54ckXEmBVrB
yfAtsFSUGYGPPmntEVycLWwk3RfKb4S6R+QW/HLjA9i2ZNRucviQe0++9iHaQqY4MAYY050gZpJM
GLETDD+ZL071PQH+NkOuA7ReKnz+vW16MIdDxqCO420N2YuapDpEB0uhAnRHj00UAd5KagFwryC/
eYxyHIbSUewWjqICPq7F+tYgW0GJ4mu54G0NeFsxblP/E3rh3hSMYQuWFNDFpBBlpvBmRQ08gBi0
5JDZHt611l2u5fti4z2ygscCmB0X4qAhCVU/Vp+aMqUETKkzOZp+P/yfnHbP/3asAayQWTKuFDCu
FIOdJRinAyQuq9hwN6kui8QQkST+xEtK0SB2QA2cofq1AfAP63jMeg84D4WNoruq0kQ+l1R1Ok+W
CoBJRZebwqpABgwwkWKZHgP3ORO+Q8ByX4jSYeFtgo+lwlEAiGhQL7lfkKidDg0kIaFvF0o35aER
rmC0YgIBwUeVyCzUfR5aM0um1kAQd7mq1UtROgJRmmOzWlUMMwFgIKuYWFMK+Qwg5KMbAkl2gLkH
iol0GTrrlTaEOeVIXWxvFD9+PlgpyPUxWF1PlhmwhQfetZ/cn0l+75GR0ysmCDEbOQCQlnpkfJ+H
9tlBkzA/t+nKuI0FEGthnC1ccwnsq2Ekv+yjyb3IvFwU+7ClGLULWBncmMmBt8L1kBAwjGXGldC1
bvnXk0moc9W1tGYR4EblUe1rEBJV0qgGECIMAGGUBGC6D5NJA2KitnBbRAXE4d96HDJwODdLve4B
QWQpc+uuX7o8wIMYCgtHLy1iAHxRI36k+vpx6hHguyV+NC7Cc8C7t6IlzQCp9JJBkGZIvAeQRs9Q
yujUB4x+Kwq4kVJQGsoFIZu+Doh7yQ/wMt0zWj7ec+9xdJReQSAB52CP3TKGzPOGXiACYqFuAYXa
sRBHujRSFDBSTEafRi3iVCihpSsAO10oagCDUBkaLn1hJVgQX9Oc3pnTBXgMRglZCGG9iDXxElzL
kXWRDYy/5rkVWi+CejvsZNqSpeXSKusANjsw8fpEZMAGH3uERhgoEaQu+HKJ/wBj1FIrwdT01qiA
SChsUbHgbeA7lFTWUU8NWaFmtPmXahEtQYhXh0T3iKOZIkcDZMLonOHcA3vKIG2jp5sC6Hs/AEDV
Zx31IOvIIuNXw1wt0Y/oslz+DMjkGAfwyxLjLlYXYal+Ae/JEUTzSOKP+/+6Gs0DAbmSn8dFdAn4
4wVl66WLBjylYRgKjaXFwkAYgIEwMLIkAeDAvBA9Q2qPACyIv5J8KXcDxtSBPkAxg0TyxD3bAGJU
quqnzZAuCgjqoWNclmRjgFgRgeCFNxjEEiYECD7deS3GpVCylyjCa9KUYUEE7fZUlurShm4FPEaK
b3o8QGdwQo+TMWmgKPxZLn1rhOzazHHRS1EOmJRem16AfQ7TBvHjMU8XLshFYRAl87d0ZpLO1gpQ
YMQcdpemxTIzHCT3aVtNr0s3vgeJvxmW70pfVemcA2vYWgal9KIF+S0DlcZdmansw88ARaFxVFtS
uEQBQWmtZHhrto6Qw5S7DgsxDsF/QfBkB1caXQ8gGxBAVjjchOBsMwyMNJ2tSgMiXTR1tl9Em5xE
s0CgSRQ/dnUAwKAVBgESE29pcGVZcocpgeEQfQYZKXmShFpm3SoQOKHyyFJE+yHGke7tB8WEYmfd
24OYuwBxDw8APcE0N8sgdunSgO7Mgqn+BnXdbgDJWyUoIhaAowWAYw/sBk/pFph6KAvJo0jA6DAD
yHUIBAMkubAgeTdE3wGxUlMrINxi4ZKAooA+UatLfBOLICGIMPZE77vcUlOpbQKMQlGVZaBNPFx9
4G4LxWA6ydUfQQDGVI1Uj4OBfOlC8RauVA+vW9OPbcWVgokDUrbCH0CJqKGKLrgY9OTzYuhu+k6j
gK6Dz/gkcSVtz4YCYvYv4ExStuJDk6X+FDghM5GI+2MFzh81qKDIy7LywE3wwTTwwYg34cwdkRhk
JlBA3TTj2lRRceCJSOTvu7QY4IkYWhamKkk1BqG8VIZnJD5xFibwocszoFS/+F2AOBa1URWfM2gf
kHMgR7SEgVFw1XWtWh0FYtGisDErlAJiyVLjKJ+LZINAtulBIMPjUsCFMroaMOvcpy5QB9Jbcnmm
deZIIHh5EB3OTgH2nRLUCykpVHjMEqQc9KZVVsvLsk4VBpoosx0UTGESOJ9/3GyRBugEKEXzxhXQ
PQrGuqJth2xTKkoLHfCI/KOwAJfcHil0RKFN27WKmRVgDqUwc4yIOQiJu2C61cskD9686oq8Glu9
c2BOW8PUcMzyDJALiWU4DFfbBSgDrlxoXPOCaM1o7uPEJT3gEsNk5SSND+Rwn/tAYpAL8w7oILpz
sSiE8PYCQHzFwJQGR5AeIfxaGORFCGRjyVGXFbL550MD/tPwa4O/pnlrYlygaKG0DNza0DPoiMA4
VhYHz6wcr37sxFwAIxeNsoCJOwDUa+u5MSH5CrgeBpCXL9IBMT5jGTRmNieBp1dGrsZFngRI+ipz
Ipc2uAWpt1q1ioskwmgFmyc3UxdQ2L1lVIfP0tDQnO1t0TZELR17kAxEEs58zXuZVu/cJoD7ifzH
1fLFkCXcF7jfMu0AlIMVqdaVsFkH3nvI08z1UnUgGGdksreSnwoSeqzCWKmAJkr+03pclm8AMKLr
Gz0lDLhwNTbkAmgxkxUzmAWVOv4ALq4salaWynbgg+lD2aJmCRiC0LBRoJ1F4K4ecBcpPXfSeGKx
MgQCspbtAFDaAKoDGu3yNL2FTagFaB+iGTM6pDEJC9MqFWMPpng2sEZz22YZQhE9APuMAe0NfA4B
QPO1RsC0gE005GgajSweWQQgvVHoRlcIcPTeDKgFyIgFGhvHT+nWIKWIhvl0lurXIdtIWqWZSHYC
M0Dmg8jdXG2z/gguVOfuG/VIkDgtEzYbkEWHhUUPKAQ36l4hS8dlyoACp7GZHaQBFG+Z/K9UYwRe
WrE+0yN5DCCNlnGZHskiIyjWV4xYmM0rEEouE/qXMgUYpUOfm8N6WRmLwl22G0C1TXC3AJIvua4O
KcyHirglSFEPRUagMNeOqATcCQUAxveGKTNNEgVIwlEwEbpZEgIVYopsi4VjjwysnsT3fL7E0rkG
hjxNwvU4mu0WvIny51RDAWiQP6Bko38JaMzQE0msugUm3kMnQBftKPRSEqJueKhiMhhYGhhYmq3g
JnAlMMY7iNr57AEgTA2X0ZpKJ0GRLWlt57BxaxcZHyDtgb5YrQMJSkwVeqgCnVFjo+QzNWDdA7sz
lKi2WUDigDF7WVUBKasHJPUIUQ35PHoXgpDkOFQTS0MCFNSW0pRSTFZIE0iDsTDK+kUaE8gglrLR
hs/2QIIWPRf7wvxHkbmuiLcsGmahj61SjRqdyYMCnl7H1ECk+iDw2wTbdHxtxkpRAFD0pqjo7ReC
DECj1CrzcmzRPDAWviBsFgZPBtjFSY8CR14kclwMjLzPQVEghktyrUQwAJyeZXaWvldws4HSLu0c
WVANMmqzlIV6N6UeFPIZyaRSJTQHmHckclNR2gbG/SXN5B2K9kChuxwIjGqL6s8fMSMJ+s30qiGf
hAHonVKgfsc3nAFRIyWZAsZEa+DJKAA3Uq8zSSjwtRWoy6evUwCRtjIAr5YOKwDItQUdQbxlCzL9
CXIoHKolxrGeSIVaknQMr8wCChiZowWyvdVoehhRt2cNIUAxFCiFWUhmIJQ7C6xyiQoCpSXApZ/j
qIr7atdCDgiy9QkMwFpjGzkmdAZQepmWOy6kKmoDKXImkxVaQz53ve6KlldI0MqxgIWKRhMTiz1B
1LZDHTI0buMoCAbo8EjdL9LPgZlL4iluHbH04kCBnZKIOw0EEFU3MkjDLFOBuSmKEKldAq8AYyd2
lxhkDXhFOQRCF8jSMocbtBfvadagU0R9xQMEmX9So3C6j+QDqUZZzK+kdYVUQVzFQITH4i5PHURP
e1xApZF08B+jUlDRajEO0l2sQg6sbwQGwkFSgnbTIbYB/BOaRBCMt0VpClAHBEl0/nu9YA50fpiM
Ls2cXchGjHkAPp2PEYPSqQ4FF7wmAGGsPm8vpZfdD0aAN4xM//1HNT6IYumcTriCGpAULDvm3Aks
BxWtxN7x+M64cMhAbMJwhuIMtKCMFZ1nkwmSww2xkj6vHV5obZiONchWgz6QPdfljYB1pbsf+FoY
kLMiYCLYpAKoYeyLOYeFcQmyRJm+0UEgGFQhUDoDy3bREjTdKSxDqZc3Brw30TdKUSTIORmyUQdi
WUzyEGVAktmxFZZHHXBIAE2MXX3oAGjfoMo2xqLswI/aZRtU1yhQPGeQltE+SaJ0QKIo0JUXjUqw
stGsGnYmkUUawzL8NgJjvOeyU2cLCfx0V4jgIqHXA4Kg1EuMrV7XIBNuMArYdj4eA46tDA7Io9CA
HAcG2pl/GSTqaAFYW+NS5a4rcLhuOeZhBJk6fTEuYSCdUn+Ckc6yq+2wsCeBj664tMMZ7kbZLoLx
fFKbbZDnP+S88VCZTtcaWNQwMEHpR6tqIP3EoitfnukCuvINuPMAlJqiTGdaTigA5oHSCP7x0BfI
WyCpPQ4FM/mAMwNN3x74SL7wH0CNowQDoHyaNwBvNN8D0WCJrWwZaetJgA8OGCtzYuwiXQFktRBx
62Pny/qJBmBlSNW/C8SbiiEHiqPKHuiLPMERhMB72chcBuXYfZlU3+ep6RJKzb5MTR8rgUIg77v6
XJ6g2FENuu3y6IUuqqoMEEA5rlkp2QfOjRC2mk3vybOHuekavLCEeInMGnvKSm+5AZlP2srGBCNg
cdKGX773SL+EuIDEpkn1ldFiEnoKKuszPy4ikwp3pSNBpuDfdMvRNsB/lwV4LjJzt4cR8KxcsVpk
owGqqBqZHSii2Y0GxCODfwGyUkbNxiMfVoEFDJ0NWTHVEUogl3PomYYvKSUf5G0NCjW1FrAht+1k
tbSIZCwAeEsMIMXPKw80LLEobK1E/kHmrxhQ/xEDW58o0TX0BshfsmOPoAffyRXQGa28CyVRy0ZU
AHgf7YBiwI7KUUHvUArjSvouwL6FZupjZxQXXJtgQjSzLAYVjwO9dF+X0IuFUQfwzMKPXmQ7aBRM
pO1D6o1/QXb80BWVvcvqb/DcQwHE1hqHgbaCYmRcrDknE/QILWu/F5J8AJaZ5RLzU5YEcLE6zXjx
KYUWOWhcTn5qbAS+Vh3OhcL4A2FPZwFYtSgdBMwpLGMpzbEdYMh3phHmECNKw+qrnayi84GsO5Fn
ZvQLOxjkYhajA2WtOwFIqjdcW+t5lhwwVJRhauYTHgokYZZ7JZdZwxZ3Ri2j3eMCKwIBLTrDyD1b
ZWAJeOmuw9mgsOZd9F2rgzqqv7Ca6Vz5eDADgNSx1UoJ+BH9WE+083W1IDpvOtTSR+N5PpKE550f
0+ezDjFxD1I2EsuFBni9NHiCBZqBrdTQKqwF3b7KhPhlZB/YssKMqKOdhIk7VnetFs0GNHiWlmnB
kewykA0KMSdvYRhgYSim4NyNm0IQqkRtHPoVCahGoFR+hUe0dLQQ2ZKpBCHV2sLxjhnQZmjocfYU
eb4sS/vNotcKKk0dW8WlIJ9PFyNnCzEEByoP3Ng8kvqBBkFblKVkIKyptOIaC3Q4o003ki8UDCQN
ujnDDfhpsgOXHSJJgDpXzAXgRegkDwRjykWHY0CtayfHugOTGNBwrzFLw3O3rysN34ENOg447XJE
NSrEsPGwu6i3agSPNijQdtenjIIko1EjE7jHdUmqAyYClkajWGBmyxpoNGSXTpHwYUSrFyoXsKfq
AZd5JAXAR7ZoZVeZBgccVCmAtvdlJ8Cu0vWgp5w+FnBaFB4h6lTXE9RbXWsIXaMTuSzy+CoYkAVW
tO74Pi1Ab+kB9OIOThp4KTYal1wWENweu3KGkFzAq0D7kLCnz2welo3VgKdHjCs/p1csfhokspdC
YaxgXqhm3KD5NAMs3NZ9x+ZvPCpTgYFWlN4VUaKhReXs7NY5dAIUd6/zCQl2+dqg3JBCMGPFSDKo
zEVJDox4OHoASVcdqrcYcRa6EI0MDgGEUj8KABP6docgcGwkg5clqA61xB6ajjWaLMx3rMLzomw+
L2qR/4emliymtBRBTJQXy8Vq4s/CIvfSw1zMj0OVjnnWYY5g60Y/MlGM27NyOYgB3DXbA2I2T3iF
M0rJvPAjLxbk1BquWW1KxAA5sWzbvNkiBEUGRE97I3qZfgKGQgrLjT1NbZxBvz8BQf++0cbBGsaK
Tr0GUUsCOEHUt9kFFF7GDDRxq/HgpH4EfTNCEBSAGIShy95HqbQf1FZQPLfLO/bNkGwHJL9GfU4e
3XhAuVw3ohIFtwCAnkb06x56GgH0BCEzAUfQyZGiXjLPrk2uKoCuhGVnGRmck6xsbxutn1D10jgC
d226swEXfemxWg376GmAcp44IyHdF+BO0TNB1NzJBcnMg2h07hASFD93I272ruH4VFFNAKIprqA1
jmll9gogIIbONjqPiw6kd0BzNhhnoE3lqECn30ZhpBCiVdhhQBdt1Yp7A1exL6vVhsVjAyxHFr0D
l0lEIOo9mNZYAFBsrvpGpkAPXrro6lBRfyCSOaLaDov71dL7CsWwduE+gNSnbqjGex7JdQok12mm
umFWfBoovoFpqkm7jgDzn3YVEKUVH+OoqDKjAxaep1AwjEDCZFsJ82Vp9HgpCFMHDYD5ESPPYc2j
ZEbLAEh/aLTCQE2zhIBo54gzpDsJMku8i45qvTuG4vLaQmCc9wabS3B2h+jqfoGHwECXGyNQzF9D
s1p0PaKXGfYDjQ9LZGL582hir5SNVCDZAdCQ1J056aqXuhd4gP3YtaANMNt5sLbaj/VhagGgVuVJ
FuXQRUTguvhVtRyQBjBDlWd3F51BRcO4NOPIJF7NGAPqEdOc9AVSh4cS3limCIIMP+JK+HQLMQ4L
1BDNuax3804JnSi3vK+mZD7KzQCgI00rjgx87Y4GX1xPcDEuiVsCo7ac2zGW4AhAhGidybSNRfe/
AXUiGDjAMKZ74VRpxZZ2Tx+bxgyHrFvH0onoYKjMUOturNI36Fs4sBH0uVbZglrlnsmzSAkiACc1
ttq4luCkIFPaDGjgusTwX9+hcaK+MydAh8s4Qh3bAJ0AZFGAUUmg7UDC2kCTxjzFLb0vA55cIWn6
MFHRuGXYB8ni1hOdhmVVbkQMKMsv+30tO3aABk6dFFVN4Mr9LBqk2kum2uYhk0B7Mz20Osaj8L/I
uxD0JTwOUmNsDyKMAT4EmmukdfViEUMPagCU/pK0fF9kTxpWPSByAD6WD6Vm0NQVogpYLG1R4yOJ
0/ysVY0m+2JE7cVGgrn6DkDLYYUGzAdQBo8mQ22WpbK4gAM1jTemwyyNNKcWaLLYbMnDZh10yKQs
SxeTSAUYRzlYuzCKkVU8MjVSs+sE4jFlHz+5GGQBNLc2qPClx7OADBdJT0ENEMDSRdKFzsPRsG88
qbl2FN/3C60PXE09oqFRstXP26DkmtDPGyAMEiXWj7i6njCncOxSBlRgT7XJFaBo1nKEq+/MCmqk
FGz5CEe3T8cemHDIjHkCrLboW5h35MYteEcKjpsAGSySoeC0YlukLiybLoHc52JEQAVlBh6raLro
oAn6YES1/zod3A4if0VKbEUao0pZCWEsDWcpKSFV1RXx7YdgDnDhC2izVLyAvm1fNexI7SKQ4MK2
6gkG4HHSPIJaqyeDbluJ/L7kuMhIGkBGkgE5ZAL25pokCi5L9qNUATQ/CDxFCUlxRRxWp3jF0rhE
w1qy5Gm/82UyFai4GVB3lsbAXaNGDjzTMEpp8oIuPRTmcAeruLtyzNeyIgEUmmZpG36pZfU76NE4
0HC4l0zDcqIDCAx3yMk3cHCsUvVSn2iWgRpTZdHgcBeLAH6T5vhqjuCA6iQ1NqrvwIjfXsoWbYIk
LC3RaGSLW4gL5Pj46AXKUlG5MDAVSABgZ+PY6lULAoxdh5oHhYgXivmUHe8rkyUBaw6KscF9bxoN
e9OgdIvgIQNgQNhWMbECSksMwFX0yX7gtYtu8wSt7HyZEjqzab20AciV0sg0sVByq5FriDyX4KGS
Q12NcCX7AsxZF2hOlkMygNkv68KTGoIgEj3kzpIalqYJkL1iYOp5UyITUDqGdukbs9GUs9IBJedd
nnOgly08QDLSSEcKuDw4MXaLoZwoFbbIq1nGU0HCs7aMYx0/Rp0wVDl0RC3kP2qNj4ZVeQ8RQKMK
NTOWcCimtKwhOrrfxt1py1o2s+x4AqBwkuXom2aX8TWI42cV646tO7PMtQaTM6gEX2bG91jhmgZa
F9MVQMOsQQO/ReBr74il4Z4+j0BrFDKa/PJFC1C5ZE9QGEyVpnc9FvUnBjagMgqVhg0ril1JCYtz
PAez+H3g2xcTvMlYt8nNBVJFVvsjhowiiSLY0hD/1sniZfU5SirqBs2k9qdcPVAKARMcGzhIp0yr
jybou1UItPpkGpS5Jjo8suoFodr92KORG1iHdFIxsHByuUAoIGvw6zv81s+OBnuKAQtWCAMpo1u9
0gHNDMUs8GV2DBg+0RcdnSvDQoA935GaV1/sZBaKDAxI60VrADqwWXqDKhFH2ADFKAWi2T7zDsDa
1DwdKrOE0Dg5JQRorOc7vIOC035EjgQuwbFSAdfNO+kg+Vn3TBvnGVcAdpayVYMlFqsCHIeZ0/io
xwD91YeigUg9PRFpLTUMmMCgddjVR/CE6DXqC9+tCc+hXAvZI6jQ5/mB8kPZ4Ra9AAZSfQ+rEnxn
uR7QJ1dLNwsigAyMjY9hAUw3oGlLPvABZEk5p2rZEU+hAnQ2f9m593D8ajmeo1+8FfC6ygaftprF
ipJYu0ZJApjt1bNFXqnnC7BoSaDJ128KvSwDASHR0TZqSEAdR+atVlubghl2veHss1THiCwkrotT
ZqSA0nshwQA+24gDsJGqBvDW8rx66N7LRtcXEGgiTC0WgVTvNYF4TU8DyHl2SKqgBJE5K1CkyZdx
A/RM9uzEiRDwB0X7fYeyG10nPFAQIaAP0OOkY9lXQ7g+WgMQO5MTlu4WPXOBRSSLeOByGCbA/4Xk
J4YHkBJcVckP3SKnETCTHUFqXMDgQTWYsY1uFmAeZF+kHqm+MroV5v9YZnQsCf8akPKFesVIVHkh
rbWo2FOj0vfJN9ao2sTgPhqyGD4glxNrURE5tS98BEVQroQZPCqr/ZOLkIvGrZxE0U00MxICjYNU
5/KxKmUXIJJJgJCQligqVhmaRClxrB8Z4HLkqudTKico7FV5ptgSw7EAwtG6FXYZAHMXtfc5c1s8
GpmK77HaMbcDps0wYCsYZmNmYzZsdeAFUJdatKb1gHSUsUMTrTRE05XoBJOslVAr1Fui2VjIgLdW
lus3EFJn0UirHgQ+PI6AkuItY5M9aAyEmrL8nby9W3pp4GEarnd5uu8eCMMmcAM8zLLFcFHgCqMX
QrARtuRYg1RKkiWtFoM7R/zbhEyEywUVttJaGRApTSlc2DmxjxOaYK2YiuQ5WRkYaKzLM1eiAXhR
kPQOJSp5T+i55Vh0OShLRFEOpxEWAzED7K8sWxpgBA3DiAWvzKI3kE/OA0hdn/duLC7c5yMiGx72
AdR4dlA3iFajAVAq0+Ph0SOcp2DKERa0MRzIXCqaR1WCNRakSGgNztuoqe0IuOlb9JjlNCwweXLo
cU4JJhIpmGbrDyscaB7LjYaZUQQgyqTGnb6ak9ENgY6c8hXdEqIEzUV72xiToizwF0fMHLAJtyhG
DxV9bgQWR0OhsfuFOEKTsoskzFweSdS1d3pu02o0Hwr9QTNaObAtnYJhidIDB13tkE9+H9z52MFZ
27DD/iBR+8IeRmp02blEFf4emEZQ1PcvJtqglqRZJfECnvRpbmCSD5285F3WruIkg8KgwTIFAPOP
g9g1qTX0al/YymxykKbQi8bMDfTU5LctzWuZjWnUFq8YqGvqqSUA7isG26rlhFU0qbq07swCPwOb
L5rQ6qX/grJBR66DR4KxAD5QQBN6CYIZ0NShMOa1WJZUgWkjZfYu04kKZNUPptW9RKI4Ww9sat+A
BTYoFQKABD5bG7kTQznSd+lOaNDfT6pWqgNOFFF2QNnPBuoDqcYWzgCq2Nl0wQTNgPYStiCaZRWG
AvFkVXxtyrQ9NHCA678yo3hoFLJgULxHgv0A8uslqjX1ogmktUgFwgkJawZdjsiVK1upNUV1IEpo
GE03cAaiklagWtOQ6w4CpMXnctl1RgNoSOYJBIsx7XgAikYM1sN6DE2KH/PpPg/B2sNa1dzW06LS
mRDEFkzHNKidjXsgmPoB91VCalyortFiCIx9yRCWai93VBE36qpgIPEU0DkG5dl/0bBL9qB7pifh
jK4A7hgL33eZjouKe61m2+qGDvawAxcBdgbnPS+RONSSsG9FBjTwu9lB5ymBGkQl+lZxr0Qj7TKw
eTmMb1a9IP2sl2D7XiID56KMO8pl1gYwO2w56UFUmt+ALM2iWmsJtYMSnF5y83aSUAM5DBoOGRq9
UMPDmgsXeDmEHGVwy1baCEzAKEsCS4MJiXPRa1TlIKD3nQmnWschVJwhhtYYRAMcEw09qkaDv1E2
ijNA/aUdcBEQbMQizYi76yKpaIeiGWU5rUG2GluVl2YWeDmA5YTkO3LFsA6QqmXPuIorCOrr1NAs
ogfAQZlCsmxRq0EbGGlafbGQPrCyaiPSijOU5FrUjC2mPYBAWtHNWC3L0dFwjgFk1/qIEBgVYYoE
1aUW6EDOzjDystA1b9s2mrcJXKksYAq11a02zGCw62AKJHM5Jg/EVjIr0SzANYFriGgIzxeV2zrw
jpH3wgmt1LWDRmY067L3SrRncrJBPuAwcsVAc8wEgP/DiEq2GyVcTLGCY9XpS5DRnTPposgQMZrR
FowVUPDN7VCM35ELtwJ8LHJ8qrB4BjjzTpeDgHUp1bZQqgnmlVJuL4AFRe7G6WUdrUR5ebKcEr7o
bQKUv0ARHg/qgUsrW2AbJs4C0nvHKtriu8FI2A3GgKAYHnwx0haBYdpft3AEe+AHoqFDvjQe5BaM
hoGXMosHOcACZTYEsAJU8RZDPIv8USFg+mgLMQCuUGZ0dNX5o6Cpox5QFNPg0TBK2oYHK0aAoBL3
0w9fFXo5QAJU2fU0NmarUxQ6kPo6KDxVGMZZhDWtABMwW8rg77JbCOg8JBsgbA8HpwrmuWefAmRM
UR2yKCbycAFwSIxBQQqF25x3BdCilzEKMC+7p83MxqpRr0B0SHQo5XaArS90L5j2LIlGQY7BUOQd
Wap/0MBYU/Z1UQtPBKB5pSirTPkGmx5zYEgvC8wlSI2zfTWh5HFkkBDeCQYtToASiD+SGJxaDgns
8XxC1RxsAsJ/fYmMLMMaIHaoWh3UJHirgY5zCXECvWieDVSm0HiMwNhAGWTHzQBKUgFgM6Ra2dG7
EMtpUUCcEXNaLcejuM2jnuOtKaAgdNgTGnf9rop+kh0sODZlyUa3sORB/o6o91AjYgGkULKIb6Jy
kEXfCZBQHvKlQPr/OOJUX1xNWgxYVONC7YGoI039IT5bqN4FIrjPdW0hBy2Ou5XtExbCTIMhFVLh
dFWUKCvKthG1wkLQFaazrRRfwFVKMEWscyAIpVD2rb6fFiASemSIm4yFB/RpetDuNNAn8B2sqaJg
wUfuUT9gaYraFr1MyUM51WNRmr6s/AXJRmVweJk/CQAJC1ofhLoBkMNoikb+pR0Lgbt+QIPnNOy3
LXrJ4OIJkABWhuiZPKW5QwZAFPrmgCqnbdHwAoH9a9h+s+8Zs85tvYf9l4mf57tsibHUWUBldSNT
fZVPWOpBmNOCxtVeEIPYdIfG5flaP9BDjsJ9vhnasCxRQU06TCujHEgkpdAQUlgTJEeSyx4KXGTR
PFpBGIiiV2MGA6VaQWCVZq65+7OkvYy7Rla4XMwmXh4dZaUbVQ5QWNrUAI7pCjhGl4PzQKF5lr2p
svkg88w+4IaMEqlug8oFlew1o3tTVRGI2cmRCQ3PNZLAHi5BqHERlAZITA/D8R7BAikQcgT5sp4/
gdom8Jdv5LYsvQb6b2BakOZD99DwBt3KtwV1qRnauWx3KHC726HDGBSuJFYGVRwGWB7UT5NUupgb
3i3TbgChF92A8pmawREBvcUsToEQaLILDaSoZeGGC6qDSy8ax1agWpBlW5YCLNPpUeYkbI0soKds
u2IQAKk5h2Nw+l60ulMCCKuvtwCiUSfUvVWizhcDthgGhSF1VCGpdFcdxkyzF1Bd6YCM6hHPNCn6
4afGXAIKMj1W2Sn5LkBRj7oF6xqA/xMLR+n860fSP0DdtGVadiQ8AjSJGnswScw3fAViQBmgLF3+
FxjvJMZWDlZDb2SByXqXdBA1KQY2qAXupcHH0qKWYB2u6TRcT0XlXScgswueMouUd9T0wiCha2Hl
rxYD7kccXBcQX7N9q7k7cpJHw+RRJe4C+RFK8L1CYg4XiGjS1vBjZbg61pOkt4sfKiXL2nzgfND5
ZcHbXDrZIIe6mBi3aHCLJ7iMIwbPoDEqipY2HG8Dj5F6+GN15imY3UZAFWGX3qrvcojmKGs0H0rA
lpJmRKMwh8Z8J1VmHSxGj4IWWXqsJuOGsSIAwDI9muuu8WzBESG0qRYGjdMa8xYSQ35kmL2kcyqx
FcUJBINWTDHK47JBXWeRwqSX/chQup7JpcJyyDkQKVox7T7ypr6oYV6PeuPOQBSQ5raRMwBGf/aa
09op7Rt1puFGvM/hKtCKwVosEpGrqPuml9oBZKCoq9SVZHfgQYwFDrScT4KmkxS9ChfTTRCTyF6h
yOgAexhpRgfNnYAAWipHRmsH5kRzCTuTB7r0MmcA9BaT5XwRucghRmkSI26vOzQ7QZD4vYNWxmX0
HzSi60fTyOUFWYa9aITbYNa36DrUTFlDTEDovpXEBJAzbdBERt/eBaiwwaInMxCpVLpnROEc6EPN
+4ZqGCNOpgLNJVXf8Hx6IIBp8WnmmZMAIdh0OfW6W5Q5gzbOWrLY7ENhg+kHWiOoMYyIAujPOOAp
Yj2c5KhxaT0caSgH2NbdBwlBqM40+8hpoDLFgPABCyOjWoyN3kcWIMMtKF2A6T1Dp5FE8NgoEOKD
YLDRh76FPaiHViMh0HvJjniiCmz4LQdc4gzcHqUVap7kR1sBI2FszMVCZVK663BgEhlWqsiIeWw7
zDRBNoIpNfUihA1K0bNAj65nWYD4t0ZDgL3fgzKsFWpm3+PYGIk5+JyrZb0KKBgVXGOUvEEIGuox
cC3kUr0PKCzrinSgfjFrCfjHupxh2S17bICmmJI8mnM1i7YLDhIB3DUOTKXMI/QPZIJAQyq8EQ2Y
yw5o6Bzyj4euKRFAUszYN0Q/GLPXq55pjpUUHjDoTL0LzSN3FugcmpG+nGLSY3dFKWbmwcxaABPu
bAuNBpW9RUtibRaQ0wggp6GRLzYCMdhzPnFKNgZNHcumOXZpmQB7TqLO/aFvDbhvlAMUnDyQAdrl
DViW7SQBEiBFq90OCDwMhSyo6B1QwDYWMEK/KJFpBduNQnXzA3SsdVF0r7ucL1GAjNOXCcIHhKIk
KM8RErf2pcDNtAuzzOgAzpKRyLLRsMJFDAo0TJVwMKC0/cg0+UudSJDSUMyMIfdSCvZeUUzv0Pi7
KPSq1dgYQiJAf4NB9aBGMqQ7gXQK4iUJV4BHBnb2Pyk8dIZwhc9nsHlOIEbtaRqGzOaszaIf9FUn
2S/uBGY5UwPo6G4A4+UCWAREaOkQq6X0BqCk7ICT5KFYNHBmZH46udMARhg5DNlPZlWNYaEDA5FF
ewoNLUBDpi1Mbx5pllMnax3GRxg1kJ0BisOXmIC6syz51E9/XNY+o1mXXK2eac+UtUWJyaL71Qsa
3z4QPU9TjR7uIUgoL2SgkovuNEBr0BB/wBeXjQ0UUFmCG/Mw25LAKOtGBMT2sBug1gp11RNwOsWg
uELYR0wMNFo1RZF6xaMGjZDK3pW67pqCsFQ/4KzwRt1zJ6o19iH/xzZqF1S1vrEscwdzgKVFArHH
+Rmm8LbGBXAPQplwXrRHflBWueCFaehsB8CAckBdpU0rcDEJYuWjqEt5iJq6UyTE86pa8jdoNV5m
KC8U7wi8vZ7LhknBQNRVSKL6s8AoAOizDRAdzvASVqMGO/5rgMBbyRQbzoEaQKf9crr4/3Sfb3e7
w+12fDqejvcf/svt9bjd7D6u18P5Xl1vortAem6hwfkmQtpwj9v7fbt7fZu+3BxOhzewgpxXGB0Q
OQ5Bvxwvt83t+PZx2t4vV//Z82X3cdvsXrfnl8PmfLkfn4+77f14Od+qSwuHboXsf5E1b7pvn06H
2+Z0vN3ZLyNy4nOextlDux++3zdv2+uvh+vm6rfxtr3vXqfF3P/CrjXOa7lU5XhBfheb3eF02jxf
puUu3za7y4ldQ6X9pOayYY346cfbefN62O4PV/5UOt3HRLMmnOp8OU/fn+/Hl4/Lh7uX86/cAlGt
+W0k+97Tyfv0X94O+83tvr0f2A2k3x9meOb5OB3i4/102e43Tx/3++XMvmc/fy8SuP5+ef94j19u
vm5PH4fNaft0YO8ywp/+EKk/lae3w/a6e3VH2TvSYo8hE12RPILj83X7dtgEPmI/JU+QBJ4nrOni
HV1vji/ny7SDB9/wr2lzGhULGnUkvjneD2/sEulCCYw88e71ON2nf83r8fwSKNQRPLcQeRhfhS26
2KB9f9yeLi+b/XF628PuMt2PZ+PDnn1jkb9OeOOP62nisRvLY5bcRTLW/F1cLyd221bUHnI67Zvn
iOlTR1DHvRczm7fpXbf8HYjE565nzigYmeEu0701+yiEutRshbyftrvD6+U08XcgcpZHx/xNwwXe
vr5sXq6XiVEiWW2+He+vm/vxzt+OSYziFo3iItMTm9fjmX0UlV9u3Mhh0igHLzA3z8fDiSUErfNr
CJ/vD/ft8bS5fbxNd/pjM3Et+xxp9y6/Tdso7CYNcjztvZiL8pLdP1ECyfFxO/cb3xzPm+13+BZW
5Qoo7MH/tL/+49tET1h7qFxayX5BVYlC2W2kNTyRBu54O36fOHxSX7tfny7fD+xFKp2/Y6TH6+XF
ifynLXt/OnGXSOmrXlvcLtc7ejyb3VsUbe/b2+3b5bpv0P9Qk2m7ieQP1/cLINfENw5Ai/QyKfhX
9pfk/IXjWRt+6cFfQfjMHO//MQoVlmRNpl6j1bF9eroevh7hC6cH9o1LhOyCbj2e3z+mrfx4nzju
+MYrNKKYtbM2WJUY+Maz0GQWsuv1uWoaIuufDjunVRC96/T0TgLEVoT7y1tQHJPMmP77jTdZJsN0
h83LB+UlcojPens/nrGtocfc4opWwn76qcnw5IWGVBm/xqOftue9Y1f/FOynY6bEYubx63YSEJeP
6REOXx1dOaV+OIMNdLncLO4+nJplPG3y6wpfXyYiujxvni4f5/0tClBs56g+v77A+/fr4eDskc3h
+/t0I7wVYNM2RMp5md75w3/uhRb/tVLZFUQI4ugkwHl7ghautJmwi5xwv7y8TEYqphirM6KP7qhT
vO+TENnsrtsbK0qMqJmFXydyu8x2IJSX5Lq9LRS9qOt2f7w09q1lvu9w1041OtPP6ykvs6FRLWX+
3rpiK/hVot/TECAi07xR6SW9eTmffgTlyZKAyHlJRVdj0tu3wyQRr9sjb1kLon4SVnp7P2x/3QRG
OkafCQgenfSQC2BFczDdZLQAHkQJZWL+QGGl26T1J+3/dnw4PZDAdGHpm9mMmI4wGVL4Qix53ZRp
c9tNuuzkzKDL18P1+TT5ofvjV3YHiSldNDDiwE+ny+7X//y4OM0yyTeWvgbiYDjgXXSjmel0uoaW
syRFpuGsynS1Y1CeGtL1O1ggfro/3hwlR4eX/1hmjK1nCAL6JUZW/bKMm/xzBxvUUeL2iHRCbkNO
HD7TYuDH2eW7cTCNmGEa0g6NmKH+k6Wz44n8enibKGQ/Obd7RKby4TJokQFby1WnOz8dViwn5+U8
3hHIdve6vW4nXXidVNqzEwZfj9OlTuu9X27HB2dPBH1zf3RoE7d6N68+uoi+MGbp8vnzT/7uNQqO
adOM5ycffK5FNpKUrvbuDEEH0pw5aSEfL6U9qzhOcdzq33t3u8mfRHiobuhUJzY7LcTm67T+9eW8
6brNE4cb0sEvpOuVW8dsdtPJx83TdT+9z2Za9cBittrUYlj3TneiU5vDbbd9n6y7zvIboflUoZdI
XMJMRu90IKmciXiLcAo+UoJRdbJ17qLvbCc3T9NpJkJ4Pk2P9m0j5WbPLWSK/lrRWrlPZ9LTqW4T
De0n63WSM9M/8QcbquOn6tsRHdiOqBb33LsxPJU0m+fT/dt1+w6vR5aD57rixc3m6J8cLkKnE4/k
UHI60m4yJx0bCgluRVRro9MuhkB3d7eNLU93ohbZcXQ3baMXm+dv+0kJTCw/WTzTIz1zCwlZ7c1Y
fyQjwCOZai5OjWbQ7ZCEeG+02Pl2tLudrp9OtT87rpTgUGM+4VCiQykDDqVsLTBxF3bi6J2xcvPt
dbLfN7dAeZvtCyjuy6srIg2LrhsmoaU3p/PkjXx3x9qjZTpZKyO9i+ndnbAwSm+eXq6H90nmTBcG
VtI0ZSx16qrfkUZ3VE6ZM/OTKf9kcjJsnTS+emnB07Qg0UoPjIcrms41iVKpQsjkdNlOjoPn9fvl
fTOZnZORdjxH2Si8wVCu7ZNQvLQPia+ed6Iz+rTd/epgxLNDvxw2fDvupoUGZp04YjWsk1qrbZ9u
l9NkbDhlOBkHHtrcT6pyP+nKrpPMYgNZK2VUbe/Tfb07OKkLLaRq2wgh7ZjHGx4yHOdydcajf7lj
whImHdYzS0VJEpby8HEczRz9mu27tyAu/m+TWc8fR+t0Hifk4pYmTf/ijLr399PRQYMXcL0q9NIP
S+gZ3PA2dX63r4fjy6u7opE7V0dut5slCXwpwd33qLOTxbXCV/Mi8113gruhICPndTQxiI5nh8Rk
RKjZiybE7NPyZnDM88Hykrgni1P7woYSmFS/pHk17niBECMlpShSsanHXRtuT6GyNCwjZzKa97Tc
D8us3ZgxmGrwiOKeX5JriinC6gEj+cPtLqfLdR2Jx3574cpdbbrgSPwhPljOFTq7qGhJsMfjWUWR
G/cxgqhW+OOFes/a8QS5Km/flIy3eD+W64Qw2VU9MBh2JcVRZuwbFHYllsJguZJkVxqzS4/YhddL
FdJkiZyQptd1gpOVQrOyMl9C051UpZtgN6NqtzNjIKu2o4MhSR++RxqWI6A4vT1p2LYKYN9qVBn9
xHOxUpLVStZmN/2IGz7dJgd7E7EKZ2iHTU5/vh+9phy33M4sEQJupuPQVk5Ss2JO5nLALOyInrUj
CDX7PfUtKuLF0Tjm3BpE5O50fH/ojFPts54IjADqdTWWahlTSsjsSmNjSV7Yc9wQu4DHDXXJVOTU
NG8P9YzNCWiZlYVjn+sy8k6O9D5BzYLIwhQIAptiVXXshZ2EYXi5eQEH5b5tvyOLSCUd5kKOY2CE
/Y/z9m26XGfix/yoSZZy3CR7etFuS7HtSp2f3I6a993nlppaYz1y10TEkOyWPsPivnlOlzIXaHqN
ucYxLDVqaHAWHbHjXJmhJmnrLMzrIUGkopyVYvT5hB5Z524hQgRzxXELhnsqoYdMijzYzGcWBI/o
tP3hooc86ciB+poerGnqMPZOJBHu/noCg/isgdv7dhd436HR/h8PQLPGbOBoxfpX0oDbWGaj4lGl
08VnAqJeCWqPj6kiZgWfctKs1/l7hb0cLs9A6MhB1uUF56qwBGtzByPK9wZIoU7ccooq8iHlHjcY
nCNEm3vAkZbjPqq6nT2oIWxBoAoIe3BSbMiFWDxj1drk9Ubm++hkbcbTBVZb77oqbTM6eqBhnuPj
19vTy+V6vL++TRTB63xZJ3HGmrGsKLS5QFXUmnkwfmaYswxLbE3SDYGVjexCQvU1N4G3sFhL0VL+
8ywkW+60Zd1pU2IhFj6d5FEVnftTLW9T8j4iAcLcO3aZHuskKyDJh9EMHde6Gk+sqzFkm1ENu5jX
RIrCOx4Fw1JTsQCPyOSS6eEyrP/b5wa/WcKnLBxAISYKn9aFEAvlSFF3eXm7g3XECKRHvBcAwLAS
SBAa8n8WCm+K9zmIcU48ujYx6meWGHO88ZGfvPQ2mxI71nomr3fIfY/koV1doiH0QQg1eHN9hXLj
bNEhR/damBwvtRUxLQJs3MTRWHInrjGpvsZoA4vPdCIniq4FpbErqS6/q76FhLIWt8iBHiVaopvd
k8xlU9S7tRgGa0oQb9SHQTqIEPasBVDEL/RaU5lbkQg9H3xYY8Nx5Dmo3CsZV/iO3IVRd2lx5ZPk
O23fb5MIPB22VyD3FPWyfayWBXkfJM7qb1WNG7AL9awANTqzmBKK0BCgZscK0LSiL25sCgU2OCIK
a24AvsvT8w5HV+ndj6mGvTDDW26GlLmgiuoB+c0d6zeL2vHqCr5nFTzhQRkO15IsvBDOyZwWSkVQ
EYDr2pTEbRqKZWDjvbKOAgDIl5W7Y25bRhl1eHu//0j+rmTd8C63eRpHYu0wSf3mGISkIWxfSnjb
HL5v395PB2QJ0Fh4QGxNyzFhaYdio95bFQ3Hi49jqmocrAEzSJZblahTNe/JsVxGQ74xAaiJT/HR
cbrY4HvOhBCC0WITV5y+ZzdDPJ3Q53HQS0zgcyEkpXMxEpVmHWVoOvWm6mHWgn4dG/TLcYGIUxQc
p1iOEzX8uIYIzTfDenEmN3N0LWsEGd0mM7oZX7IdSLV5akZE8qqQJqt2iCdJ2sascLpZP6fvasAg
UNOsLSJUtlI0kjlrkg/xmlq8Gcg1FkXOoo0kwM/57yxr9bn5H4taAnTLY+t9PROD5/Fm4FCrHEIe
m0YHq9FoID31QK55D6zZTy1r5bLrMF+w7GnzAJZpwD6STQ6hNmy4cb3CceD2RSVQuiHwbJr1+USe
bcRmUPAvT7LovOwYVrpYLAH0eRishbWxWSbSLMi8ZeizElJ0VUgCsL5hWZ+6M04RiVZuFqvIhBC1
qyLoHQ9n0PBNSFro1mD/rAoxuSAyzYwsPliXRw+jtcC5siyyOVJM2/h1semoWdORxjXsLPe5K+KZ
bfxkzgCPvY5yHX4Uj2bZYLgR+Z7ECgyCk3JjwSOmGSpjhYrJ07KitEQGMev1maEeDmBSqlgYYhiy
lKpH7WA9JMVqFGKJ9HNQYwUexVECzYGqYEhL15o9n9Q5gmRWUAJ3zLEwkYeqCL/dfzhPsme1pjU1
SwCIb5ZfutwAhBnnTQVl8zBnM6OSZRghiozKZdIZ+ynNe7dhIkAr2sGqJGoeU2s0HiC8duTj4JsA
I1nlZ1IYiWT1yUg8/1CyzaPIrK9Io+SptRG9X1bh03SoYL2tgWc5KTTKWoYFkmfsYxHRGDSKFCuN
d1Yo1YO2VfeP9YqLHBKJYoFsHJpqSJ8K24oFajYGoU3NYGtllfBwDxUg7s8ZrLoeC5E0PcvOMcrg
sLGx/oHRYaxHw1pFVtU8/YbRx/pZpgB2Vtv+nEXb50nC0sBLZu9LCn6Zuqxn6ZqY6y6YJIaGN8Jn
kHSlQNMI3medd6lqQW6WQ9h6DKFVLaWlEPNyy/p9plb1wl8Mr+WpbywqvvF68hYUL1aNeEwCeflc
sjJ0Ae3jzGBjjYchvzZTVY+dZHmOhuxDgqcGopYvMaHIuqcj1Sp9YK31rpD9q1Mc2Hwb6rp36yoE
2eK8zBFcxoAXKoU1InVeKqQaC0k+T6VaVceHoViwXul6zIZHqFg5p4d6nn0RN2C9dprFGbbSdEVY
21baz2VHsE8vKJWnmQqM08YqTaFruO+KCDSfT1YN/XNGMmu4jboerp9Ewf24m/awPR1ffE304QaD
RlQ3dcnYjhf8fri6TmlbmNOsaGZjiDw1EsgVK8a1rBmTKwTKnhUoeV1NBJWQAc4aqZkil5UE4/X1
tUJ0tVgSZ++wzCuGWqIrCEaz5ulYmDtIt4xsxH+Rgt1EqFmz6ZMVSbzdRHW5p68YKwEYLospZbV+
g3fEVsD5nJSixXpiRbob+3jKloHkWjwxSBkoD6gPb+fyWpCexqc7F/hiVvVX3FAUf3xwWpAYo/eD
9WhxmT1/whxgtKsTwzia6PO6fYBW8LWoXV5LpEAFKWvXSWrtaAJ7E9CDdZr7NZkIc6ekG6rbM6pu
msA4OY8H24yMjF3raHIE0OcGpmzGK/nyzzFnFrUiJZBNcKLlnykXqE4CHUsCZSW6Xltry56RQJ6+
Y3mrCQAbA6HoVXxUllH43Pf8ltYXKnJiqi8CqmaN2yhYt5EWylP9B2xhNvZE+VnPhNoG+1gpo3Nt
ow0yiVljj3QV8LtcAyPx+GPhE3cEE2MpiWpNT0kx0aleiPfE4pZDaRZYFB5iLTkS8vAV90NLZbJK
Tha+r2zmlPKwJV2L2qqPkp5MnrBQD7UrwluJhU5hbXla6ugXUmPLOmXffCwCsaYFWbApYGW5P84I
YpmpiFU/7HfWOmXNXDnWTbcVPg/bH8EUbnTfREHZi+9MLbSL1CVrEY559Ix2c6z0BWDtHIpXBMeg
cff84ai1GxxXiUQAezKSVkUaxPJYDIulUBEdsotxgxRWsHZ5h4xHEKRSiM3X0IxMa4myZRN0KDKN
OLd5BbFK1vUSsqFbP0eOJS7Qsnf5unBdTy6v1FKB4J6Stao+gCywKY+drjUT4C02Ni/cqlLProZ3
2QIMM9RKOj5bbyzL+t7VThz3igTE9J3TVnRzYHdHjVQzq/HwVbZQMihZ2hK1Gq8GxXMPanMS0w2x
yRb4SNqZhSK+TA4rH6WnKefdnOwD7AMWByNQfzBQWyvxhZGqmvLFKna+GseUnR7GFhbGw3xdVQuz
Go/FwmgAgrYr5ABoPhg11LM02MJxXp/n/V00kJ7sGioHUEzzplmhJ4qYEcpm4FVVX0YPu4YQZl/e
DHVsnX97NtxKLzokfq6V52xgjNacqLwNeMWk4wuHLFt82NI0Bxa4yMujNKpg46vBTaNEvep7cMRF
M5u6ts/AQgNyCbFlSS7/PFwvDxaMfZ1ZfE0tSuNWlDez7DPYmtm5Qi9zRFvkGqiucU4+OU2X8mpF
miOruQZde0kUVOLhUttIN1tAiCx+UCTgtcIJbC8Pqcc6hMunGbPWaJEdrrq1NWV8r5kuNyFHaELy
fnfHpol9MlA15qVcq5MgDBuzpOmv46wSQbyKpS5axxvy6lp5Auwxaai4ACpQLi1HrbTyLGVoVjE8
1hDtVQ2EaYCRbGc/k6fW6zWpwqwNUHd02ugtT/Yyr2ziW57ymbVdrX8yIHn2qrpcua5AKgFmLssE
yxUhVVYIjjmiHK1SJGhY/HJt+lDTuRQUREtt8Zis+IF3yJOq8ANGuhVeKt+moetqjcSKLEA+EmNr
dRq5iALUPI6l2dHqwM5ayGqRr903qZFP/KPFECEq0PC12GQvaWihVZfhJ0iicKaQzR1TtaKOkE0Y
IJJgcA9YiaW/Tp7bP53yirlErebsqq91+eWvjU1to8l2KOW5KTFtXwsW4uJzvoVffvu6kXzLp7hp
UYs/1AO9LFqYRYr6FOtngGs2ukubx/QLLeUGaoDIPOMbLTJaQdMZUTZ5WNNBnw3tW1PLxAjRRL6o
nzoGfdZVs2W/8f2pc0vC0I2w9tVAMxZlgmZorI0V5qQIQ/oa6AEGM1mdRzfRz8Y1W23A817ew8+0
UDT2ebI4pvfbQHt1Hl6n9VYUYSgbLrCGtMoDkGJ1kwMeoBhrlkoV92KBJpXjw2UqfuTAONcMGNIy
77QkdStKw6ag0KERtDvK2iKyXteKyhsmPd+coK8FeUBsnm/mJ/N0NlXrHMK3yBjzbORWrx6xZ1+K
wgUKptHw2cND3nhIN3Q1H5an0b3Qq7lv+RRsG2raGY+Ut5CSdhb4GESBV1jZAoD5JhRj7ri1Oj+w
UDstkYoxwlY2OyuWRdEJDTfF48s1iANBZRjTUYmFfZWqpcXvjFab+/f7Zn/Yeeu/46cWJPXg4By7
ItOFt9hpmolHAQRKbOLbp+epYKLZ6IHNgu5oWGv0zTbWGP7cs5milAG3RWCDbXQEQohstaAgwY4M
0AxoyZgbrNlCjC8/ZL2djMmPFhtrVezVjAc+iriIjullOXS7DnqsNZlqqDA+ay9vbaubCYVslgrJ
Dh3nBP+qvcFaQTI/2tBSHKxvTLPDvWmlW40sWIfKFO2n2LlpvB9StJ1VIFbEdw7O2ij4SdVNwIj1
y7oBjm76XK8xU8w+6VqCjfXxuw4ad5+oH6aumk5oAWB8FlyjpVA6tZyoSyK+K47Kszg1cdn4Foyq
TNdqNIsWfDdfW0tLryVHs/AubQ6l51Qrvu8qH9Ut1Ht7/gZrBHVFSivf0ou1C4ecVGJyXTVQwNqp
vWEHrHAIIZ9Za0rAIEuyr1ibK8pbaDcuHzhtdN817FKFy+NcOTCSVqGRtDqbTBotYTdzVW92k6l3
fT9tnp4cRgSHrkoyKtUZjlG60sHBfmTvNzyyV+VDledJu9KvYtXmdLzdN/cf73jKc3QJ00zaHg23
RRN7lcxHGaNx0aMFC431Hbn5zGEkt3YDmsP4V34grSG3LMlAWuMm5BrZh+nBotvs2KvpyRUPqScl
Hc58m+QGuFyZjuISC+anNt242bkJ0fsbHAgeQ9gzzeluMcD4+JhgjCcGx5zc8DxDZVB0H6jOpXby
VxL7yKe5w+N8q26CsRud7W712x3TnBlyUrFkzLm7mH663reYSivAhHIybZpUx9aGrsPh1zqnFF3c
8RDv+MnPmgYTh8ch384w08t0sM1td3G8KPjb1T157dQXLU4mf9D9YzI5P0Xe2nyZbhZUyg1R1m6g
uFNe31qiStt8PnSELe8TR0/rCJGAWP6RYsbDYqZ9NuIcDn7v+vx9ZG1e+6s/zI4XCLEt63Jeu3ED
oTf7y9vm1Vm47pF3m+OFvRM6K73LZooHorNx7vuuIb9zzpZ65qTecZINnHT7Z4OTEj96IMTMAsbP
y55IZnfa3m6+6J2nGE0Hk8vK0G2z8TO33dXwAkbk87brAhfxc+y+m04zzIQrNpPq33hseWJDw68h
h1x7PIYiV2VLh2SLqZLLYi8D2MvYZW9sOqRbJdKtKieWgVGJHb9GnBa9GBkf6X8np2Pt7sevbnS8
o5XNkaeWPtOLdTE17WsPuNF2+VN3BcXpQHGnwNVAr/U5zcw6wL232hxuu+37AT91DLslua3BM/Ua
PFNvclEneE0iNs9Ik/Q5PyJbSiJbihggpC8qY5QNyCgbc3YYiqPZjT/ZPdohvJSwuRFt61LCIClB
JGdPLLvcLENyRopMrc22c5UvO8SXIruVeSu1hSZrBLxTLilm5sx03O50bbFDRJL9Qq54yiR2mC6n
n6ju2356qevNxeYcEbIPJQlfmWTpVbwUgezw2JmnZsGGk4mwzglrSyNyzpIZlx/DwIsRmFZdol8f
QKiT3QiIpi/8mzF3uGxwuG73UxCf/BspehhDLKIuXomewXl4s2NhLaoFSx4fPCkwT+q6dnk8kQxP
NFEQb3OaQicMBQHbtQRMzQg1N4a9C+sUndF9Gm/Cs5OigrjLtMvDbXp4TcLthpfDKlcuI0u88G5U
1UibiM/puul6PfE9b9+Opx8Nc8/kmgoJrg7JG9HVLygZA8EYXmEMJMbyURQLtjSgLRFjidR2zW82
eer+zZy7DASFEHWzbWlWQ19O2ULglMw1RuY6xYV4gu6I3OjmOC6jghH+NOqqdVE3CpDWourPkscv
rEn39goZlGNVD88mnJzcQ2fDTVymMTZB8ADS/Tc4rAW2Bq1KTRwIpef8D0fWk9SZlOj77fCxv2wO
pzcfjgHeDPHyhM1MuQe0cFyFLfSZpQENBI0en4AU1Oau26g9slHzuy71sYjC/tpU7GLMZFHdZHk0
OMOe+Zjrn4eUFZN6V5vb6/a8X+E8Ei1GOsY4E0E528eKzfVw2pwO5xZUFqN6yfoeWd9EAQrqcxv+
IUEcGrR5m/7DY5geBfBHijToTIuFp1KRBp8aUDF1Asj9iskm9EpVTez5cj0072UYq9rQ41tq8/V4
Oz4dT8f7D3gqTd9pbCkMRMnDkD9Tv3im4+OdBJY/dqgTYMWSang3qmojVnmigVYlP8nJWYs0vUY+
qTbrBYdGHqAec6sVgRkGqR9TAEUpjjIEG09vvm5PL55PtxCdtBhDIArINgigy1SZQjRpkZimCJYk
aiPzUwbkpyRSdGmVEDFCjr/KHX9JHSaz2d6vH076KASAdfkzocBQj+6k11XAtE44iJSp9Uu5y1tj
+81tEu+3H+f79jv2bKnFauZs5CRWdTTqv0FbPOb6Jd+fyvfjm4vk7p1tyDspussZKoHrOtrgzlxx
J2uY4HrgQjulvsLeDvWadOKCyXry0MpkPL/fnPl0Ptyw9aRpSGUkIZWaHBRYDvZVXVznTCS+7JgT
j2LwXImw5SICLJg1NFojh9pneZyFQwCorITMwsfasK+N0HqiX2RKSC+tE4GsE5lTneJQDGxGjmM9
bJzdB4qxUo9vSJNQC+jsEgx+BEn3og5hVNBbbAWMto4aOAzuIaAMElDkZvWc872w195vbhkEpmiy
Ey/DEbI9IJ095BC5XuIFz5fdx20NXjDkjhU106eVrHw0WW6ao6rL38sSEg4ZeNi6VrnOH2agydGN
Ni51937dnm+tjcR2pYEjU/r4wy52pOeOc76cDw3LWFZFlH+rnbP2z6+bj/N0sNPxDON5okjqUKLG
VAho6uruJnE9Zs8Ds7fMvTIi7haoKVQEyuSXozRv7DWs/cKMUDBRBTkgY+FK25JPJ6vzxemExo70
mDvASlUyi45rMotsNWy0DHGLRoi7y0W7LO5axbtuSkKbOx+aN/VFIxGBgZenk82W0n6ipfOvDcYo
oNixGjtCYQACDjgNaERhWP96+IENRy10JpRnR2rhjreopqt7rZmvoZGvUUdMhA7bEHPZMsBJCbbt
ScWySLsCGo+kxGVpDJU0J9lIc8rNCeilapTORsybLD/D+i1puTkd7k6MumEQMLyi+iJHQyFHyiBH
qvB3RdWnQwlTYqiC9fXoYIeigzkfaXQmgTIbhMrsUC3r4XvkR5EgjcvjVzyaDdMjbAYdm1LjxVDP
vY2L6tyL0iV7m4m9N8/H7/tGgE+TLACHkFsuLof3Qw5G0t0ZdQcCNLbLE7k0zBRFgIDSdWyictUA
oIhND2c/Xixgzenjl+ObH9YBr0gPOf6nDKumlFdTvHVLvEwfWhlBVi4Cs/VQd3tzPWWRnrKsW+TP
FB2jR+YoUL0iS78jZnayJYVGDlqfx4kkb7k1cliNrgtAR3+TcXy4Hu+eDidd4W0T3gyoRxzqoTRk
AlIQSFXyc4nPqLDPONajBSW0YBG0UCfjWV50j3hBI9ci96sWEaKUVYuC3trmOTZIWgwIyRw+kQs1
IvhwNFWxk+RFP8mL5+/vt1aOgiGS0LmzRjGhakzOUnTVfGECRB4JEglSSWWON0D0GhkYBFDP8rIL
RHJ3ujUhyTzbfIbmbTA11CN1eHvG2cNaMxh/JSW6kXDY12PMVYsFGYZCcq+2yAzQLskPZAbkwQKN
NHOPttTXSy8ywAmZ3ypPvYCavUO82hUxT13LAmqnahMgxBGS7WraTyD9qXJsfRbwlYyCDmcUqKoH
6+GqnoQbeAqm1g5xXZPYmW74pe1p6cFUHZJgoric/td/xhY1UNGYPEEGCwtkudOb0Y2YGUrWMl09
Mb8Gd3YNuFPUa6JKJTqinG3B8RJ1sqB/39cf3HgBIVVMQQrdzWC2l+US/PKsfIUzpAk3ueZWZqGs
jqu0VTdWQ5sFU0rElKJaZfAwjk0wjj1gBq+lq6chVI03ZBBIU1UJ0ffcbW+N9xnGatytMNKRaSyL
fCXJZr7Afai6x5m/jAVYuDJVH7GWStGIpPd5pQIEBgYkFUowXPOQUMOy7qoFAsUroQIkCna0Mh9G
FEUp5VP1oeBTy7peqwM4GgE4fTXhPI8QIA3bmWoSM0m3en/9cZvzrfg0g6EOIFbgG4ngmyGPivaM
6EeAwpAfSQtypIl7rEqAKA5Myarcfsg5HeTc8e2l4XorPbYDieiRVR61sz3veZuG5z1Wc60eRxLh
SPvj7f3UKDfO0Sj63Omxn4+4lklaXXcvkg2eknOfeY3W59FRxUu9RgJrL+rVMWV9FrITaZY4mxiA
EB/iTvo6ySELQ/q32f5YE4Ysis1MJa4gQG6Bph6SzUR3WTqCki2U4d44t34amBFF30lL/rqThRJI
+lzblwCxlNFbx9jKkMPdHYMcILIVsp67P3Yu8v1450cTCB+b4EN9RXWu7mjo8RO1KHmNrupZhoSx
EtnZehFp1TtBwJwdqpUSnaOb3WQL7Q+33eG89/iDRAX4NsvFMCAy1Qg7l+mqMA0OHY3Llq+GuJAH
VwZD0WUrxBqqyOExc6xMOvTc+i5oYQI3VA402UuzLgaqDVRF4lnP5y3A3D61Poqo0FvRbBcxN5lK
+xliqAN2gZAkFumL+hDpaGSAalHN2appvEac1bJ49TDpO+3stQhGoLi+okiqaKHECLos60oRLRtE
y6YIDfS1cAciQZGL+PlIiwK2DkeNdb1dQcrBWJmCYatZUnmWgEJZAnl4FWKDiBW6od7WpcKayCyQ
RWkfCgcMKAo55OVUWfpESuSA0XRTRTtrwJVsAFeqmmtNDPWU24QyeGm/DgKALYJ+p2bQr0iIl1VP
FaWpEr/OQxuiHthHS4xFaSFv5avNMzBOCOX52x3rxb8oyZSUVfvsAMQFGlU5mq5q4BS9EwA/SvrG
tpURjbbSF41Z+NSdRguGUdbbHuSQqUYggKja+pWqTYX6JigrsV9IrLWGRzeKekpeNVyExJ4okgRR
Cq5EikmO9YSkKgmiHemibrznyyiAIBY6DxqZvkyaGJwR4FtwYriEaDoaTa1fNbIBRJHpMvB5Jcj4
E4Xxh0yJAdnXXDVY4IsVvZO0lFmKS73G8ngOuU24L0SeZ4WjNehQnarn4VYRSIkQyAJA5BC7HiF2
OU/0YiZlr4GF3Liel+8xnQ3E6Ey1JK1WFAttky5TWBpdskC2Cc0hswTNzLAglKVKaFjruZHwQuUh
7duLOopZBU4QxRQhgaxsa26CB0ATQWvZDMEolnnWDWB2HOpdRDJ2ctUvzVKROlJcOKpACCtlq9Zn
scLA849S9friWh6CwphLnsKrmBRMFMcazareX2iJIsNbI7u+R2bNUEe0cvgSOTxU/hOzs2bWq4ZZ
r+u4SDVwhIJho6z3xsicOIOcOMPwYCV/XqH8+dzN1gPrqKDiM6vWR3AHZBMNI19uKzfOg7tc942Q
Gm2MaYlFnt1tj+62r1cWZsIaxcW7PM4PM9wsCmhbw8WLMk5GsU5KsjJlC9StTJQKpHsufhsoRQRK
aZbUG1WPmVYvB22IChja0KqM0UiYD2Tq2d0+sW1aRUmXN7Db7psmhy7Mn3pzWUQ2xDiUQ8NORY1c
TFc0lkHOrUGa3qj1ld4SyXBVtCcaeZwSB//7rg7kRidFS19X9RoVPp98ZU3dtciEhEVCIm9Vq2pC
Qlig7sVYt10q6r6VyNPVOZMmnTytKKAcGmE+AuihqLtkCqKXyfeylXw/sH2NMv4G2Eo9OY40ST6m
Lsmg609X1whVWwbh9WVc2fJ+CbxikRnQUlUvBgXcS1S8Sv8oqNx1VVi91nQBBoUL0IFMLbv5/z5M
I9meL+cfb5eP2+by9I/D7u4S07qfvr/eyzV9UCbOVPNRLJLJyKzUqZ5bKQ409wvJlLfKbUlofkti
XkkQ9J/bklTsluS8kAuwPBxBbksjvyWTVvIKq3VLA7uldN2CpNRyW+rZhWI1Z3o40TgcTwIBEwvX
1CeHm1lJdj1/TTkxSbySG1zArdSR0xElyFLTyFOT/czphLHsSiqdTpESE/bt+HvShJxEkijcSh1/
OkG4zjZ5RfT8SnHUamhZkvo1s/fEv10AlMJKJiWLsG/H07hMK1FoiltJgz0lelKkNSxL44an8bQn
aouwfCf5lbp0T2oem8xyyyh4brGfEuKaPd04ZEJcN4SK5slJ6XxLQ0OIs7J3VJkQVy3+BVsicm7F
4SygpjGtRPqsszQAqEll1NSQmBO787xSrNS4cMPvqdM5ETSkk+DlnEwrUduLlXP8nkShgBuyd+Tv
yehcszT4t+NXEiq7p5a2G3nK7AjbjW0aH4AuN7k+aEkC9nTjmKmoFrMA4aTHfEuNlTrFX3iXkXiL
7TrenhMiF+INcrI8YWoixFfYmII/nexyZdcgAt7sjSVtQTyRoCK3kgIiU+Zvpxt74pWdHHPTsCGe
NG8UdMQ9GJuU6QancyTeZVK8cU0dUHadzGRKy6rnlV3MWk8uS4N/gXXR5daqblgXmpfiXc52LctQ
8qJAEjmXxlzzDMwTgficnOP15igy0duSKQMwoPtMYjZMcQkUi7H5NbXcKH6lzmRqsyUJBE9OIuff
liTguU5ImZ2uxSyCV3aicDfHxo3z5GQKwmwZBTyzCJ05Gi16AmaYsrmOamgWy1OBLrRdC5rhGVgM
GXwhG0JF8bKXWGFD2yvvAFIwfsbRECOvNo3IV2qJAmDy5FiYbMFFvHTKxZwVcYBjHrV/Ou1+hWXG
0o71PjgZAo8q3kS9//60D5/7EmMJrvdIa6yayefPaBRksygubAsI3izw4eMMEMMO4TKP3w/VXFiJ
cmFtfSfLuq5GmwaTJVou5oiQx240w7NFRWC3SL0/PnLvIZZfNACotvlFfVLVuH7AZofS2zq7vu5j
RAuNliHk0KNhN9cQwVZ6ZfhR1rLbBMxuK0YD6drVotC9qg9cLOIaGgV8VL2usZLrIRq5HrJeHu8L
jlwdlU+B+bptNN40fTXMR5uaosE3WnO7KBNpcc8621XTX6vlU4hIVNHr0NRGYqJknKGrdmktcijh
kNA8vUmnShXp6V09KtwkrnDLp4QuWhSS+KtoxF9FfWJdJbjdqMrtZb2kIovKoUrNTlYbfdYDlSi5
oi/mnNQ60FhUqZwXQGhdOwkanUou1UMkHZuN3Oiq2at6gXIa+XRcNbBM12eI1DqgS9wBfaiH6+nV
wjzbkRvktiC3RimtzfMwYQa6RAknUlcbVlWz0dB0ZJ1LF8PkO4HEOEU7ZItKRRwpkcfDf42t9zFf
pjHoRhpDX4i8GikfXIZRK2mlz9tNyKGelYnSwaxd3ygPJRAYKvT6RrLSiHKMaKlUV+lNnDIQ0XAe
q9c3xVQo5U6Z9amMBqU82WIahGXP1ajGsYKrgXnMJ141nriv5oTFXhgrxmxopepd6YKz5Jug7rbn
r9tWtx9dt/Fokx5kfo95Tr5Ui6aIj56IsAI3n3WWXcek/63efFyPYWAN6AsiuIFFi2weWJ8y1G2z
vNwKOmsjNzinLKxrpZIVxZiS1boae8S0tbHJ+gcs0oMa/ebHalrlPMNkssOP19t9c7rfr40EzXw+
AMzKHZCIoG1lLNfYA1UUl523mJm5KFe0yAzOvNjr5XLnSV9ppm1mZsKD8+tBVA2Y/PyoNIBWDucW
zGI8F9bRg6mLpLJoXTSK1kVetD6Cjn7IMxmKnFDB9HdGwsCYerV5WUUlUBWVWpOKjCiU1nL1mduZ
USiS8zZnN+KmlaJENURJPsWIq/ZFnXRsfbJl3epBrN8Z3kGj9QlwruGQte9DlRuokYnORbVBhopC
hgodW0WSpHIcFdmUwn6igBnZlEW27kx1vu2InoyDw2PQCWTn3ta7f1er9lA1ihirhaNV0AS5NUXn
o8VgVRF9knu7YbZcjz0K5N+L3BzUdY9te969NjoDCy2r0y/y8iyUSVx0TcaV2Yg5Rc4ReuQ7z+Gp
s+Xsa8OoFdVQK0kC+ixNRIcGPZbpq2VntTpolGstzPq5FR3ii25sDyoRCNwRoj5AewHhNUaNqbwl
OWwcisIuUtYLDVJrsuOjN9kW4ncDV0w0D3xyPe0ntjo0xtoMVU+/4uTAUMeQg3hy0dLx8J0M0OUR
1541swpV3qFuJrqXdX+pgHeQ8hxlvZYzM14RQkrbx+lqj/bZMUEVGCqvwMCzu1HsRtb7JxZ1w8ia
Vqp+ouJWUTeUMR9SyrJjo2dcwUU1YBPN8SwGcNp+IeaOpN8DGBlfLwCtTvpp9Gwa6uWoZctCOMJe
DF19Pln+xMjCUvmISNjswSBqM7mHQpphEfZBTnTfV7vEVme0wObnPSwfklGlnTCKY9jOibT+P0pu
3E5D5yP/YlKC+8/N6fjkP3k5nA/X7f2wDwt8nDfn7dvh9r6dpPntcL4d78evblr2t0nEH8CUm3x6
twiP6Za7H27329D6fqw21Zu/n7zM/faOUgPSpbmQet/l309mI96AJNrbkfYwFguMzQXSCRw2PhQ7
cD2+8QkSFTvnJSbapA0MzQ0UtbqyWKBvbIA2RPVvGPsA+hV87dpEto1n7PNmWGKYV9hfdm6gkDNS
0S6Eof1hlR+SUJyja10EQT60Wt7k0NgBCbY4Wyy7Bve9bX1P5Jr2fymYQbZukSBADtLtTXEDLWag
pdLjbIm6778dnn493luPIEnfDxUyrNJDeunh9jGJ57fWY9JJboMf3rzcSuM1CcZPJgm7FW676/H9
7nbQpKqedmztvfrK77RvCqhiSGQiqrftZEXgn7e6Bu9Tkm48aEdGjfhKj3QL75Oz7ur4b++HXeyn
e2ttZ6h1bZzP0hL1pjaul93K+2l7dOf8ft98nG/b50NThnQ1aCxxT4t4afd5n3tjiTK5Hne//lhB
dCYPIg/5HkxLBND+eU4OjumStvvL+/14OXdNMUCaU/iqBVvKoRbJqgwB1sUhpG1Jga7g3sEutGpD
pZAVfAsTMVnlxRrNt+iKwREF5345nicL5l///ud//9IUa0XLe/lZym2wVbUpazqpaZ50zCH7YUm3
jQMmOeM08ZB2cDjfJ0tuUuFNqjN9rYNfopqm+iUAo9MjphR2jVukDRu6wSvgTjLap3WUYvSJJnJu
etnD6fDmUJ3Gq0poVsnWcdKTWO3HG5ilKGjdCU2Y8/JIFFykmiZFnz1KL0s93LIpsh7RxmfszEtM
T+EucoV9SCLUPul+LI/RuEzagygsVbvM1iaIeWXnEuN5E2NLuNNAn1uqT/rleH667Nv6haY/eFRB
LZisIVhp39rRB4OIpf32j9s6iUVcTZ/DqAdZ3kVLx4yZ10KYnRBFg7gJZWmP1KhS27Y2IfK+t7Zu
IrbsjsLQJHbNp00Y0thQzKBPIYcbT0PjPcLP4Vs4lA1BTBBOIZeGVKY4W/aQqnVjpTZZay85wRtT
s4cadFI4yKVeaTnYJDPdhXF7sfCPW4pN1YJCFCJoMC1xLN0JRmuXgqOhjLraKK7cv24pRVGrOCCO
UEP60Zw0XyqeVNH14+lHyxGjiVK+ClMueaOJEWgiwL0zVhimuqVHhlp0bmEYtIS4gpiXVE2mMLX2
mmGBt0no3Fvym4Cwg1MDA5E0VZO2JbdEPghiYbq1rIx0Iw5lHgvSaP16AWCphb/SklJFM9gCN5FN
A5zmZQ1zow8eFG0wq631wywovcWtJtMk2ix8iobQI5Qu/V/s4lIa7jTN7NY5xz6QyYbcIzzv5J6g
iNwDWGyIDWoj+CYVZiH9W85VDvJn3llkthZ1J/LyFG4WnmzjLahnE3pl1I22Fk2o3OYypfBrnSMf
/270Al5sXaXBCI1qkZTOAFpygM+63DT46q+XWEmzY9OSGvl16GXooSU1iB5Qwc10K4Tf37j/+u1w
rX7u4aU47sYbio7BesdgboHd7XZ5859Mf/KTWPeH3Wl73TpzaTP9O39Pz8fz9rTZH07Ht2mX9d9x
wlwX3WKiDXeelrp9PL0fv7uO+rvr5XTa3C/vm9Ph2RWCnT4ON7BkKp+dfHXrffVwfdPu/MfODXjf
Xo+3yxksQ7tHOQHRh1ec93V5fr4d7n5Lbm8hcPt6OL68rtgjaeTmPD8R21z52918PR6++SGH2/v9
enz6uLuocifAcirvTTQvFqq8fFrz22F/3IIlihY5Kj63zzP3X7y/Hk/H99Aq0NGg/5Pc//S+vb/+
9HT45/Fw/fnj+vXw98tPT9vbsZ4YYFLB6/AAc4JKnVZyz3K5ObL+OO8uXw/Xg199IqDzT/vpJyei
8lS2ne6bWz120wirJxxZppV8zHT6hf1hotLDnlvIxODb8LA7gkC5Hf95+Cm9y0+eBbg1+ohbDY+A
9FhuZqLt2y1cMruRKNmGhwkiHov4k/zByaJQDP7T+/Xyfrg6Jc4tpkRazL+DfSz2fDydfvGHcTMI
Dj/tPq7XyST46Xp4m56CvSZBjkhmoVQWPE6HPB2nhW6njWWXiyj1kKd8x+X+5g55v27Pt+fL9Y1d
Q/cZgUVdkhGYX2Talzvh7fJxnWwoRFVDogWfRjXvyku73cftPrGtz449Xbb7ze66vb1ya1mV6N9n
Bxo1c8B8Nk/oP10v98kE+Gl/vE4HPzLSyi3ZEzobCqJ/nW5+Muy2J5Yho7J5EJjW9HQ/7a/bb/72
f3rbfv8PJ+V+ur1tT+xy1phsM5I7XXrI26+HbzyJ2ZEs2FOa9ae73a+XXx1Db5+fp2vi19F0nVRo
Nq1z89d82zqRMz3l9VBulduZIDc3zOqrxpqTquB5csh50tTO9z4pf8+VX1lxo4eRuaiX63Z/dLR+
dDkw7xdnWf7k8uw/rtxij1a8Q14s0xDTkZcuH3deQOfkkQTG6egOuH3/aZKs/GWpdFmkC1C2rShP
qcpw22R3lFZUafYIEdLvk/3nBOH7YXuffuZy3UtWWMuCxvq61jjcf/f4p58O31m502uTC56c9I+3
v16mrf3p/Ff3T9NrnC43QP/RRl/Sv+dzP2UySWlOeJHr15TiC1lxvQMB0WcqWi60Yrzqj/Mk9y4v
5yM4lCHCyz+kqNDDZLesoEylcrukIgYjL0L7xlrDWCBpR7eLu+O4pSMrX3qRK8N5R24zf/J2zD8P
1wu2HwS9obFub1F1uNbS6i2j+NOywdR63DxgwQieDXne/oPM/fuFOxcscUuZy4V8ie1199Ptdft+
4FdQg62xblU9vJwuT9vT707vr1uWDDpCTiO1GWZhHFVD8EZYqS4p2w6ULpf7ciL0/7jwBGU7m8sT
vbyl3XYy2SR/S4UQAbuZ/s3uV1536px+JKs7m7a6kh2yELxA+nb00ONPk/82Ufu0quLtoULGiUxD
/cPd79Ph64EVcIoaoJYKSWQTS14/WWY/6aZ210lgHmTL1JPDkL/euCBK9/dpgWScKX4xmQtMs+aY
gj9mkpvjPPCXJfOft+88lZt8Y32pYIIwOV92k8nuhDvreslsSyojhABtNBSmospOU6WbZPj58DKJ
26+HICh5Od4xdvUk2PaXb5l94f/Nz66QsrXBx1zNgndc3Mbp4dOW31HELZN7a4B1cr6cnx118tar
LpzlpMlPh+3V+37NRcacU1bZrLvL+w/eWhU5KQ1L3nufTAqvoljppDKhm5huSQKTq8duRY75Miy7
YTazhYddMU8cihAcnzUmmFU8t716VmlCQsRl9L3LxoK0o4VDzRTBE3Rh79gkSJz1Fggp3jd7psKO
T7eULjsy1rSq0yssPqJyNdcvHx8RT2xTWeEKf7sOGPA24E+W9wpVzuAVK1Jtr/wJuj5zTwVnrruO
EryZrnPDQ3CKZxLJ0438OLlZ37xzahVj085O5PUymQ28hpYZ5JG5IK+l9+8DleCNH9MRh7wcHSjC
68vTRvEY2JjjAQIx+u60fXsHxoPtc6nRcxfflK2PSajDo8xS1HCKw9v7/QdPi5qxsXNf+3J1O4u3
j9FRmQS0SweVa2wQw9sgY8atxAcIgih4NOvk0NBlDkDMDXmYHJlkfdrubx/Pz8fvrKollsgwh/Uz
Hv52vZxfvNpmDYghFwRm6WWtQNFkYY3K0oWYpH1wtQ48Az5qkWd03XA4CQ+NiJrPiJEWRJu91tn1
6I43QP1RWetzbMY3OH8b+cj9mDu4BqCXE4H9fpLGXhiy/tfAWCWlYDj85wfwKOxQE+wclbuUBZ7G
BQPlzM7p/dvl/Yi80zFnEwW1zNPhdtzz4s7m6ItWS82LrZo+R1DXOFuSd7ZELjnNGh3DW4FjHiNZ
WlwzrbJ6ylgOMEm28cuhcUlytIxQihuJasWpdB51HXNzQA11oKzhYJWI99JGcQy1va56LyPyc/XJ
rXq/Xu4XJKl7KxjrM/c64M0qmbvnSWDU4jA+IoBxzdEyyA9xYy7frrxfHgdCzOESzSrr29cX3qSR
hSNMBHV0hD0ux1OLLtxWu2TsBpLeF5IKwfKH/QvweQ1jFtecsdfjy+vJ5RfwqocJ7lIDzemYE/9I
eijga82jTZizh57xV+luXOiPt6t1vpWwwvP2dHpyyKKbN358B+H3zjJslNDOw+nZx8Ru7tUBNkxs
A0l1eiIZZ+1InmJUYyuT1XQ43z7cZ0/+3/FrdTpno26FKtjyRu8jH2/I+1HX/Y1tdDh476VPu1NZ
yCqXXfvjdbLF3M3xty5ztDI5HNEnuB6eJ5vnzIt0amQKP3aghioha47YqVJQzfLQk85q5kUNRcgy
7J48++5yinqFh6RpVotAHqbT+g2X8FFUPSuGGkDiMQXNQz455pPIOcXKQjzRcQWKBRIBaIQfNyS5
ONL3Cx8/ygFf3UioaLq6th8YTCsHpKAANGZA8VZySS6JjL8hki7i/EiTIKTJunoY2tO+rrzCkiTn
xL8+op/txocneRZ/FHHMeAeDr7fymjrGnpilM3AgVT8wbmjx5CGe1X7xgcPZqrkTIYDLpk7YnOvl
0lI6nh15nw6eGm/XHY/65uBxDa6l3qS3D3gnkmASvvy2Y6LljWWIBUZGlDApE99/unzckadlVNe0
gugZEWDfG+a6IuPOr7lFwVvTF1mEqu0KCN4VyAk9sUstKhFkHTriKPJ8wI5zK+O183zcF/aR4gTU
FVqdJHDjuyyZZfB9Yd3wgfwuB8yJ15yk3eH78Xa/8dJOZ3aw6hCACqBTkYsYw6QUgGB5ISgV4pMf
bT5RKMz9nx/bvfMUdo803LX2pLXMjZPXW5cQp4lp4T0QFm0+nhukKfKwichI06VaPlxFB/hNLpJr
Wbl9ARq9sMTGus5CbrnpFJMGGoXL08nl0028wpsEJje1Vct0d4AZINExT6KAjuiW1zJaFwK9R/bl
+eONty2L1IcBsR6Pw1vNQGfJasfYG5OlVoSsICD86FC/NAJ5ub02eWoskBDBpsC10tTVwCRhkKw1
VyPm3Yzt+83bQuHfsAlsmshznWzyEluf3K9TzG097k/eY+C0sspDWrrjoF3NQ7uaSaQAXiqfZ04y
pn3JRLfIM4f0JbTgw7JEsp8v69JGxcDEM0lqZiMxM8/9TRTFZYf8xdevtNNDFENfcd3D2VXL/XR5
fgahMBIkyIJ0ywRnD6WweJBgItl1eP9yv194SWW5QpH8YLx46IvUkHblw+E7T5AkSp+lGnGoCW90
yDz/IaGs9USqkNLPIooFiNfM8uTzawtK0uMiZn95P5z5kH1ej5MIMe0kpGX+PP8zq+0S77vuJxrJ
dZ88uFasU8gzK9WJNBVqxn7yP3L8evh/+NhxrnpU3/Y/eFvKSMYd5eo7nlDuhCXL+ei7oaHIHEAS
vLjqaqYUjN5+e51eBmqu3hTeH8z/Sul/9Hn55Nkyy6OrbnnShOz2ZMfkYkDglgfyaJ6jWoTifQwj
hCBgTgaRFyrTzWy9TgTef/ChotxRSQRSkm876URz0fRliQ1MxFKkVkeYRVZvSOb0fu72/MLHFJTt
mIqMhp5taNk89yCxKNnc4fvucNiDLGhjmQKGijPwdHyB/oD+RK5hsLVAxqHNfQLWRG3UVagCKi4c
1euqDFHdWz52V8GuvOHGWzZyZJJyE9Q3uuQ6bE12IxMdmvkFsrCkmT2GCoJSS2fJJryq1nlSRxIJ
GQYzCYTpaACGMQxRp7tx8TdeSwhVZGHqRikNrFfpmLhmImmXrXA7TNxGwEY2r7OrGUYePsDoVE/D
Anpun7FIm4jJCl6/sDDskGdR9bVU1yb0TTO6ZAXWiJZwQDc4C79nHBiyE5TnamWekany6qu3w9Zh
WT99C/YJlBMkAOkHi5ikZ8vYwOH+91KpgQgBx6Sw8hAWqxehdlG5NHxWKWoiv7RJgqi+7O5bYJsU
6rFvZou0CWvkiGKRKji5JldeGgnBJBoRA3aSSs9Oh5wv09W/IySQaHBfrmnYzJgQO2oThmGUJetP
IHifVvuY3IadNJEjK2wEi45TtzVXspUIr6RlRHA1ctgKPVML2FB4sHTiQm2d3/FDL7PUkbu7ZoHk
tM4otKrlzVRzGD/Ox91lD1JOckOulv3wyJ5BgJkcTRMAReLU5FjZWCeBiSp9Dy7epCRx4zpOeSyj
md5QAQFNQxAFpWrYbA054w2woj5CakxRQUI3SEpxbnwZfGgYrAOTJLEEYhIzsUAMl3K2DowGbq1i
ldBil5czyD2TtYeAHv3lfPrRcOjz0Gk0RKOVdQf5Ab3Jq6WSFExFnBBuMnkASufu4v7wvHX/NY9W
8cXEs2qP5hWr24dPtxJ4PfAVBDpPtFX9skY2Zj3iyApJ4sxB2Nx89ZqAF28c1wLslHcT+pFhtFTY
8Cj/BQXkfX4/i1jt22V/fP4RjgnkkWaSiCHGwycPdLpWZr8MxcAuPb3umOjnrE7+P7O69JkR3U98
cG5eyqEEdliTiK7583W1JKlHHfP0Hx9wgl4vVC6s+3b7DuDOawZCKfJj1hZtyLGpiB2zTHua1thd
TrxAKcXruJRnfK81L9C61e0NKHD13/kCEslUJDDOOSxuUUyYoRrZ8T4DzzLWMDmbIFLIh9h7xYCs
HHo+uyIsgE6ALN/Ss2YGVzpUAcCGRI9kT43gAmrhj6lyWCwec8GHyGzqRZ53w4doU5YqLxioILWV
zNsVmVdm7BkEigNrf+8wjlZItCxUt4tgtjPtHcF+8Pw89p9sxIYRRBr5sNWAEU1f/Oq6xO1AVVdx
xCKvJO/214ZcRVG5rpkaZsPjkZJJpQVlnluUNyPz5iw9A9sGzptYkq/PlnmqieUSDtcVjfa6WXde
shAf+BOc6EK+ER/5qOGnuYCYDCSfkc9XbRZQTtH9K8B7uKGGLRJ/u7pKbUeWxpGhqarOeb4C50da
zejCWlcc5wBgZ4+0yBzm4thqw4hfPIH+q287ypM77WZgeJt9Mml+8AbIyCASlS4W01H5vQwNUPCn
EICzvHe+qsdaYJOJ644Tab384+P8K298FJW/9WD0CyhGFiPT5aGKKGLYYFBMNwFsqP0/PDUphjiL
G1f8jbdNvVSmdv44nXA1uy2SO0cmsdbw2rNjINcS4GqVsytVgLcDo5t4x7Ef2qVdfgk+A5caTorG
cbyN+fQo5W415yNQKBHRTDSgib2ojqmHX5UmwwNOw1BrqQNxjQZIpBhobHZpEdQqdB6PS9QIjXFw
PsmUIGR1j04Q8AQxKiZlh6jJVuepog8hSV9d+vy4kjg5/D11+OuVNq3OOmWbPVvPkXqsA3Kkihq0
Fd4G7zMSu8R3V2h6eYikrLHNiNDn8oULODEWuNU5++145v2OXg5Mq2CAcKCdlfEhgUvvUH24HTou
iFy6fKAVQGEeRulymNyo4/3HT651///1tz/xirxnkjoJbhtsZlhAZCVXIMkDbtwFZ8mKBib1eC7m
pYqWzYT26AOsgGzoCS3IsXfmAJ8Sahm0tOJnevkC+tJ09QRa2oVsbUWM4eDpehkLH+8sW4AY6JY3
6n+kVoytgvIaVoTpO4aFOSiiETUUxq5M1Sd6FchmGnGQBXxAgpBPjkHPfNzR5hK+5r82e8v3omig
OrLpiNfDJLPOfJKkEsWG+sqGbqhfjig6aY/QgYUyvMDJBi5qLWCBlByqFTPVQHrbS+hJuZUwFNRM
MXBo2HHcErXJg3pwJejQMxzMx13bcO1YoHWKK4fheyOMgjGj6iIKoOVj7jRYDsZv1ATTdWy9yrXW
mB10iu+ZhleLznUNk1PSal61YH3cB7/viig+FxJCOT0Ef5H9mo4dr4fvfIeNQTCl71n/G8Pj14ZR
uiTZ2P0Rda5RNItRUpeV9Q5XsEVX6/fSip2C2CJnzDHFK8jONYJpLZtdOg/sFu3q+Ij37cftfuDL
lpRgmkMuE4ygqC4rR3lFdt7yWRJCM1KowNEdy6NMViGKonZTbZRyPO+cfQSk4sBkqxVojuYjDYKJ
YXE2Mg8ESLGmxiW8eqxg5sEYweh6cj/tQEzH+d71gEDMcuHL2/OMCQ3mllyuZ1516IHDhJHBCBqE
5fl8uoLpnQ/fHm4Ai+uZmvQARbDezkFvmM+9UP2qaGQjFjkwne9K7b02Y8EOTI+B9BQNshB65IvS
S88Qm4BGVXsPN5p88lkwBV1wJQCouYswAlXZPB1ejsEZZ7FewyilWkrI9fINpIQUwldyUzN4R1cq
Juuek3YQCuqYTMJS3TYsSZKpourFj1EzRTOgMciIeKP5eCVcFLhmlFGHEgFy9GIt9FCvBJ973p0n
NgZ5Xl3RcGTZU6kl0/vCd+8rxuF293EHlmFe9lMOI8sQqxVJHNpwGEqWboGawhaR6wGUD0TRxKb0
CpK6I7N2ZWVucMiI5mNgdqw1CF20GMPeaTF9r11R6vuJgLawsK+6zzLDjdXLdgEW2Dz7w26SB6Ak
RTJdplJmf8viEbpIx6z7SprXr5oJxMx7gN0DNVfHXS8I/+88DKGZdObW8A84D8bokY9VLZJeQfsK
U6sgq7860M9SMSnK9VleSBcpUUOiyh01hGEvBmb6x2IkWDvSbMs2Sz3u3oSzsK1eidqsjeNYrtlN
HlFH1K6UZqASRnFH6mcVd78y6QuPFLWGaSU1649mEVTPVfmCsiXeCctYLgV05jYYt4kW+HlgSnPj
ZIp0Dj57gk0yK5BRGvYGEbeO0fe5QYugWiUk6mRQjd4AgyFvdimGZWNJVE2t6DRVwaRfNRWPKmb3
CWZwkMdqwGQznScq5o/tkv7boqJrTQB5DKKL4R2WHw0TFasVFsLnVh1CIEN6Qwj3NaxVaxnEEESz
AWDTM+1D0sO3pw+rfm36B0/Bo2SsFjboy6+lC2TN8sUxwE9cX8pWNOH5S2pfzhWOaQZJLrtQOoAM
ABdaFXXfag3MDmbByCz8VEO4U9IbhFS4iqm1A895ihWdYqqFi4GOoLU5R2vLp3Xd6K7PJ1Sz1vHJ
nbXiTtxAWVhG7dYMAD5eQu5fZd2h13cFgr38eq46neufc9xPlHy8g/45BcWMXHyQT9kcFYapsswK
n23J8r5gGqUlqQidVCEKH4qH1EGLb9keF/oIUTeHYHJFXjjDxLBNMpnRp/vDO+isVuKAGqeGhKkN
POatC5uuNpapZefqzjB5vgT8uTzdP24A/RmbqW/LCjoeY5MDY7wsaKcBKpY1KCMKMAEsqWgCMq4C
t/jG/rQ3W9bBZcYXcJWw0NxEX2JKzRsBhmYxJ66ol95dLzdQ7Gzy9OWRZwxPQ/9+nP7G2wMDUy20
kPrTAprPHhiYIv6vl+P+erh/8IVsdiwiW8MKBwkMguMqJ5bX83S8v/EJkoYtWak0yYE+ju1N2SSn
lunYtHZt0WwyPtbcI8o3g4B92fouH1qj9CoIE0xPNAxqyCY5AukjmRQi2FcLmIJ65BuC08oHvg0u
JSbDj1eBGlkVbYOYVoYRr/vOt9SSxdyNoaIvvh3vr7wBqyxX11yz8Xhut7kdrCXUpq2WPlJzzWGr
PboaeZuq4yxEck2NXH7BmFDVHPzT9gr6Hw2aifA+MOlGF/rBMl3QKVZzntj/3elCXvMNTLTw7Xi7
TQIDtZZTJHjiQMdiFGnqfNneRpFYkegvL71pFN5IpikkcDzBvPeOz6zOO3WsGNep1Od7jvJgquwK
b1G1A/KtMI+WTMwy+f/zM3ix9nS4g/I50xUhOihSts3ulb2sZdvV2r7eGihnLzkuRm8B5nYJJs8i
Besas+mTJMhwiWzYrZuMBuAbUzZfwaOFzh9vqD2YYgZ3VAfntFpNCaK+HZGZZWswOHpbF8MsVnlo
vEoxTCyJ9NT8OB//84PXSqpn2uqCXmyg5CnvTaJR0A439y8UQg9fLbaqge+WD7irzWxr47D5JFhR
T/VZ1elTMqG2ZcZlMxN57BgiwI0/gEVZghkrqilxgZjOC8S0WiE9eRC1L4KeA4wMo/HMUjPJW2UY
4+N9vwVl/6Yo1VZLPDxNhGQxMcOUzNSwYVA4bkamGo9mKjZAm14z2Hxuq66ohRacfuK78PCy3Bbg
bb8Mu7aCaGrgukVU0othkw5uAheaEs87G2y66hzCbdXm6sLE61bM4wNqM2cyXemLnQ86ZUmpr2m8
vCRJ7gNswfrzIyqHL/yVliOmx5ErYm6UGYD67NyD1voT89l5qKDngMrMK2pmaBsO4cmZ+XQ4v/DY
shy5vJVa/NCHAvjw4Vr/wVNqI41dyjwUUAQjYzi7fUuWq65dTFa/fOxewZSxkUktnBm5wcZcEYX/
frLmLgD4UEyyTMWsaPeyEUzPkORD/eoAy0lw3443lKVu6VwcWx/t6vlsRcZT4eIXPJGqMcDY5JHR
SGsm3vExcWtWBpMkxlJkicaVVUFJpIDhSDorXDY46Q1AaRLl3dJu2zt3XWAC48BQdYF+4+DtUBTi
V8bFL5oHX96Od0BQQnLFOcnjbWre4sXGVqMHDKaZIizZcQgxKg+krqGp1yWkThYtEUtyFj00pjEZ
gDHjheod2p0d2s0/xCdLYOYpZTiP1XBd2HDHrN+d93D8lZDVGfbQu4KussmN4ohbMiVhJ+ClqRxx
1JVUpefTZXuPCDVrGI8rS/+JHcojCtIwY0MqZkcDZdZ64PMX6p3H28CCoZKtXzd1CjYO01y5RW6t
XV27BD46YCgKJxAMs2IEljK13lr15RorKSYJ5aHbnFYCak0ww4UzdHFdiunAjdqr9vhtBTBkz6Q6
J97BrRCFsEy7tyrbHC7PPMsUZcUjI2RDORgbzeWSAFaVOIHe8FzkuhoGa6ZRd3librs3Ns7rKloz
LGo7Yq6lNwtAj1jNDVCtqjnvWJxv/FOMDGSBCzUa48EEg6XU88+9AcNmsOSXZleMduVFRC6k9RII
iYEqNhG42I3huqdiW7Ps0VyxNWGZjtLMyExmpDpo+MOh/OVoRMmPRoSjr5OFirtIEpJxpzMgY9et
+zufYcvmqvXNPIhltQkvVqxdkSINvWc9WuaSqg18ceuBYi5pt7qKk3ehRF7qzYcgs6QWHnEcOQGf
Z334aq0j4jeuzV0uMjG3jQJPOU1EwWt0axgItQagN6oATM9EIKtoEODdvKUJ2dMcdmqpuIHp48mk
Pzctla5WfQjt1VUNb42uJd3kOO98eWxxnORmSlRxVJDbWwzQ0utmZvCwXlftSfiwenbb23TAc6i4
5FMAi8hMoxYRheiUZlJPI7/4wXogq95Qr9GdTWQTtAkW4zQLNl1Np2v6vxbeQy2IzMDAHplx31Da
xZSljm+lBkuORdG8rO5o4DrqntNIi+48X1+QAzwysdNqxoB7LaSZpB6YGURlrTnuGWT7vKo7a67D
jtxSfFnG+JmmhvDipRoZHKNgMyA9yjGjFmPEjTaSNg9/S8EZcIY34PQnhxU4WA/MKiiAVNBbHk7Y
7Lpm4xFnQ7SjsgR7Uj51eEW2W897ceS2Opd10x41DEp9Co7pgUsIKloNU/Rfgxt+NMRc2bmprwNZ
sE0qgWLHGSKqSUo4dUuV8yAEuB2e/eu2aG48IELsRcfMSIQ1FKBbq2h2j4qUiDqiCQrlm6zf+Wz+
NWoxuHw8NhMOaJLcuDKC87hQXMHq2lQlaD62+pAVSIQWteiCT0Jmwwr9+iqq1AWL9Uy7vH5mxRHx
HNwyQ3/FGEMI1Jsiu9UAYocJUJodKZjSgh+FvNs9SAg2TLYeHUzS8LisKhp+qPbQNV6gFPOnKwXq
NO3o6fB65K1BaTum/KOsJg4jh093UFA8kExi4acFL+ONE0dvT6cDj7cZroaE12+gzIGbdFhpZcQi
Q2O99McLxzNqOGw7JtwB/bSeD1V2TPex+igA0B1H5gmj2CIN/cKwXaq5kdONyWGNdjtFKzLZLBVe
0b1bMxh9xaHjm6QYlrCqKDicfjBwCbOkJBEPnLBcXg0pOT5Pxo/LFdi+88VlghTZxn5dPdeHAxU4
lvOThnqRSEtqFlM4Vc/6c07dRFUcysvwwr1oNu9JPQVxaRidM2yoMVXpLwvGRclR1azEehwSYlU0
WmcXg3i9DG4EGfTAVOcwbYB54LpMBRdrOjk0VxUd19yr6MIVoB0we7YoQxKoQUuraE0W7bdFw62G
PQRosztPpCuSykFpr8kbOlSypt1oaDCySbZnmQF/TCjFdOPNK2eQHWzK+mTQ0AAKS0nn4GQ1pdW7
BYVOXb6OZLL1+GL2IXfsik6NeUNgyLJ64Fp/5T0fQSNok6MKas1YRh4R6A3TvTtJ7paMtj3TGIEA
SyhIaeXamJKDk1DOAc1eMLS6fflMXsayMTjO1K46ARglKebltCLcjSy/oqSwVgNey4dAvnSBesDb
f2RK8Z3piyGIqmd6uPEE3ndMqw44ERV0/hRM1wV/M8FlanqFOYmn1MMSO1X8EpIfPEto6nJ1zBtM
Uthtz8ginVmvnt8B0mI0g6MlpGjNjKikxDKossY931vsM7SayTxCoO2Gu7IU47KW+MW785ab5U1z
/JuFH1agfi2ZkNryGX96sCiBPIdfHugJizPqNdHY2dniLVqbDRzUEipsMJm8SBQZoNkIurcqpj9Z
tSP5yxPvOyimQWAh1fj2Oj0H5TKJODwR95rpDLg0r5AzK8txharepnmdGWGhiVW42rirYzk/vMM4
1/V+4t3SsayYN+zUuyQ1WTNFN72teGdI3Qrd9LS4Ii1ebtOIs267NCvqkHrGLET9Yfj9FenEtcq0
lBSzKo2hyDdXigsjtHvhlH0QunocC3f7MQXk106M8uYU6EcxMlnGWVuvk7Njt1fgEZbBUcVVF+PO
UdIMjP2yhE9gVoMcZat8NnjcfAfAskq1kuZsXIoci0pwg6+W8Ybbx9PEjTvQBEsry2C9WeVfeyqL
5WZYcuGjkF/Lxo8El69J+8Pzxg4tjxxrc4ucFMHthqm51dX7jFLXBxYTFNWahpmL/e16Ob+gYKhS
PWNQFskCACVRSvFh9LxJzzfoZ9JuwSlePI/EgHqy7wxjjeYxb5erDHLEi/iCXZPRwcc9uqLPfaUL
WFauzdtLg2E6pFZTH4G11DNPVe0vhdH/gR+oXkme8LFB/uaVRG1MvSeCo6aSS8bBlWF8RZhFdd65
Q9GSZXrEo7AP5+3TdN2X52dkU465+DCM0c23lOsVCiqSsERr/nyJSeh6liJ22IsAhKhgs00jVNAp
OhY2AVzZZ9nmI4mGpS5s9P/RNAsUDsVN48r51k/1gRu52YMRUk2TgXRtLEJmOYEyUcFE70tHxEHy
MNyu2f7di071LlqHE11lmePcc6YvSC3sNdMQPveMJxX/fj28ffCqkJqXqp5NnCz758uk7fnpWANT
u46GQN9+PXwDhfq0fUBfZ5fKFLkPEJDM552qumDj5771HaPX8ouHJozgEFJgv/JkrnqmwrjE/JrC
qWcABVAXD1WckLlP5SKk0/9zOXnTTq73w95/9E3twt8PT5v30/bu6GJzd3M5/b/+03l/+H7Y/+H3
/p+O+6fAat6S/jLdtVcf5a/71otRFjnD3CXNiy5czbTE0a25mRx0V9xyuF4v1zq7ai9G7LyMhzNN
tKWndfbTe7sg+xdvMzIbUWPMYXAruHjNoMrvN8H1+os/2S/uZJvD993hPZDzo8KyvnY6ZCjG6fRj
dXJRj7MG/4M9avRh/I25DNoxNk6dFtt9XG+X65ft/uv2vDt88TdouV0NMTXYLeRwqrG2py+eQLnX
62L6rT+Ytx+i//F4vi+7yU29K/b7SHx+C9Mfh3CScAxfFXG6bPc39gQRLHafW9db0kYgq7jX/cHx
gafR2pPVr5m+mfXlOOKx9vPE7Jfrjy+T0D2Ljj1cRy5HhsBv7YbD7iTLIXQZP+JCitoy2/1+YLcS
kVG/RhdqkAuacW1kJ8l8fvlCFpUsRavEb65mdbC1LU0+nuDPFWWilXFCiLbBWPMtMyZe+M8PJ142
26dJCrHP9Ig7+1WEXypQ4K+HH05SfyFWZ/V7m5jABWZEN79R3MGX8AW/A50IxQc1jegYflx1s12i
aScqhLKIu/llZC5Xo6bP5GEpz/hN2S4XjpqhQKF5EkzPPQ6pCmmWFJOW+LfDD5ZcOpXuxUmdscoE
4Uh/AjejBblgP1xCSFXbCc9MKmkK50GPK2522LhMz7eD88n5S7aESbulLowb6/mNJVp2bDF0jSsS
ZrP9uLuxBZP9GfO261eWiEm4dxSD4SVZzy+TLm70GOGISLvnFRdZRzj6ZoQPL3tkIkZfq9dHb+H1
6D4+7pgszKB0RiJxhB9xwnADr/fIUwdmEIuXNrzSJLJ3oLI36s14ixss+tTQE3rzKcrCaFGstT9e
QwffDTkbu+JAeNzZU2MU6VEYb27vh91xe9qEETbPR54bJsFMdqf9+GYtq1aT91y2YZO/TDwW2A7Y
T0mfhhZuw5BfvlPrE5/97G+Af0NtM2oeSyssdBINtGxYptciN8JUg2fNxpvz8UbZzY2Svq0zYXqw
vYHfns4Efz+2RApvDo2EOJw91QVa85b9hoTAecZLitYGzhUM5buUnOP547DZ3n6cdzwDEMuq8+Zr
JwW4Jv6WTCHYdLFKkIzrDAA55AZAZzjbSvG2VVrD+ObVvSp29LiiFn0KajkK7y9y2xH8dggvOz0u
TL/QmeGKiM7Um/PFWV8fMdWvur2e0ETvaJQRxbxdQajKWW8LNk6Gsb8pYBJrjgiCJzvJ9N+dTpvD
efKddwc+EBN8h4Fc+5Acq4nvmyatSd9KH8BIvjD1qYEznTi1tz7ybUrXZ/f2zt/EMBBGdcq1/dj8
Yj3x8dz/H1gNBXl0GNI7D15tjoX1MUuNv16Pb9vrj0kFrHXwhyHZxzI0+JVCFXe2cXrl4ddsbh+7
3eHGS7uR6lJPUo/lJhLwxDOdd3f62B9uvIZKlorzYHvByYAVun2UMueT+fY2E1VN17WZ9jV52vft
7vUAbA7qSDjDy5avMC3DXzPBaJwwephtyVvbXM4f7w7wPZwPh/2BZxJNvABf9iXk0NVlP7mdkYd4
qFeh/CRPzkcSvI/EipClmc1Dap0tFK0sWcYvsJ64FbE3p1sfxAiVCW9NCJ37cLJqTTjIiJfXhI+d
RUHUI3WSLO8kEeGmqJNEUR3NHoGAZs4RGBgThGeAnoJCnu76rgp5YuCjI8Cp6n0ZwUJIh3f+QxS6
vIgdJVaBNTmh+Ece8kcemlxlea4i+OCQkXIBMFseYE4XPniAOewnwO233fTaQXE49HqF/zCZoel8
fl6hGroK5sl7bzI7UkJdefSAp0aCBRP8tCovMChCzTwRpmg0TVjeaFSCwdIXyDLgc7qjPttRplAv
79tJ8k8i7PjCRGCDOjW5GWHbGB1/vo4iNX0Ge1Mpwi9AEQyZfKGqRIVO/EgCH4PJOIT4xbypmPjL
OLo2dQoiDp7O0fSvkyP/BamPye8TJX5dKu0v3gcECKsmuxS+oyenW3nUpB8K3dqtkHL8C5aRixno
+MJnOYQrHwn84FNc1OPTl8lomXyNSYscvr+fjrsjQJ2tIHrI+lSlRcCKIiMr4x6TyCUKyiuGdFEP
y5O9Y0JOjpp6C5zpnvemCdLbZy9VeJy8cZfEohG+9l4tIZ6A7/ACiCwSmdwyyuffDj/4hyLyXsnO
523LjvNheBuMQLuOavoS+6gHcHgJ3ecSmtOrhtcYVAZ63h6WdHw8QyxO2Oxy3F+GtlzmxXJfRrl4
A5PXO0MZHqjG/XgDs+sK87tra3ieGSjo5ZMtOPSl49EXU+h21dVMZp4RulrkxUfTpwfeLPwtxmxK
T+1LPY1oRXD6depFF/5Aj4IKhg8q9KyaWhpTPFd0ZJUcLsuixrwP2JHXcgETXuzwm0gqxg9SsGLk
9CUP1xLcpQiMctAvL0qpuaOTDU4JkPfXCp0y0IgCHz0gr9n7RmEj0EW8M0Njfc71raU38DFPKTJN
NtYzCPh7I3am+/WxDVCAQMOY84lYOh7EXgB4HAmddQ51ZUiLD1MSDMgHYxdxwAoSxytGSRRj5xTj
krbAAxFQUM5WXIVPeHHfjyW/th1e/nZ1ERjsLLMj/kyE9McxY7YK5fOuJZX6cnYtvUSe7JXbxH27
140jlq+HzfNp+wIkPz2Tj7Kssr15VICwlbv9xFa8ghVdiJs9gO+6ri3iyjDzgke5qAFgPbC4MIx4
uUVCUg4NFINs+uH8GxLZ6dyfas7E2gw74nAYt66JBWYO9p2e7+vhesv8DD6ySz0MnxYykaipn7IR
nGIj4SRMwct2giYbM0cWMvvVTbxyPZFdMcUVPRvJQnJvblig6nen0yTObsBfSPesfHWP0iW7bNJc
lropo0hmlc+g5axG3rynatdVFvbdwLlQvOGoGSejdFl4AlYkjunu1cyE8uXb4enb5foryKgZaOzI
p3nUbTqPRPGBfqJiQkBWA2IFcV2VoaxEtFNrAKC0lsH6voQAzBcHPiRO5C9FMtG5KpjPs09XYlhQ
XCqeWvm0pzqQzd8QdXRsltlV6nPe5iIRZZ+QIZGZxIteYhY4mZ5ib+TrKMS9gvpvkwwGUsEQM8ev
149NvcBzFV2MmpVULfznx+H64xPpsiQrytmqOtlSIapBzroqTUeoIkVqqLELb2V2Io/zzA8Q+WP3
6qAsb8/wmooE9TwUFWMslJomroMOqqCOFMl6eySovm2/P9p411ULsS9d7QDJ5FyAGrxROPT1fAIS
dIpxaX7kV3gWEv1w7okSepX15Yy+w3kPsh/Twn58lza1pAMQmCMq2Om8FpANIg9jC93f5AJpdQyC
wJLOLTcg7wzgkibL8uxrDtjnkk2M5TwGig/xCpJkvjh5Uur5Dc7hGUj40dcjmiQ6KIK9f1ojNwTx
oIzDo00Mz4XSChfvA2KW6EZlfK3u2HTmeA2peyZPteKIgbyiPKu3b7uXfDhVcw9NL5pKatfC4vZ6
APEMPRR+gekYpcszHAEEpCIizpndrhstUoyJG/wcW8WIR2fiAfGoalmYmSvgqlGe45yNuqAmyiL8
xULLisd8iepzPuCggZzgz0Soz68iWm+9VtcLsrIfMmN0x/kGIH1WFYmF3QjMap7JpC7M0A7eOn/p
JvclZc3c4LdB4WMA204+18D7XMTbcf0gyL3WLWGgDQmO4DBMocdq9Dxk375fXf3o/XhA+Wg6xzLt
CgiHF2qiBKn6hcrhITeSve/gg2GZAfS704lXdyQ7YXAaYjAjXzX2CQuYQjdjBjk/AqdfXFXm9Rr1
V30VsjlFAWc+d5L3QWzbUiC82kwsJWipHwI1eSLIOeKBF5H7RhxWwtdvCMW55FxwQqeHxAElQRwH
pb0hIKBEAaVcQyETpGxs064LealyXcXIGr4Wh/iAvumWNbZtx2/IVlfgqaTq0AdPZoANPwAJeUrv
91rueCN/PJIyIn0rkGo2toPi1mZk5+BwLay74ExeXZBMzzxTgmbT+h5P92sYhlLHckhuTe+x9aFj
a/N4XUwEhZftpsVNfOUBAb+d/BqroWbeaFEGG7sZpiR5l4IGUXXmwhW3MvKXIgsDRayIM/BYNTEP
84upChVes5MIs48Jhrc6HW9RavBwqhaEXLzWrVeutZFdQY0u7YVwjUVDYmXbh+hIxULMOeISvPj8
LjuUUcWik8AnAS2Sq+xb7WhbeMX+rzNsV7dxRZYsXFLzZHf5+CZKeR9p+Hv0ee8t5uRzC8aytEjh
YhfeJzW1EthoMT2gpOmvHwcQFiQi0EeSxxH4OfwdDwzONwsc0H5AZy5SP1QQJ97EFnnpUfeJchI+
ZEFso95VgvXJcK/ZWLy8IU61Ez2LOot1gN9EgJSGnUgWop2iBaIGupCqWjbxDBCkHlYkqaxMqCcx
POUOOilp4JDy/mhfpKwLLmOLr+AgWSclppJ3M+FtTyJSQyKBqfmzfJF7l2eWk5ulAYz5SuvYDCEd
6Y39djAbOPpjkemsGIbjrSUC7Oo+eMWiktDDY68ks8qbqaLXC3HDf00igL5pxrDI2F1YkOtbzJAo
mpOsoufwB952I5WnEX8QyPzii6GIC+WJz7Y6EajNx801ddpcXfu8zfbblk9HHLsyQXNg/Efe+6E1
KmOGPS1iKiAuTAOXNkupqggMXojRJKSOK3LZTMbPZnq9T+ARkrhRvi9Xo0AIgFsqu65x2ZeCj8PJ
YQUIcYTFKYRvfDNNK8sIQ9AZqyvaCDomVRgky1SSr02bH2jY2HjZX1R1+Z71k29/5SlbyIIqdVM1
8llI5Pk9pC0YJuHFgdBlOjWbfMznkZA0Mt/h0Y6sz9G09YSkHSv8FdlqFvHnvXuSkxQMCVnDFGHm
TkcglcF5aYNAmXd8ehspPPDeeL+mJ8emUZwxWZYkyueSuUZULcY/aJZkrzOpRy0L3q+m/XeM16ES
usL8RRF+CSkCqu2gj4+2KGsa8vSkVMdmnULoUfmT9kx6GoiUCx4yIrVaozPq22Y4r3MWWeZyrAE1
vLtNWjp474eD6HgjV9Lq9M47ge374XWUFSuqhjY+DvgJHapIXb/7s2jHg/m4HrGHR8HBbIH/AMBm
cukQSPJ5kgl5JUZAktNRgSNOPJbep5kL2LoAVutNjicR0s4ZEoprysFHeOzIFcIzGRjr2yoopjq5
5l0D/HZYkQVPDNyxCZdPhq0tKlk4C54vdiahLeNIbFaPnqcnem2EFgQNYgW50ON+Gyv0DgkceutR
cOn+q+03cvu99vD50BYdvB7JkCi3JGe5bZ6OL7z1Jghg6P5NiqhkEffUmJW1mUibCycZeyN4ScET
Q1c4OXJp0/D+P5HOXnd1fD4zyGUmkMqgI+rHH4WPPFJNr0m4OCWIhFRgkCdiSU60g3MVp7H4Wg9B
8FxvflrBGvmb7fW6bbbpImC+j2SvsBB4kSTbUdXVaX5WFc05tVwR7wdRi5HN9mAk5rDxZprLr+QB
9izOY6IJ6KsTb7dL+MT/aTP99e+H79O5D9fjtOw/60f3LKwC1Q4OhAtAU9Bf0xI312h9f9idtqHZ
9vTe0zMdT0emv3Jcr5/X0859nYsDztNu7n/7OE1myatr3n7fnC+pixGzWohs+tWsMzBtbDQTznmd
Vvv7j/fD7877v7CmTdxWWshPXTMxJDUttPEH3WQnddPAjrvtjF4zqwZkJRzWFRnrKLseFx9W+/mX
X/5AFv92vL9uQr/p7fkOVg+5j2F1h/abCAKGwz+Gl1/9lfrSjQ9nLaD9hvLssKL780MuvB3c5Ivj
xCpJyGy6TqKXGeelfEHIo2NwuMzb6+FQLCbAYqYjRCNSV9kaFU7/zrfLB6e0aTWvmyIW5CcH/OJ2
9u/TUdGzkov34jMa6zM/OW79OKCb1okNhI+mT4IgCIFJjfw86cSPSQP4DW3eb4eP/QWdJ121cf6k
Uaqg3bmh4HrKJWzakb6ej8S/TUbC6KCJpPy9qdgRv9FcNBJRenffx95EC/X2OjHH6/a8X7+NdEdq
8IfqEGVrtJSgT5cCxyxlIzYxaTHp7fwB7gsxiSLCZhCppnwSL5Pz+uwc/JuTr2CJbiBS0CVlP0xJ
r88bDC/JtyKlGjMnUeiGic7Rc3bAdA4fYH6fVmidg7x2H568VDLnx1Kr1IwlasbPuoq2ydnN9IhM
1ngdla7H/dmYwKSH246b9h25m7yJGUm/l/gm8EcF0RC+DoVqiEnH/jXkOv7YzByFdkLEnmMCbcXi
VlfcJZEsgy8RVI/n9fKu8bRCFCoqpoV+3U6C4OnxsIjjiPT3f4kJj/f7t+dNuJj9Zbdx9pHrt7+Z
G2Rw6ylyK77eYqis9/EW8Ie7GzMIJZVJt+yVqIox79vkFTj9/csKo02rUl+GNf73w/33Lo3qeH75
G1c3EK+ZrOCoSBv5oJxgmlwbz0TUv++mHBtWURUZH+x6eD5cD+cdPNBAGFp4GzpsJ2rKVSwoqN7v
Ev0SAdmSK9R41S4wqBmLC7ERlQQySYI/O0HpLA/503dwiGSoaucwaS0y8vCGPdXyGzfDr305WhN7
zWklYa18XI+7lpZNRFS1MxiMmi8XXWh6ktCcw3SZMPDWGPpVYrA6ote2JLNZzu83bsTN5nFP0Diz
hSrrFz5KYIJV8o5ITbeYjotx8uZ+PRwAEhuFBHVXfF2PJIRYM4tv8B4lMUOC0dUlmyaYNDeXNRKL
um4fT2hzstATzusJk3niePgwGMeN5nk63t+278E3De6u+7e/9/9240oB/0IqTRa/5xPLo3IW0UON
qn65Wgx1bLbXlxtYzcyryV767Nvpbz2zZho0xC+oyYK+cHJa0NkP/kr++5///V/v9/e/BSTiscD7
ZJwfvr+dJvo6J+3h6Lfq/fvIbUwzcBcevIAYivJo9cf1tPHQcCDhOrjkx47F2J8WD7A5HH3rkWQP
Tl4vfq3jbvN+maw67666fe4mppqo5PngjL3D3v+3j21zPyeGtGvfANJG9r1HbOb1sJ04YfN0efm4
Ba+KvYCI0vgLcDncgSN8Us7m493zVogCuD8ezuwVPPpw+YWGGc6+TZ84fn88D1kszIXm9qXScpbE
YpgzcqB4OGJayqfohZ3NO3pQ+ONfoJuXsbAzbMuh9tGuLF76NtmET5fv03sevYbcbE/O/QuCYPMY
Wlq9x5hgqQXFox436X7mnb+0GNgJZqb1w2RCaOdyfXNw4EOeVY8WMxk9UYlZIqx8LxlhyMBIjgTW
+Kv+yxgGfLx0TDp6Pro05EAut83rxO0za5wO5xdmqGXYSmJGlwwTjZ5wkEkW7X/4Sb2heDuQNc/Y
IrGH9f2P7Bgx+Qe5TLJo83Heft0eT94wm94XAMl+0TEtGpEQQbhu/+FP7jbGJGJ7OjGJqoVfMEKC
gU4+Jv443x/GTBA8Je/wZESI3N1gH5euvMnE2qufZcjpq68zdOAUH+pqiC5DtjnO/RH8+T2xe/j8
6eP5GRyV0Ip3oNUMSp2TRPiUIIxuRHgYRzGPSQV+Sfco08GeLvsfSUV5GcauR/gyzgALwNt2Uh8/
3i6T9JsM12mP59vHexi3x1JzR6g5RakK2fU+uRYnn0P3QPofEtLxzfRzqhO89Ooy3hvG1m2+Xy8v
1xhurV+nqYmlxWXOQ5jrd5gOHuKigVYmY8FR8eOc58PdsW6saOTmfvgF+yS0/PwwMepVemCinCN6
oKTYY/sRnSsrT9gv/6zX8wQNlShae/QvnrVUb4xoIufy5b+iizXIDsO8HveHt+ObX2MiXw/ibO+8
tuwT6TrnyJC3c7dbMQzYoK1MuF+gXzWrCpZ+J8vTTwnanvgpLsGeInyRIpVNvogS6waZTgxE7qWq
nWLx+Rq8YXj4PhmJE9GEH7jx3NZXuS2wKeYIm4RnmPARzYygg7bP9+lg9+mpLx+szn8EmXVw9txf
bPtsnlvha4yJ4305hqIyZHdw3eI+7s/1GKtMwCOVwDY36oOC3jhQ5gSoN1EbLQv/rLjUXccfVeQq
bFjaAY7NeCMgiVvpsVJVnHSSOi/cXDZ/SEslTp9SoecVfDx64wbVTmpZ8esYIji6FJ19mJ682Uk+
pG3jkx5/Ol2eeAWeaDCMTmy9UuQpTIJDoiA/zqAmhVeYF3IgAtDlQNiI7zy0XhB6JM7IS+aB2HvG
p+ebmP314kyosLMokaICg7JZCXJxs8Ees7QctsifiohhInb8p5NueL3kvpSzO+FtS50kpG/+0qf1
giBaa7lKnfiBVtjWbOLgeJfWp7Nnr7wwV4K6y17klW4Sr9v7nNd75vEeE+5cQH+7uwP5L5Vi9WvN
A+BP1REP2WcLyZrzFy03/oREH4xzOdvCcPAP64lz4/OqN5MZxgvhtKbPQS/k2z8mx+u2ux7f7w8R
JXkRlThokLNfGCdAuC0Bq14SXRda7wke4QkuTPE/Rd8fE7AgYpRURfoXpcjQI9uDf1GiQzUZkrTe
O9y4QPH2+uJdFACgEd41vjiDuGG5Qe1tsOg9PsDQurWeO3ZR+k6cMl1szizuei+/HnmAT8okyZ1Z
oHNJ7tDCad3N/dtxx4vKkdC1M69tLAUP7+yAO5cyMDGI09feyNld3t54ldcRUS67pHOTyjvcYmI+
f0eEZR1m3EfmX+eA+F1Opt3099N+t70Cnu6IXvedzMw6K+jtw3lUF6/d7tvjOb4UbwoRF83OJQsR
PzxnQDpr91FP2aYu9RmYy2u1oWruzdjZ6xZQGXEgxDzjEggH4qS4aWcPmzEy5I+oR9nL6smrhEAh
0cHRcGQLK4M8U5mRHbXRQlY/bK+6TdKr0nZbOhFIqgqi+b0loerOvUeDeFYwufmQYQ4h13i6X9dC
gDeHYuZVOEqY1R4kRfSBGmhA/vy29fz8u+pMg0Y0Pg93eN79eXZtbz9tzz9+akCOj5Z20cz3sPJg
mxoM2sjW5n5tbu9vXhDULHM/Xqwz2RtOPHUkVMowCkZMBJ0ehvdk5V1uNyxPpDAlFD8UAMbn0AuZ
I1nI0QJWDBVypJln9R3L6FKOXPDAQm+yt40W+fy2/ASL8LxJOoUkmrpsco/h9gxQbqlzm202u6iH
/CCPCA7w0ob4LcJ5Y6IO9ISrw0id6PscSiWG2sft3fMkx4wxWeUBsqVGb9nXDY6OGTkEKozZKg+S
nEgKwHxp9z4SbqOy+5fphf/gndv39wOT1hTkCaHC0AzWVqTu5E2dLrst18lLprS1eI4xGUPFo2zJ
ujzdWoq99yXyc5vU0fv2dpuudrVRIXsSPSSqnRIgdosEeSlv06u0JX9dXAFgsEpU7jXqdQgbb2bZ
zJ96wDSfMFVaqCCBzZSvu1aMiGoiZwYFGvL48GB5YcqLUhJqDW0AZC0sgH1norL7VA22BpPG2owy
mN9gB9SF4c9IxIRLihRq5MNkX4+Hb7xLmW4rJIKZbsnyPJuLUmDoXObxgo7kVgyph9aD5kNNhicY
IO9EblcNKPb47XUyFEOW6+S2NNInupy3gU2VaKChWgjSR1JzHhjA/ujE6fbEvxO1Icc0uonic7tH
Vsv5dnTjV3j9a+pyvoymB3MISjIhsyBLxLojq7OzMQKPEZjbOy6xcjnWp/pvueyq4MVaEnF3GYgN
MOR6eD9svf565D3VwQ8SPXYGoorAwGxlxlD5Z8J3RHoqFwmZFGSfc/7hvLug1ABpqUrtks/eRuI+
7s+bgVeFBOuRc5+sTBUiChBEl9GWKWGB8JbQaRVEFJBGXUyOETbGlSq9BcWcpuVaGSKpXZq20CqP
Fvzjxps/kgTMjbMpzZCnl7jEP1dFhV+chMzG0MtAFZ5KQ2sr8jbuls1YICcoRUGSTIyQ/jZ8xiWJ
19T0SXLLJZpRs0+CokSSRIm866XXNAcPEHtf5OoUr+sQRGggSJLQZZWfwair0ciWHUqY2iWbPhT5
2ij1pNkO1x0AwATJHIhuiVzwZysLkFBCn0af/C8AYS28nMA2Tlc9mlSH3TaIXhJVSVLPFmZBNNVX
Zk9ZIqTGFM0qZe/D1nX/AmZ7SkL4fUqcWgaOVit1gq+TDqm/MZQRdFr0NutvpOvAzBIQYEepBFsk
qUZf6SxaGaYoS0uJEtcWTILp4dlVPSPFpkgQ3chZeN4Pb+8n31PqdHjE4OsmLnGZtJyneqS4m6/Z
e0RzGTk1ZFT3QK8LV8bfzbQkAOcUwX6c8xBbo7Mh1E/mFhIr0DjbxKiOB/pRkEiZ0kESS2nlVMwZ
KRUC+pMeNMk5aqUvxBqAGF/qUo1NkBkPoxjHFokF4W+cSXWmTgoIUdNMDAoQLiRQzDBt5XARqMjM
PYNIcB7HGSiubjwiE5jjAdqdpwsONScPBuaXIgcbROqOX3eJLW8e92VCJROoLoHFzFS+vR6f7/84
8kYR5aM0vmt2W0MKXcwAXZM0TIKGWhNoq9z1h9MA98/tdSDRxNRmar3a5o02WSfGKijP6+kiRVwU
CNqqiBeB3z3kGbRe1F5HPgCq87oGU8E5QxECDBEROzLgbmZhRvqaX2gKKBqN9YnGQg0tX3Z3uQIP
tgjiFDDadKMf0/FO2/OvLTDNmFqaY+75Nh+a5EpGPpX9AMJ5jTsn+J5fOfaAoioCeomCwjtklu6q
ag8euhzzZGQBuM0lJzxvj6GmCecrip7CmTK5/ZwimWTD03G/R3aNzSEbQ3i3zbSCZjkM3u7rgS3x
9n7wCRS+9nDG6XnSpev7LPGJF1Ql3XwNGkDCTE5JWV2PQ7vXcJfHWwMLF0q3JGmtCKwR/Se4NQko
NEoWcLkVied4ZWX4bf/mqrV+zKV4Hq+adWEb7CCFSjp0nKvEZLwW5O0+k6eqaULZWI2QGiuHmcTS
nUoa3+H6NXhHwKKRuSPWzo9vuTUkIZhE1uupUwk0r3uJfc4TlnM7QwaWd1LemO5S4bRdFikZlkCK
I61vh9PJm93AxCUJVIMv8aIeZYS4nSO8+wDb0XkEd9ajZUygmcWiiBPhowuiLNjbTAr05WP7AhQ7
4b/R9zlWlUThGbACacKqQJv6pi3nJAPPtAQn7WSKQ1VJiqelISf0AtF+6HWXmLYKDKOwT2hVvjpT
hg9p0/yRMfzVYj2AM1IUyT10sOjIxGFWRGFs3WPJrav9ZJIjaUOS2k2sgY/Hm/jEnc3loU+eRKh9
hwEVRSrJtBCpR9cMxzrQZPIMeEKVVczkNynKVqJSXxhxhqtxxtEHgvLYRMRJWj+dLrtfG1lKSlML
txelhUup7AwqPxThKD/0T2iCo3hp1UogIfJPuNRYYQYuc3dt4i6R8I4rbV+hUojTkxwu41IHzNoS
xYdOw3JDkPJtEkDis8l5AaSyQoORsbTXQrLK5kg0yiD0/QNik1paf4s7BpCXMXNqPs3TjCAHn6qZ
yCUk5Y9lve3H+fD9PUjx+7THK7DhFMkA9D0YVGcXwhHHnIjF6rM+NWOeRDjELXzYt2pidN4MQZcV
Ao4PMJTX5V6wKJiSFQtEVYxsBO3qJPXNFcA5nzDl8/GuJpMRvSwoaLwXRWBc+MDSOulHjmyUEKyZ
pLNcvgF12ohEiVOjaK2qTQjwYzteWWBpTOApAm7GnAT8KU0e8uklXVkzg+iElE24Y1BUCVj+PPkU
lTdDaB2zjw1MZ7vx0e6/qhVCR5hAwKOa4yLDPB3u5r/4w1/+/PfLr4eza220+ZOb9vXEdG7y4+4D
2jH4tUISbXj3bJmdQzEn+9iZDanv4o1bVXYBCIurkvSobNVA08fnI6MGw0pyXikcWiwXijPNmA5k
YRkxL0Pgr2yVOZOIWUGlFWxQKZ6ar9vpbm7b8NHfr4fDf2xPzkSe/4eJUv4B+5LpLjXP8sn+gdrS
WuhT0nLTUaqIPEI2Enyc/+aaEDwfT3fYgmkcSBtIlcAvsty36W8++eLj7qzRzdY3d0JbTI2niHPh
9uOp8+4nlb1dvsKmmaPNOvbGICvZ1mRzfD1ePm5u3X/f3u4/vx5P+781bz61iCJ6vbLsL8en03Tq
eeVffj2+o3VTtyibIoZV6rg1VkqdtnyCqcQrTS7+DR449dhyajlCGu7S/sXTRih23Z7vqJXYaLJb
iwYy2dOcccEtkBrp+QmXulxg0qPXSaq6faHDpPZsvcwO86AstAfCOWGuah842ve6D7L0b74HjcM+
t9fDXy+TnN7Uu4V2BPdzhrEHd8Kp4hqnyVv4OWj0G1hCzkuEgqf43o+NnE7b99sBfK/T996Di4VH
2UF8t8Tt9Yc/ENpMnxbrg00Zs2vm5d4u59+dJxtouuqfQx0ZI146UpLiFgwWbxTmYbmGXumIj+ev
2MzxYLgd+GJmXs436lLli/2NnSnUkXx2f6CQOtEFGmqkLsXmbrMq771V0JPwh/8i5Fs0qg2CFida
krTjSgvwXxLF2IWql9CD8nQKQyACJ0ymSlDXvoXdo5PNY6z8D9CgNPxKP/+Kz9IPEuNf//7nf/95
/qHaspOXd9zBhU0yNKSfR2JrS4d+RY82ZMxSOt2hSNnm7U22zm7zdSPRu6/250lW/cYbHdKN2rla
qdjs9ubWu19i86dQS/t6vXxDCyc7J0yQjX0O3VYDLfz8qHz3pSiP9AvGakqH9xwWFOEfQ8bNZI9c
b/f4D16tkg7Gvl1ovWmoX9mkC/DcY7OVd261x8qu2e1m70az+NzhydZoL6/J/Sbs/w+PKEirJ4Rf
Qybi9Bha4O/8+sJ2wAUm+zx0TosEPu9ku7+884oy7CNJBx8qMA/j908uYOlWiUE+3wrS0dBjdX5N
MWZyI9ZVFKQxT/AB50uSwbfFlsU9+y397qEawBkJock5elEjB9/fr/3+SRr42GrHvr/vj/Cd21Za
xoOxqnY8VyOBX1ClF3Q6KyJ38zL/19/+ncWDwzaSlB9J00KOBFY8f3q2UIMe/dDHlz5/5uQdsxO/
iibHEnPOR8kg76dJHmAqEsnfpJNj85UCeNEgx8T23rSNLDuZFqu5Xthc1zUEE7+QUZmEswXjT8I8
rnP7/Y+/b1/+G9BuEwX1mb6IGpjlD/BmJr8hG296WsD7mB4ZArejcktF2CpHYN83nIhczzCH9eYT
ueHJN3S7+TPFrL70+fZ2Ox3hAukifFhPdVXm/utcRfunSDyOz1riRyWCJmODMu5qaQ5NAAtRXyIy
aFsYJvFBGtmkNw9JuODRkxQMFS9y+JS2BoccF+Zr9gQPAfCLH70TchkbUJGkQI+3W/rlZq8HsILR
mbSOSCpk3DZBJHJ1bpQdKwIuVAX7ZwESTi9wLPgS54v/d217rMsOHSXnCksP3GN6XGeOxRjmfI/H
THUBQZGW8YFBu0r3/Z1rxBgoeiAAp0rFUm2K3u7B42gipYfZGlq1aJuJCQWlPsvLa3jd3v5luogP
xNCyxHe7pX18j5cY+qDX/9nFNr68HJ8BTjMkxMq5JtHQXGmqRqhHkbkNIRMtDlpIm3gP0RVuEwmw
cnnDEbCi3zs36ON6/ALHyQxpIx4hkotl7nDI05gAr6zIiK7wj3d4kIR60WB7tsAcZY15t9xSdH7M
bLytMCDjWWQxcahbnsUlTYc4YeNeF7C1WqwVu5hxuyGzArwCiJE4uoLnL7CJhIp6lb2kkae3d/S9
KA4Rs6a+v16/0LT0L/sVl0sGX9C2UHQ3uxvCeIf0PPO47P+Za/1omf/HkWkrHQSlyXGKmt66fVyv
l5ctjCgJmQMJhQc03ckdCmxFdLJaGtPAVgNrJrPIZ8yJ2pp/BNVFQZYSVeIK94XuF3rucm04iDoJ
ZJ/2KBvaNyayNJV67jUMLX3UXI+84piGsDetD2AjiNzsqOIH0X8Db9Dn6IGuUulTgEAbrqggqpFU
rlXMv9//+BM4mTI5AqUAdf23X8DZFgiSZm3HhnNscqfEtO1atDFFILYxsM8MWgek8Y8+tL4/Tnbi
ffc6CZzDmXMunTKyMfHU6XtvuUefLl9lf7i7mpj95OMdd7/y+HzseOejzg4CerQcK5ZzgO32Jc6j
uV+ma9yDDabwfZhFTFc8PG+n//ivV38BYBUTyzDcKoNOaP/v9nu/0r/Hsrq/+EHLIVf/yDhRUYen
k4Z53n3tpJf7q8uYRtonXNyYtpfy3+uHjIkkj98Ae+zTosRtmeuIb/ft27vPPXSZGZfTByu6/UOI
FHwJ/dYG+rjkTcFbplcghcR/jJnAx7trVOJGrMajHRkDM6xlE12kYePl/bPzk8K1k/3oJKuLG3o9
vryuuyFCqiYBqiVHNl/OdumqPXhAL5rV2WELhC59ReFI7uVB5Rs34O90+ONXRJM2lpL7pYTvs1M9
T0skyJyyRW2Np4+np9Phtnnenm6A6cZ0vyGlrPrmPlqDScekdxqKZ0/L+JrijcNSkHRK9+2bplWv
yFdxvruhoJOw++sKRjGjzcRV9OBK4n473n2pyvaddT3DakkQhIQgyz/CtNp5dzhBWZqEFWmaElab
NL7HAQ+39qzhcIH5YmNXkHrqlMlQaaIvkpHO0Ne0HXRNiesGQl4/f0zP9oaZxQyJWWib7rCPcKW/
95sASySqJBkefyz7qaPweKIagoAWdxF43/UZ9uOCwDuPmkTbZ9ulziYBdESMomtEw+nfCzcGMpxT
Zg81ash0625/TLffixQOSbqpIS27xGOPDhQrxkXFByMJiiKmyrqP/+Pw9PP1x/v98ru//sl/Gep/
vtDpeTv/Hzi+uzsB4/+DTfwPNvMMp59cy4QbLIAQpBg9zkiKszWzX/BVm/mvuJbI6Zfwb6SE2Th0
NVqwEw39bSLMy9v/HSZmNzI4/Hwak5JtvHFiIwBx3J8mO/3sKjlbS5DkGGE8PGTMPH4721BzMymT
qZc+GT8mSh9fzl++Hq7H5x/+u9e37a7ZgImUVodq7di3ZnL371+ut+2X9193t/imfPWPLNLbo73m
F/HbaC0gyCiO3kVryAKH3f62ba5A2qY6FFHFwVHzEZoXQWpLfGZzDML5BW4rvh9J7zHXy0LHZm9+
982vaUPSUH8sTfEQt/Y7pMIKX8zoB3IVdMqT1ZgItBtCWnAgrMmwnTyUL0/H++3Lr4cfwfvz+3p/
+nX/LL94xfnldPGWELfD4L+EHzGhQ5ufNRzdmUAr03LNJfp5CeEtR9F381W/+l2i6w5ryHmN6Z19
dkI/RNyZHswd6cvDLIC7ivliAfCInqSN2dp+X+7i2vtSZF+dV9N9F5WOv5vmAjotEKpOZLQPlu/l
B3A3z9WRHdmQbGiYBVddVCy09xTQO4mjem0yZo931VrHJjLwF0XPmSihtYohq/SxEGHBMdwSQbB3
iW98M6NJlMQp5R4a/OIGUsWcwZmZw//0b4cfrdV7kuYZLAcb4fN40E8sRRI8vaiYfC0i7G8/3t4O
98mA+MSKA0lo9YN81Swz0yItfdantFjlgyhKx4KE7HTNZWi6Z+zsHGvCKydrrmbIqyr/qmZ4GBBn
l798mJbxn7pyoslIuX352y+/2/zld3/8K1rcO+6PMK8Hl62HN23ElefF/vXPv/t5xUIqLeQMVPUY
vPBY5nd//GXzb/+xYqFuXkhYP/fL2jERR7bez3//G6CMsJ5M6/lxG0opZrVpd83FZFrMF7xpmZ/S
3fxff/llxTFNOqZP4ZlcLyJ9YmXg45y//7m9tTE9gDdrYxJZWmndQ4r0kL7XgxiGyn35tZpbSmcM
UvLRhSw73P/+859XXBc9XecjT2lXW+d5P+2a+4kpV/5oD8tXcHfuttVaMEZ25DDbrGJBDr84ivi3
n38Rm6/ii1lxUrJJ7SEfI0Rx1vu1fdY+LTOE3jlWMIS/5qgyHdV3f1NSstS6gitV4sowUjaOvMs2
1z7kQKSX9VGjSVgULPnHn//wy+9W3Ltc3HtnuSOuEBWKrOdKcsTYLfb1ryu2RUgsNDcQtuSilScU
aUfa+IHFNc6edUeTIgih+ij/pOv6pcxfwd5zeWGgVhukTsdszonX5t4I9Y866NFueWsr7l+k+zfO
jDWmotecfG6fkezJU67otK2fsZAZzdMORGT7JgC9rUnaNepXEPXr2zE9umzPK61WcUKTA49DyP+J
AN1Sv7U5Id1faCIarfWFRdB+CSI2Ou8IdmON2jyFNC9fEfvCOvtC1JeaWLS5liZC1gMIHWf5rLAI
RGKqwfdJiGDIUlq3757cmAc4YoPejCo+q+kEMYGUh/8nt8VGt8cfuQSkeNcnFcTF/s7D/+AgNh53
SG5J1tT0cPZw4Jf9wf89+U+TLv6C7Y6wuYRnjB3pc+Q+f9m9tQG7ngJ2YXJol1kEfpmWi0RgP9+K
RkhjHk5Sew8DrTjsQmRqPoW7hOYKyY8Z/V+oHe78tMv28N48hCRX4QfdGt3nV4GNo6gKUj2f9enA
6UHc582jJEIZfebTA93aH1+mbYRKOP/H9lLJVzTOJTCSSI+4Rou8ktfqu6v7GPUDS//TH/491Aju
3h49UZ5ctdz5xf/r0+Flu/uxcQ2OXc8fMq6w/luDoa5tal/6/nF3Rf/ftrHVH/N1ureezAh+3d5c
0cV9ywVAwsekpjPlEU7W8OG7K1yfSxD/8Jc///Hxb7L6m6fD6/br8XLFQmBMFObjLMMj/bVY1Nc+
r0HsB4JmeqwjKtR1+2ytPhKsITT2EpXVfTTv8fDrtj2Sl/YVk6p5E/wVDIRqyCSL9HJgH4TXutRS
hb0917/OFzP6nIFVJyWC0bmZpLUFvkJ+RU3iIinhb/2W+ZWJ5OpC5DirI24zcCJvn939aJH5nx+T
lvPhLdclgIvThyWSOvJFYlGOpz3MZ2nvJlGvDyCG3UShtNueTk/b3a+bT5xOZwJmkKvKrMOnBDx1
2xIxayO2GHBDck5vQKXQmIWIGdMhlfYa5JLvIU/7lFVb7ISsWtKxIBTXxt7fbFus+Jmop/OGzmug
u58QaUDunEL/yAVYMW0w/nzKJjadL2SVeeew9gq0Y4RvBPIY9Pt2uaMZb/HzlDcv+zDEohfDo2N3
bDrs5scdz88XsAzJaaZP+ZjY47/avh9D/wqQHa3lkNUDDHGhfzmeDo/wthu+5Pqk+N5bt1CQHcDc
6T+6hqT2sG71d1zYYogRXWcEa2ep6yiryRJzT7z6CrGRqluhT+W1bp9/i7PofU5AzKNo9WAIS6p5
Sd+RxJRLzskKbotoIZ321s/ZVNn1bPe/u7mcVFfgyq8zzOv4SgAdEeo/HCbp8HY8u1f4IxnKxKwi
027MXPC92I2r1QWLjOnBpM8LqB7qBz8tIrx7l06kfKh1scw8kYvZiE2nkXPj8MVpfueGy/3eD5cD
a/VpN05PaTexLH/zX1wrrlYEmkyoi6I0CIGPa/jv86kSTBSbhPF75b3DXsVEtWmdL/lADbAOmafk
a/PJGiGzOqgk989wyLIgTYJD286Yc+G+8o3TjudFB3J+NTL7JUr68HJhdsLLtOZ2HvDi5F2qZ8TX
1uXN9WX5gP6rv8Zutl+8UPgSE82+hJwjto1Y2DfpQ6s8xGRX5QWEj0mr8NDESs/k+rd5XglDVGMx
Flx8Im0m/DpJLQlJ8t38gP6D37uX/O//+rdJnn29/IouQeddHANJ+c9vp+MOfTkUNxCJKH27cS3Y
nmPfemaRPm8uLdMSaYBF8zZsyaQ2LdOqfw8rmGLmk4mNldxz+i/+IzQRdiLItSQ7ZOuCDQZplGRj
yOSV/ayAmhv0K+gkpJ3VPIq0vZPvS1coa7YMPOxH5OpQV3LlYEoNGcccJl7JuMTTYbuL2wh/3Jwn
//GF0xwk7BvgHGdhqljgFxcILUrDNNHb5eOK/PIxWb6xw3FlKTqAh9kR8cJ8H3uhjFouFEpr/rz9
DlZSJBfA+L6KlbNxwppA9bGllU8jG+i4m5DUFqyY62G6o+v0B9/rMfyZTXvUImWrhml2ki6cFnPH
3N0fEvzb6+EcRp0nE5ijFf8zMiWN+560D9VX/szH2VdChLFfeMWUfprN7oQbby6ako/98CwVHcBy
UXAN3D2nzFTfpPYBys/N7vNmu8wiKX3XCqf9rbCiukHy9mGX+8u388t1uz+0rkCkFFzvP6mY9bi4
13zGNbNYSqpVbmElBbhPsE4qEQlhbSmpqCEsBBjxEWYJXOR9sgjKVyUDZmkC+8rQGSKOw2UFFl6v
IyKi83JibrX6vr3eHk7e8Xw+XN0qm04DN0/YvDHnGAGRx8dv3298HnL0FJPHP6SSAPL7ol4uGTeg
868lqbH+OWQsf2xP/3LdvuCCYC1Ii9E0QeoPf/nzX6db8XPXp7/9y/Xy9ouXw66nUYBnzq6x5MfT
7QBXT4f0rVjsY7hdYaOCk8o+6+X4mMI+uaLzPYGPCUCRapXg6dBpSFNQMQ/pIE9m0ccJGRj6+Rz4
olHxcux0mRAc0o0/NDTabPf/2O7w80typFS4FL7/8vi+UeCuZaKhMEZWlhejIC0TDMgSZlruAZUR
x62Q5gFiTI2zyV4M3Euf1+qbktokugeTXWbfeuLGtXZDzjzmMSrjl8g7YVpN+OPfL7/MncC5s6W7
oeNO7j9Ohy8zvtN866K5Qyn5uh7tIO+W8SgfiVB7HLcZ+0oeb5OYP4e29A9gGFQF2WRnjWFwxwOK
3JJula4vyN+dw/pLMOVRDX6ABnvaIsTroXHRIRp8bglAG8LeRVss8K0ZCS2LFKZwh2hv3FrytU6x
N/d1KEBasQZphRsCJUGfuwJuv/s/b1Hjij7xQxi/FLOF/Csc76fDiusn/SqETb0vpuv/JToGaAe2
Kz8P1z8xZLOLsOrT6X12GN29o6EVuyfNQzw6arOOUWjji8406fV+d969Xq4r1jCkKYxOLcBbxyaE
42ehkc6psXItdRJFP096r4ykQSXfOjf+Pu3Z4nsSBo775dD+zZ6wTGiZkXVfin2W/7g/3lnUKm6e
9kkhfYx+/uWXX5zA/MNhd9qC3vKRgwdiMLj2jGLISehvl28rqGih02JZ4f2O+libRL7G8cEjfcP9
eLjLFT9N+MeRk+jznhXoBiUJzbjbjAn/v7xuJ1/pb5cL+nggv0unV3ka/Li/f6zYuyW0YDz5R5+G
yM8mLhR0S/JanYfzEAQP1eKK6FEltrHES+tC+dFnG8KEdZKT76udbRSGn1OUpODdj8OZNFrsSJSp
4c18vP/8OKCCYkvqzF0UoI9v5a2dgB+HP7pAnBvK+zKpzOuPzeV5M/nMqxpH9Mk9DV2sFfmF9Ia3
TXEEN5Lj9Xo5Xz5upx9geUVQCVcwEEm1tT645V4TOKLzhYF0yefpnW4+1H2/bD7Ov56nm4DjxmPF
UaoITj0Nm7dwPKeBxd+uxzt4yz6BPtrdhI5tmegDzj800Vt7y6RgeJiLmONyk+94I5FFnxYBmyjG
2FXWy+VhRH68O/jl4cfP/7R5XI9nMbzjPiVchD6kOtGab2zlW7+jfkuPzJfQ5cdFgIQOPJo2dDh7
hpr5C7TcHsgMFl8x8kDMF6waeCpYzofn47m+w8EjO0G1OXPI98WxMkbt5pd4FM3P4gQwf2IdX7Bu
I5o1Hxe8Y0c6AThyjmotdiIIR/tbPBm/jBkJOfi69rCDt+Puerlvb79GulrVW8AORBKMKWLse2mv
uxBJmgN1oVA0AqfTJ2QX/uvz4VtoLQCuiTSk8aCR0FqsL7u3iQE9GqMfkwh2t9tEQV+Ph28hxvr8
PLHj3y/v/354vv/p/Mt0eScf2gumMk+jPellHsYixXZ9fv3paH6qxEQJP5+O/kF3903HuNF+QUNb
SIZy5OCo+i35ScOXzZPrVe/+HMvzAQ+l5Tw68Jh4+JDhzh8PEzzSmOb6SjZ1iguh4agm8EkFvyDp
UUs7ljj75PdukGB4hN9NguLLf34cr7/e3qDoIQ2Yfa3TI2d4edLj+ev2dAxjLIH4sakpm6+PMVGz
p5cI29p8dQPtzuEfwEuQjmxiTJ0M3lwniz+7Ieq/2+8fPTIAwZE+ar4jiZiLncNB0zm7TgE660kT
WUe4MUIcTven8/3yf0/MsZku/cL3MXxUyYbthGS7LgoNf6T/8+Nw/eHHSGFSSD1YtVMbOhavBLYM
PPglnu/LHfSvftS0hqWc5aqjzZ6u2QFg9U870rm6SyWd54Nr5fN1cvevL0eksHrSersTKbl5ZpHE
GmAV0gzQBwZV7MzbkHd9Slsn6juWWN6/PW/+MRkvbiNO6LnN7PxmXI7YLQ7CAMSrSL9+d6tSZbxw
v7hVwfdk1IJzC03fcTQLyIS0FveVsrbvqjTrfSzwTInaYmLU8D9ynRDnaG6mhQ+Hc2OAcdganYvg
JyFHPTwZ36AJV5+S/MPlOvGvIwZckdFfX8DbEwE4essmNjSc2Of+14sb5Tm5M5gPFSE9V9QcUdL8
Or4d95BW8mbNsQHcL+Hb9+P3w+kPh/f76yb+m93ldLn6f4O3NhB5JX3GJXdJ/vmvnIvdpzKEcFc2
9Jbh6BHpaiK2HLuZmH9aiD43zzmO2rnxKHU4ZU8kiFNiQpSkeXx7oV4DZhjCtoMvuVD/o2L9xOdN
ZF6RkMHaTAaid8dsTFV7cwd2nvLk2PpckRVLJcvMuC42xj7MuukwD8s+yP9AcPiktmh43xPB8B/u
8389uMm7//F6OP+3yz3Zd7wyIE3WHe3paE7krPDqV53e5O3jjgdKDpoIHZ+SyWyR3xHhAGfgaM0y
56oNkUEPaTJMvPlwQeC6SV9dV8BtYi+Z2u2ALZhiPFe/ZMIgtgCJk3dyJqpJkzCdnv33IzIWyDQb
33hby7oYAD8/kDk9vv+hZsRS4zmsLc1rzlAPuZLIcCWzy4TfE7MUWKInbaGdLtG8JdOQkaI6H3Ra
KAKHGxF6nH08uYyGwz+Pbnhj+F+eP8672CvOo54gwYEU2w0pBhtuarnc7cf5DvMlSMmHTRm53HLN
3ZGaHjJ2+354/w1rkdqieTBtvNFwkdPN3naXd3K15N8E5bh5ddO4Hz/qZrF+INqkw7a88dTPTm65
8O10uXt8j8UJ/IqCDonxnTLYFb32dPvzY8N9vHYyV7dgcTLVSXrxYAVc/DGy1f8IWJa4Byb0A4S3
4LcKrsCSS/UJ25ZbbnJYj7eja9zpFgZLJkNS2tAcAu7Q9VE8bX/4HNrrETnXZFKN73YjR8Wt7EkL
0xMZSxW6Ug1d+/XBw5Bje+OT35w7tkOyzpMPediDHQ5khz3c4WPJxpEJC1kSC60s6NpSv7ip7260
YLiAMEgIz5Ca2JQMH/PqxA7cbzjrePM6PfmtObdn2rsil6ESpca1dtvbbrs/hD7M2EojM4Rie+nu
E7fQIAMyo0x6P7iHbwbOS+7RO66DhcT+iSciXfCTJH2s/TLxYBTZ/o8eyj6mnGuXv3rk9z0QA1F6
NOzRFMAtdjxPbvrhMVEz/NZ9ckp8md7kIW6xKzEQIDFMSOnS2r6fnauVaiwxZAOHIlIaVvit2xq7
2vyLbM3r4f2wvTeWKcavRdykdnPPp8N3L4sDZtLYH3EjYgIN2eEkeyfdA8ZCh2sjisL3+9Sa3dya
sxIsJ1oQcnlpfgxreA73A61XkOWSanHK7cf94qZy7wBIOhCPQHoz1uoWkewup4+3yXBykHhjlyKb
shGLv2rX+LnTE3BLhIZ1S76rb9c3nP86/dRX366j8TO6nKBhFpcc3/98wcO/psX6UlbEUrggZIJM
ez9cXfLh9uUACJwqHZ1sDvBInzr1SE/dJSexLdTWEwaB5p25XxMin+N6Grmc+cGHft1kIOeEJSkf
X87TGVBuXWnaLeXIvHgSyGhFooq8u0flcVwxXMH7FhDSOJS2nFgsE3hoxaaGkZhJASEim0rn+/DB
r09x6dhR47iLFR2+/D7Kp9PL5TpR/dviaZ6vh8MmTF/GCpiM845N+yKm5UJrx90xXOgt/UBGuF5A
fkKaEVHpiy2VYURlbWEJFqb6xr9ujJn6xVwQ7pROEDnQT1KaeON+9yZgPe7k25zF6Eawh4lzVlnN
/ZHbaVhLk7VCR8+0VrElsExEvf0y7E0+fCXuTfxKNq1EZo0EYy5+7/8BLhJnVvnt+MCY7henClcD
rjkCyX6R4G8Y7pofNwS2ZLry0cjJfA3uRF6NqyHv7sHamB9O74X/WpHjhJ6YhGreQlzOwQM7B+u+
3w6NvYi0mo8X9kRnPZ8uwIIKlzuQ733JtS6+95s5nu/Xj31jLzEKHu7FFIL9cTnxwVbQDjlZUOs9
yxGIeghj+QoUubRoVtxTjI+Ee1LFPdNl1l+X6cvrWu7s0/RgyHsGZKchk5B8M22ZFBZBz2jK+x8z
ZiH0AHiGnMqLOL0UAet411Aa1QWNrhXW2pYs3LUkEhL9hNAXhkLtydDxVPuivh6udxd6n8yE48u5
IV6ItAy2Gllvd3l7/7g/jN+Zwz0buEYIk/l6w8ur9BqOWC1xtT61S10y58CKCkSqRK77yR8qIvzb
p9v7Jdg60x/dXK3D5j2Gc5z1Fm9jci+O51AddADxf9JEN3SDUjOO7qzKy4uHsR/rP8zCeJtC8muS
ASNR28acz/pSneGXsrRjvN+qQkuhXZHO7LGUVKw8azeCs5JVKdOseZ/4J/e/PJ0uu1/xS8lUJN/H
LNV1u+/B7iXZvU2755bS4KUsuV6bumtzLwV21dN2AEOTfgSgHzpxQPZJQlafJ4KDk2Ny/CdwfUi/
3BR/IoxOthl26Bz/4znu+eG2eNgG/4bWpEdkDq4sfuOR8l04cI0fIL3T7ExS9R941Lt7MfjWlitk
PoOv+YkYQ/0Npwt3DwBXJG3nooXZr5VVHeCAFOWM6BgWMIADesoBOvUj/w1ShTRajX2KNXiazBVe
8+xpdT9bUK69R3B4MnAns9G4wysgSUwhUmNQkFtqAPfY1Z+kvMdHwMZXMzhKdC55QwKo30yPHdBS
ui8kMj68APdIpn5IFbouw3sEEtlSiex7N+PXBQckrWYzO5wRDK+Xj9Pej0q7b391zQ8jaoRFBe1T
LHzB49qnQWxD+Duofbtu56FSpBD9jR8jvSRD9gUWSxaQAWmhsYh1LGTJy+TaNeh+KHamISmAlUjj
YhnkMOHOqBIWG8RPRHsLD6nSdMXDAyPCECkSsIW1liMyTWxXyngF3sXlfrxcXTlA43UIe1G0YsUN
AFGiaetu1SL9rgPkmHUB91cg2WNv9j8me+a4i+VDjZPTnk1DEizN+7zeT42VqY0gUwRtxZ0C3WQo
9ZcAYEPHYybockdhXEusSAHI0qVbTVbAaNBjSQurXTJAYUaUTs1aV0mAWyWd/WMmyOp7RdxADT2d
YoZrbfA27ZLG/4LUvocf2Lrkx5odhNcUnzIskPlNmvHHoWuipZzaRx7z5tLdavsWSECzaESFFTLY
H5ntFmMjSPC/b/f7pm+kZe6NWhJd8suk6JLrUvv28eZ93LUs9Wg3Gaba+QElxFXkV+zBikRTW19X
Y8dl+PWfMQPqiV9IkIcJQRBRj7lGDxysRDjcOw69WmCWYTvv18v74Xr/EcKAKYaKLbq+jmqA5T1/
hscHFvWoSuW8TGb552b7/XgL67sFXXriafv+flhjAInO1j2ydVsHdzJKYJv+lhUFtQBV6BFLIw+/
5YIFMfyF750h1NC+YvxmQ6n8xRqG0oChJHijFc8PuJ9aqiHML1lO3QL+6ks6NSvODLSnIMau8GXN
01bJ1rwJWQFZFdgjOapPDhrGT90ioCJiQISGmjTMxtMleHK9MKX1mgsdwIVSSh88pY/qUxcA7paG
BagFtU6KAE9qtCVh9WvuYQT3QKwm7WfJ6WH41D0AEUUhx5BbvYJmwXod1YBDobeWUgkQFHVJFrp0
vSZBe5UlTKjWyD3AVrIrQYQ1pokEeyT2Y6jvp/bZih0Jeot9/RZXAGWDBuIyOoVhMU8jjYsXptzU
Z1Q48OFGU1Jft+ZFAfNJwnw+i9jVSrCi8hMmmCCe8cTQlsznbOwWXexYcnOHuA/JBap7VBp1u1bk
IMamIkIVGaWs/YIsQlEPHDbuEageSYR4mJkgzBrZAIISQtFRb10YnLXGcEMWa18KsG49aSIbk0DW
2skxofvfZMaD36BdzWl5VE0wIUeG+q8+pvoZPQ58bDLzKrASMr4gedKovM/1H1f5AGBFClWFdu5y
DcEDc0gKYLDz5A58aoJTTtTj/zquUq/g3DI9th+tpCq54isA5MEAf4ezeRApj6U6kyv4GtHeWAZ3
Vlnn4H1pJI+Wp61WLLKk4TX0ITtAH0kLWAc82grA8VnDoiMDGZeh6pWoCbLtEUC6XiqCd6JzLBYG
zIrvBfl+ka3PkTZQWoKcmNaFNuQC4GESGZnUoJ9cL8dPPxIyVYcy6LTGqgJwqyAQs3FurqHy4jOM
LWiKk0fKxlXOIWBMkoj1mKVr5G8hSoBsdH2ZXPD5B0NGe1cOXOl+ywEAFXcLga/W20lIDxPIxxeE
iGzv/2s4J01iWQgbnlaAyCVpYhOVhBFF5tMviRTrWIpfs/6ekfai4zL8CEMlxAoVi0iiAz7DZ9BT
QSN8Aan/xKERoKbowFpPXHoNLgvSTgVJsBWi981+x0d7zEcYL0VnUmTPB3wPt/Bjc/xbg0k4qYup
7wpCqzwPp2ey9O1+Pdx3rywv+IVE6sPpE4PJWzU2qRS/SWOKvruWpnGH6Obe9ed0rZhCb62eX400
Cl5GD5nlLFhOk+XKDILWy4BtyrE4tGk+zZx1fj3hZ9KkV7KjAJvl0DQWP/EVAX5xQlJxdKFcQVQK
EFVqPerLhfvmc0nwXB2ZJyWLBBp2d4LfXUfeaUzJQ2h7I9heT7ZXGkUNamIwer+u7lg+r27Slx0/
inb2KfkM3OxA+Cq4MV3zJgRg+pEs1xUP1RImgF9J6zTSA2g9W42ArdKW9ShSa7xVogBchSRStU8z
JNdzqwbcSjrJuYC9yWtk1pOGAHc+krcMXVzUJ0/Ak7ZRkvTC8yMOut9I3EAaj0RsLKKZa04ggDhW
I5GYIrUcgzIJLUgJxsxDntbvFQhjRRo597Kg8TqXg+U0aSudpceu5kfGjg6tDcmggqFLgwpWCVMg
6VRS+UMaWv15jgF22Uj0wCLsWb9miWRzV0xR1Kb5ah3QUmROXyj+XK+lJDi1TqaDI4x+/I2MDGTp
QMw1moCP9T8QoEJm0xA+YfIKYAfoxBd+htd6RSKAFCOChjTnRDQFWHcgrLtIRf4UHwDh3pEfCTjZ
GmPSgucivJvmHSI+AHqNjNfI8vvQcuDR+77kUv1J4wSY5ZpMBFjkdLZoCsgCldP/ZzW7AKa1Shal
UV69i08qB3AfhpgNDoo0tBpvlU0CtKQkTXUddppBpyzZAj4g83uHsej69SnRiBiazAheAFmryA+8
JRFo2tmcWje9bqQfyYSY6MR366kZqAeVLCcPwgj9SZJDqkLrgr8/IdYlcO6InbPAR1bxINizIv6B
M4Iz63rVhQCq1mRxJ5OM/o1+KTAqTEek6iJD91O8YwDvDKUd239SVAFznuBfXuUY8VuvCcjDjrjv
obfE0HTfwYWQiTzLfHVWAoL9CULk3f+CBETcP+qSVPrf+CM9uGhii3szf1yhG5CbI3JE41FbhyQr
uAMyJW6ZYcBuD+GB3efgO477gAAciZUYorGf9M6R5pImsxgzIPb5eE8z3cNG95fVyOFQ6pr1OkwC
q5RIVe+edp/UBuAtFcF2rVcJ60E5BHsqkYNyw/qLAKYpMXndZvv114twTqlzcOW3ev8ASOyIdeM1
y/gJQwFYeAT396z4W6E+cOcjkfuLEO4qVgSik5BJ7zKhevtbVTlgn+G3CEAECwsyfNDOw7zXWwZA
hBhB/AxvQP3WCwHMORJqDL2Sh0+agMBT0sTg9nPqxBp1gwDttFs/h8+s5xyAnBBof1CpPHCVuwEY
kni44QZ+o1EDpKDpCEcuco1XESB4PkMGLzqONHo9xKqAGCHeeZif9VmFDiAg1RGUUTsSWU8jwEzX
BBpfFWODJo21ZfiribMjZHWQIK64iggAyxldxC/6z5oc4LU0BfFd/qH8hKcPxDxxbP10rPU0oMA9
mxynWYEpQfaSImODT4DLiLYIA4Ra5zZqCURjT+O+Y9GboSVyATvpfGbv0IyrI94ks5UjtLoG9gem
iCCSWxaSu/U0gCrlwB66dZXAZCXAkzeExW/UMsiZWcRVht/4I4AdOiIUg4ZYz7UIrCBwrcPgh98a
yABPMBIuWZQbrjKiADESVrGOua35hCcJsABinDl91OtPKmEUoiYx716kKbZIv4Gd9mMZiVkvhBTK
QlG5Tl/v7kpgUROz3Vlkv9kPA5blaMsQbb/+QgAdm8L7/Wz6DNL0ZKK69pUGbZJAkCxFIPvUWxIr
YyDixJiHDj+bhQNcRBJ2ME562jaGhyI5VoDoCHt08DQE8/AzCj/rQYClicXkY+lGfcIaB5aYKjJb
fyNMg5JnB5qkURZIMq8GliMz20OHHNXO+QAuVD+UCPwnTFzAV2RgaJlA11LBgGQJylp27F/lQQAH
mKTrGMcZZvyNeSXIwByHTyfsoHzN3pZpqu2EHSC1+0X6mpu58Zh3NR3yY3/ZaP/p2/b6q2vJcd5v
LvdXlxQf/tfH0Eow2EOVE2iGOPHbr/jsgPGYYX+EI1ZMOTZQ0XX8nGLwtS4mew0d/fp4ns50vMeR
N2AZMnxj7hDgh61NF7G7X663cF3Pl93H3KyXM9J8Wngci+Yi+aJ3PrjoY+uNbI040IzTlH4pQZYy
1heIRP/1sbvN9fCfH8crM1rPLxKrkf0isXg4qrTiTAqcSc9rxMajqr6Nzf3HezPZNWxLkrMZS4pf
im2B+4kD+Pwag7JhBAK4agmuWpPtOMkkzFjZzqN9/PlybpxPpPOFNOkILxenM+B0lhCSUxSij8Zd
scYIdtHNa/jUjEdqTf1+NFiIbMbDFcIoWdsMuOMuUWIWvqtvBt1tWsizhRkQgwG6jmNRA2/4hBsT
Z9MXpxrAqUZyM+GvqkKEnOoK+xBpDet7EVhdvV3wQl06S+/w5l7Rk6wn3I7sxRGxkB24XEC/ol8c
KiY0XJ6DnJhlrJvBza1CrzeUysXgR3E16EiEF32KbKQXN1wyzLp0XariqEkgshIzKecfqcdcziQF
t3vfJfrwCTkoqHjufXV+l2ZUPt5N+Y8f/xQtg7kWGw6uskRTBo9UZ8NN5sUeDVXd7DXHyZ5Y+HU1
0d8e9ogh/8W67a7wfj1F7Ao6BIfdJx0BipfWZJpbyGGV9aXxkJ2ezJxajIfk3ibeJlrRFJPhIq7O
HpxOkYk/w69uyH59AsXYeP7TZG76lfHzmzTfTXWhA8Qqsmqtq1U5ko4hg3tj/GlP6N7TlmI2iFtK
9GS2D6HNER/WT59fwUSGjLBzvoXqGMq8TEITbtGSUX40rROyIzoyuT5f6ycZ9p4n7OAB3I85On4c
rcM+mO3dD9/vm8v59KPxuoRpaDhi+bqrpYQiS1I4pbUkukTqXsg0omYF3TT5miwduhHalWK9tbLW
9WHcFWnZFG1deX6NeRA9T1/qMYVYBe2KcDNFYBYr3e5+sClW44EcRTnftYd3hhiZDgoljfaWS60Z
GtWTgWuL2ZWLJa8HXw3fkqz0VS0Q0QXpqZbop8JQerMCnrxp+phxJcksdF+T+8gjhRRPZqvNiW/h
zfuC5XqGImf5AF5nMT7erJM5TY1PDT7tFdbKZ29KHEtsCd9IalxpSzRXluWAa/kJo3I9h2lCDx5F
lw1pXFiH7YMQUqadf1b/QONtE0sr5xUrwcivB4cAWrb/K+ZsY5t6JW3fG+/V25VW/MwcYC1KY2T2
K3vgl8P5cPXjBx8Q7/PxcNrfDo2b1USM6z51CeeUjAKPRPdsIo79cDo/jtHf3G2vh3tAYtnozkhm
3Dtn3ddImNgJbvKrQxOb5+fpdPz3YxpWKfwwPtFF+n66fJ8ngEkwB7RPUxpF7zhQ9BGGeezBm6ds
NHUk47D9Ir7gXBhT2UYPLiLNovQpiiZ6mo9NwNmOg6E/7xGPaMTTn0cH6OmQyS5Nys2+BzvoyXRJ
6ixmhCDRETQ5/+AbdOXnZ2CwcP3p8hxW5P4ay0my32cAz5GMlvcToR2A2kevJXs/MOe0T0NcldPr
arTF+4GPB0LFEQqM8Rz68wxmNhI7gAwJrWwf3GBPJwCTOtrs9wH9WPo9Mf3T8dHdJ+4ZB5/eX97d
AD5OF+/zvx8oX0a56OGSBFIOwlTdkvLR71syc9fz4TBUpQfYwpiOIHxGiWu0udwEmhFryCG8KhbL
74H0sYR6nYJQUUHkchy8/yAJ+/ZL9n3cAjjDmEjYJyjoqA2TBEAfJ/YVygPyKkZxMzpAHEBnjZuU
oJZxEJKAlAPH1MMkewLABD0ZRkx9mMQE6Pp7qgAC2K2L20MEKAkBei2qB1PRw5gIR6KFtItMCK0r
bwDIsCfjtENdi8h28ZDjaBOabEJ7cHxBR2AHI7VHnBp2jOQD64fL2+F+/bER/rv/ODz92/H+8y+/
/Hl7vx6/83FiAj74KiYd/YhygW8XF34G6yQTzvcReuRQ/+Evfw4rbM6Hb5enfxx2d34RmXwBn8do
iyVcusD55TgZlWgnyeL3yWn6schfL8cGVD+qZD0OvmtdX+wA2Z6jTLa377PeFVfwp3MI3B/3Dn15
Pn7/eAdbSY6X78sVk5zTVrYbn1WyBUkAMj0uqdxJSzibONxp831lel/fp/NR5zIt9rfpTRvXmi7G
t914dGie3uNwfd7uUCIDCXH0PgaoZ6r4Pz+2ewgZjAT59J0YRYyCkh9uHZw4wEo5BEwpU+4AHV0X
z7ikKPC1TF/7/o8iyorp0T529w+XmHA7XI8TGfxz67JowDESZVu3J6tNyRfoHhP0QhoyvU4u8+Xq
cpjAl4mlfTaEWTA1/GFJHlD43pQyuXNhOP0cQUy5RCE5xv/7MDj18PXQBN4J7ydIN4ZBSf6W/9aD
iSGx6/bqZqxt/YhKMPOOzHfwA0Qj+zALgd7QZGSAl7MWrQPaF5Me506RxK7zzDqgqy6ZaebMigHu
B80WT71XbRrgyKwDesOSqW3OUjSPmHMl54w85eN/XvkjpF21M01j2J1fCtwf6XjudZ5pLAVojDTl
joNgW4sB+iBDoWhpH78WoFkyHMbXb7SuC5AJ6YH/yN/2SNHheTv9d1U2nUcTr1mfzMMbTOpVyK2E
GDVdoG8sNMCF0EsQ0TGmAn5uJURrY0a2vYULIfpPHZ6dUO/xjpBYJBNAfJN2EZb6x8ftfnz+ERc7
HV62ux+NhzP5lly6Y0gR/dN5f/h+2P/h95v36/GrM72erpdvt8nq8Qsd90/BLnXK7PBlu98zjpz0
Gw5X6K0Cly8TrnBaY/dxvV2uXz7enXH35eh+k1vlYVSEVRwYI4tV9ofT4bGK4ZeJMtwvI51l8liG
Hujyfjj/7JflTxUbgbmFnI8T5dniVGRZDQ6XFvMeRRAcPn3o6iKP16+8rSLJzLxwLBLGTPvZ7r9u
z7tsQ4rfUJdu2xmEWjKr+euW7DrRDa1cd1zHHXDrZmS0VorGfdiRV1SPlaZr3j5tb4cvYXz6X/z5
fnHnGzbv2+t28vEO1xu/cOwOq70n57COGkW8HO6KpwXbZ6eUY22JsD3PWYhbDCFQQ+k8W+vycb7z
a+i0hjPR1HxX/pLdYf7t8IP/XBBWG5YMu/mV//gB3rEfZ9xuwXOPNY5Ie5jk0tv2+gNvZcxIJiZB
8s8CHsWmQ/Xzoe7X7fm23Xn7+XR8PtyPbwfAookVXITNDE2BAeTFmF9ylUjePxDN9n1OZ1VB6CS7
5NeIVcXzteiczjyVAiETCyQ95yW7fP7cSeGJTluCmIg+d6+2LYjBlgjn+BO1SEZvgt7x/+B9pvsX
P1gAMCehJf8zj5+YnOtp+R/+3IAzBp1v0SyYW/M/3qUXc/CT5ggHSajB5MRnCtbcH6+HwBRkUSc0
ri53BrCrye0Ew0o+QJKakORIH/DrpASmPYUEHv9Q/CKEMD2rFiS1uV0+rjtwkpEIUJ9jvHiiHjxR
IkFvfNaYCujJMZGHsyr0wPG1BXyt85cotb9zQI7nj4ypAMWKITPdEsXH63wsB0gjyU7tqwZrhwqc
CLS0ylSKysVNSD2YyOL6Y/N0fAEXTPbiXldHdR8P4yfJXLZ73uIYiOgNuC82ioCSpFvhroVIq3Fz
eHu/u8wDcE1GrNAtu9NhC2ScKjRvNIg8AU8nbMrIMclIh7YnMcUbextyzvYxxUiowfPJyKr0kJDI
1FVJMorLVzB3c9exRODXw8eN//4R7A5Xrqm8KKQykBqDyLUCNNjBTkbGcmQoyoSrnoT7+/b+CsRy
InlHG2usdyDjjMx9wbBaaxOCSFZv6evFJsjzAyOhz59LcR4DML7yA5QKIrN8gLITJn90UbPzwfed
ySWiab8KcK1NrjVt4ettIgkCKS9yIrG14wC11Y05WXSccQPM4uH/z9qfNTmSHGmi6C9Cie/LI5uc
nuE95LBvk3PmzBWhUDwAjwhUIgAQDmRGlMj892u6mJuawUzNk2ceujorWa6wRU13/bT3ta/mvigs
UncJ/9maQYbC/nK7pXJ7lYg9Ib/20jNNWraKEm78FSXjA7izUZEQg28bFGlVrFxVV27yEgXNXtla
75tbOaGlmY+NLyKSNoJiHwgzo5OiLhKoUkJCVeWTqUM3gej8gV+qQqkf/FfePAubrI8VGIT108ts
lWcpnnWxch5La3MOmN5VpLa4kpKyE3pwRbnetvHdnzohIUZFQNSe+xYX/sa+Vpi/avxQ1hbzWrnf
sktYDyE5vCzlHZVFIl4SExG9IiI6PxzWxTxcZR1Dm/BwQzmuOLoiDAUBvq5O6GiFRDf41nUV24ai
DwWn1GMqsGi2oTyd3o+C6TfSKjfSeMKEC1n3p8sy747n3eP6dpsO83meD5qZ2ncbHHQSSwflWNuE
GyaPNVHWRec6JASscJAV8ezHvVysVth+/5hejJOiuCeNHzsrnnwHkkfmXv7hxR0UFyKIW9SK3aHw
XB2cTdL7LxTxNCQkXNoqHHcsxjcF3AOmHlP6SLN8a/+4EkpW7FpxJ6rWV1C6ANWyJp1v1o9xC3iX
0Xm2dDwZ/Y5qCGVd0k+oU/6lEYbKgXeBQdunz0jf21j6YRhGj8X6E+V5tIkMS8RhUqx7oSp98y6M
vCgvrBDmCGrvLv8+lLtpfU7mGk9jHXFniGKWlUWQE6uTkdiM2z80CRMxEBuKqhKJVf8RBdpO4TGh
XyAC2TQZS2+gysB/mMNaFJuviDk+5hs9BlUWzgDHKdU2z56SC4qFVvR+wKBIvD/leLsxcUMxS6BW
LIFal3WRNLEiOYuU1nq2CDSrvPfW5KSd1KhGhV4+rnqEV2ab+5RpodyTCDPHNBNaFsrnwu4F/5a7
2uVTxujw6+nyQ2G7wte+TYJXFP9Cxqc8cS+PQbnVwf++FhL6H0agGEY5ftdkdaez2LNuVsRjFeid
2hZzQuU5NiDaUeDKkbq3g5imW7Spor/GmDurbU8rRxn8kFeTsBjsEnfT8nXeKya6H3hvnizTf7w8
XqCLEcqM9tMVCmKVm2wSQeXn5634UdLea6UDnxY5miz1cx5N9I2PCnOLAB+2FLAtAbz0jw281CW8
l7jK3ZL2DEzZ8cmcoBMW5kSzO1/u/8hkFUZRlQLq1PmfMpyq5Yr72NN7NgoUEjKIVSjxFi1mM3R+
qLBXPCOFb+o+ZnbGyWhlSK2fmWqU6J7y7BtfhnQZS6ffWFow+qUFG1hJEb3C5EfGVFNKg2JypKwf
yYdKaqv0q0xYpgHM4Gye7M/Is2Lws1tj3nJXwlTCbPEfbuIS691jwQ7y2/Ht/b6bfkxKDVYjamMG
6akIWa4YQnVMg6siV1FSRb0hnpeuGDEyd4xxgLTu+DbNP1QvUCTwiufIj5pyE2Fk3MRzTYZWVOGH
Ajsl6aEwclclkh4Jhuk2vvpBtbfi9TiKPgrk7aBlSbW0Q+lHC1M+pRbFrf0TexLavgemZL+2pgaV
tYg0SuVJ/n/8mF+oJUqr+Rh8w6zMi56y2FTH4NcedG02kzYomTRfQDZF4s6UEEsVJHGHDca28vLK
VMYmZ1itFfer1Gk1/dUp+qv1tQY9WwwRQ/D8eD7ej9NpcxC9TTDCUxXSdLtNucoKI5rK2OpUxlKY
qUk4wNH3pqkM/7HURUomKXKo9y0tpeZLYUdR3Y1GbDIgrtCQpeexaKw0HbU0deHXwpd6RlcrQAmO
JpXcUnSRlM4uoGq4LZuQLYQ9B/nUdlRMYM2zLxN1sFFe04JQrV+yUeUSxEruI6gsqvrnEI5Z12I0
IPbD3rSkuail8nMU8ftWrnv0GYdxOMTuNkQze9Vv9S5NS5UUvnEQFALgP/+70VdKPFbUwSPz5sND
ynLGhIsas1WUAw7M5XSXyjalVdd+5jjlOSvvM8hJscyB95l7nYNX1+iiLZbr9h9X5SRa/1E26qNU
LAlREgly73kZ4DMo0mEoE0XmT1WomvnoFx7XTd4fVnSjX0bTtFuYROGRVBl/jHUVTdvrMWs9UiyC
aWgiJeMzisiU/Qj1tiJCxVBv/crfLmWoD8qCKj+NlNyUcjBjkbBf0ptSXCFZdtRITRC7a0WudEHb
Txl7VMqjHFKRebcrKAnRKm+LLIWIG1MWRTGflZL4sRN0Ie5U9ynXQ3nt7dbOOcXWa3y5lWQehXeG
QEc2Xr3bx/QJE3IUTd3m+nv+r/lLK7cbEt9LJlH8iRTnywM46u1yUp9GOoQiPqki4JrgWtusvaBV
VfaJEre4Taa8hL5L5Bqf3RMtrZsq9Ai4XhF3MkM2xEvr4VErb7rMMZzWwzf6vz4mNqBUVIo7Ufq+
QNVrrYjdz3iuit3iZyziUStXopT3lvpWTxdGQrGKq9NsOSrh6miese82xXW/nvI24lJk49rU9ePd
af514M62eTNNU5LthpoEI8EV5V9uiDyAAaE87LD3uN8QBlOEYNlv2BSEMZQl1XWiNVLR3UpQX0az
x1SrkOiOVYSg4+oOcTYiLosmiQNLOtrtrrBf0W1o5zFnq0ifqkgog6TCU/bTVE93TcCNRtQQQlN1
+AWDgi/zb8f5ZiTR9/lvl1/MFR73yYFwNhyByDQNogrSYzXEoLLmshgH5pfHeQ8lKjP+gHFozr8c
5sUwKsJP7Kb75Zr6gXIoxDDDdrVOK0fq+DG9wU8c5tfjOREjhaWWo5tdRzl61otoOBliiEY0L7+k
p0zgqK3CjS0k/MFwQfvbZVnoXNOLGQZxboV3brghsBV+YZi+zKy7TjRdrcfUWGqvx9Ppr7ij63Qz
Ctvwzg3alG/zh7mTQ/rgxSxgUfQRobgqq+W069L0BnH8rgOU6QF03S/orrxebh9pIrWYlFlKIo7Z
kIpZGWySWqp1DuuH0j+62tLE4Qy/LBOwLqlQwIX8n8dDInKOM0zENkW23FBbd0egK7cLUtdD1h2O
U6gTFPG1cqIgzWmVe0AlRBvKoUgsyZ3/8m3+oTylunFHhqZN6S1pud8u3+BJTq+vZnPamxSzRQkX
0O3u+fSD5SavYAxERpF8WSnI8E64PPRE4bHHNnm9Pc74qL7Pyi7FFSDeqZNimpBk7r087op4FO/e
ARiR9PkH1TZ+Lu/TdV7+cVyuADD4xzN6jIzhFL9eIeLgUlYRhxME9tP1FyMplZOrOu+p2yA8c6r5
r82x200meawL2P5Jzl4hWm6oXY15Yc7xcjukB5dWQo2UFeqpIS785/vv7L/9Mn9e0+sTg9hRD9T+
s1z+gw77P+DfzN2Ct6Q8BDFlmBRVVYT75Z0+zkZiXN7OR40eDx5cXyjjp3oMtz8dr1t4rBdrQ5Ok
eaa1XEADMLHjOU2rF8K2Wx0XQ+twm378EVX5b/PtoqvPchBT31EAFboe2Gxu9HJerrM/PcJkcNiD
+57IjyA1MZNaBL4tj+AFkH2VnhZeihdOZktdeFSm2/4XfOEKEVvojcq8ksr8Wcq+nS4v0+l3p+v7
lGYveUyVtMogWw2ZZith4dimW1I2rsUBuLJmdYuSN7m/XL+U22s1VQknNZ3fjOGSnr9ciKnUKLsU
fWT+Zv9NsQR8Q5Hd6pgayhuvtlzNynlPGr6jCfXLD+OZQJXp8oByLkO2VowCocAh+lp2oyfjfzXC
yzgC3+e0YVGIWfMCpyljIFbpNx3wFBeEeedFrmSVM3rWYvNVZHWb7ERVCg61L7k2bbdUttv6jFbq
Zufvp6vyHIeYFSB0B0mZ8wVBPj/vil/ShgbZJru/UfY5JM4NGe0DEly/aPGuTgTQcVn4rJ7Vxnl+
MwL++6zAKJHqKH2/pnkSXZiEv15OcA2gjNBGwCeW5Ld68N5CUyjGwPlyfgUGVgzGugi86i7uqtJF
wCxDhFdOGyvyPYxrKAHeA0TR0PvKLqvsyypm12WsWFViD4W4jUJyh3v0EFVDVZkWjrUvORTuMP6W
whpFQquFrJ952m2RMHLcOYFHT27MFnuu7KU17Ak0ZDB4StlYTSmYtKxx7IJTbjhu+Rc2u6RoTBsV
VS3dmtB5A++I+IpPXvHXBt+S7p+PnQUEY+SnYxa18HWlWegYQeOkchBms0CVtceMwCogEX7p0qfc
dcEptxEbt55uyjaKzrfW6oQrsE8V+HRu5jfbyLia9knUwf83enQPM9H2XyeIbabfxyhsI5EosKcT
uOfYm67cltE1YoGEOTzmdM3t7WVXpw9OhPj8UE7sAe9P08dVM0jkdj1fwMkmKA6HSdxKFKHwWbKJ
u7GXG9wHn1wmdijfC1ZxFZt0dKvo6NGXLkMgF8jl2SgWWvEIMQ/EysvaHp7Ae5kOy+P1NTEZBXVX
W/pap3t2oraEmgrhMkJ5s2G/NQ4Gy/qYpwX6PH5gfA9rpJWYnFtTi+1nDPsVCScoEYQyoZQV7p80
vSNCEqi/mrRJmSz/JddFRNAaz1zIute6QywZrZLeVSiR5n8+NPu+cwsUJXopDkvWuhN/uReK4z1U
IfkyL8eD4s62fjyuiiiQjJaWzwdnfPVNakUuYJuWYjaRRfpI+hmajFWYbEj5GtaGWFmkVkwHGb8p
XC7mSbiqh7X2XT4H4XgxHKWFkKUSHJQqu/KTWOuRg4k13bYdeSPotavMRz1xvV3uF1VjNMLK9oMY
vkmcScxJKpU0qmJBf3R1dIJ1U3k6win/kI+W72+KVh2F6BTFvu7KJow8KbdV9h6BptW8ENJcetRI
yuFK5gsiztt8eFP8tkpa2JjVKzXT//349n6Ctj3F7k85vjIJgeiwSnyg7MS6OhoElw6uZJ6cEOGi
FSdYESSQlHxIHx4T8fjrdDq9QEwN+1WuJ01oOzmL/vFzSHQ+vaIjv4DM1UKjfcL7cBJ7Ph8Uhizb
Lr4dsRzjnM1nMC+Wxwv+XZpcMQQ5zmKTWaBYdyJHjwQ1t3Zis1gxsrvG807qLi6fjKdtLCg4P+Xw
y8E3NNxzIRv4Nr+aZ3xW4jl90fn6LRLa0IydshfRA58BrEIDC1ORR7UMmYFhGQRn6fr3lxOrkFq5
+jZhh4c3BTo657/YDtvVXRviF6WagkVVJdJwYULk86IlQnpfGw16VjwfIqurxo+uD/FQhq7Uqlr6
yMJXeQ5AQVGHwsdB4qFTLm7aYbZMeWJj6SdF6jEez80WmdS+o1iOzwkRkG1p2Vj6T6NKXNuyn06b
bq0OAjT1dsdCzSr6JoHz1KMxXUpWpmO5nW9fZGpMUIFrPs8QpG5SqdgsIXl4tczpxjLin79cHnfN
V6kqWclEmcWsb/Ce6kXs3HDwiDSPpzT+P5ejUsUh7Ax8DuEDX6920lOVTRsY980G475UjPvWZ+Eu
tF+F949/83sYRptNcVRVGxaJFCm/j29WESAi3+sXqelJDrbe0nuv/JRfl7VzFN0/dFpcxze7qSZR
Mby7wJ90ItN4kTYuMH8el/uiuCbtT4QPtcBhUORQPOdWM/UgdljGcyQ7UhZltvZvk7F3gXg6yF4m
rEo87X8+pgM4JXtb9rnVWi2b0TPE+whHbKzbKmRFTY+cW6dewPGcewB+IF8YHMAIr4YhrLcKfG88
sj2EXxXfri7HhIr3dbLq25eS54vRi3ukRC4ErzRmG5oE00aeESj89Bty6gUnoxajZn2eHx+K5Tn4
axq1h6R4Lm2wt/bZtte91b4ILIMhV8+jlQDI4N4o46vpyMP2yiNZtRimnvz6r1yxSFU2fvypjsam
jW914iLI4+GEaa10/nj0wxDlJq5VbnbwHYL6SW78cv9xuR7nX5q0vJBhhFJGbhW/VilQ7oLsFu1x
AWjCo/FkXXk3hEmUusU+EbFZ65x1lh2kT6JkjM6XbaWPpRSrFGv1Ex84qvUX3Tqp5Ysu13loitXz
l9dXSH7kzZ4hWd7GpOcz4Fv9cnl91bJOskIkVibn1esmJ2RQeKrZbIlRTuByv18UaSjjQ5h2j2/w
S9lcE3QLdIo9IM//fyk5nm5DebOeBislr9e+bZ0KBimBrzIwWlMSUF9UJSPfg1Qaa/Vysle1E0jl
z4VZMSmPZUHbhbwQe6Jvz7HChV4N/szx+6xcXxs2kHRl3q1RDKamT+QLEopS36dIYlV+dMYVhqDG
KRWRE9BQ4/yutG1rzGAM8lh1otSjUdi/iZdppQQFlukqrmU7auWr6DJQEkJ/lbJMixLwZbbjgyPu
Ssq7HhNh0ueuCrVKZ52o9PzAREUgohlSsW66KLBJyIuMTspppDE4vnaMLHD+3KcxuToxNPK5fCTm
3x7fdNu8D2LM6ayAK23RKtS6RLuYiwuqPGZbzFGQlUGJEr+eDXWOguGpDLkf9ZgW2jqKFSCTAU2f
KL4aofgqY4QF9o7jrfVhqwe0gghZG7wcU/LUK55QvY8iFeSUEQ7zpM32tCBHl8h2ugOC3JkSAhuq
fLMh5O6X2TwVESlNl+0VvoE0uny5HrKpmlCWtPEyAi4KTmJkdAKP87lSWVYzZpm6GsdEFalv7r2c
HjfF4iuCOuwyVluplsVWY9AbltICRib+LVQEWgw/aHyK6GVOTGy3i8ohETETm82kckY/+MzKM14x
nanuknHsSunhdLUTG1IfsjZ1eMozU6SM+niMSX9TuuvGJunpRNMyG240VWSQtHj1ggrhWvj1zzGn
IFsfbOerrAw3qsm1bFq09Pt9K3V1alikqPw2k1g7smynwh/IND4a77OJ5UqjtW2P83F/OWhlEnUi
6vtc9qHtdAV5eu4/cpE4tbK6LwJzO1Ho/+CZVopdJTO/ffCQkvERpcFuDKx4UU4bv0aSbvl7DLoJ
0tmEFFAsKccxJcWDSHamfqv0awu05JxbYDo75w6tcbPfcg1Wmj82BG57p6zvkrYmzNLamPRWG33z
HTSNqOP2c5vObNqAXyDseIGK5GWG9OCE7BMuZOETEjjMrxP858r3VaJxVihatlPSjnm0Z0c94PdZ
KfAeOy+FVD23NnK2LFM5K3uek5gaYA2iilBk3eBX4dQbsuKKtSxysWgtD8/167Z1U5FSogEU3aay
z/bw/t4+xb+4isPko4lGrZ9TBipoiLlK/5VUQzoGq6Yry74OIovtljI4rQ9x9GtZLMxhCErwrkT2
q4QISCMSaK5qmez4DwpDtpfX16miX5//CdV3fzkpbuLoC4oAAwIlFQVC0qKmTbesiYQpecHpjOlT
jG3MwA9kOhBq/xLrDUkjJfsq+vLEsHO1Vl8Jwib71wPfXFlQ5YM1xAAMIt6ZfmZVIPA3lCU2SnI4
1WPHemdDFY6RV0Icwp8N2Vz079/A4c7no6qgVLp/rpkDUxmu9aEoWgl31Mj3kwJkygSkmjbhtUQr
er4DXtRe66Cp1QSsjwG2IZIn8VWeI3kynt4q8fQ2LKQeNjS2TWp1RKXV9vsgPpfbWasxEtAl3NhZ
JmKLJIjMa1MaTf0u9DpZ3bax6U5C9qBhmK7lc49UkURFk3BeNJdIUUxjzKf1le/h+IrF3krHXFf4
hQ2++UydexkkgbbyjM1STdi83hRPoxzbIREJi2GFAKdlnKohVWIUNJwez0rgeUxlUSPN8GZxCos6
QjiVoUiAqXTKYQ8xnLB4TA6mH5hrfPv1cf6mFKJEcz4hxTet7bILHGo9epbxqqugc7bf4Csozr6w
ThANp0qcudJD0AY2RLupfUQRoWMqYRBGbrI9uIUoMUMBWCR0hOIHyZL0xq/YF4FUpKKUGox9WC+q
seZlf1cQ9upkU6t7cT+MIHnTSgON4ZbyOjeVHaiRlSFa2KT567lgSJ2QMWuNkxpNHOogGNj/XCGd
mtavPdJNFJoQn7ZSMtWHHV1NEdE0edSalDyPt0/kAuG1cO+8XJdfPGLpaMUjYcNrt8FaUAoXJEhr
raGmbc8ISVwwNxgj/j4/jmfFFK97P5cb62Z/8rP1xcnkbiHlWLyd6cdNac6spcfWy37WoOzp/Egj
EFVVWevFEBsal41XVQblydH4IBl+mbaLMfBDtaZa0rHKe5S9EYF38eTWbooCVD7CSqxAmV+3LrRl
rsYp2xV+83S5LdP5gIjCC6A9018Z3tLxN/3SvErzzVB2aLAXdRKgWUIHba/3L5IwGvEifSUTJ+qn
4EKctRP1aTP9TOuApFXPVRtsMaXPVT6GRja/pTz4TObKcEsqeB9SFE6fJnalOdU/lXDavtPjeQ/H
pnXilAmYyrUL14iQ80nJ+MqYTh/Fg1T6jf6mINKVYxNtKvNdx2zmxVj9rR/g7pLla7ndrtjugdHv
L2lRMUck53vQL1E3VNNFozCI/fxgmOIt1d6UchRqEqsK0mln0ERZ1J4q4Ri5hLFqI/al/1iqEGfE
aseMHuokHjdChIx5Y3NLM4isrvECyVtY/j+VAnTD8gr0sdccobxpWcPSR1tiPSmtSJmujhXWROLv
2QZW6Xn322PT2i1URa5Oj7eZs67XyeTrhVbeqwbNrRRs1W2fSF8HRqZeOVMNCTwbrWRrS991lwjn
eaArrRIWL8L4YhEpioU/qggpRVMliuOSXu6mt1j4cFDNppiHliwcfJDQLnpeSjy27BI1zk9oOV/L
fVaaR2Q+YtRRcXXxPgQqekgqwPOkFCAUqXbDIAYOL1gttxzK4On2UQ/veNAiL4WfpMx6BVrkQNQV
CWCruMfJDaNKnLKMbc43zfLvtpAR4SZ5Rj5ovWIEjXVCKYeKRQmd9UEiathixGp4UI2WoaFK8vmH
9UzSpeRD6CIWua5HtG3US+wThYdqijGXYJQO2eAFMEOFuj1DKwCeQNQ3Y6rfplbKelpPg42NVjxg
BKiSgqiz3aJUlK3hcAxN0AfZBl7w25GiB+kg71Nr4ZjC31ccXtlS0BWew5uSMpngUa3Xh+OyNOy8
LiyNGVPo+6zudNtlndX3XHagd1ptmk9SJGaxREIZm2MQsnQGQsm27XDFDzubh6OVKcn4Z/80uwPk
IFfSKWmWMQGN41gr06YlW9MJ8DvWCDXtH5qCqFPIrc7NonCdu8q0x1VoW7KFD6puGP38Tp2qVeXJ
NEq1qu9iPxlg/OAyzp/EUUdGacdNjesa/KVf8NOUz3VRt8tDA1WSlRdFMoVJqzrMeyN9NQuoUrCz
N+K6DwJsJAr/S6fcKNZu2DLXPfMOJTkU5um6BGZNvDf2/1HSG31QHDSMW0F69GFalaw9l730qTYT
5eLqRBb6KU+lJEP7sLW/LlSlffmhVfw1MZyqcGc5wVh3Q8Jhoe5c4yX8xICwuvRjuk2jw9ZkKoSb
AFqx3mJ56dq8axMVr2676MZ+TJ80OS6f5gsaVJpOa/VUignaNmForG8y33vTeSnHstjQ4KLk9Nxl
QlS3GZ868xdzozdlOZWvYMohERSUVVMa8K/syRqx3DT+fvQ2IFn81j25VdEMi/KoZaM12XeROrMN
Ur2qEo5aiGwI0QNt9FDj50F8NoKC8A0PT9x8u7aLqH7sj3ezu1wdQptoiQ0mYynznnofVM/dnUj0
U44taxFGKz5j8Ywlx1G1V2sYn2/2lLLWYhu13ztceR22dw0DsilTAwz8iW25sTt1kbAxkvlg5Yl4
anjw6jOemyoUR0KOyKAq4i0IiNogBYFL38exIx38c8alr3wWqH92rq7CD0MIDVsmzDUNN7lNwFq6
uE1u6GHbhGU2VaaXLyNmZOCBplepI3yU5K9IX4GZ35Y/Dz6SgfvqE+Nww1CcUuoXTkwbtDoBFIRp
Z7RJYli7d656W+VQ1onJAE9xEhUrWPbINVKoJybwHearOstiSBTix4sMCEpdiVcKZwmbIWIYmHm7
ahgSYXTh+l9e7o9Fy6UE0dxxS/+QOuizTBzV0wVmU31VpbFmUJqggaFX2txDX21saLEx1lUbWFdd
8eQy6w2QRpd1ftPPELEZ1sVoplVbJgaXkUGsY04nu/af3wny05+O5v8p7ySYi5esZAYKSuos9P9W
rvx+OR5u8/2hDf1tWr2KLWbfK1k4qUOxWKmv0of0crx/qEMWq2RL4hOEg4qqLbXUUyvnGq7fUNMi
/Y5SqyfygluK1pPTH9v4pN+gyk7NzafgdFUIHH2gbpkRK3z+GmpklYVEALdIjywWpQrxS/L7x/H+
riBcF0204CBhqygvToI8eHA8UQ2XgwMxGq5KgNRFMXWyZXnS0qklTGe0ayqTM65iEOiZfKiK9TJu
xyyXIGJK9DFMtIdwj1lcdpla6ApPPsiAwtkYnDjRXXG7y1DSpCDlNhCTcQBspi59KIoXi0GdgRIt
i0RIT3G5tLHBqQogb3YduTPpIy9DkPgyiUKwZdicLP/Agx82ta8rwbwxgA/aEEHJJg/GauO4EdEL
rQEdJBE8vGFcmCPRgnJD0rnXzk4bgFMl1JrL2WQ6OWTDSqXN5HHoe5rAHr3qz/T+sEzp/PhQ4Yya
REJqNWf1kad1lWhi1PwjRXm0fiVCFUGpe5yP/3woGqMaEjAGCuCTUsAoBA6OU40g6GSzGmWTmHzg
8qx5+Je+bBP2vl8YsQ00L6ika9OFYfnax6HKYrrF5qWrtloITF/lJVamkWfcCswi5JUiFrouFj1O
pPI+lQ6ecJR7narHeFwPCnZ4OYaWXPkc1XQzzdKxnCHpX8TCkEqzbNl3RQJ2QFZnZYIdpczHthow
z5Ye0iLl9qYhd7UWlEJDAcYcWb5KT+IAFxLgO1ITqaICSDRLb8JPvK8MN3pWHkzVJoKMylgqTdX0
iVYDxwz+2L10F28RRn7HSA9FdSAjPF3Hk4rtxQZSZ3EQSykF0aGO5V3i5clq/20ACDqkxIMeHTHi
odJmuFi3IA/W0VRBT1ifKBs4zec3ZXTeKHfWxUHRzhet+9Ecee05m42u6zN1t4ZFA3CZOpas3HJE
QatWsn3ifnns3zVIn8oXV36gwFhC2kScJkDlahLFBZsqKfz5Im2f6L1X0mVP4bRgnlxmipCS0GuG
hFB/NmZORpJqlkzp+/NNcjyxEjcUJVrhvIUgtr7h+ddtvhScolZ7ODYl5SYhzIJ5fkF8NIOVK0EU
EKgoVtixZXRuE8wzaNUOd/XqqlqkiEctmgneXlYQFGNiAkH81DWsiCo89Q3t3vkqnxAKstg8USVX
o9Zvq4T3LG+1HKEpgl68RmuNOGkm/FAlenSdxng9XaZ7rpyg7BMuvWLZaC5it30EdC5+V8rETK0N
N79Bv7ASOG23YN3QNjdUy9RDu8Uh47akDKkM2gDKRk3ANrmpP0cHqZqv4/IKCfySqSg2Y3405lM6
PAKTnwG9GsomkQ+P8uh8eVX4s9o2P5fqPNMyJxUziJfz6fzZCxsJlGSjY+/ngxBjVMro4G9aNktO
hW0j7TsyHqklEaWoKVMNIMIY0As/ZP3AEGstjJcm57qKQkSXNlOqiXZj+mqrWCuAPkFOkRZDbiJT
bhxmFXRiNSm4vIzh04TzF8tImYs6LnyomsSUiMSUVi34MCRqh8OurUrJAfv5q77UB4X+Doe9pVFb
iggGQKY+WrN9O3/OTByNSXeCSq+pBIu6YvN4clBMbdy2zLYhKU5LITFIB6/NQE3AK5mBwW9MioE5
QHL643I4vh7VB1P6IckqLvtyfsIT+O6QdKcU9SyyJ4ycqQYkM8H4svcSpNKjijrnygPsy0QfmIvq
Z9VWX5YJNZ+oYczaj2MfN45UA34TfGITdG+zYepH3dZDTLd4lIlOnXi2QK32E0Zp7UGHqa37itaX
p9esd2pTT/tpMZs8UwuRUoc0JIqe4xo/g8qdAv33vXWQ9LpJWZWyI7kqvTx1ZKqEckpig9EiBTK/
M+LBq3hPxRFtbFNviiuCprg2up7cqPenwomkQF6+v6nISkWiuFkHd0kjupSxibyxcdQqHISx4It0
xDs5/EQph5SzFwqsmlZ3qlcAjyKCg7Zt6tmoEiGZa4/HGHMAaG2pYFWmigk0ROkA7VOZU6KP55Kd
JxRkHNXomd4xUjc/Mbs+B/88tEMiiqpkWrWa0KAooEhjVOkw6GPfJTp+ngSOOuTDCJxgMlKjOIdK
M343hoU+Q2Y8ge4d9sFcxWpTvbMSs5eRFtIY47ORkyl47ssmofCTBStarK1OFGyFB6aHnrsmViSi
2kg51JamKBOtBzJorFaSFWPhJ47qXD3hv6lzAIftA7xUDVuOQx2rpNfPSwvlNkWVuMcIq2agEGRb
5+BPc3Dld7afazpohXfhWOS29J1q4tZsvU/hO2IeyHRi1osiJYqwLymDO/8yvx+1u2ybBMCKbp7A
MWbAFoMZo/GoLOT21WlC7VMiXTQcnjVkxEZ4U4MsFlbdgV7JA5WJEX1x0GQNVaAN3LLY5ECrxjJZ
GqPIer1sNTW+JJf8KZNzQ5Ozn7cMryz8ZsRSDy5mPfgmVcQTz6jppk84sL2LtOPonkwR5p/LSNWi
uYabgu46Vn2iuM+vjs6LnjGRL37yFeBNs06jNopcEePgF0KqYBEZU38sE2ZwBJdOnVchJzoMmbmt
+myI8EmNieYQDcAmGDAybBesOqSnxOlJwEN60KNaULVtsoCcz53BebpDkYpsWxoYdvzivJc2UbMM
UVJyPpzenCrVyfDU9YOlK9BwpayobZO9W0mxeDyY+z5qvSO1j5gbwd7JBQ+Huk4PzHuyM75yARlZ
+Rm0MUQdN62Yv9Ae020DoFwp0TUw7Nsp4wBzveLyZTYiI2tskccNbskeGIfQ7scPMBbTMcwuERbw
wa40hN0hAT6pjXBSouRSBwWT7sJCQewMzaSfx2aMxVHiglVXsDIr4RVbxJk0m12XkBLAsvExA/ow
xqJI1KLGqoXU3HoR1DDVqqmfe4EigdaC+ZVJsWdmiBhLqY0lcvyIvRpnqtsx2yYegzLQve8xSOxt
qb9RZgKWQSFpm5h7pDzHtk5EkNXRcRrSm4+K6HQYHs+EidS8MdcnDt+tKmcsD/WYDogKBr3cQESQ
FssM1ZQzwjAopOMwb7ZMRDMljq8qU2iEunHZF/58lVLVip/ZN9mGKIBDfkqnEsDqU/22oS2XRUmQ
Bd1jYHGt1cr5unUxIgHlc5VWs/CU0gp7TE44jMR0bDwmHXrs40VUcRWkjojuu8Qz8j0X48leb7M5
MMVvKRK9GlEjVwmsyrLQwm8WCISW4m8IU96rt0jUkmgo/X1i2u5aY5NrcSwSb85H3NxozNS1jr0b
WN0ZXJ8hjT7/NJcoC3RaVQH2Tnoul0TZX77NP7T6epnlHdXhBrpmLQM6LlUIwbPDfJrVQE3jB2oq
F3cz0vKkoqmJwPzwVCPz5LNtaKJofcyv+rk1VS+1qtsERqYGIKHpp8Yf/RgzhVwZyqZSASPDBx+E
o82Np9YgM/oqo+pZFRvZqUneIYQQbMZNcdROsZILrffLAvqcQNpMN3XYUJ0oZY0Xj2wGL+qHWJWF
mt/IzHWUVtIQdREpbqEhdJU+IHKkM7CFzsB0TKZPxweCvMjyeDEHt9cAcUoJ1BuLzNgGqQ2A+6Fj
0uYSXVTHms50+SDETwlZMhmVJEs55IYbGJGlJ6KKrk5gZm5CQldN49GfONfFK/uyg0Krokod/FOU
gOeSpdNIhf9kqiQ4yA+0ItJsVcf7pVZA9swUXZnP6mR5jJ+MBytGK9RukwUVWq1Hr9SSNYmQvpMA
Xr+rhm49JNg7WrOoeR9BBZBempSD/q99J7cu9dAOJjqVKygStbr2oeDzy2ivWpZx9ZnEclZMSXgL
VIvFkBZUj/Nhvr2e0qUQxnasE7PyAqNfQaCS0wc6mWwKEzy5AbN16Xc4pITK4XjbEJYrwvbuWMtL
dorAIFup6rgIjQz50kRnOSbyHU4HZmBJjISSnbSlivTqJt62ijmUwu4Kh1Br7ZxdUl5FjSoNJrGJ
zfdSjR89lzb2sV6xiFWrlvL1TaIJM5qNUIruuqAwJ4IhRpbx8UyjJXLAX4ZPB39m2LYpPJoF2vkj
4Jqw1GA+Ty9mx59KCqDWIQbj9p42OFfmMysHgLjFl2wKH8mxLjfVomnI5nWA7NQW8SO6vL6qmZIq
HMlj6GBYvBzO+MXL8XBc/7A7LqgMd0URd3B69OPwNbLBjRkhOqqAQqNQaEIKtaNwhqjCyRCo0wR6
t4QSm+1L2+HtLQKE3c1IckOsTRPrxH6wNIHl+cvpsv/maGzZ2VBJWjgLt4vsrFR25o7GMDaWIVbi
eOePl/mgHy49DT5cWA6bmN73yvWSu2L9Kbwh9/3jbESj+X5MH0EpLhdDZXWl3kyv3MwQ3AzryOTN
VMrNiGXhY2fbmWhdT2C9GatCPZuBjEDeG+rtNsb6Cue2dcj65dPtlAp/kCfC35PScN/fQSao/DUU
4nZxN3IH4lYUBhndEsoKhW/VjTEi2j5Gtw7D4ajYm1rlE+VQO8lyVXpTyqsZHKvhDIC+KSMPVyFA
NTV8KgiRXw3PV6twKJd60S6wqKBrn79XjrSRrIFsFpM9g3IGpZA9lO2Sb9e+feWRFb14ZDiWtdQf
rMKpVa28tXU7ynn2gsVqxHeou9iljsqJVOJSoYy3rKQ0llJDYc9RiDEMOzN2T/JUauVUxPvFcr66
0F5NqZ1PLTaHZnXVFs/nUxbK+QgSVIpRtmNMImoSrQz0FScdfQqaLOkEBXwEUpJYmarsgtxofnhV
8PC2SaBBvH4q5LV5nJCIso9BMCyWhhmei56m8oZbwWv4Z6n9N2q5QgoSPNsm8mwUDdGLAyUTNKVr
NYU9hJqqfpZFrWKHiF1gYUATkWXKSyuGkKtUO0Zj0F6KkfJJjGwzhkYhnQlexxb/P92tYp0VQqqi
2uxjIlGxlvtBSFVKWEoRZA9WM0FSNrIvDlUa5RjSaAWNvLJlWBwmUAkC/ktTxGdbBXZyp0tiRQD1
7moHIDXopLRVdXXI9WWU0RQRMgpupdyHrXrxLBFFGjbiaFC4dkXi/Wv6X95QKQx2/4aUF9P2G16w
ejGdkCFVJxwQT0FqIl24cwUqyKIt44+2V15MGQr18vnFKV5pMQbbqCMuocIRTR9apnX8xWqeseAJ
NGKqPnadiuRp24Cr2ohCUE6xrBTfPPLKFLuwlxqyCjRkhJSiKztxtjVxapw/lJMZpb7FiNTwfDKD
cjJ16GePifeqWaZiETWFRp+ZTHmtTReeaaueqeKLddLJxS7yIaIdNPXSJfyYwMFVRMcoXn45kDEX
0ZOKGVaWiqm/zcQfRZysokWMz7axxlqNcK3xWLshzp4KexXVhoiQ+t7aMXgkCeNaOYpBhgyBP43D
0ke3otwqd34wkxaBDNqm2HigGYUa4EgN0Se+0NZQCu4mzKmYCae8tMFJrxHiHuNYRp6H8tTLYVPE
VBcXZagPhuiVKlwxSu+TQKqqlKGhaKa6CFcSEVzKMpohjLsMquBSFG0XCvI2cbCa31T8XPxVc6zl
wx3SxqQiPwa3ow58jw6YHVMQ+2XBL8z/32Hl7v5y2pX4V+u/fky3t+MZ9/v5fg9/AAVkxcYJBiJr
mu3M0nolQ3HR/Xw67d5nKDXGbScpciwQzWepDld62Cm5sz1LOrFRECOrpYgR218e58yymN1pWbVz
WVZKt4fZ5StkuiADpx4aa8iaHs0g4hU+NUiFo54q0rTYewFaDSRmmqHzKWFNS5JpiUjhiHgxh5XI
eV7urKySK+HgOLEClb9WRWRXh8udaCm7Yt6vsUIVMqlD7VOCFONuetwv+q3VhdjY4NIpK53lOp31
pQxl5uJ9FlKunY0SpCRlw9NVNdpVCT5kFytyxm+3ywXfhnbGneBCvK8yfGpv0xX1SPp8e3E4lXMT
/dUs75fb/X06H/TL6lvxWNGQDpZDZ3zGOoz7/DbfdHqVoEeOUxW5/Ol00vc4iGvD9F7TxfYIZQJm
XTYAk96lFEmVi0f75N6Ph8Oc4cxOyF5KMFtkK58W915nllUJ5hycJyQO//T4OC/6WZXyvbUuQRZT
BroWEIwlzSxfAKjHU4mDlqnYZ6Gm6bcxq9/gkSBkeIaSOBpyNcuYHNEliJRFXUQ3uktqlEsqg4MJ
Rcjx/D7fjhmGaaQgGiOvy62lU9YiqTQubfZ0KgrTjVVGrhINe0eaku/E+RITBXs6Ha/6FRWCBGnE
5LEoCymGQMqHvMsL0UgI6SejJEmDRaHVNULScPQ7LpudVaacUdWEgrmO6R2FQt2FDyGmBaGQOmM9
CZsFpTFkj5PSfdWqmhwVggtTY10Tv3+umtSplVKFDS5hEIpBTQuOoUgetNehSZ8+tITSitD4JrnH
NgiBKGOSPjmoDM7o+dY9lrIY8J9jEZci2tsvwrf/fHGn6bocz2+ZhyeOCU2aPrYve0Aac9aB8RpK
WHomCoW6CaVrbCn64QorsSKQpFAo0rVPHzPN4cm8D2kEjxE1SNQu9DS00+nC0ynj1nStWdNCdcjk
syNym6dv+kIKech1RIXFzFZFnVVSggDtLv3MVg9RO3EhAGTRUeiVPah8STM4HUOOQHUcov7dtLxn
/btSKJSCPZDYqemirciwwLOsVcRbKRgKy/CaIX+PmpaT9Cibn7IENHtiDJ9w0uRTfPNS8DlFzJ5O
+3yfjmcSbtohjRnDhCWKwt+tcFsQ0QpycxEi1pfS2EhIfuTOtezL9/FwVktGG3UZcwk1LWACnPcZ
kVkLuY3hmT54cBxY278fTxn934gNIuxj2ZRpJ1bbnmAAKsAMtgcBRWgpyaq31u0O8dbq8PJOx+W+
O97nj8zWZBAMW4TKso+LAO2RlYGB1EVCGNuM3FrY3JS36qPXpu9KqsuKzMqoLbLJ/BuF+UeZsCJx
+VvWNrShTx13iLfQaksZ7BtjwT4ZotNM+TJjnzoB1ytyqcl4o5a/dYHSumcywoGPdZm0SZ2XrIV6
pYPRUXlqlz4nLdRWhYpgiFmDGoO3YegwFLvz4bHP2ACtcAURAzAR5Q3PSOOlMRvHsrZcqdlyRSbc
JwM12jGNoRwILmxLFqOR8raJ+Eok26CJ53HnpoK0kJPaG7v5mnyKRWHKYQxdnVqxBjT3dMhEktga
0PiplQ8E/9mPSQ2nbaoO8kZ1IoB5vxjWzO6sz+zsKd6h2alPjlzsxWxgzU68FISgLZs6wuTbVtUI
wUslI8kwoBbWfIqOt3+3GUYWAjV+ea9L/ndu+MZG+91LjHRttaeRU6hp0Dpjp/7eVM0O4OGNAn3M
y+4lgQeBRFpBBPMv42CJVDsEk5jKX4rdlFwFQ8ASAcT0qQMC2IQJTwUppffDXXMt4mNDs2IRLuX1
cd4b/2L3cfw0IuE1TakTawI7rKgTJ5OojkMqjExO54sQF12KSq1QEWvBiM5Qx3Z13d+1Q+7Fhkrv
kMOlKFf9tJ+GiTSW5Yj/XhA5VrmpuhbLQc4b7XJK2BNtyTiBypZqsRoMUI9d7FzcQESNcwbHOSUO
MB4TxzMoF1X6m6qL1HOqlDNuxRk3Hs/QybzPn512Ku451oRzzXdUV7uLOYXj/WsHUNf72zyfdxZS
zNzYp1lZtdunCZficWFXeIqZR+WIKrc7WeMYYcNGodInzyik0ipUBkGl96Sf4MFN7FP34mwaIXi2
HHqpHXoRPts2tdNC2al4bRirGiqfCvReg3xNC8RWiFbwBGw3myHR7rBpO0+jd5spG1xHUQYLwaQL
4xMYRfvxuCun3lbBBQ7j01PZsKxGnDGWxnC52PMZ98oRF6ESa3wiZF+n320bCI+mbBKrUB5G24ci
sY2wtK4p6k7wMkJPtU+nWmvfi2c19lIKhkpi2n97w1kV2suqwpfVR3a0QaPXUq623mtnBvZ47zB/
P+7zLNgJ4wfD5X1Kb5SKzO/apCR6soAK3QKqwstLcZEiGNshpeareicguYzkUgwOaVuWMavlXznv
phH7QxU7BrdoN5iWQu6hlQP21g9Js1exylrxTGjaXx+zPnQTpmlDg3WMn3SlSY4iYmVSDeLH5bfj
6TThZ8v3N/z/a5iGUCyMmQYj0IrqAD/wvNkBB1ySI0OWEf6D9Bte4fK4vYJ63J8wGVz+Yn/Jp1KO
nN2kOXqFc7Lv6H4ePg9fZhmJr6uyd2vw+uWwAPZ43p2O52/pX7fjv/h7UcMgfz39Naexyy6IEwL+
+e7H8f6+u33uoP7qppLhVLEgw9GvaflmQzBN6uticFtocG4DZ/aWx3KdofarT/5wPYobBE7jSDCc
HjmP5g8A52EYLUIDi9d41MNA9ZTYcWyRal6PJ+Ck6Xo9wTTSJAUO3FPhUO2aIFaTaP/+OH9bKGKH
aiJNiyOJRCvM2wCtz52bibGk6XCRF05jqHEEYhHSOXzuoCZYWUvn1iIzW4ev8/RhLhWwnHaAwrNr
lMMpxUIw+E+Hc3yDKX5rPBuTGgoVsRSZ/l2OAIcDW5nO+3ejf4Fj9F1xJhlJyRr2J1Ifx8MB7Fmd
Wi/OSDx/prYet7fCNLnB7dOGtYZCW56ysnEl1QKHtnWfWdmmDQ9uww2sthndmyNA5uRDE3srMF5b
cLyWeeFwXK6n6UvhAnF1lHb3f3vr0Yy1ePIll1OrTHC7n5STHsSbrVy5BBPDZ7/C16UPthVX37Dv
HSzKLGNXKSSc8LBxPln/iM9eERliGyTGm6gYM+s4HF9fZ9ThfEw6zzTikVBpwiDv3eju+3E/nXaE
Op++fnnOIh56XebH4WLO+bbcd6cZkP20U+rGkAzPf59h3PtfHy9/JQS/9H0LGS17vIRsfb+c5sV7
Y/oJdaVYUx8R+/bsjzeaTragXrZM6n5HuYQmq1k20elaQSdMmcnd5/XLGK6oS6oG7UJruaLW7cx7
N8qrEdKgRtu57utNolKh6Vi1A6Omq9voISnHLI2K7mlTiOUIyHk7nhCbFnaFkCs9odWPCT1eK4fs
yNQNjhStf4JDVcasQ/E5JCj7QkehKI2oMm2QZTm06UJRUW4WiSrPNU8qo1t9D0Ccw1Saqi4qsbSn
tKU18JS3N8Q/f+YJ5eFVo7DtwAivhyfFR2ERJqs8mEY8Qg+hIjxr+Rq3s0QrmIw89zYm9LXd9oWw
QRtX6BFaH6qBNzrWHEcsZSo0MbyJZickOzGWZzes4IU7njeYvoRRiIqRajRKny+zzlAlhLH0aMOD
VkRNL5ShbOU7zETkdyflZVV9VjnnFELbh4+zcf5s9mE2CVVuX9bh8nE8T4Zl15mJ6b0M4n3h2Ov+
aSEaxzZFXMqsHGtVLKPRp7m2kaY7FUwXcXmhaJAq1CBx+5IuGSdUJG9IcrzIuMS95F21O77eYC5r
+gl14UkP27WbcgGtqsR9t1X3MdrQOC9TVpeyyyIwuLrQt8QmYc3D8IyJkkyKCA2FQindHAIwG7cq
VeWkx+CkeWsrq2/gqlF4YCVWmJa2hhoeXD4OlFiDOxpNuwgF9dRHkHAqlJuuAiHUPUnBLZqlFVxH
FUR1kn+VrQlThRpAPPcP4YjVi6n7rfacspUy7jxGuE5XDuINkV9bUeGKlYSEXdAl450sE6hsXPQ6
vpxACPByvtLx5lrEm0VRVyICnozaFjJwLXuhvh/nH/92+XSVpunA7yi2QjgjvqqjoxjSR+GWgKN9
ag4wQq08uDVgJ9BwhF1RpwPIXZwKh285AJ0+iM5FwUtMc5p/VuJKCJ0jfSGNOEfRj0Q/T3AJr/N/
nR7LcpzOMOc6LgZoaInIdcrGrdcZYcB3ZfLLUiRMMPi7fvkXnAGufSoy6d0oPqUD/DbfzvPpf5yP
9z9xo45C6qluikPp859nKFNL77ys4rU8r/O/4S2kf7MQSWa00Xv75b+fLpeDdtoi3UU16fbL31/O
3y+n7/OfJ2Otfu6o8kfZdyHKdjDA3DMPzn87ntRrE1lS+kftHZjypdx2Kbft8VqXXvMQnlvlnZuy
W7FoDIZxp8LKa8o1y2qr2vlhwapxHI564GO8vo4P3GZgNVYV28dgS9eul88Q+RrryDdTuX5N/n3l
AGTh24glDR6fKz9ZhT/ZyZ/kOlDll4VsQWsDKsqluIZZCrvb/HExgn+XlpdlHU/3Uc6RfMxd0Sa1
hkj4+aaayFmmv+6FuJWw0V51qKItSpkxrV2Ztq8t0t+zZYXaokYjsWb79YyTFN42KM5icIoTZ6ha
N5tGG/0blI8YSqCFwcvgYTWG4Etam4ttUeF47zvuvLEqrcdEFlfir6VS61M6tV4wfg6tRnjw8KUL
RyiWhTSSpHESPyC7yfR5yyT96LrrjQ99OJI7p2Soiz6u4cOzbdMUqjgF+/Iey7zCSpRTkkxbBS+H
OY9nZqimmrhdgrOmT9E3Up5bIW6SJjRXWzg1/X6kuSQBQ6zZ6TN8ej9VeKPN04kqV9qIygHS/NW6
iuvldl/BT95u0/Wd6N3U9Yhzkt28ksPSh1J04aGU3m4klTSXlX14x50QrJ9qIYowor0gvF2BzV/a
sNOiECsqZ1HXYFnUvX85ywe0ZRALcf5i97hqFGth4/f4j9EbwWb7/dM33robLzuMXHRcMLoWmnTp
QpMhLDTpnipc0tK+H4SD0ZUiqW/E4Gy84L/QSSj778TqsehnLVL5mG7GQN/Z56MtoxM0sMfQzke0
7w2vwpDYJw+iHOIVQykl8aIpiTEUiqOrPtLKjdqwZqrx7zHN5XUTlnyNT6807bkXic2jm8tnl/7t
Tmho6r7g6NCP433/ripDqX8KJ4PttZ2wZydtHJSlMDfKwpkb4etR7IvWMQ/GIsd+EC6yjdPt56R5
IQWMLLuRR5/m3aLJ17k1aZtRWKyyeohtPpZACag7en/i7WA9IkDVbTLZ9mlNWMVPhF+0GHivvupW
vGqGrI3Z4+kqukGcjowVeqo0LZoaIRvhczuvY32O6XuRUh2L1GpnJiJWAs0qJsRJa2zBHe2o7TFR
xVrVcc84IFFqJIq4rxWQqDQS0j8XeC4RnS4kprqvId4holNUt9mFld5DbJu1RuLJK203LEql2MdD
BMGiWo1EE48OBCQ6jYSMcWAfRul7y/gs0sZYK2wgqHCo2RjzVf7x422HvtD9ff6Y0/Knd7KiA/bu
WOf5Xq8iP8e4P0Xim1p40p6htE4b5xk6u1Jx9sUPy6lxJOQoiwb9Ete1pUiTdb3wvXFcUz1qUhjM
s7RPKFaG4r2T5kdaaFVDXBuvxi0HrNPbqPvQPPYpsAJQ/IVK2DEtjnjshCWCED+KH1l2jWLInKYv
81A1a7jtA+++Lp8UBoaRZgKtSL8RsQ4ycopI/kBRPdKkwmhzH3lja3jrZble0MpIP7NSKFMP23TV
ZmlWl9cKdmnNlQ80+fi/Wgcq5y6UVRW3dWyECphcdb/E9XbgE3YcbQDJOxtDbW+8t+k2T7vfLpcP
Y/jA2M90m0RTxz1b37yo08bXGOcW5lV8LDbZo5xKJ5ZREoq6kGCGaeFoTok85CBq8p4Wgk7cGpWa
9cCduBsqI/I9W2v3OS9ZEQPSS4bCgyF6z0riyh0JTi4YbFOblAJpr6BrQylQRXpP0hfb1mHIsXuy
ydNCpG/Dr1v/oQ1pf6iIe+M4zNvmatKOWCHW7eU9KGH3cyqpE759UxG0goyspY+vSGjVlCu911qZ
ilBkxFwApQ1piJsHoYNYKbHJXnpIpciihtEFxU9NBFq9i1VOtIlHnT21llbsbRfPa3jpkf37dE6l
5SgIV8WpcJH6/jQty6yJ77IqQwPjuZ0qLfyFuIXpnPBPTilKTzv9fdGGBlsZ0clp06SREnJ0PcPO
uDG7uN7mVRO9vFw+0xq5Eiwh52tGw8XpMxVVEzU8FttC6u8qbc030uAq0OraFNFUpL+IyUAZSN32
MTOSEUgVOmO4siby9JUeQPnmKifFceA4foF/gitb5tv3+XdGPO/v/wmOeeIxYYat7CQG2eAeo0Kt
Vqg1EeDeWA5GyeKUgbHpZUAUdSEV1fAsFqy1roTD6+CqOcDyfptfPaliPgStvaQft6PUQcah5xii
VVSkutjQVFYkCnfqjtyQSBJUsTBLKexlT4HHtq4GU+PAulDEttuN0gRbhGqjiyqetENUCtFPnY7S
F1REtfiOoPFq34hRdl2H7659VlZpG6gdQ+uBzaevj5fLSY0mD3FbwUrUfNXXU7KK8ygfR5Lh0/n4
YQHFIIx3u8YbRLFNnZGWmnJ9XkQtQqRME+kEEQFwj0Q+898zlgh+j8FybgXH75EJbp+3L41AFSyA
PWok8GUXUCW/ZxQR+r503OBvoEv//iC+F+l///fr9O+X4nvZFAvyyF0qgHNBpTc2hpS719vlY/fy
hdgb5v/S4ltOwZHDfleiZF86igByYv4vTVGigMvesSeK98vueAABopNr4gNJ3K6hl4XXZ0jm1zeG
CquPElyXh/9UTrCKg6jHT3ArVQl+J2VB8rIN4fxlJ6Dso2dp7nrL9Qwh5nuXX+fn7nxRVjmEczUK
/UDzV/6ElZtg8m177sf4rILwGDeeYBcHltRO8HzRT7AN4SWrLSSvyirlIA05yif5atQ9e2NP2sgb
fJIRuefSxmeMJcXYlospMzSD15Jnwz4E/81cCwjwT/1amjhGZub5qSTHUEjoAnebkCwic27Y9QVg
0vlGk+ou3417dr/N4Md/JpFhSzlzQFr+tsBvPs0fGQp1iAnLbouv19u0Xu8Vw8a3jhTjoAyNgyQR
ZSXSQqlcf8oaOKWvyN803sxJ7xwtw5YQsne875UWwaqKtwh635fK96KLQ+p73A0OW1wdS41KCkpk
vosyR41AHS6jjfFH2nruhOFbd6EWg1hTwiUms1mavYOLNC2XG+HnwB92y3263f86fZgLVWB0yjHs
u3S0BIlSIyEBKITGcyR+9wruqXKgZRuS6KMkFNYq+/BS4yQU7i67cBUsh27zdZ7oaI/no/Eq8N8T
GyIJ0sXtvuP5ML8CjXkLEYng3rF7s7LJT3U7EN80cW/B9zbSfNdXW75XvK1R8XZ8gZZ2eVrpMoUW
9Wf+e8a3E45rmVpE2u9rn+T7wIEH5DT7jZEnvXK9Q5xH6MNK+bCPOCnPF5FWCn0dX/7HZa3bAVJG
nv4Z/8aC0AHy6EGXBXXYbO9u54kcdFFPulyowq70Jk2OV/eikGsiTebPzJO+964JObiLvIC0Su/l
96HV+Dr/9Xq5/4kA3ZVX3EY0+nMCMB39kuXoUtjKekgloVvE09xcUQhR1XRJytCGFX3Rkkgl4tfE
c4g2qpspQi3qKkyTVEqyX6kmkTkr8XaTcdQqnT4Ta6rhzVi4gGh/Tzq4WzbxDlN7ts6ywSg+zrVJ
X3M5hpmX6jkftCVdLmKtNVx/bYFxXboZGA9tNi3f0cWjzcR2jFZyObwplaxNPJHgpd3nNN8P8U4d
ykOkE+bFGF+4TAsqTbKyybWtCLY6V+GvZDnFrYI2r/tI9FopHWhDrm/SWb00mTFRP2Q/3dDCXCaK
GIw3ezy/saWGOEsWnm7H/07j3ZP1lZy3GuKTVy1NmjB1Q1GdISVmTrqJCYKUbaM3L/xEYxxyBKsw
KFtG1naaX7NLE/MlOH3Se5SCk8tR6+OTs582Or0sl9Pjnt9oGR9gEy5v240Kg5z6D2u/LhTfoybH
RO4NDsu2q3viI92B0XVh3qh5qoNS6h5XPDDX5xc0YPGTqZRyEwkdIGcS+9WoioYp4u14JALTlery
O5kzy9TgK3nQOiy1qDcV9afLYMYnqyZWaNCnCw26eNmwq7VNyzJpFMn5uM6moUlWilUjBKqMysmS
LqXSr4q35vp7V5ry6nhVa9oWStt3tQB3hlRrzWuhZzJ/7k+PJYE5MgiYU9ENK7V0Oi8r24tlU1NY
p6B0GdVx+8Av6EhblELTczuHLHP8uqqlydK2kUidXORga3a0Gu1GomkMolPmqfz0caYCVK34tAxZ
uhQdIrugf67UKKkwHTv6z9VKP9Fog/W9Zc3mRni3Clj4U+69jryQ9BqaIsSOidfpaT3Esr6rdI2z
9DCg+DABwTsIiCSS3JUzQshdSouGKgE2s8KH0S0I0zO9A9GDWDdU9pSo400Lfq/nSSAK/TbfLvkK
/sqrtxRNzFZDZGu8vSpB4fZ5zSVpGdFK6Ta69uV0GbLSWitoQTyn7kONk/ZJpLajUto2VsS2oY5W
dthCeDEsh8NYhLWO0raV8IDBIbCsISMSaSbtqrhp5Vlmh/TnT20RhV8MlP5lWQwImtPXVmTU0RNJ
KyzZ4F87rz0UDWkXsZWlzDw0tki2oSu+YRe+rfrZN1SiSk8AH/XTWTBDpcVUAuRjS4Cgkx1LAigs
lPJKN38RPm6J8HUCZ0/rtqriomladq4mU4yZMd9j5jVaQ0vd7hRuR2NXRtqg+YwD1csJBpVUaRpU
gUE0pFUCNMgwy5KglC+TEH7dfjJu+rI73KYfBHJFD9VogPSO3Go84NnnY6kVIo1Yj4T1SKznRSE1
ivXQotbT8W0U5ZqoEoDX41XihkTmjxcIUCukqmBrLIqez0e5Lw7uP50PrIcBALXbLuK3LZjuY571
A2kdCaqu5AgxJaiokji/Espy8EoEIuzKur87H/6bWFGaVF+IK6I0Qpc410ZZTxs+JXfPRtKqJ1II
PhMN0+L3jcqdAU9AkwedWMDoHwgfZ6dcrHw2wmcWXyubH6uQLUI5krmDbuzTbBlcZ04k9UWdZtKg
URcBZFUhMDThsVbhwfTKttpwW0P4dat8XafFM3+tsdWY5khxKQqFsYv/Pg51zy6gL8TRkfHSRYWF
pqDkCjr//GKvXFuNEF2ytlocpqJWRinGhRkIvi73Uxjmevz22xf2X/7xrAwn5TIphgcUCM4+jb88
7tqE00KCGdhOZ/XJaIfz9IC7qCGgMcuQVnTv25bRDX16GfGXq5gTQx3hf2n4Hs/nPKCq6Nvi8FUf
SSmmzUbZEcAVFpHAT9oZk72pMjjgdc+l7V6JUSbnOvunOZ3383I3jgT5Q9y4osWDROKJgf05O+Ca
G1mhU4z1kIEyK0YZIq0cjjhAdP0Vcvd/Of+PZd4MJJZCIwRvBVHNf8xKJp1iS2PosvhBX+v/Xm+X
63zTHWEBL1CDK1J73am7tUBNbVMWrmiJqytLznlMp/t/PX1d37Uo1VDFt+MiAmlPVsZN2ZNT8uJK
Z414DBJf03sMW9w5GdH02telN5pOObSDHs/nGjvFG25Dbm1FIDkdxi0kmkDnTL0wxKP1nckkbelg
2NJgGWrIbAhzA+1T4vzlcVNC6rLvunKwPAEoZJonmi4ewnV8qUTFhzgOSRSBUYHBquO4gU+1Eer7
LKsiHgdOITQcz1pkWzxXNI4Bc5kmZRoe+zhBoBw+bqn4Gf+OCZ0QX4kwqvE/wapoznqv+Eu76+V4
ThlfWErUdPE6MHu6pfJpFa/lMx/yhGrtY1HDB6lUrsGZ//k43mZI89zn84LxKmXxrahslsCnMTLa
WkRRIrIHR41APii/Xo/eFuyoE05Ja78nqroRQpaU4Pn4z8dMhfLH1yPWqaZ3LgvDoTQnQaJWSFRh
FSUHdVAeQMXR8cXoef3kirAMmf3RJxbUiDyVY4om270xJ7+pDJyoaH1egnIWTR8SGcMlaBuo4w+B
OEj5sH4qZOU6PmijADPNFrJwd0qUUg+2PYehi34VS63kRjL5tO/79Xsuqhs2cDN92rmfljEJEFff
p9sRBuaswjX1oIjSsFIqK5xhCv9v5BqH5fhyPIEtpq1ldGshb7RngUoFbwzKBznRx5Xw/W/T3klS
+DeVfuWOqYah6GTgwVfXCZwVhCHRCNRugSuSd4SEdkqNW0NR8kB0VKaTUei0D/zjbvo8LuyWKSEl
4fRikGrgSmIweCfjLyzceSPJJbZIdTataJ0ZCEyCa+iNCbmfTgv3m1zu+UMbxDxUKkSsEQmTCKKW
IXKawhnE/BsiAjWIf18p7CrlszJiUeOX+9vxeqcfx5F+kICVG2qUI+rEEY2lQBR9vCyPa0JS8emK
KiaAHmrlh632oStow0RVyyojsnTt9ztRe4YXMwxpQpVGSNR2od8ylnIr2qet6IrowzNQWdP1hSHO
1yg/1C6sFZVt7WoiRPes/X4nKgHH1oGZ8Ao2UmlF0R56bXByPGL9BdKt9CL2twskEPkBT98vx8Pu
cHmAZHD/2+7H+0xGJjbFYavesjubt3l/hwYV2CHUlynLacSmKEjFUJSP5X754N8ybsYNIjH727S8
a8RK/6BrH9x7Xbilh7POLeS3DUFkf8TxMGUnuAVgb6SJVTP45fwdyBqNcTCHAx4Gh6T20wOggNK/
A5K6HYW2gKHLHQdWz9+MYY9DLk7Ty3xSCAhtgTl6WufpMh24IZLXs3yd9zv46yWtNwqnp2H/TbdG
Ev9BUZx/8DEmHRbbeCDz7HQ/RVHu/vlL+rMqXpz2Oi33FSIW/8COHCZE4P8bfyq5o64Sx7PWcgDd
+by/HKzt9Li/7spudzkcdi9f9zm9SlmTjNAx0hp7m8+gDueDrcygN/b4MLbE1+5lhljbbnoVpTDp
0HDt8GWpIJMRWGx5rPmRp5+jsbG72wNqoxXGqy1EOP8AHD27+/PH1VhP3qxlfD3GuHx8nJcsUQfu
WmKNAa+ahixB5gypefQhOsFnY/eR+xWHlAvC0gIQINQOU7ATSdM0xHAgeDc1ezYM5EWdQ2AH2rHl
6Zty8fcaJ6a7Nhv8798wIGdx36J0QMb0tlZ9XCfWkIfw4/14J18ZPwNwrR+36QrN9mSZTNy4uLu8
Yq9U+jEMvXgMpTBUjC3IcnzZTQvRVVY6uJXKLN/H8XM+uCGKNG4Q1qqQ6hwpOfMCW6TOeAPTaWcO
gL00O/TUHK5CtHVE8SApkmUW8zbfxfrSbIZkCrnN1X/GoLE55sfnbuVqZSmlo2FEBxeDXx736wOU
6AWbkc0FYnUeXV9uWRZGzxp3DM/zPl2tNOM/c8IG2kiPuMyDwhnSNySiQNXnXXq8P4wiQA6BKerp
VVbiDip/nK6IBxqqRgS83eb5m0JrFIcoJl/MJ6MSFmOKGGl3u59UoUo3KgjJJpvH9QD3sJhV7Zb5
dnxFoWTYZDrtKRWSpllV4WMYbK/5EXzzf7j3+w94C1f12CrBLxS5Ii0oD313flmUJ2V7zsagfN97
Uvjlt+k87YzJB/2QC5YXgNO7pB0dOeRA6uj9BV7lJxW4fhyNfWRWSbxjC9TSRNtEsaZH9DRPaLWR
xFPPkYhWCcgvwyZp6Uab7OO9f1A8ii/q18sR84Xvl8fpgGYwiU7FOS3jkxTNu7qDt7s2vdCrRX37
8XLEf81cSV+ECZBhlXYvt3n6RuJE83pFfqsc11DjelLYK2pUK5v+ysF18RTj43w0ptZM6sDKvMPj
ejJbB+slKcyJ6hjvV/TYAyQ6okIoHCHMUkJ8r9KrM+bOaTKmwGHnXq+yxCHMZkU42MqDHPu1fTxP
TMoVQvrGFYOJUDuIm52UVVVhyWj3vKrz4+MFbDA0Ss/zj6T9MIjBzHSGjYtM4dkRnxmW279DVN0p
NIWeABrEZIds3KJ+LXwNoWEB0lATU7IBqRBl7Ial4TkpoRyJmizC/PLI1kexzFAxi1lkZYtdXJoY
M+51vkH+AWXKqsNwv/RwYZfKSutwHFTPeQ2qCCDxSzDTCpUmPnMsFB/KkUl8RmdtmcvaTY/7ZZXc
Wx6SB3soJrl4548ndJhfJ+jooMHkGOJTyA5Bz0zLNvoP8K/hJsCQM87IQdGqwjqXQzEDe+afjwuK
tMft29Ec22SUxtE8gvv7w3gU05khPI21k7PybA7Rhq/WGNDuah7DiSP+4lgChlJMvS7hBByNR3zD
MpZXfG9XnFyUZG8yzYSxQeXUFfuRl1+PdDtrifqP41khJPZLNd2tc6wNP98gGrI3MuCDk3UUCrig
K/RxPKvGH+67TkUC2FfEj06TcUz378fTYe0bPV80l6ppRDahcs2O5OL+FCUXCeK5sdIlX7thsVgJ
Y3E+6ymES5cy6Vs8bTsC+LJ/GJ/+BPAa5isAibllAlZd446xbEF8lG1vG/mMctoDnNfao4xvdV06
noZCWXinMtl4OZ++st+2YlXYAN92FnAC1Ai6L+YWjvfs/gq3Coj21NXP7A7EOA75NhaE8hudSGL1
NJO6eIrbHcztYLD1x+2IFtMN5Kg5DfOfGK8EENQAI2h5T8i+Cu/bpQ8JD7LkCY/XGaNEy21vfmf3
QKoKGZfHxqB8aWdow8Mm62GBIOO6ZnPqE/erG95PCH0iLfKqA+Y5Sht1nN44c0PF4LhxCremLxET
Vl6NZ+GgA4jOhxEZUHqxm053VW4QLZH8Qrp8gj/mlysXxlxvl1cY0ptblStERHSVcljnlFL47nbi
snfiLLM6fONaMKvDGPAgCJf4Ji1IMngQ7JBdT4aLONJ2v6nBPFquqwVl1qm3LFdZpitELhsUHc3A
7fUu+Uu5SQdC4uKdK8yfotuGMM9c+jB2O3b1KSSuBuV6VztNBMlzY2yt6+nxdmQtRBIajoNqr5Ja
rhuduqTuOsvruB7WadP34xu9HfM+r+Z8342Zks5UFAL8swaiTVF4QIaGR5ed8V0XQkDSKLnUl5Hq
KEuH/u9ufbMbt0ONEBotkQPEv2Fv8P3xNodLWjQ6Lg1aNmVJgziQ0q/T94kyrHj2XLKqp3UKCfJZ
2ka6NTOO31iu+CvmkdK80ZeCN2Q0BC3mFyOrSCVQoh2493h+4MWmaXayUGJNbRGFNQyX0WC9M0nA
B+Tcq7O/ga14TfPpxNm9w/H7brpCJ6MaJhQ2FJXTVmKBcKFQq0cHgEIBb3v9e/g5Zd2itAMidWW1
hfh1pnxemrd71xXDl2XeSO9NY6Gr9qFCFFrCRCA4b67vQ/tiMmbe18flsWTvqfJirnyU4p5e5vuP
2dzNGdBQVqri6pSLKoOL4rAQjyMlGlwfy3ICYzELe9hYDaVJ2l6YgeN6nnQ5HN62ueJp4fQRzd1R
mF8wAKa8UgfClBdiA3cgarKmdy1WfC5iGuZPvA6l7oY78wR5O8L75/eg/UwvtJLsBaDjN4cNmwg4
Rjn23s8gj8lXh5a4TaSj+MbFn2bjo93fzX9WFoX935XVO1sdMgOtXxPJJzFdMykaWro4iHKNPfyE
NFJPWdS7mf9rORlukbQWdhhvhub75Xb8DcyT0wq0labbOh40FmCB1pWtzQQvHp1vMizfj8Ah8wFU
5rTMyoNvK/F2SvwnJyJW5C80gq4TDPJVXkgjeYsqcDkRSVtdY9YbNioczw7tvW7kxBI2ei9rs/Mr
vAxRvodADek4BqvyXlgGXW3NSaq7AnG+KszzhTrLFWICTZxAuxnIbqVhjLCDebZQhbDD6v7L3qLM
KFQLsUTQb2aJ8qnyHEVXsQJJXfwXKs67zZN2AK7Gh/DDuKGfaD+TEiU9GtVBnMQo4GSpc5oiT9RE
/TFPy+M2cwz+fko7ebWr322w5IC1HRN6nF+mEzQfGQ00fVecRVlMTM1HxcATuCAshjrs8vpqZ56m
6bjC5rLtpKX78nhrjFNeDspmygCW2TZv3KYfO4qpHF9353k+YHE/8rVqmtKSJNXKDa7jI1qwJ8b8
0zjclAVXFjhKp7+kQnxJDLmYaBlxvRyXO073ThMU1ctybBgG/jHeAVUnyvfi2ihL1ayHbfihq5RP
RQm6BMbzjkVsAvj+cLzdvxSSLiYyQHB1sChOPlfj5pIebeXqbJGSqBVkOgjQ+zc1Ple5umoOgDwB
FbjSmQWCoG8KHdemYatXMXHE4SgqXkbUv5fjWzozg7TExJqyGTGeVrB3Qz2BSskwEhAjc7BepGdr
jou37KJ29x9YxgJBzUUNdCDVQbQBYL3N38MArvHJ59vdktxxOQ9FPdKhjlq0iEqDiqlx0GS5gCDF
ObNK1EQEOVC3e4QwGGnJ0RrTpEoRgGlb/GfXSnJ2lxyA43/zi6nS5CvR6+ujPaFS4sApTGiwER/v
d9KEG9HsLoE7rbbzVp1dZlvGlxmcgbGULhv2LBqL5XRQJkbPw1sYBkmzN9WLyFaPj2aoYqv0+JF+
SOFKsXPZ1SYyo+tZng8WfxP+aEMO4HUprOpWDZKVfTgOdL/M+8vHDFLsBHOV340o4hHLmbBhK+AG
urWInu+e1vkvvIVGRnRHWdXiESPfygoU5cJEKLar0TStLaw6u8W82+PZHkF2jXWbgGmQa0Q+tSnu
GSt858/1HrddXCmhUwoB8ZFltl0mU0b7EGctm2ofZ9kAaRlE/t12LulkS8laxRZsYLMkEwAT6M32
xbMk2yq8qjgAiXtp3CJv95+l2Irbkuait7rtrNskgI1SL2zjvusxAdKRfq2b76csxWvD0F5XeTfE
8SErcs+Y2bxYVvqJsxHYE3ISHb/g9cpIxDluVY5l2KR97BJBcFxed5kwLTGtlBYUXpDiZ33E4LDf
bTNA4I4q6+5ViyZuOaBKITSM1UDz1ExuS8KMGoXoXwONP7mHLo614inroHR8k7YWd4rBqKH1nriT
kUILvj1O002JDNNTH0IEqWaTTlXkZBFHd0vr081vRVoXhfPJ8pytMIC4MVnDHldMxHx3CLDmRfwQ
2kLVs3iaPi7nt50dcOECoFgvqnKEO+UGOLexU9UOB2Fg/hz3Fu59lzUI7bLumvQbzJ9AEaiRpkhY
F/kH0AlzFeI9xrsbMrb/ZkOtC/UIPy5wnhxT0UPYaFEKsdKsSTFfQjElgFigFhPCteGZ3VRFaD/I
/FztFCyWI405FlbuTChVCcf7L55D54vXkJYnCH9Wckl9IXClmSGEbxFXHR6OkPIzhe8dtzKmIPwa
/j3DzOutTQtcgPLepIRYry3wObdaLO2Tb9z5VqDnIv7sWQsLTuILi/0zQ3w3Eueykt/KwIXgE/JJ
urTcCdR9TsOXAqIQYrlpwvZFPl5wFmOGcDn6vN375qEng/5fWChN4Jw2eb/p9XIy4h5bRrOOk+Aa
iTYVWPobBamUet7YjVDe5+3vRsp7/OfYZOX9ZkNCiI61Qp/8RSwhRpeWfuF+uRgX93SClie2+bF1
LQ1/UZTBKCy2Adc01G1zYHN0wKXcZVc6V5G+XzcP61aIuJ6fsoUXVrZcrElkIGGnfO1KiemtQvxR
fJ37cdciVDZ9QwFariLKfE+h3VKkPipMfayc5b0rGqS6cphavEKURy8AzY0Lec1AHwuMFtlEESzK
1d0rQRIiOAT5FItzBvyHJ6VkHUbxMbV2lav8pzbMjYE8aiavivi0Zz+y5In+dMErk2zi44/NAYUx
dkrSA1bn8T5/KDQLl1CEC2TnmXsuP6YbVLxpSxK1VTJGx7m9wGJYjE4D8KXbpCUTOI8qUr3oOEMY
JNSZ98tVYg3SencTA+fyr9IPpvsQ+CAEwsCIaCCkQak7A39D+boegsnCbIusrgMMI2S0AoVMKVE8
WkZdwSYAaijHciPtOsZwgne98UHyIcjhpOY5rwFXcIOyFivvofBosFq3DGFfj7mffJSKOUFkp9uy
FaWuMnRKlUbZ1dWitrBerVFRi5MlIKoGwJy1Wc37HbqUttklfNiuXBK7yHle9uHXCYtt1hQZeTLI
2topOWoDRDsGljdZr4VvbQg55199bBN2k6hcJksksCq6GQqvgzZOXLsVwbhSeP9c2IGPohdoMAh6
5YeD8TBYjGdF9hDXAjgM3ReO2+RiWQiJK5WmL/oZ8kTbpVAm5MAXfiXV1gclq2tX0J11XO7eWCaL
KnfFCcmBQCErbLCheUF9anjuiZM7aV+NL03AMMmO7H/FSWCKZXwCXpQNNjwgcXdeqacMuLDUPhy/
awvr4vwJsyl8K8y6vx9Ynj/bwR254utRnGXtoAtwod/ffDPIBybOMV4l7rlZe5j/hQQYv4cxLgD5
GIUcpGo95vCsNiz951HJ53GY88+jD3mxkfETe355S62oU8YjtQyISLgSoOZN1XHZEbf6thp8nVDz
FXa0sPke2A4/S1eUzDXguJYNh6jzlSLMaaKvoe5dX8PTI9FW4Z4sJjk6C46xsfaVZVvhwWDZSbeJ
Y88KkmJshZFNRZtcvSIN1/z2ylJoAQqe1c8WWnZ3lfdWqjZQSNnvm9jp8ANmbz/3XCtPqFRcUEXo
1mq5YyfKp2pkXwtjLo1Li3ZEr5f7mvcXgrpRevpGUQUlc5KreN4cVqaiqtKrP2ssrvybSPJHg20K
SQF7Kz3B19P8+XL5VA5ulMEJzExw8NKLEVNjTbYGzW0MOwK7svypWA+FEVwh2whvdWx6F0bAIDWE
JN4vNiSnXJs4lKZzmCRCjdp4QKa+s6vlKWFvHUuhgKewJzN7TI6dsIy45NHbCQ7Arv4czUHUNEqs
WRd8KZWD6gO86brQ345CqosXrr7djgcOt8B2BGSg/lb61oekrrmo8Y06glnzZl9c7b04lv7URrjG
aaBvJojkKHfYif7cAnsAbJj0iyKu/HDUhQ1F7aNcB7HW021rrLV3eTtqRMNH2P3c++td9Qw3ETT0
V8OWWGvvUmbcF47B0nZoNsVae5epwc8RjXzoGF7Rpt+BFUEW3bRi87H0q1YZuvoI/bLL3Q192P2m
MJ64YEQx33IE9KWs3ZYzGzgzhm2TvnxntqMmDWVfojS7Jv0IdB8vX7kHMLo1gYzvHa8iJAeCeWU4
tfGfkK2KEAm4J9GlrEfUp8u6IXiMLzBBYQuRoQgr1TtNjkrPQSEqMfArBwcUCAtFMvSikrtAo+7v
YXLGPkUQFBgamc55l4auoYpB9DP//LSXSDtu/NfSygoaUvz2LPEIU94JXawgRsOe+riplE/d0uLE
fj2UUmj/f1wRoWATs3QCl6GhfzJyiOtVdw6mtsehSDCvudUFAidngRDKt4qUN/QT01LlGZbOweNb
tnhl9pIxHJhPJ9NxCvXsCsYc2sO8QoPaotx0EQAJO2E6MBourvSH1wXxL9w+Qn3yA2zJrMeZR0F1
KPsXxKYZGFMuAyDgUGzYKP5VIUb06pVeA3zfIug7d9uZw5PguTYrT/FBh7HA9TLKMSOiUtkEoGzd
ik2OZPm2kLpo02doA60YgMgLFC7MSVWFA1VFi205/mbRLskqDH458wONGMNUrwaYAMcn8coGp96D
OggEoDVq9oRjNn8wHOc7PLv0yureByBrnbl6eNlPyp3Ucn6OX0GBccnTY0HU8B/vIKsOxwU2pwCM
ieHstXML7TmLos7rQ1lVU8fh+z7m+2TO903cpgPvne/Uhq5sVqICPgWsj+dXmn2T5QMxvqlc90iX
v0LZZGiI6c5YOmjx3QCEzW1OWYMYoVbhRL8uetIKBfkakX88IL10Hy2tf/CGHnhxCnREYUrMYevD
cuwL6rEbY2IhR0MAFw5rk5e92S1bkqOkWhe4+ZgPx0k8b/z33e2hwUaKWU5lU2F6ytYf/hNGB+P0
ufTX7g21oPHb3iLPXW7fbAM0/Xm3vE+A3jYtH7uXx+trQkgQOFznIxNbEJkVP8dVkb8fX+82Mmm2
e78osqdwx9YC7dbWpXE+cwOCX+Geu/G3BkL9oSa9yViXR8ZyX05HzBxer/N0w3AlJRWP+29Z51lM
0inR5C4KgRcl4KLm2+1yy+JFEc02sLIHrqjhrb9My7wWQDI4qPqo5bhF/DOnIMFOJB96xYvaGXfp
9jgj1s9NTUsUvUh+o2VbtlbVAODGukoV14jW14p7wgrgjpvHDQkjfOmW8I87RgcBcUp2gVoE1Izx
SIR1pc4XWB0gPaxBF4WYM+eww7/hGXe8MgtFkRYHREXY2u3IHVTsVeD8pN2FI+7v8/7brMGgybju
WBIkEc96MZy8B1vqavOkmpoX8/8EvOMNgln032P4jnrJDX9AFfuctvyaXgDiDxzoZMH7cbRjCOCP
W0gyDIAobWjbglpQLXjDCyNQojGDWQEyMpAoHSPc9f1i21fSQyz414owq8JSw5gJiCdrtbH2OkRu
p8Iqx7rgZwzgNvfjxwyodCcypaGkySi204EkpvpfEEQiywIBU0EO7g37wTTQgkZILKxeGurOGbQI
zYAgee+XE4hF8Qu1YiRLzYRcbYv4weqge7blnTZJbf5O4UmBUl3VLmYLZpl5qTu6i5z2LoQxAqYx
jp7CdnaYJGncmqsR8hbh0Bw6/SuLQjrQb/PX4fJDq2/pRXqwLxn5Qp4neQaxw10yqF6NACHCx0SS
0SkDAi0hXsAW/+3P1M2csECcbCAxuZUQPhcaKqeQa8WIEEwyjU3t+D3J5v/nuJsvQxTnDXVN0+74
OsyLiq4j9j84dUjnYFajwFISoqDrsRlAYI0F14tEyVNO5P51nRWKojG4Lx1GY5ziv3pw9FOyzwSq
dwCOmS1V8+TeowcX/V/+38onEVsusVOpbFur1VDRrqEia2Io738QYqklqEcHlYzP0XOMN1AU+PRt
gyV/PFv2BwApx04p9j/864dEr80Nnalq9Pnr0cZX1o/Y6jbm3IKmIsbnsxZt24QmEyerP6BC1CKg
4mwrLv4/XD7YWaYomcJkApmAECcrazJSzwNeMER+ckUHtNRa4oKgfV960G/n3VpDgpQJxvIwKzlf
MacUJ8eVjOL0Md3++ZhnG1O7G6cNsyQQNcgtU6Q0G3zKlfDs/5n9XKADQRFAaWciGGfiBlMBtMhu
28nILlaFWrxxGMJsw1Y4kBmGjQC4S8qXoHYeISc6CxtrMy30BaRc5FAlpXtgEN0DNSJSNbauAcs5
GZSLSjsB4uthUd6SCFoVoY0JF6pwQNgOdcx4YY8b/H/CNsvcQSWaCWByDruitC4wLreGr6vey1LV
/WoaCyh1NpfAhrVlpvZ/VzZO8ZMqHO7Ry1oHo8POM8yMw5Jt1eUhcmUw/6Er/ByzCLVfXl+N/aHQ
asKZ3G6SKI9W4gNd4Zqxwy+F7EpE6/jIAMSU4onWiCIPm/cSDQrNIkDo500TTtV6E2EqSQm8iPgg
vWZWaBgOYJF6Nv7QB9wMBAu+01jDC2GI/bjcTopUHYRU7QdXMnG4Gdl0grEJqr9CNOSzJkBgThee
GY7U/OmP+8tZEe5lvMmf3DCwoUEgc2WbheO0PXVqo1w7SKzmFqW9vRFb+kh4gCtfctv1Qd+0NK8k
pjSSpVfI5j8Aed00wdgOElaiZvxcji7LW10uj9t+huFfpOlp/8li7TUmsoJfI7YeqQCkeEKssflG
OtNC4l3vj9v8D6Oybl/KAME+GEzEcySu07KYU8x8PhbC6cP0u0Xl4l+f//mYwKpRFtCJcC8WtHfe
AgCHc7rv3xUKMmCMo/NKj4Ix5vKrEO8TG2x4FXYfPN9DIdAGi7Ahj9hDNqZfavQCXbZo1Ud0+8EG
0GFeAI0o/UkBITrssaZqLJ74fPn+Np3375fbBk73kMAwGNM/E9xMTTRh40xAI384A3Z57N/JQYM/
GVPrBiPz6MkcsvXdvRidi4FpTkS8GePa3CqNQ6Q/i5Kr15PanFD0oi4VJS8A3rN/iaskZWbn1tJi
NXqiYBltq8o6OxAs51HuRoDe2IRNz+3o3ARXMRybRyM4OZ4RtaMAdijc7L39QoJlnWvL0c7pjWyA
R2JOKaHO8XggsspqVzdCaZQ1UixSv8neAKTXCnqY8eJcPSt8N6FFQW2lhfWOEPYZrUhAOLwUB+ho
jIZEGkEEMt318+Co5QOKs7jeQXUyiSTbSlhzymiyHGz2p6G+3HZ2tssEZlSq/QSJVrUgStY2ayiP
aBqgmcmUjkw/OGnyY37hcZRmk7C4bBsCXUEjeGNNsGXHxvLRj+vHmC7somekbUYcdCc2cwLsFnpx
RohhZZNShsCX1jlaay5IzoJ+fjNolnLC2XkT2mkV7rRkVwyN5ljrtWEIyHWC6gbtFTXBK2qK51o8
26dCIEc0QmmvUeUsNlHFyES3Dmd5I2/GOGCL3qBTuG57Ps+1nMu7XFwjh9KOC9qT0x0Dw9nbqsRJ
1k+zkpg+ZT5o9wqtUkqAznldm+Q2X4YgsfoIfrkrV4DYPJMt72XcPozuaD8wCs4RjV4QwaMKIfC2
4N8gJqm1DxKzD+LhIKpvx8UGOMwGMbOzT188mHEtI+V3sBaM5UVI4QQbkGRJCRjl5vDPoFMMOxdF
E58TzjR6IdUwbtw3FpViOtDQI45yQeY6IyO5aoB7LF2ltyYK/vk4poZr8nGV4gYHN0/GvFfj1x/v
hhUuhy9tVUJtOsie9VHr41H51bhjaqAwquH6kMvjjuqOFN3342Jsbt3V5iXJPfVuT5YeBRXyekA8
5mLtz8GJuTBBASclvk/GkUPBOKcAmZkVnAQbIbcz9kNwUMfz+2w4wk4z1s5r8LVbWFUJp6VMDOSn
K0Rqt0afImKa/2qTmO7EwkT3nif+uCw93ZRK0s8tr4WYk/E3IlYF3MHrbXpDt58GH2nnVgnRUDjD
zN0BcZpx0TgiiD2b6FtrUkuolJa67Cs7VfMBM0ZsxQrj2VnMNu6xJOS2XA1e7Wrw4I9smy73yZUM
gdrPUZFD5LBYgGOFAFJ9OEJNDvqANDwKBv9izQ7zAxadaCwlrp+SCQUHa8h7mWEu5LLDF5R7fLUQ
nc2AMeZxDHU+hPGMqPvOLfo8Pkt7hUKEEuLQ8MxVRstf9sd1cK85hkPeXi8Fbw2j4y2xWqrZuc3J
hB+vUdoQ2FhUy85VNMV4OCZjVt/vt7XJ4Z4Zv1SLkR9g6FoHlm9Y/MbaVIy2j0JRpJNRL5V2+HNk
gdCnn1lgJxYInN5wIcFqtJgVvomCJR6/px1pO8RdReNdfDveeSb9afq4Zsp/WGX6ktO1bll+pJml
MEJDW1MZ2mZCIXyHycfnux07pymDWjhgQ+nijYEbzBWfugcsDYxGxL3Ng/jYfVyMgPhyeiBdVsgv
ohDGT4GJirKKG1G1akQJgw5BlWH2U9bwIfGdmQZC1yllQi1QyPC5Xm4wAcY9uqe/VSH9Ma9au5r6
FiI9bd+LmjYUMVlp2AoVgy0uoebSYkI8gEccI5Z5drZlFdt0qGbtusg5rDhFQ1Oo4moanMpoTbdn
s4anNmvUnDNR4rQa88864j7Re0/PrWD2E9SaFnP1vYf+D7OucFr5+2yMQZw3yynorGHoRxfYW3Y+
z+U1zEjk3XyxWjxI2/62niNDXFEYBMC5qdhnY0Cklkw+ivSTzWmbN5450GIIrKdyfL6cn4odlUJ0
tQ1Nf7Bo1jiq11o2pDtw/OTZqJDLVVtnI4X9KBuYMtlj5kL51Hp6a0OMC10wT9viIG1DD+WByjSo
bjnXTcM34PgOZ7FElmVLE6xHkrdb3BPGYfUjow7TkbuR2/jv9FSKStMhRRC1YAsLhlzPi7GsIZQK
GTSoud8QrhHvAnOB1mSXmyYmXrsZIL9zWVQPqhQveCw5t/JkB55Oq/S652+nFG4ANuMDligJ+s+F
u7JIhZp/5R4VMAWxL0Q320c3Tw3n3rS2nOGTPVAeMwbRafoLdexb5aaWtWQRc5M3DuLZObIkdEIT
ViHsRrQ1mB+yOJkUnKP6POCo7CjT3mGN20JFZAcZBeeWqzRWXe/gxXksJlYI1EK9Q6UNLm6BUt7/
9rc//+mP8Pf/heS2srRRDKMT2a+X6QBiCswueDw06zq7z17ss+R9UgP14XqU1SriKtAKVoq5RlE6
SdN47bgD3Phy20MMBKYnV0rDXSGoYG1+UfRxKo1CpZRrwXmatmGFrQL8DKDIXRCD/xfjNS57KKs9
35XZgJ2YDYjpKoDbpUpha83YPBB6ipfrtIfKOIryKuNgOzHgz1o4/Pogfs8TEldAA3gvUB6HfwM7
uGFoL9sNKFLmGGriaAwR5oZLBJVZsqREY9CAKJeDI7XCQdh2tAwtUZY4FG5iINL6mLCnhwbjUdWY
QmkQzSIlN4vge5mnvS04xj/uUIqleal0fA13Y01pUC/YQigaQfHfg5oQCOiko9C9w+Hn4ZVrlyES
Aw4V+UQGKEYkC85oEFxKql29d1Mx3ETP0dG3i50/XlSm6d2gJ7dOAfuxFhIiass7jVB4hcAiqJyL
MqC2LvzpzFz34PaM9GGD2eG/dekPXR2e94kTpCdIgx0OuVvpYtQo/iUuXlN7dZVcEFzs+oDlFeNO
lVU13oDjRtwBklvhP9eByRlDr3eY+uvk4YprK23k2xvhTZMAXbPqCygHKMQ7X3LPu+qDHuQVtgPn
gK7e9adCohESAi34gVNMTATdKgSgSaYRiFAlWkTpn2zpucJsQ8DYDZfrmodU+2crJwitOcYqIdyf
tizRRIat/BDIf9of/zmzQ9E32BdUfO/Ncv0JUrIAfaDuGNanRMtW4D7OYj4qQVMsjxeqNMRYFWOh
cH2bmlohdShklwe468ot7WRayrFwJJlCDPZdKfRrOeO3obQZnbebP7xyhJLcWgfyruONMWjO5uh0
NubLGtJZ/21V37aYN1MM1LoeHTgYrsA+Tej+YvJTcfuJgsBerQgTl/FUjme3QJjN/TF9MzYM/X3C
YCFbaxC2VsENvjx++vvucydQ5Xen+y1NqHOtPBUWg3LRjxMLcib0/UWn1rv+vbocXUUdPurNexNL
ImDYkhMt+Ha2kumcCYHOX8WTAsTONp/S4ExbRMGrWavET+nlnjkl1+9UF4NzS+nq/ONOofPRFmtx
eahCagHUw22L8McvZTFia8CcNTfLObn5MwwwiK2VjUMZjlN7uev7GwSwCD5v76Dk7enH1ItjolhA
/LxzF9cVgqVgbVxtGMRmKJYwqQVzRM+94sZVf/GVoWpXAF7p9iqxtdJNAHMv5XHe8FZ6uTEsiCqT
b+V0y1xaId4K/qPW34pKre8Ee8LKuFLESZRNG2wFCxAma8mFujkUQPpcdCgO5LvbQnkrtLctQ7jr
Ff2zU09alyOjeGxl5LH9xBsZKnFrkO5ihyUpBnRqXZxa8HBzG+yauDSJPVxdApThwx2SEldfkXxv
mBQYdPmmS8ta7K9z6pJQOEEOLIR5mJcD7qQgLjL2uhLXn9wQP3Url1at8qnQqEOBUiQYQL83qU4s
aD2mdI2EpT79A1VjrwEgMBslYJhxnBQMntE1VjEKicBWT9KUv66QHQTZ1tVbomyWJLKeDpKr3bgc
byQj+V7G90eR+PN0bYdRCBH+/XJ7272dvq7vuYq80Y2353zcCiiKi1uvYONGxWQjDJ1UbM8fLh/4
AWaRMZ4LO32cj3vY7Nl4IFwO9Znutgh7vriRDELCf+DMguyCoW6J9MyotnPtNWja29zjCRDQs1/3
smIeOY+ObU1yUPEg1gkcEvEyWsboz4zjZwLb+jfDFhzo5hizYRMqS4XjY9ctY6nUApKNx6WtEJln
s9TbcZ/vjhtG2WGIzoY7fRmQFyl48F8X58SzJ/uDq2xwRLiNgimoM3TYZdAcw8H89A8FpPHnqMIC
/2vlp0Sbi8Sq9MLpgEKO0D4KHdfP04Gn1vVBWH4DCdedhxPoO4aN3bxrhbScPV6IhAbc55/n8+OP
hpS8UvOHh4u/zTjf/U2J5I0yYdJSXRP9wt/mT4YBxGQWFuRgehDH5iKwMkLgaAfT+QAJVcHB6gti
NdhQMmWA4YQUvi4CbDiuB1/LjCChjfVlSDSRs0RSgwi1jW6cOFYs/HesUAP8KeX7XnxfO7ymw3HZ
T7cDRsZdtQG9evN3cVoiLIYjL8qyYNA7Vz1qg7w4DB7CQ9/nrYhzwzCG+QLa7h/+8uf/oDp/2zqf
I1T78Hckhf9zRSGCgRS2CPvzDvXFazkpzgokjbIuG0v341qEsm7OnMRJP7YXJvczIHpP87KEv5QW
u9KOrpz3s20/+I81M5Lbk3AAsPSUZ/wqP2XBMC9IXUlShmYul2rkST/OkH8yrjQU0n/RiEXNv2qc
GUwl5k2z6bxWdCZXCZq7GedQtqD42403Q2WWP/VLragrgygBu/jZPVkeW/8690ODAN8CqHN22jb/
UI6+yOk1qNG2bSTCxmkGEMGHAdEWbBp3fpu5dhggoPS6JZIpQ9B5z4FfNBWP0+nyJlXbAWSqrKI2
8hCSGOn2fjqTRgDxYvlaHSCz+wLbHgPJQ8XOFeALdemaSEQdydrutNbvnveIHZPG3BjEwE+ssC3t
RF4MgVhhDTVrgH40f857qNT8wKpt1X3oBmf0U8UY9NdRZoix3I0Gu9+OLw/Up8ah0MvLiajwSSSe
qF0orOt0PH8LjjVNr5QDT2mGYyHO1TgoMO5ptwIEGVPii4tsFKq9QDLpaBrqqFGl/P6dTkOZzzoM
T4Q5aoU2P2oigg7duP9+FPsfXaWOv85v85d5axv33oolFq0oLdX2ji9MISqWWY5YsF7EDpRr87Yt
tAmH1bZc5uzTtDhTm2h2YvouYYzygYI+Op5g5jRNyFx5P6H86HbEdfeYCu2ZO92QEUhXOfhTbzay
QriX195Q0o6E1Nt8+ZjvN3AojTAFEQXGzYcRBWa9n67O5z8uqaJgkrUCywHK7GrOUf/P49mKq60O
ed8HZn05/pxLLjxprB/kfMjlOkPmENazezWi06xl2b0+fvtNISViAxi7hmpcGijNw56hjhOuxIGo
KnEa8VRqmjXhd55w/9HlcpcFZDw4EXw9QC487FIIzGXh5gXLFtz+qQXXllhdbsc3rQ+H5ztxlWjj
au5xjbiwN0AfwR4cWfMGzaRqUJ7Jj2FTY5Fc6+eG1Yq+JppmX2W2nm/i47kNsunaAiW+NVVRVKP2
rWiYHGhuLQucK6O7k8+7nx6A5fXyRVUiiP20w/+K60+pWwKjPVAiBQl1GKq1w0514D2InYHFkpH/
oxCsVBu+yn/zW4axXDcxrS/2PxhlczpeFwG4o435I2Em9C7CTTpr5pm8w/Ex5pcyYJYoO7GOz7Xl
eH6UMofKIHZ2R2QoY4uexD4IFz/zjAs5NF1AtPi/uNKU00sUSAoiLdC0XcdSdCvQR4ON0peb42q9
VnBVK54FMMZ+hItuLxeYraQQcxKtwmhMHzt8IwmIXm5pQkthFfDGi/zJ65Mm5cDNU7bGFRvU/HQE
Ld2rSiWMG9RDylPzDCOMI1ayovljuhq32A2fyr1cCbQuSk+jxBQy8oxLBpPiwswajTQSS/bfBKzE
CmQroSYIQI+MeaV+phPj3KGfs27iyBViBFRq7Bwj50hM6I5giEqFZHaFfSWgY9GOHco2SpCbGXP0
HIw09s0P9jFjvx8Dr4ct0u5XlERBL0B+eqwbAf519fZsl3CrMWSUQE/zX6SrN6n+V5T3oa4og7lr
1NPJAGtYJqEQqyUsNLYNFQ7H+Xh+uGKunQWJ3pvHnR35UopiRsLsZksK6nz9sTpUm+61y+aLvQZ/
NvDqcr7hxF6E3J8tLP2rAOHnraCIUlAgxaShap2vjpCwOH8AvTocfKXovsoZlEwJV8uATbiEtfwU
audhdWLU6AzDV8BtOL4g6vw6xgqC8ff7OgLlU8lYV6JdEsE3xBy428z5KYCSNgbyQ8OzrUQwFlMk
/qBtosiznTJZ9MpFYyr0A1g3v/AoZzxlrQWiknU0nasz8FejfC/y3STtKmU32CmgEHNhV6hfsZDM
QtvjZ6IMep2Ek56HyAJZzKQl03YMK8ghePVBiPk0QgkYxr4C7MdYtB8QE7y5+Mam5GGuKBbtnOZX
GkyDlh73T+C/Z+dGF50cftw6N+eZPrpQaBgQVBCnAnkn8N9oP1OG47frTeckf1HdhigshT/Xdk7N
TK+QaULm/bJcXn61Q5PM38P/fH+fP9L+IP2CmNTRFg6A2C/1dY7+vOIzaOPsi07O7e63M5A1h/Mn
I0Y3r1BSqV/Iy3QxkWFcmzniUB/aouRwiJq5jsrMIfDKGMhkR/71DkHxy5l6Cwg/3lZdwwxBDcjP
ZTbJXIJeONr86QEPg7+CxCaqC/rrHQbiCYBwXs7O6aBqabSZk8navhQ13diZ9Xf3g7vl62x4DeYe
5qbYEC3XwoGd0pIUv/NjbjmiLaVzk4VoLNw/qM/uHwAooATRW9mv1bi6IGT2o0NMNR6K+ytEDodh
U/vjXRVElWvYZh08uGiTZa39fj5xgMT9hELOoZq3Ff6jD1bsWobnT16kFsSoHCwBTY4G/gqjIoyv
gUDgmTGbtYRIX500rC86PKzJbdjtdMC04h5MGm1lYiYoSpFwt0AEQ5PXyymJu1U52ESGSl93+ThD
bzTKulXEKTScbQaysmXDsijKXXpciUWkJHDrAcE3HR4Hm+MgnwCIA1/S9MkjoRITuyh61Ivg24qp
7IoJ2FE1dwdTRe7YjAlTfNfADQQ6bcUVtYUzs99h3NXpi8aF43+G8bxCW83QlyHoSBfOHCCBZM2S
lyPiNvCUjffZpQBssqJgeJzTggVq6Wsp5SMThXg3aKDOfNqEI0kt5JP5VQ3bt3K94vzDvQtQ4g/n
vxbzjteyxP9NHdznFQ/HHsfiZkiKP+6UkXu9CIBRa5uYV0Rfkx1iFD9Dryh0RMsQBU/r1Zn4sUYp
CvZc31IWPWO1iMAuWoJdGGTxd41RDGbcq45d1gvgAiwApJj8/7ZRjB9v+ApsGMOrp1x2NbPm4WgB
lA3bd+loUSuiReupgPD0KTQKBVEMiSUazIBIgTv5AVknSaAXS5Con94SwM+7gVotijZNqpOkhNFG
DbIrjS37soCyVC4qQIj8fZXKvoqwaLd1BKizVj3YegwPNvK9crWNLMcVDwe/f2BksSjG9AGU4nsJ
ope6l165lyZeaJy8l0q5F7mt0SVBvLpiUUxu7uiUplaHzMfRkNQmlfvqygTz+U9JeQmNvHGBACVv
vFQ4rhExVDmemqFVb5c388UCVgco/O+nm3LKQ8j94lGK81D4TySP2cGJktA2NJbKgURuRznbrgiL
09vohpQLHp64uI9IBIVAL0QK+fTd84uuFInQx+/X+145zroL69bryAYGZQNiAUgsJlKUtyuSWd4U
Dfl9WSgiqVK4ct2AcoJ9mRBE8gSVA2jqsBVBcJFR/EeMKeqcKBIn3kDlpDCslWcqD2RwGFOJB1Iq
R9ONihq2Z6tcTt+Pytm63Wjyqw+fexehoAmMtg9f+fML0fbQtMr32wTN8MQicRLKLoYyfKetJsdv
in6TvTNPVoy7FIXl2ybee/TE8ooqEKOwCPuoayPvViHQtwnmxDcjV6FZDvLhjQ5uypNerSK9BHOh
spe7sN8rj1Vmk2n0UqU+VoVDOnGghM1aRplMsckG2VPWBNpMnqhiIhbSRBS47v69KgZ7L5lLFsjI
Iy2VBTwZ6V1Mlqo0yi60c2tBI6+WLYibEOhl7I0psrcR10kiSLVCNQnWyWutAq9DXqtip8hcPJru
vapVtJ21Y2AUywsWJBQBNAyhAHq2ijWBXA+JJTzJDoVJKs1ycXesvLe2Di8mqtyUq22lQV0H5uOq
oTW9UijaTR6Eso1xDIVo+fxiFbdalgDJ4QGK+6a4KbVUtk3gIKwCaFQE0KAplk1+gd2L2FIV4w1F
DLalYtfaQ+2VQx0TIizxYJUD6TpFIkdIKUq7q5W3L9lNOZmxDwvkIwpiUO5GsDyBsFaJx69Z2Z1y
wVYCKW+mqQLx3iRUrSJIxyaurgm2+fLxAtUvj+sNs4/fp9NjxqEsulTzOrali+6pPk13Sv3bOTjf
0MdXpNpYhKZMxCrrFN7fFqnQXJ9RBoHGwJqyp6AwaVMokTZ5vwqjFpJRBTR8IESUl9u2inrYpq1l
O4ocwhJuRPPRvfrDxgHvPh2GFvepwxhfrbvImuYuwsdbRFSE8nr7LnEo3iNRxEfZJmyHUMdoNIaw
qrOKXq7CH6LpxC+cfxKFWlRc+kBF4APZs1AW0SS8yagYoxK/2zzBKGeE+V8y8qxQZEFEeSlWZ9cm
3KPw0jTH4CmeoS9HC2wMSuxxW3JkiO2I0krYY0U5udtkSwy9vitM9t8viGywtlMqVSmVY/y1ErDm
5vvvZqkXm5OHoTNUGKik7gaBVCpmmjxh6hruI+KZ8o1CDB8paVYU1a5ebtObLTA9zJ/z4fBCCbXT
5WVHiOYMpQldg0cl3ViKCTfNyBNuiH9edgdzrHD1WOsBvzrvDi8KLZECxRAootbSUd6gH5VT0NCD
bMu7LZYgt2HwOGeoZb5g3Q5VNNAknHRBUNmKMjRXghkU+rof27lyhADSkLqadmuxQkLI9ALwZQVI
5cq3kJYofdCoCShZfJBFQA1bS6iKekmD8vcC4QZJ2Q4nekBHWxKH9RxYvzBp/WStgEf2ystWFGqZ
KMcyZ9ypCl1JV1aP4spslJ969q5Q1n03VOBXsPGXKybOOyz1xb/nsjyY7sByBfA3luPLMTlouHJx
FHrtaEgMrR0vEgwMwt+7G0GDYy+wYmzmAlYub3Rg2zDnGtF5tJS5nMoo0hI/8zsaeTlOSiRigwpD
sWaqylZmxjPhJj5NchvhTSdTR06Gqr2Xb7IKYw+IJPiXygX3otSkFBUUUKVpC8an2/7dsOp8AnyS
5XFfvG4KvfaKjBz8ATiOhqu9sa4Jq1r3X1ZJrX8BleR8LstaxYHNrVjGm+oGqJzjzhuyfllYhchV
fSSriXngnBRpLaCr1yjL2tPM9SDU36NT4yusQu5r/h52Q/iP1+s+4FmDii4Uwnb10mOliIDWq9Ui
CjSCSqA4Q42KGLuw4n+fH8ZavGGNFgy3SzZMD2I2EomYtTiLJmfNn+aluGIxMCq42wIOA+Qx/xdg
vxhxALDUhyUNjTasMwYsYI5N0tk+IjYJaG4PXYDZAhl01PuP5hKD+ytNxW5XNRj1dgbax/Fzh+Qp
GkZdF8cTTPBLE+sLMaa9xpHzYRmkoBkOr8PbVah3CX21kfo6F0v5hVacuKgj8o8WANLpKJSTaAMQ
r27jWrln1kqR1LDiQUx2dohK7KL6y6VpTnZYtvlNZdUCagiJc8NJjBn8sRG7XzW2EDgb5DiW6zqJ
LA/cusJrsUVrCj2JTyec2egLWP9CeQNufTizsuW6Vp/eeV6gwhj+ErotN5AVgFfID4xLFpxmwKjK
dYtKa6qTKxPcuWFxfRcsbki/++WfD6MzV5tMISqh6wpXChAQ5d5DRSp1khFr5+IHhN6nZQVkwfls
1w2L7CRkTeHCGP4xgoMFbXjbrlqKasr/j4mryQrkvo9LjmdS7iAUakJErGFjqjidP41w4Y9OYIiK
MYFc1+qM1Bz8e1P5/Xx8XZffjoYY1bPSD7IksvINsyy7Vpl52Ev7UdYwrgRxAIfhhNXM5ra61Nwn
JisNX2kiiQGK5E4ZcUynoO1f9jB1Lry+NnXa1Qrqhr0Mkx00qqKDjII3jYtUrdD/wK1EXSMleonI
CqcFslSD0SiXNxxaYFdqx2hoRGWrTs8N09a0t3YJdjzc5usMPYuk44wmuutgHjQi09ni6ERyaT6b
IWQBPd6acmwSCBGExicg7qVSm19fwZrGqW4zNIXScOPddLq+T2izYfOwMn6nDVG3yzhh2/rFXXGz
MlCLCAsoOChXq3nOlL7i9x8KRYkRjbNsmjhFkCsqIYERjdK+b5J7BrycHGRqWfng7t5GD7fL1XZP
gHTXniFRKxJIyNjdAsz9bf76YXwJzcqUxkXp8pjQi44frDigMBJeYbtBnFTjQHQRkovwZkgUEJLL
6omgnfaem2RJPyEGSQAe0Lg2i9yvjCRgW1U+P07wtwBrYgv3jRd0+cv5P7iS6798p8lQ5oDPi3me
X1ewFi8vSk2DiOUW7nVanEzz/7Eb7/uCk/1i+JlERmBGdfjsJejC63wHX346ntIEZIqXwEDJVFj2
0nmebrfpizEMlemCQdiPZ7ZD3w/OsbtPt7cZJrZP528Klc6bHMXBQ+oeIgLsfJ8ue45KvCch+3qB
KYHR4paumhGwzPEgQptPCTiJIFoVmq23V04p4SBeRuR4nWBi8P7bBgANouiC5DglgzuIZgYvXNdI
E8Iyd2FhVNZmySGB7MPAJzS+DjrkXFNvOu5SiLhL78ZIGud9uey/zfREjKj4ZjUN/dmIo8fdyCPj
XugtNJ2DiKrxB2rbl7TMe7PE+5dz2j/I1oBm5mXhyK1yLK6H1Ou/5/Gkt931cjruvxz2naH4xt4Q
/J1CuQzGQ3atREb7Ky/8P5A+QR9QRAowlqHdbYb82UHpHyycRke83L+7GE9IBP8Bb06h5oKBOGo9
QQ3CgQBds4Gg38OZIajQ6byF1RarUrugx3mZXnGwr3JBYqYoSPzG2qyGbQH+Msh3ZHNjhXsDlK1v
1wATf0DToaGb7J1mLFOToyICBA8xwr3au32HhnULZaqQbfwxcMMaTYGI2q/T98mC4d5OubbnbnTH
KGZVXS9XbBnf0ahS5fPa32JlMzBBwktJPNVJ6q3QHdj/NXBAXk09pel1QorisO7Bwm7/a6msTgqJ
cZXxfnPyGmA1/0d/pXBMOXqzGzkZHw4N9+aSgTTTKMoZspRaBaMSMemNAUgx8J3NR2ojT0WDPFqq
Tfzo3MGVysU6FsaW7KGJrUvsdNMCCz+LbN/FYjHZOauI2buM9i4c54GfxG4S5Yl53DFkJ2Ubf45i
74335Iv4cQNEvXXDZ/WtloPPbgztz+OjMr8v4RaaVWqsv3w/fiBczONMgzeo0itHU0giHHYcsMTx
A6sWYOAoAHEzlgNZPBdzI4jz+7geUuAUdHCVny/e8GQrhfNGIVJax3kwHNzYSVSkZ9b3gZOZFseC
ygKFnUyhhXrDs+U5ubkT7vxhrm2weTfI1e1fWamwcofVcg5S73ACConGkyfMRv9SXUErDHkxukCw
j5WYzDg05WiLHBV2IUQjWMzz2ii2h7RWKQ0neIAgj3IV1VORSo4PNQk4BHzIqs3jQ0KzWGy43elU
ZefC7WjWybO+SjqB38VPMrPpqogNE1auW3t6rdC+Bfxj2PBOCPEv90xaf5ns9xrhc7eht3WAjfg3
h+qOPqINImYDvA4qCExFOz+dSGKKCSCmLPpElppArirdVF/UVfjFr4/lfnz9IngphVohSjUpQrxW
laGrdaKZSoQ+j5rs32+Xjz/kR2/wOgVMHZUhNUIpeqQe58MlT0/UxSDWMeOnADYI5JbseplRs0NX
BX5Tv46T4tIMHAtwBUhptCRO8ycPjNDi2KLWCmwUTtQxWNVCoxgQ4A08bd66tt9eID6uYKsflwPc
bXZ3LroMdGwuCTwSXMfxLA4sS0wE6KuVf6nwJA/szjQaj2tZGro1vF5uAO29XicMvT+q59PW/gWy
/wUzAX5PIwGkH0bIgTzeyWZ2Nyy+EH3s1FS/8gpFUADxaK29pWDNn45npSLEtvFUg6fGLo/7AdfC
AI47LuzJLG0QSCblamVbEXDLhEKZRi/SOavQ9g9uRbRlUHvttAQCijQ7cXsMiZ9dksgw9asdA9v6
stDCeJWPM8jsbSclo0qAn0SqCZGGeNIQehNXI+LfbtP1PS9ICtGCRAU+IhSI232fp0N+Za23slU/
IAWuHrmtw6Cz1DqfIwbBrG4q2+m4aMjnvWMrnHfkYrnTnVDoOCqGNXh3njKdX1vlPyROWXzeUase
+B40tLxCNFjbLfJ79Fb309wh9OBAdpBjD64AWeeuWLnB0oTdRdU652PtYscK6k/EZI1+uDAoLrnb
StLGJUqgO4r7PKfH4QjDskivYmo3m0ty6RCIvvZsBBCQLhrQl5sd6nIwTwS48YQF2xIlWKHv5kxB
6WxfrfFoO36hNTprrKj0EKsjF8wjPqY1i5UT0o63yt7ZdGhuWDOOC7eNF5u/KiEUbfG7xVpTxqO1
ZTDUx1o9F9wOTNm4hoCODHZLjEuPfAW8RTjWCWcWBN+8T1ChI2CTDRcq6xLFDL2Dbue8kHEcvk+L
+OPucJt+mHuGWz2na2u4xFEcFTXGcyrb0KEIMH7HcUzjNX4/vuk+ci/8WC5GXkfaG1WLFY2UoFr/
NZbjqlzLC0Vq0aUY+7/7lND2Tn8v6qJRtY3BtFBIai7XeW/klvnnHfTHx6KUJookqcwUrGTgDy+X
zywdUSYnO848OpQyy5ISBU2EjEA2yV//7//6NwtK+Kfjkhu3N8oaJmdIrAv67XIBs+w6nbML6oOa
oC4gtWIlZilJvi+4F96KNvxixST2XpKmhCD90nVu7KWwUEIwdjGPNlFRg8TkmFbuMLcV8MZ/QMV2
DqD4d6Wyts4b1sprO8x2GAoBpJvX/a7QcLM3vap5bUnKDgUsvAC4hRQerAWW4iLfp8vlqrAa0XNT
dGiYF+ebXriWfL59V2ZzdmKqrod8ccYIPFYegdVgpwwl5AORciNUGRhgRXAE+OwdS360JJQFVSEH
FFbgrbXXcFr0rzvzrHl+7zprSenHaRLQidNCoWnWjQgXSbPg0hIfC4pkcZVsDTcrhCfqalnU3iRR
AYWHyMjqGHzCuuOXxyvQsQH08yXjE5bSU6X4g+wW4gpUiqHfj0a/Yg2Qts9aRG5wbJSrd7SHZ1sL
XiGmfvmuoVKXMiZCsl+O3ODyA5pd+0+YU5ieAsz0RCxIttdjapzadniRpUZl9Pz72o4II35YjKTd
GZ47viJraHRESEWW/6RPC0MjGsVerMyioSCPXFj5rmIc/sZ4cFhZtChvoQ97EUmznC4/Dtcjqqhd
cq5A7+YjUCK5ckOTKEiK32faZCpRmte4NC8F+GX6E/JQr/8rJnhoISKXuk5+Qslj3GQ+HuPIHo4Y
CwcIezulxv6tYtPJuEIvVIiUEYQBv8QWyESEn0ZMRs9nXdXt7WWipVHY9sdaGl8qVKVlLoQPnD3M
GKCBJSATzerSWxxLEadYx8CDHzn/AYPqe3Ty/jxd16dE4arLTVmb7PYp/S4IODSIcEGGHAOW6bw9
EZOj0qgkvBLSws6w0AiU4fyy0g55uc+vjxO0YpzUsmqmIwNElQNfZLEF5YV36uBKA8czpSKsHLYj
Ws2R7+bDm/F5TvP0TTlhia8rYE0f53XyrXVbksOn6f4LESiRsBF4KGv5FiZWKmU9IlJF1cuDwwjn
gQXW3IJVKQxZiD5IZHI7P55MU6SCyvE0n9/u6Z0NwhX2sIr4hUAV55b3UcYny7m6K2OM0Pmwy4IV
/2djMp2X4z7jNY5FGT5j15JBG2QclNw11p6jzvGuxzK7AetsjBy01TyNJbQFeGQkLGA6wOBJb1aP
vrRBDPzDwF6ROr+fOrcivNxm3bEhcIcc4H8CXjolQSHQB2a/+YP593lZlH6BsehjgW5YsJuomBUX
Y/HUHtDYobA0ddlFAFSE+SEMZfJsWdcdqL3LNv66N+ieWqE6bJEZ+8cNqtWJrqbJJOsW7iqVFyZ6
IHJ8khACaw22ZW1iaeWBCVPAM6rRQ97hEIQDvzZtVOUgI+UuPOA2i81HSy4yN3hTOVdzFVuYaPoo
NswmD70f42LNKnlqkZB1/eeD69jLra32kgEsjE7Tb188mH33WFT9KJ4OVsvwmBNshd9POKJpud8u
37BLgBIWVNSrEW3DHa9TYe4rFj10ou/4LxTjt/KN31q0eIOy43pfeA3szbipFkk7VlSZrNgoYbOK
Mcpul+tfKRQMFzzdzAOG+OjlQA84Rh9jz2MlZmaVHMBD7JU3+6yS3w59/FtmkvcH2j/TBzTPpRfg
ovRNiSdXsKH5e1j4nynIYMzp361VrchnVTqePrjGHHhVA89Mmv/2uL08Tsi219vx4whzJ/8HekTJ
xXVihxgZji7u8XKb31IhWyIkRpNheKUv5VFxvX0mDzG68wb+skgNmYMqlYNyZw8LHC3Bv1Ci37wr
4zBidwFOL04fUxtv3nmd/x1ZELWJ4MacOiGiYhycbMbdQLRME63FSmvXPOO9ICK6gZjoWVrhHiP1
ui4GbiMt9mWl3WCBLiThfKndzdZwlXM6MC9Gp6xDPFywZ41cQ8bu47iYv0PvANpzFJSMqgwHJpWx
ZU3pZYmpKnRuDYtwrFrfgf0xnZxjfoWU2sd8f78c0jTFgJm1C9yWf8G+5NirHWGO3G+PvVLAXhVe
gyDv0lWv8xgUZ5ZiRHvnkHI+XKu9kscRtY5hSIiNfGM34J2k9YMA5CA3mDs5oc9Kc8np62BOV/F3
F2zJjgnr/W9bThyZVXPWIEdgeKrP5mubThdu8bwcptOO/gJytuvJ26SyMl+zCgFduCqa09Pk/xyo
mgkMXYIFgs5vgkowP6wCElXu+PlBCCQ1GMB352oiytW+H9/eT1BxMh8UcuJ9ybyCdw4891Oh0sQn
LoWnycl/DMUr1MST5VGKf3fXtKx5fjDuobFSabsVrVGrc0bZACpIt5loYSLxACy/AXudlad0W0po
iJ4jDytAG4tlRFMzJG8wT4ruf53Ct2ITKL8hUEmoUtLiqNjED7eO7d+P+2+zEY9vb0rTpTAReurB
IlYS0Do/g0mAfY8SkpBgufpARXH2+XCAtJ7VT3QWYhQc5tOphf9lui3KD8YGHpGKoHTyb1wynMTE
ocPo4qYlFQCsZjMvlKcQGyOM+sDThwLEC2FyVkPpBloLwAy0KKgRPPhLTP5TfasCwURnIRpIseC5
dEgAmA2H5jHGZVnrZekqlJORtlbh8MvJ3bG9GY/bq5GTPC9YKT0pnPkP7Z8W58XyPr0+/Lfd9IIV
b1iZbCxeBNXZpVEdOzlbQXrG6055nKZR9ueDWqNB5KoQNrUUazVqHQEcr+/zD7e6SiE3xjEnmRxB
VNjXZuGQ0uQ8OGgB/RklZ7xnruxUCPbhpI0qu91aIVfEocAtOZ/7rOmivHM5EEqO64luWIuKjS4n
H0EAZbl/+XEmLwl7SSDeSLxDwAfKLbttY8tO57M3jlrl0iNjATixIioT0sS9GWgyzxs7An1+5ejS
7pE7sveLUkhlQzlyAv2n0eNqDgMp5/U0Yqby4/WsFiGU9OOsKR4x1KTEKpVyha5ROFgTJ+HpeKcN
lwkVS+7AMRs+H3IKUgzoq1ssBwmbcLjYWrFmSdi7o6uxsrf2jx4rx5TtJaDpIS9iJDvOi77w6dNO
V6PIbllZ2xjKThcWdGSd3k/FTmml4uVzYYHcaFRNaIK4DUGXK05ZGe14W4zBKsfwBspDfwydAICA
eGHZ1YF+E6LY2MXmxwxp7X2IIWd13XDzferJJ7EPR1cZI0Xe+MTPmI+WxgL3qJLYmw+bTqGMj+ZI
SH6ieE+Y8aOrxhGjfryHDeYusFVONHdjfNRhmuGFl5CZck5MP8RHVEbvSoHdG11Bm1THjdcHAE4k
WIkQZP9gvDmUHdOyHN/OH7qW8oFGmBEYIOuBBh3/S8D+yua7EA+bMSWN9fq2IWBPxqGLbwE9jk5g
WBexl3QzuyxcrA3bbErFggf8mKMhkMQlJMPdeQXAhFwbag/Fxmbs4yDsvy/htliPBtBoIKLvuVNK
uXMnMn8UNbRzwlF6/J/9rS7IR1g9RxbPWoLJlXOsm8zTWG2i90nLovRyFrR8F9D4esKOVX+t2kvm
JddBstpOeN5wPASRvo65F29c+0GRsyHnfvy7jCOskhF8tOm8e5ntMATgE42wOJsVuAJ2cj+tb087
2iIsd+htnhx5AI/TcD0ecmSxXOt+xfQaiTkn8tDjPO0P6Qos3kMihcdjq9OvQ6PZxHmGmZAiq7j2
/ftMVgm1RGHB43ER6H/ar1R+s5AVseuaH+c1kfnMUJR/Fy2KaoyQf1EkXVlRBK13b9NVOxgPwFii
LCfEnGbBk4gTOTWwoZuiXU/BoqcjsOnrKsUdbILS4eBwLxt4MU0z2so8GfXidl7zr6CxIFjIoXLV
ERKDJWsEkapXdDTEVgfw+cfL/TbPHkND6tiwOlYjL7v6oGgSkQqiYlhrpO/fwdTHXlQRrZoI5s0L
s2yMrxQyl4UlCEM88mTth3UBCkkJFFi5GH3cV/Elo0K1CRfaRvPNtkBqXTmc+xo/hNIVLeEjQ7ai
DomxqB1RCy+sV3fWLlwOrgMXptcHDkLecfq7jTvBv0v+2FVK6n3wgNGw3/Vp/gcgmt7OOxr+YeO+
Yh6I7Tvmc7tOh8j/yEM4jsYaM35S6i2DtwFXQkPcqFiBQXp9atyOlqVWrNTKqqhpygLnS65GqSyP
K5St+AsX/8NuPoPwjb+xdiVvbnuElAZAH1jwIe+gVtr702WBChxbkn097u+PG/bA2j/SQVEhDHYx
T8eT+fsUR9MSsEONizurdQ2vExdiGDudQ+Hwpx0OBbntaFQAtE+RJnosqDCvoEun83xK7bpsyKHD
1kuMhZZ8S5K68WgBlHE7zUrQBEYoazcdZTkd97NuSyAR7lLBkllXHUcdl0gI8KiMU4QIX5uX1ont
4gNkHfv5fiOqjOOYpjA4CtAtwfOmDpcPWA9DZUGX+YORhmy+JiUWaFnjShSixtzqABTPj5OyHSqh
pkOqVwgWeXcONAdvUbm03lsCY0V6TAaVZvBn1F0Zas1KDWRdb/tn4B1eHm/va4vKotBwhwJSuHE3
tYJpJnE06XTEIgDTbUywEJD8CRZyVKECsSy7p5NajIZBAOU0XBrtcHA7bP3rg8JMVAY/8+4cN4wI
AjiEz+6usnbnWKCsUND2XH6NIJPrkeWY2e1qdEU64njwzyk4PtqJePzDijsDv81+8mELAw1ODoEf
wO0F+OvmXZJdl4ga0iqK9XuQG504zk3fc+8Xfg8INfXzSby+HpTfb/0HYA3h71DgZ29D2b5bvuiD
jyBveqz7dd7vXrCLG3j3rjQslWXrGpaadt0g21tM/LtR9upamZTr5cHed4u4u79cvh1Z4wHK6YlW
C04tQorR/5zqnKsL1zgHCWoGT6CvdhPEV2cdbQWJlCsReGIjV9eACYn/eWq2Wyt65/FRAXgUMVFq
jB5+Url7BygiFnypyX30SeF/QtK7KNv0J7WTFjifwf5KpezFvWysVKz5VzrlV4QtAAMgWv5E2Ust
9tKsUBxhnBaNLppeg0VTDxEcXI17JXKDP9UICUHe6+D/mP8DycgVrbv3DpTDuanBj3Sgo3dtnGwi
gK6/iTlIv9d/uPXUCMu5olR+uBo92cDvIjVHlT4Z/O2N/EmvLKz2btJ+Uij8UlXec+FDBPRejB2t
+UqQLgyM4F3RcSGXSbv1uhGmZeMyAqnx2rSw3uN9iwiVYBScdamgq9E6Bs/E5VRKaswjraL0VJp9
gYVyCZW4BAR84k8G5ZPG+yQIMz/vVQPTpJ2OHofyrSYI+gPSlMcr9FsveLhQNtb5bF9YcCXUWHY9
mdfWee+As5yJvYg+L2Uj4lIb1zNqHv5lnUH1Pp2NKDiCKn2rq93rvoKDT4akikEkf+pViGIl0/1+
hQbi43e1QHN0QwQog9isOuLzA4vTbqCAH/fXMj2/uRTDk1ECMNLYfJ8QZAzdpfTXhUvdESYfB6Km
G8N+gluMSAXGy94fj4itoBYIFKJOpYV33LIDCNNfzqXRKmf8U5rA2HoHy9d/eFyNgU3gCfudvblF
uR+R8oJl+F0m/+Nv/74blDWU3oAANhAY+RBuJ10IU8oputV6pQwcgGMNdn2hcMQorgQjT9zEMr9N
+y9gh51hT7OJaZmV7Y9y4vF6iniz9vCUOxSVBoiGz4rlgxtzD3gGhhdO000vYeEyO06Rr/Ux5iHf
pvkTFMmyuz2UW+x89ra98QCIbngUsunowdNzUeiUsQSofWPMFcqBjP7ACP/zx/mYxI7Hz0VSv3SA
IMxO9+ltwUE9tqkivQ02EYjQsGIme7e6+5j2ykbEeUJc13KXKNCH2L9Zk3KlovBmXEvX52U/Qd7k
BUYgz3flKhp/DzyJmz6jomGNNSvvKPll/td/+7+o3/7lW9pda30Dw2b0lreXqlbssqb1jayWWPi/
/I/f737/39NfNb7lyehAFNQ0ywTVADgns+LetqW3YDbtP3fqLjvfUbHtee9Q1KZEStrCdyNoudmj
ab2vOIxwXC67423XDsqHgaMz8Nbmx363Pyvfjf53jXeHQ6F82cScnreXf8CHO/XLzv+SLeazuQfl
o+qJaQi1k+rij/fTrKiQNia8UanjUGEc5T497hflkTb+aJnOmfkstebvR/o0/MtU+LypRGtTQ+UW
Viu4CeKwSmVZva9YiWH++bgAePeGg6m9g+FL9HRrq+lW9+slxn642Q6U6kB1CWDlKL8vtKrrSLGH
9+1yHHaKMhPlnEJwCsmXMdcKURIrIgocEzffA9ylsvjGM6zYVNxmZxZ9wE/l88lX2slLoS/H24Lq
2mBUygfRO9A2QEBH9KUc2w2e1rBAHtIYVCoIi1FcXL+GkeXmFZUttCVEtkueefOCYAZZD6EQddWo
R4Y1Uvt+We4rBnyWc3uPddhJ/YKqh0VxEER3Bz4e2vmvEwTKjSJzRsfxUzm+xjd/fMbjjiu1gK3o
fc7n8h+P/RqN/YTZg44Bz+8RFn2lXOHov9v6+cdH5ccrsXaMu9sfp2kteXucQyNcD7lqPb48ZeGi
PQT5tnRKgKBaXjQPV1S3YnTc96BwEuru5es+c6fK5bw8oKzyovl2lX+Stgb/fJiOhsLu1yuMsJl1
10bUacOuuufXuKs1XhAPEhRtydNCoH1u93K878hTVQxY4QyU6ybYP9vonY7CwxL2j+FD0kWM9PTL
Z+pmHU+BczG0z2dQFhpPiovoEamx8R7lcnm9m2v5tlt+PSrbELXtIlpmow8ZZV5UPncWHn+ZnSvH
Jxi7oGxa+J4bRRaW/g938gKhUGLLBYrH4XtimDW5GrmvsFA3xLYuDTFjVGFacpk/jtgWRkMvzvOP
5Dx6upEh5l19Te+Xi/EMjydFWFSeacZfWsixT0Jst6LqM/06Ku91sImGLMF7Uw519LXNiltjdJxd
iFmC8jR98zJi9a4PK32CvRc4aiKGSsbHduoO7EXGYThfttpppa/rOltcue4BWgm+jOIHsCKimZz6
NbrZoqvhxwQPRlr/bvmbBfADuVN22GZrlMJnKo0oIQ9rKqQgyTXtbwAv60wC3bCofZ1qK7/nl9tM
ZdbD0I6JEB2vxMEmomHUCQpaHtRhVGJEiSQn/druqP2ey8XitbDtv/zxr3+Br4c/aj9a+D86Mujh
GwxY1r6r/dEPnn9tvBHt08o7Hv6U9zlr++y9tbbcXetEq3KplSd8msJTBzDIS9EGhW/htevTNQLv
W152DEXs6ftWds7JES2bGARhpcLDbjHCpdtpTilAFJhlH/j8aKYfjm9H7Ul0fmgrYmaWpabThVIE
+K1y5GnRj/23W3pWGZ1e651+zL3TfroUP931zpyA7srlBAVzq1j49aqcf++591zUNL0bBbC73N52
s+IiivY2DJZ1gYN4v0CH13mvGSSBTIo4GZ12CENwCN0Yqh9Fb4++fx0x6Abt7qWXWOMCPIPk87Fg
e+urMR6UOHfvB56iLKi5+ZVTffAey6L3JAAq3bTq5X4eZ7yM60zPncXOPti3jAQwcJSfgQCPoSpF
Ep8m0ve23Gj/jdJd6QxiF80kE7wFoQ3YNgGzvttZW4dMbw5iYMnxfpxOFj4VBxUlubUV6EW2NLF1
cG4ARaiXkFUiZ83QR2O+OqXxf9EmY6DfKw08il/KcjNXPcPoIPPptHuZAVyBk45UCD8dDsr6W794
tZNxxNOUENLEB+4qEWGmZzgwqCe83I5qYUMvqwN6B40Q3B6nqK9mC0dlKRYrKihosXkhN6sS0YWU
HblV4XQPWy/pXsUOewgBiAm8dsJjybBIKepwqyYM1YKHhcf8mV6VLEkQQExqDUzr/yjHedD34GMJ
0TKU05VZf4FwZW1n74DEOC54ernDCQtLBzlTjgYNv88zjQ7hhWdeZFF4mQ22f54FXI5O2fj1PWW+
5qXpvWqUuorx9MGYP9jupBy4eJRBcN8CNhF4aG4LXaysVK07EakyhHodbIOrYXXz6zY/YTueqYJS
IRekp+whKuVLTe1vfowd4m06LlqhyuiXvtida7WMInFXuXou7or6PenK/4YVff+h1+pVslqqXE0Q
Lja1gy7T8G2twFq0NLriWRQZO4AHZJLQVyRQ5RcTeQsyyzkiADr3SVG5Cs7rybzd0QkmSIcPnUC3
sY4C4f1soSaK6FGzVEK1/bRWc28XYlRsgFLOmJ7ReQbMkO8QDrnetVU1oX4f8sWSTeurI6mljQ1o
jD+7IRiIpBpMlajmq1wR18vjbSzbRimmE60ttbPBrcim1gK+68st+45Fz4U36zd4lsvj/G1WCuHG
aOWASHoKpWR7zLLyXiytpG5gOiI64hXgy/z/4/nBeNfvqXkNZKQ2fplql68eFjURaJiNcg1i9l3G
uC5lM5ErXH6yZBSZX8UsRLbNz5Cp+NyJ9j1lJX7hLTOeWnkqcvUC0RjbivgkVhy73K3WfUyGoiAB
URVcLh4wNqJkARFbgaa6PlBuq7cc9+QjKZTGmBOilrk2gQs0uq0FphShBy62xAWbyDIPdei9TiKe
y/LsIOQ2VskC1GK9S0T+5JC6wjq1b9RFPbOXaTnuFVFR+eq4t8Fb6C8SklwRDJ1fBz0K9eSds523
jGOOcpxT+M+rzHc8NJ3f+sazpGka/E01BDvflmXrmG7zdvlBOCbcYKDbAFVdxRxvWgUNaeTBYUJO
KgsT1NCEHywe6YlnRWgNP1VRxmrnGaHlcPxOqACvp/kTW9JBZjlDApv6yBKQU7sUVi58d7sUvQsk
kRZ5hj9HvGg9R8uGS1HebjSSe8lTYohXMCCcZo4rkr/w+j35xYTMkpchVe3fTjXk6/BFkR5GREaL
Tgud5p5FqJxkFTY7DCGPes92k1XZlbEOJY/O43qY7nP24fseBTORscN2UKo9KO9fNC6Ls4HWDzd3
Dm8FxaPCxqXfHsH4F9cZYaX+drmc/gYzOdPz/oiK37ZSV/n+K1G3h3BpY8BYP22dB8wyhDGn3X6i
ISAzmjvfFV4tpWFaOnBD1VOiR6/cddC70uVbwUQBZ+2yYTb5zHtDHrYmeP491PG4D4uFFfZOoRD0
JddS8JEf9IHH8T5By+7xpkiXQtjEhHfMeUIsWqGRwgSiq+j0QHlyn+fLzRO/2YOpA5urCfhxmz70
m43qJt+KJipf4esnAUsP4JyNUFV+zMsWwbMoAEBL84K/sqcpm27R4rJtv7jz370S55t/qm2jJCV7
/0X2z29ImJDegOqc2HSLhKh3VymyQ7ksv0GYT57Oe21oYVeaAhrKLQaVzzID8a9FG2q/CY1N5ZyL
Ap0KUG+46Rg7v3Gyjgi5M7hZ7DJkb6Xxa9vb0A8HG+z/hcVVDJ4X0vZhlif7OtuYtUoii4BDxrpv
C0Uv1J4f3VbBtFzjfcxo77LZS7cgRlff0shDDGpGUMwgF+uiW9tpoMXQsSIAf+JxTvubOdt9cgZ6
L9Ck2maF4MMBhVCUgjhd8C8cP0zRGVq3NvgjO4DTbXoxOue3H79iEOC3H+dfkytpR7E7dN9E8BEO
i1vJ6zTYVl07FLISM+hq3Je/EQBdhehKrrRvau8bO3HnPN1AuODzus0Topylh8saGmMjSvIltikG
Lxx20v1x+3YE6FQI3P02345p0Ke2FMeIzfmDo4hQkch4a0T9A5tJcbiiQlQsE0LEdcHZyuPHFbE4
zlj+f789DhTRNe4H2clsdqRJC3xxTus2sfWyzMFQ9jofWlmwQC2HhG1twx3Aywh8TqXL0wGd8jnN
16UHUckxObFvHAeoTQOEa5Z48hja5RzfYhzXkzE7r8ZIm1/SA2LppIb4qCGX+oIiQ54UBC7mbU4z
Xtf4yJ2DjVK8T8tx2eEIZwCTQDPrBlMpkkdUCjw0OSHeP2vVGgAyjXv/WExUFrbKisUQgUPtYMp1
GpN0rOWLKoMXRW3ns2c3guVE2a300TeFeFSDk02SD9ZB6Gestfh0SYgfqm0Ji+7d3hsnPaH4Y9qD
QFcdThCevRj8NKyJJ2/PPAKB70TZq3g6Bba5sMf3Zez3j93juONmtN3LxZgodmpfmmAthiChBcAZ
G1YOrjP47fR1fVcfQd+6fUKgmJ8RqVKQuEbD33/M85kuAKarLLv9r8nFjWUXTN2yQ5BoOB/iJ7i7
XLM3HGGwZs8KuvB6TC+9q2JXZFS1YSCo4vwTZ1gxBLVKu/SxlkM4Uqt9lk1o9NzScqkLr4ZpgC27
E8Bcn+llOBJcjl9IdkGG+zFrAqQsKqH6xzXI4eS8kEerRkhbNO5c6h5TV4PF9aGxrXwsxhg+w+U1
6XX1ghQC77BxMH9cfj1CuB6qRJJj5nhsE9tEWGjO9fVQxHFFSCHCH2UX/f0LMKzAeIBM1HT7SpsN
YhIMpixYvb0cD8fdcbmc4Dm52fYQZT4ZJZM+tF48ejAza34Hl9v9/fJ2gVFHP24EygkYiRZdG3Mi
aLxikff/TcPrcfj8bdaF6tjKgXe16wkL5f35kpP4TUioYQRKGqa0O5o3dtybRZn7d1ypXLuQ9tR3
w2MWmHkO93flWUp00Mo9KZr5/XW+v8+gYKEmT7EYhs7xDnbwDxxDYQHkT+nefT8ujykDQIx804TK
0Y6GeQHn4b5j4NgrZA9v05WkiLTy0szehiYiY5ic19U6e1ZVZmMjJFu9thHYBoLj29mIhZeTIgGE
OOmxir+0+NVvCHr0OO/vnJIlCAKz7eTGhjac4eflF1nd/LgYOYstsOcLnlzuLoxebPxhjY0vHJD+
QvMGp5Oxy9LnJUz+YQ0CRmwT/itaOWNpn+ZPEtKAEpL8iUHanoigUKV+hBGfLawogyvsbsmoEpqj
AgCXnA2h2d/xIcPEvOPH4+PfzWL/ChIGxnEnCVZiwWRZFqGpMHGoihefbBpDO6Hxn2NtOwDpmRjO
PqIlcJ9e0gJPTpZcQ+ApE/Jvwur4oSm8cSjCsxMSZ/8wcsYIDJKBmi001EMYXuid4qQjw2APLIam
lUNY4GanBEB7kuKR9W73LZYXx/zcM6OB4li8nOUhFAi8gMGNV8ed343X8gaA6Nij+X3WJH7l1F9b
rWVPx/PV3AZsFRe1zt+2FnUGuBTOVAI7N2sEEbrzQNuDdTktbO2tEYMLPhzzbu5fipqRbk7vDFcy
TQj8/JoW1kJCYnLYjvwQC2uVH698e62X9vz9+AHWMFgC0FCUNuUdu9G4Buk08iRw20yY7I9CF72K
j4HlaZ4vyx7MiCQmPmoMJ0FB+XNVsKovlEIC1Bp1fJwvqUICzjkcX3FIdtpGKktxRqLMW18ZibS0
qh6aOO84h52OLm3ZCh+RYGiGIbku5O70Wsbw8nonGE7GzRI1c4HRQ3D+yuAwcmdFYLJ2M0Zwg1b/
kap93G6Xt1QZPHCJUIIY4xyfHJ3XeQJgayWSVrVxYU3vFiYHKiaWc7VajBiwEobI/o7gfxb2KTDy
uMFsG4XQ52xfFfDCr9P3SQG2QHZwmwJHQsp2txyu9gCRukaslGsT9m+J5SvtOsADTRaUmRQxYMpU
5jMdvif7LvASq1D08dBoAtU7wjRgBjTfrQGY9J3UlRe5sSXqqBYtrr45B1AiuqYQcVAUh3aE6omH
jcJ4zRsOA0gHK8U4HowQVuMYGD2LtXoO8+XNWC7vmBH++Jh2MOIIgLiW1GQntKpqcStruaFnwuAb
zcZD63hICFkG7Lod1iko8V2pwDp3ixFrijLFlC5+vCwAX35mIwZPJB2UEzdSOCBzrKPnSS2I+TKd
gHGmN+VehEOJ3eZs+7HGfDkZXQc5uvmQ1pZdXGNj3QL5lq4DAuK/yW0V0iSpXMA9cnTni5OKSqIe
jVAxlQRr6Mb0haB9QWx9On4c75w/mPb728WoRQyop2/lyROpV4GF8uo2vzwgd3p4oNjhcEJaAYkA
v8uu04mCl2GuN63lZUyvcG0LxCHT4dfHckeL8cf8ooY1O8cgHU6Nq8pAChO0M+matBzuwtgD78ba
U8AtD5jIAJUXafVejkIWdc7ssJEldMEVDmviBhkcx/EVYr1w9dxdZdy6A155mlzrWZusoBB05v1y
QixRVDIU1Ec0Qe2wx9a/NJa0pIAhJkPV8jOe/Mfx9KUdlLg3sPjqxiJKGdv3+PgAzn58Ons2E8Qf
PS9kbR84mi+h2uoKgaPN0zJ64RdiZ2ZpxzBaD8la16RFESU0Q9PYL4U/GdnwmZ3/SR6wdpUWAUvm
sDg0wzIBMMcvZkmX29Ww6KxzxiAm8cCrYeVLTQbLfYIAPgTrbFb8G02GUj0BmccuHCS+l8raL8tF
eYROEvbU2fwcmgU72Tr3D3N0pzRPCNXRIGRZ4dg1zZeOxSGaa6P6GH28g8aBzM0aU9cOxNx4E954
vRYO4YBFADN9O8tq3nS5wSDm8xm6zDze2WAs8qBXk6DMlHH+taAGRoEuy/HFMKOxwHCf0kCv0hcv
U9xYL9nJUojLtweAa+O8IWMqUqngWiioiIi2D+eU055ddB6/Wt8PBZm5iucF63Uw/UqnrLEvVtWU
bn5SNY7ugRlVjpEqqiuCIqDH3f6VOikTARDZXmtc3LjzX723aiq8NX91TozrpZWWjiYl/rneserS
C2Htj+OhxjU0XFS98okbUAX1XLWt6HfxbRkOxGtRijboODq3dIfReb1ZUkmhhRsvxBXBH2u1SbAS
E0Oa0htjs4Yf3dBP1bGiX2/dcXTZToJKzASyv24LsxO1u5WYcLQuuPEXfAJYavCulHU69igREMEb
neFSW0APRxmUpXJh4shRBA3BCbKjtigvq3CnUJeucjNRJ0QH5/ZQO/RjZQ9DmtYgWIDSEMw3lfZR
4T+X7CHWCi3BBWRC6f1plZieRYJjLajTblE5zlFIDHQA2XRzt3hhAyQf+6ArbRxBhDjox9z6FEHD
LlATZsAUasoLGlrBsqXLI2pnp1ATR0cFSIN/dEjKRgc447D1FJ00rFHCsnf7/Li2EnTCo67I4VWb
X+mtVf7zbPP7U1bgrhIYretSvux9etEHMRC5QWwInffsXSrieJBc2yJ72PQ0NMjvRKHDfnos86Ln
ImmFQkkOqyNblIps6RtfCTaBWYPFilwog1dAZ7+tXZIshNpXlK2KP1GJCV/rJ07vUJkCD/m1TWcY
Bdb0hrg41zlQVJrm66MWSqEIyS5QyYW0UIRBopdx0IJ78RaxScESw33bVgGkbBNOCjV3xQhIVQxq
M24lZoLhDZSii0sRnF0Xsy+Ux6EwwCAMDxkCSQFoVGJiXcNZurrOLUC5zEFsBmU4mxpFpR1a5y+A
xxy9LFcqt4GnBIuBBSzKfYnNu+YSZR+KyTmIua54p/2o9uNVYkDeevn8YhOQU5WY4Ubn5Wb8lMon
nVyaZw2nH7lmVmgOAqHJYC2zQqH1ro87a7LOUaWIPmk/Y3tMQyXmtkyY0tpufPK2aKedhLFGBpRM
J9jo6ciLzLkKU0z62gzImgSuo+hC79VXN5E6Nig6WMP12ahXX/oBnO65ElaNK5RF7UJAI45Brfza
6PfL7fjbBYdfn+bXe646ugkTwcnSYVf6w5wjK/jUiikRVsHIYSsbm3+bbxez0vPb/X13e5zTcdHe
LyPqLDq90TqUIl39TBuNTNfzuGjKCMHt0eZdOX2Huaf5w+zr9FhEL/jGHJ5IQ5HALrSKFyU6Uz9F
Z5og4Mfv9X7Tkgiirg7rRxi8j1fyWzqIJRJh9YCt9s9J5RWt3cXvaG/KqxL8gEw3WMfLnDWlXib6
El/an/7wb7tq99/+9uc/JefDtxaxuuMcb+keKph0L5fP9LcMg4rIlG4CCz1yqHVKhrTolwf39eCL
CCcWUn44/X6xUqhc5yZS+JjPD1i/8nGzfoz+QB//+VLZwOh+flw7jGxD7kbRhJQ6cRT1Gp2Wl7Cb
7svjqOymchTKdS0vhgBHosk4SGQikYSdbtKtyVu6EVvph8u5nnBivXKvnR0thf+vcWkiYskKZNXu
NiNURert0Xrc8aL+9qyedR0w+JA1irK3XtACGVZ3InpPz4TaULEUOlMfQJfvDhw8JvtuqGgaZKlA
51QuvhRntVpJ5udfXx6//QZHxTXk5wulc5QtiuvrV3MHsWcAVO/i8l5rtvAOw/pIaCh0a0G3cP0I
34/zHWFcjSZ/PSjs0ItXIooX1JWhFj2+HtU7rQS/1k4YevzqjA3sUqfyEgqWZ7hY3IyckIqJeZcg
SDfY4RoH+aZK96ZILhBk+e3boscaiFMa/3qFrPv9X9kB/N1/V17T4HNawxhFZ0PA2SPKafsiqvZ6
fSgD/KX8euUJ20YIWyufUiYMiTf36zi3o7RgUO/Tcfcyvd93meWPQla7lvS4aMMZCeb/T0YFKAzi
rhZL+GTFPdKjvLWhZXkwpwRG74Ytis395MUKbORL2Wrta8XalykvD6hO5IFVypH3UYbDeoX5Jx6A
UAYeui+c0O/+OzOuYp/UnadkLRobfD4/ANtggsu6fcDU2YsqsN191Q4aVBMWKHjJ2F4UPnDnJIAG
Ce8+k7ihcxYbJOyj2q818KoZoQf5avRmGnKEeEnIRjJTOHZ7ue4eV2gSuF+4Aw7zj1jNAtGIw/GW
W/DorK7Gjb+zLTC/rY05LhGNRfi7w+WhrnkUslI2ZECuFxul91tWN0g517nCU7pgLHA5IEahVAUK
hBHxTu8Zuo0QvrKmEMbezgQdsez+f//zrwrB4I1WuTNUjk3oVy4/davDV348KFtrhWU0rhHiJyvL
tn0x8MRMvVwsu7X3Xwi1gS5dl1SjOMTgM02qESYutm+N2zhPOTvx9so1wOPLJnIUVVFZ976l2sVd
iVq5hdJ3JfpV9u+NFlIMyFF8WK2MZEWG6zQGgIpMUy8JDvcIwbsaxmdFfbTgAutrRJM+o91awabN
GoUgOf4JncLHuysRUR5OlzQkflrfFv7lJzgfGX4bhCOxqbzKxtm71hWc7rI6IbfG2lNanKj4FaKM
PGIGB1oblXzWrJ9BOuqIKdV4rR0TdLuddr9etMdSC5nVEdL6T6lQbCyaDr9Oe+38uqL2HpOEjbBH
uMm1GodYcMDc63lWQgrD6LNpFbqJv/+rJtYdS4FLPzgTDsx8Za2VZ0PYCZTmR80bW0cs3S/p4aJ0
Q8JkoxxF3siheKVyHcKSiKBAcAGkWRqUm1/UWZlk7ojn0VOoIbtG/ZF0hXjICEognSMrtVZhNWEF
mWGhCYOVVFCoyK3Of4HdOupHmYRErOROTlT+W8ij1dX1i7wVUSB0FdVqtcKF0yrz6dyd/MWGhiK+
Ghqa8XiB6dfKWvq4KMBIN0o3sCUvL7+aTa2wlduk8uDrCalLKeNjxOY6D/vyussYboET0wlwXGOj
Xc6nLzYBDamNK+wL3+AfXRP5YkUUluLlCzHp8Teeayp3/HG83Yyp+m7O86awaOu79oUHwwHDjZSr
rMuQrRoZqbaMgd+uk+WhaYv/Bw1NqV3RlEbgkpER5ZhjRShc5Kc0er1DZ6KpuSUf1r9Aa3BrA5k/
jmvGjOEVtY+79eOG0NkLQCz537bVEic0UuE5gNAc36h7DBKYFp5CacIMEHy4PYVhdthS/mF4dl6R
vDIdSLWXxOhF6TOVUacmUsLHsi0DI4xcYERSCy2uw+XHWW3kFPhm6DDySMvHcr/wnR0mGEOolgWL
mnAcG2yr3gUQSRazZuhF0o5imaWnfLCZfUNnnJ187PDV+mfcLAaUNab4pDRVyE5ijFIPZZCWpL3p
dyzahms3gJus67XuGpx/HHzyMGJ0gcln6bLprosxzXPDGTcVcxL8/DA/loalqSSGmRtkAKad3a7S
OViHWE2lN5jUhlD//XL7D2PH3o1Ef1V6zUYJUNatdqaWvnWwLj+BBDc0SiOsw0HDp6T0xYk2MZBB
NSevgQDODpMtk1bgKNwrIQt6h7ftg2m932DCHzSewUAfDUCU8uuDaHaCjL2Eh/XMugxMSOd3oXdB
JwkFbrAazm8AUS9ikJhI+BNNrwLoPZJDdehGRI8KGodVqbdKU7EPFEjfL2/z/T1NfBi6ED2wfmrj
rxUNIp5Zu/rIGuQGuBUQQEm/3MYDuWrGOOjGPx8wBgLQB1PuDna/i7biYU2dRV7eWs8UeYLvk9aH
WsWLM7QzIKyd9An0cfy5TCMkjN+Gso+z0vnYh4+x1Clzd2Ua5BapCnGJCZu6l/3QYkbKLaNbJPKe
Gw7uq8ycDWCn7yIVcE2HcdMeFWBX3GQTFIxwJTyWxrhezyq9LNFM58UnkQLFFDMYmqLRFPT30D1b
AtiqrABAlmHRVZERJbf7KS08+ji1uL2VtgDGRhhcjauXegURBgE/Mh6/L7sF0t3r3yQXJlsMqSpf
CGDzSC7fGIRrt5+O5vQPF80akI3ivUvoW5N4+TFdN0CMdXGYVsmWxI+chket4+NVpGulRCMbxWbb
TTyPPFOleb4NO7LJclm9TQzOKg9RlkaNrp1B4lKZP96gistYVg8NUnIIEUKlc7D2rXuow9P1SPG7
tLtQeKWMI0nDH8ZpNCszF6rsTbb2d6sJYuSvMWOud3O6v81/mt+4i1A5ospTUCUDst4eL187v9n5
9fRQ2KuTCE6Na62BTeyEMk8/mdFHJund5+Dn/JiUjvpBWNsj5N/Hxg7dWR7HnUxepb0AJ/pBM7Fs
u0HMGdJoq2ebrj2UkG9YNl9s6epXKvuEwMYrZqF0mt7Y43ZGSVqjSdutciAkcWRbZ31kalSHZvD8
m9qO5njDsOMOwh57yFLvlq+Py8tJObbWa2Xvh0gMHPrkP1T0K1EE6UFGUxxN1t3gg0yDVIyFh/HV
PaGzPs7UPpumMQrsgQqd585W63w7G+MBU1WQITD+jPIwRZsxJvE5BZgGAQZJNmVxgGuxuLFzQe7I
i1dQV1vpypduCq1idabNTR8zQIys9qXp7TZ9UUVH+vacNIPHM/RPcRNdHguFI/y6b+8fc8ZyHAWy
NQR+YmzsNfLnpn6Q0ilDxJTey3mGuUnHpoqy7gUaJBcIJg1UNAQC+zDtiZSe49Svows8sFqFM+sQ
DVjkw1bkup8bQETHKOzx0ll3gTe8GhU/i9PehxJW1F9bZ8EXQTynJC1cCx/eQ5wDwgoagwXcLIYu
5PkS04k6NQDtxuyK565qdmUXxjv7FB/YIgjZgIPZE1Ts0+3gkv/p6JAw/VG4cYgcfwerP3Hd22G/
ihAESG8E2SmwZKN0S5BuKTG0Yf715xUmSAJCfR7bsBcYIfDCujGP8Z3WJhIGtHEgAzQonKG1jof5
x/S16I0cYyOR6jpXrswNAmgQp+OuYh3o4XYSFdgY0QA7ljF3a7+xpffhYhl6zr6Po3b5cie924kU
9evbq9PyXmJGr7GeFMy2EoeSgQ3q2Wuece3W3hMA3kpvrY9h6goEU7TF50/EY4N8nrKqJq6lfeNv
AzqewCmFq+87AS7KwFA0VzutHwvPXmQKCEDJQ1HadOKudJUKYkxQqiETP6n8KqPMkCr6pPMTqIVf
u02ym1S2kmSs/NJWbuJWeztKme52g+UKJeFeiVKFYq3ETLXo0id+DdB6iI2ysMGvuCpV1Az6lcGv
IShVZBD6pPZzuqPaoUufBHnkSm2up730sRqZ1GQ6+pXe2/4KGqJcZdX6n3Tq9B5aWJDSrqlLEt9U
xmYa2iYUg+OzTF7eAQJ/UvDBuyf4+S1IRGkcIkeuQzjap+yIMmoR9VTr4yJVq2J/nHbPzRSKohjG
JmvkLBzYBcks/BcliNkJ1GYci9rLZkVnpyVgptNelbDI3HAxMF7+c14uyoGVRWgjJAZpPGcX0ua8
VGm9q7CigT/bDmoMEwlNNjdBsTn8jTWqnXYdWy9CwgYFOiwcXs3Cn5aFaMWEYEQ/PtcU23ReumW3
jntqz1lkGMAcmKfpOxBxZLDWuzo0ctKMLyySElZUVl3aLQFL4LbfJbsIMZI0+ijExdNalC7RoRes
jVUaZRl0B7kCXgI43c9bQQeFZwER3942FdCIH1whdG9B+f+0KMhu3qwUFMVDDNtNq5FG43+MVbVE
hyKsFiH7WeDIp6WiyPRhApoDjH4//XpmQZjxfFkfvxJ0cicAVixnrkRo6AsKaOf9++Pr8u2SDgYn
XD2GbITneKc2adf9T+/VK/ZJq73aQyzmrC/dzIutnks7Mr0Hl8rtIqQDXBn0sxecFtv+ZAXbV3Cd
DtSfjF0dINBeLocvvv9kDYQhUqCwpVcCrVcAnkZGwcovybYoXI88/krUuaVSPa45Jn2lfVADYAfK
rKmPK1aRGwthhoLT+3xKz/7pfP3OzrbxRf4AyTrSlLrz3/makhn19Xj/7Trdb4A2SoJFjd0McqyX
VxAoig+UhKrQuoiuHKIiUs2lbbNTEpnGUxOZ1XLVQbHkEgpr3c0WwVkQu706GE+t/Ri84WKdw9l3
IIF6lx6K1S6sZvLLXKgChULj1HOXtubE0x1XSW/9c+RlN4cs7Yv2Ya6qXUOVFCmCfcGVsZGU3WNZ
1Ck0EWln+qNCFLupj49+jETmqBbKyoVFHbg29mWYmOi3A4Sm2U3MFMAsM1caGhF/ysZmRd4QzPOx
cGk/3qEuzAVMBJDqxPA3HD+zQZiYh9x7ZR92PvyW5HX6rAXXA5PV3pSEGEhz+hEKPJixcVMzRWFq
Ju7W+RWcdm7f7fhtvr/fLo83AC5RDHmJpk3NwI1XgmBBi3I1CFUwh6pN8jUZzhDiImhXYnQFvL0K
yxt4+oBR6y4uDijwyiDhzrNw2/5fmjyQ1hijmNEDJ9oIZn8/Hg4cD07zuqhMa/wJmWhFZVL94p3W
2HpjEdoxRY81/WlNWfhFt1y4axG9qW9SqdSReOpoHz9DCC0/4ZwaESlMCGqWfi5nwVV9zNPycNM7
fESrtPMrKk8kJAIVOrOBSJMzV1ihE87AXcdtutyRGjTE0+3is4ltnm8zqFATjJTgiJ0IaH9czhd1
68YWkUfbOl82OylZuS05LGNw2BDoWWzyKBLP2xdAOfFTxjMYKfEDUPWnUw4yAqWPCCH0a9WArfyg
Oc0/N9Kh8iS2jUnAGLDz/qJ92otgHiZZ2udx6GhlpfV5501IkXM5b7Ph84XTdZlJAI2/g9qrYNft
vFGUCdblGvdI5WUUE11qYcIwrsUch691gsPhCNrw5aG5C6OI+4Ekt31l3hwma8iqAVIxMaoGzq6t
HQalPVBqer0o6nioG61RxXcXvk+346TQkq66jI96lQsiI54Dnuv8ap4ynZVL1z0JMxViHkOdKRFV
Erty6KOcFoo679t0ntLKVjThQLSltNDXy59kKxIWSuUqI4raS3518lQY8YjYOo17hOcyxpOMz604
iiQWEUWEIpNT5YMrSi+k9m6ZjUEYyuGmwSvIblIZdCKwnKg/4aIkKOXO9Luh5i5CH2fQywI0s0US
IzOgUxspYDpTpptKBoswmVkJjjwcpz3MKMbaVqWvYBBn2EDdTFOL6C6/+XzN4tAlRtdFI+irjMtt
Udri2K1VlYl52nkUwMFTrNy7s45/kSyTkUyyRLR1ha5yTWuhkyLf/IA84494ldg5I6SN16zL9Biy
PTg+xzNzaqaNqPeiYU0s0g/JqbsIqZv/n64/CgBIx21ZG32arexJ6oVFDXyPkYbXy0m1ieSE03p1
9fHAbFFm2hpp/T6h6vm15NOkvV+P640r5UnqfdoDEgWCA0aJG82oUUwaYTyANK8LIUCUfl48QjHO
fVgV0ZPPZChpIz1lThVrlBUNjacL8f1sMm+QE/UI41GYrsZAuxqlgN+lgx3U5l084Z+R6XlGIA3M
vlweCIW0Pz2M87KccNjzy/02K6vzJ3ozB8lZqBgAT6do5XzeSm2qirSAIWuoqn2UZZ1URjJucbH1
+nEjJp8u2wd3MK/2dPkB185wMjZRxkKM4N4PG7yoXrTziBHG3iM9nt9noyDTCm1IRDjhcdwey3Kc
lBYE9/GIY6+SN4RctGp9CgdgV0/6dsZ4/0iE+CqiN9iEo5BJHmaJWmuYHRXex82CpyZISrnxxRMO
XJpoYDQOsYG9aZUk2jOa1SdIYCqZp2gMuzktynuRzmq4cAAhcxBtBz8wvA1FLziM+PUG6eP7FJfK
BToHpDIx0z6u+MBIb/cjUUhfiKEf+CHOIraePi0gDhKG0AxczYlftmuVMP73hEmMf8Jhgi9ftpk4
Tc9OswJ6wP21D8bw4wbAjEbCXdZwlP3fkpurh8o7FTvh9H6b6GQBeoWez3Qn/9swZ1GUO+i6Scw1
LcQcHXtqlYV4+cC1AjAW3ll6ZcwAqCAE9gq84fNO0Hmfje3UKHRK7xK4YoDHql6us3LxhTtuRAzh
HNTb7p0CCqfTcUl5OoUY5xSc7nSA/i+Ypm1skv2Xhf+H6kwqdEpvhm1TJDiskR8ca0/v3ZjK12Qd
DO6qdGvi4dCDYMvD5UPUeWBr5sflQM5d+v0XYrwLEi5XVFMuuaLwH2bsluPhAWNGkwn2QszrAGpg
M1Txk0MHP1G5KWBaVi6yw4QtOtseIRIJR+3zDsta2xiAr5TNOt4g5BWyND8R+vy0Q9EAVW+fqVsQ
39drIZmRzviIPxKJzELMmkMe6FfIHzoKgFf/DwIko639N20XNYcA11VwvgKemLEDqRRqHfvgCxrl
aDqPaCV4FKNmhm6jsKe4sHF9rnmBpEiiQMSxvWHvmfHbzO7uX5o0qMS2ivUte9tSFlE2Hh/y1+/G
V7eswtMT0iRqR6KE/HNZ2bE7Dm3wfGEkPjwhqGZJ02sL771anDdfwCpPq609wcoKNVBHF/JtwXdO
+Uykh4RgQ8amrRlSUEm6Pqf0ZsTtVCsyL/EvlSxB5u+qrkGIHKwSGmMbgsjGHuRims7oDrZ0sH0Y
UMcqN/Cl0ztpep9dba/SbYYBqNao12VxU1be3TCRldVAbZpPlS0I6QusVoyin8DCUVswNQpo78w/
VVujaeqYtPFZ1rU6gEMJfulBuXTfMuMae9Y4+8cNU/dY58tp/M+0cWXHXxIxfF5cJAEz5SzAhIi1
wXhTK4HS82cKMQ7TXqmNBEoJRO6ZkLHmMMDVMPrjrLB9NfhsX3FPizlJ0pRLjlOawRdrIwum6WBl
gCKRipjGN+zwuhbRBnybpjV0PtvXmrlXK4+48LQjK2YybpavMwBZny/G0DrM92n/nrNppNh2sKzM
YchZyz2F8VWIGaXr8YpuZcKnwpgt+KnwjpAfoEIvPQmGLs0xVLfa1vDR1SKxAmsCpOAOn6yiHIUx
ARZlufaJpx+RUQrKMxLiC3ZcMtCEaw8NJNnHcaHIqsLlvvLkPA/kWj/hVk/aFdaCwUEUsmaBD2fE
M0Sb0vz6Z4oFOs/S47aU1dKzwmqbcdQIFw57dxq1/YRM2NrjQeZomJ8CcVnEi6QQDwSnv7aupG4a
fyXRB6csq/VVDCcS118n1cuOeTJXRVZo5zs1dEP8KRsQAV3UFeEd1IqkGr1nGErgzVKqamPPOTAR
zDtB75sDFAxHp5/B0HuCnEXpkz8BEvBzOd2TfoVwwlCjNYxJAfzObejfZ9I0H4rY891MfsIi4PL5
cc1EWwIngH3MHV8q6yYSwrO83oyP2cfI7m1cG6QeeQQ6nboTG+zWDYbu5YN4jzlRUTpN6TktzdN5
MYfqR1Z5h97mrBnFdx5jzMSUVnlr98Vi/WiBE1VGtcNPV43oRuCKGoR0xLoQozBXD7aJiZ5WET2+
sc8VI1ziSJ4GZLgVAoX3jOOyyz+ljAjrY6fyh7/8mZ1xKLj/mJNdTiTnfVvDNoih54vfK1o86jOA
QQCQxx9oWqoxhXHwoi214sphtEoRZMHdVhtelhK9a9yjQNT+drR39cCeFFzZ6w2iVnBph2xYUcQl
URPUsWiAogDcSSPiT9Rp7hTO62MBPAanXls90LtSAWTJ/+l9h7WywxRB1mDYDjjnzVzd465tanAW
BqLz9dJmRmqLFpWWAUURGMGRiyxcrJGVtotGTyCzleWsNI9hFMUlTsThqAr3QamMIMXgi05OgQf3
q2iCtvH2wY/4aQE7bIH5UtbhW63MpvTx/DnvbVCO+PWPZ+jW/bc0PmEhpr2vobXmOYJVKTfU+g97
iMkIUTypCMvRYxheR9pyDAwqhXAb82UhYM/24v40fVDWO12/R3ZGEwv2UTKNR9Asl8dtrwka32nh
CG/CVLTzM9jeU8Tr4N2CjaEsj2vudBrJmuAIjdsiqxWlehTdETBGGyRYdqSHlIWJtw9xdRttCs4K
oSiUyx98m9WaT3AuhrMB8DYTChFGoZhVtqoG5MsFnYWPHVR5L/eLpikqLwrIOjmRwVAkSu0HaFgi
CdtyVRi6deluv3ZepI0WYO4IXxyUQivN/yRIfPNpk/WsObijn0tpbLPh344fMwTBDBOdldUExk+n
Z1k1TSauDElLu5nzBNIQV6zk2n8T3mmvAsm1OqghjEbYVCgwSy9hJyKGGNXlURfKPovB96JI3+O3
+A+prjCzgKa14l13fsC7foo2O4mipMvH4P05A5hQfTFBQxj2d5xYr2grGYOv1wvgVyP2hy1wyqsJ
QvnNRpmpLKyL2ceBgaEYxK0fS+ZKQikOsKlPlwWtz0/WP5SZWVbD0/52WZbdmVhAiUTLVGK38qgu
E5TkUlN45Jomu0R6poccr/ZbIjg0mg+rcMyTP8/3H5fbN5Qeiv82lL7XPahe91Z3u4i58lHjWrPd
AqthsLUvM44msOYHR6rUzHfTlTFfE8c5GAlLmoT+qacfu9rfWZe3j5SzH31lay2/FyiU/FwzLJVi
8TnZXzsZJtJRj9uJZQ+4VloCL5pUlzJHG+dKtkxQHaDWviiBks4PKTGi1E9HVpW9BgstvTKGZA81
sfawgQFeoZgZrm6+vCrX7yd9mBSejr36cjTOoaLCat9vq2z+GVI0C8SGKYSiZ/oaKZ0rILW13ERh
zNIXrA5gdLr/GbQghIQxm5vWrL1fh8QsmUzJ8PoU29ZPSfCanrVrNhjje7lNt9UlmU73fAVaYINF
tZwWBm9EVK9vBeaDcJiVnEPpZzSbQgmqqQPoicU7v4BkfFYEyn1Fg1441hzKMvGhmOtyrk4mZxyt
LlAMNaUwZhhj3uNn1hhVrHgnDLB0ISI7F5gUYCWDKs1rqaaKMBWytqxDabkS222ExY2Aa2xx3+bX
XNk1SafWf2+FTNLTm+UJSDM3knxXgghNXfr2X/UTz055b00stRnwu632UBi99nUWlzSAESViXnp6
fPRDL88aWLX66yDHwS739HGdbwvEEeZlP8GMH3QJ/58//+nfrRBXSoF9NuLkzp6yXz+XQ647Pzhl
uQEeyyZm6v3bryPlSdmYTdPFooE2nHAyeu7wRdMsofUSumalfNn09JrBl1p6BEWLL/iik7VVsu5o
PufKjgLFUifL8BQaZSz7LjOGSEt344KXMvhanTpSbEwnI9IrPwbDZ8QnAqL3+xv2lCu35Ve61GXE
U8GGzA01ypXv9dSDZv9qJYp+VqF5LoPLWU4iszZgjUztRC8XvOEA96/p/XKBOQhfWqKlrvwgHK0H
wlu7n04RNG3g1HFi7AFKHVQSCgQENLML/eMfFPd1DJR6lfa4QW2ZP521AJhf01GpHoxWZTL4N1hK
Ua7sRtZdlauQo8AmCA8K5a/qTQlEdL6J6rlQ5mEtlrfvl53vLSrC048UcKBL6FroJ8WTzinLxi8b
4d557ADFWavv82cuaTL6no+dPP7T1TdK+EGGsN1lLB9GO3A/JCplTdYNQ6wihatQd4fjd+WM/FqP
vkk4Kxszc7JirnYFhstJhGDTxWSD78xx5QM8Um55nD+Pi7XmSDDAkSsPxG9v6TxFgnEsbO4UhkG6
dk9W17DCRZHyZewCRgE/YqbRRoruSBuCNOjdin7o6IL7FTdlwJ/qnFeEIGCE3QOUTvN0TiOl9Sss
BtIRt7p2/NFkORhS/rJcTg/b7ShGzVHlXFot9mtLKf2Iy9ZzI6p9+AtA/O93XykqYymW2q/N2qma
v36dcrduTkIbIaDRRWwkSYQinSsRm86KEkm83n4dU0sXVjhhdb6cvz6gkJbKbi636/t0ng8K5hoQ
a8VROPBxb2II9xFro1f6FRF7vRqLh81pOXnzSRKNuF3XG5RCQu/XsR/uXgoVB75fMXnpi9Fdgtww
vXVA9kVEiYT90K/TGegqECGhURHi+3W61Mp7DMRKr/h3h1+NPDjf/4tSuI9PtvYujStoUyDzeE6d
t2uukhHsBu6cM1LDV3mb0/JjHL17rwRXUx0QaXZddnT+obSigwrByyfwWvaXx/mu3Ebrvy8+WuPQ
7b8BLJ6D+dFlTFt5i7FVGbghTh5ML/BPdUt96fGyjRLilqy8spAtAIAGQ1ZpHqXm7vQrVilRrlee
dwXw1FttN5u+N18IstPKg/SM6r1AsdMNgOqWe1qSdrH3h0Y3Dje/GIkBzsYb4MoqexpGT6bZUrv1
xt6NAXVCGI3pAOA2yQUVTgohDFa1dt6vwCDZRoN+HRNAC6rWBaUGGfRruzV9MazdV8wwDrT5TBFi
0aejXBKjehFRGks8qMMx+hXryunILjjLN7CRsWgQMQbmM9kLl9fd8U7/I2fu0qsSW5Vz+yxfm5sH
M8781u1y2aKPfSnOR2cUGrXJv0wHo8LSOmys/A2XggmNlYUcnLnuwWmexgGlyLaS7Vcm7Cm8CnsB
fDgvMLJpun3trvNtT32tyZEA/TomjVlAhOThTP8XKigOwWEY9Ta/AbKGukAnJqvSQVERwfRXXeyF
Yh0j9LiCR5K+oNq/oDYAhjzcph/Gb1FMHv+GqyGqH9BzSb/o3tcx61yFbzsM+2bMm7HwrS6pFSjP
DbhBOHMT4w8s8zQJ3ImbRffc4oRQUmqFUgZyMYjsNOHCZ5neY0DyEfbz6ZRjvbLyjcMiem/pW6s9
RrNVLQD8CceFYjj9Igvv47qMXvnxY1LurO0884x5FhdgHabVP3keMqiwY+9vbFQnJaFyiBrHdJJO
T8LCuHMifbejp5jsgKEibfvVnXeLbPG6l3v8SP/a2PjfWjVYpHdaepbmapF36fX1sfW5i7H+orGP
yInMuIi+oLJDm8q0c9f4bG6x9ZEVaJ4P1p0Qcyzv83xP19P2K1j6ugJGPEvNTcIVtN4KPPaAQIwt
SxNSgJ2UKd/hgVzTey+Bucb3OoAZ0s+x9Ri46TSjWJPkhce+DAjKwT97065IEJHfCb01I/KE1sXi
BU5O2D5hgL1Jy7kmZsU+nw4U1GBXH2vb9GkJK7RfYbHptKZtF+ZzBFe/hE4+2TinS9og5jl0IaHU
IDh8j0GMJXiPPDpXGfDRr2MHnHdhgxT79wsseJ/eeeMEnBgL+/04u9kv6YtsfeFD1n9r7IeuV95/
77lq7DMwRJOROnTWGQOy9N98FWGhv2kMPAixJQZ8sM4W5nRa7Iy+GLMVevvHbYEeQ/3GeNygC4w4
zLKJpg3xMehmUlv7ZqJv+z7OsAPFsyh9k4GFt9NVRlfOmeDI6EsqNtRI6ZNMN0cynfaZC+1HfyXd
T9kOabKDf8pV1KxRRV07xKyyX/+/j9k4FdP5+DFtCHIMfcxJNCvgIbh/mAGd7ev3uehP3/l+ci2Q
A+HGOEZ9traGXn9UhalwGx2z3y/XeY+NJ8QE6XxTJQrhABWBzX1Haf9Y7pcPNcdR1UGn+RDQOL8s
13T0vgoaBdbxkensWiUxbSgO1YXr1rBKqrqJdfIcERkNEXIfd2V+GpFw6SfE87ANyykTkz4Kyg7H
SLGmcld+FpaNAsAZh7XizKvTOrtdWUTlbz48OlHtT49Dubqg66xUrVj6ROQQSYfV4dXZrug1eyfG
9iprCXq/9QgQsZF8Ro2DFCuUvpZKQpfIkZYQzU6vTtYpdJF39rgdsTfrlAaKJx4Qx9dT7N/iBDO8
YFD6a+xi7quI0cSwOLclY4ZLyPAjJCS+wK0Gd90mvdNkmBmATOkQsB52HGCipBY+HbhdgXJsbs4Z
Q/oDeA2UglzWXCfyJdS547bTS2pGj269opqb/2o6z2AhUiH7ovUOISnuv0WA3WodfrCy6AEUwWO/
onYez9wzkKbIxahAEbHgi86CAuBu01i0+DV3jOJpu4ZN2o1Ruafj/sss6jS/pQpWkMrgrp5QVDp5
aRsEE12f2wk2GHs3//51RTDzb0ai3N7mlFlDhNwhVy7Bwcl8wE1Z9u9Go2GoJ60icWd94a3JTl56
vNgOSDvUEEH201YAXX7rjsm101CpAYah4Nq18kV6IOKYqhVW83GGTR0eaHFxqoMspQwDsZtK9MZ1
8vX1NB3toBgNRpNOyT0QRDdouE0dJAdBjJbK74uPm7U4lMNya7fIH/7yZzaWYLyBcvt96QuQthHY
XbYUCNvCsfwwd2eMn7PKlNaVC1L1FG3wYF6+Vk2FtLgfwT6TxoGz//H8H7cLxpIV+Tp4X/MbY67+
cTyd/jqfD/8Jo0mXO/X7beHvyhfaIk5rrP//8Z9/UtbT++uh3XzM9wkqpMx//Q5lxsnmRTqRTggv
xKsvZf0NWermUXwcF8IIwwhk+oQb8VwHASJhWInU10IA3Zcr/p2N61wI7ut6mqHRFspR9NIohJ/l
yD51Aa2i/PpY3om2xTBjDZgmZKfHjwyf0tmWIqLzeoReLMoUr2yrLMtRwzkCtTiD3XQ97takHJSm
umNOU7Rz50c2N/tgo+aucR6utsVqJQEJVR6TcJuNlIGKhY1UqI4fqUDQvfd2toLRrQc3f08JLaRm
YdhHtqXKyP0dz44cQO+foGAhreJpr4OjW4mmILHXO+YB7S8pG248FrOcsS4R6UjKyqr8S2wacXYg
prGWD979grPaUvqVTs7dQy1RZf17YFQPaIZYlC2K03Kj1NUHalwVvFqoGQEnXnkLjbfpvlPYTvOW
aaWOXzp06lPPIEupFHzshsOuez4uEqpPIVN4jFaF71LvQCIS4oBkFEsc0AYqlXvdoOL6kE0f1wPM
NcShWkm/hNbTr5RKh9GhcgPXUGwR2I449jV0Uba1Dssblicpm+69o+PAUF6zsHe9Zb3+k12nYgbP
DBKUF0PR+A7z7Whcnd8yh1yNvuArYvoGy0DoJO63CaaqJWxSWqp7xRCbLcuQBbYJg9Kp1NbV854v
TghjBQUOH4ACHvirE2SMjDTQNCyXUKzL4+pu76kg2DdIwsN8PmrSr6x9Hh2f38x2hq/cjjFyP0Yf
4OWsGPFEp/bEKOto36+8fBmNf56+H7FlCw/RNklQywTVISnH6AQOzqCoN/2IQs/JQQhIsNOw9bp/
wiRy8gnKOUcu7MVMP0kP1Ce23NtiPqVdbt/D4BEegIrP6RoiJ+JNaWfOGdGYfynDaAfEve+Q7TOW
5MtpOn9T3EvhIPTru77NBHxIx4U11cZ91RAIyKVvnGWOucNG4CXR5dyw1nSWnTbKRp1lDi7VUEU3
qmxu9BwVrrLg68Nd4eAHCvVgs/p0Oi2bQxh2kLgNhHBUlF6Eyz3wlg8gHpO8TecnvNp6nQdiHzLt
2NwDzGnOeKC9ixrUzgO1dcLoERkfH5ucprOdNIB/i6A/05mDUyBIUKwojF15P1UWHogDO2Xchmi1
A791rPU7vr7ONzVSMAh+72CwBOu0yxWey3ccKGE8awymKcxQ+5zOggN83hs7wKR/A7dYcUSFm+/K
vOVlbXuCvc+lrXgzdNmGzO2+qE2c9F4qb4ucoWR+x3pC7fOhbL39dP1PXeSixgyGwdtka4u6TzME
DGxN8+3OEM8Ku/XeHnkE6yqwggf9oJ5JGV/4uTfOQRwX7Bg3RVCUJiR6n7UfsC437CLAeadCB2Xh
pRfyY+4MQvTvx/k23fbvmHoCkLx0DoDiN5VH1M7wmG7GniS7FdoJlEBk1XgBIB7WRl8RBduxDMxA
gul+/NA4QkhhyAPYEDD4pwjvvTcm9SvU1CmcX/qyYcwIXk0J9o0vejlBfhaq3hni1h1V5FY3eqFW
dnbfLtCuQcUaxzOMZ7yr9QMkHxr/Edp5ToBAcFwgXgYJyMsBxiAZp+Dypiyrd++wdkkAIfB44k86
2U6X5/NDW+bsD4XhW2F94DCuUsRd98uyFgchLgICvSa7qYnbRy+Qz6/0yWabwPNWTr3zY8uj62PX
B1/TAbX+i+tiz5iFM4tqI4ytMa3srfHFQ+9eDRZQm2N6AHjbm5Frj5tmBBW+Yet1e7raFjlIQE9O
NaXPEhyLB+tksa0X/6eMl6b1TAvbEofoOQCiqvC/U2hQwNULSADs/HYRfvNvv5j/iz9uf6/Vc6oo
pmIUW8JPqrHQpymRAh50cZ4rDj+zsFY2c5hNcPR+yLyWSpFVKwGCbconBJqqlnaUgvZFmSDfaImD
UB3PNEdPeQ6tJxqr8ecU8s8aFYW/4zWqdKPC1d2GHO4YJIaksDv+O/VaEwthjxf+D4qWKVLiADmF
gwvov6SRF+lCBi9hyQbT2828TWYzjm2h0Qhbhkw4nbMiRFs/z1upjiWIBMC1gyCALSIAVavQFzwI
CUW/Z/22l9evvIsqpmDdOEisolWMo8G7BM5VrE/VKguUKGkipe9ODDzfRo7KAWrwMM8Qsbvfrznf
qROn79Iel+tkZBKAzM76sfSdJ2VZAz7vKzlgiTZW+Icbq2BytBQLrfU1Fld9kWFHjE6AzBSHyw6j
IDXtJ1p5cWHDP7g6anyPNuqHFVgpreuxRuRGp7Cr/WNrpHRl3zC7pqHwjRjXMQU2MT5DGhm2Yscp
CdcxMD2qqFmlvFWheuF8Kmcg4FNFHtCEfRN4X708EluAl9GBQ9H4VR6Vxo4KM/qChyNmDHy5PljM
I+rX7Fdk8BNFE050RbxCN8J1uiv7KmtfoUocb1SieMZ6KoLYWFSu1GuNhrumdWxzGnyJbquJ1Qz8
hMe/yVv264jYcEr699ecWSL9GtdcvL5h8G6VuxQfY9ViacsDl3eIXNrsDUkm5lvy2BR7QUg9HNZm
41Uri+yIR/wqpT2PVFiUvQpLpF17KeIuSsawbN01dJh4YfsVB2Sv1XjmyokfM4Zl08UEjRL/3cAp
g6h+w1KqeMWZIjdEvLSgWsW1oosqTdbRzFCzlqrrLouq9DuGODtvJMXL5dOh5ooiB5bNaRSNspBd
1a68+4no4QIGRZpM7/cGdpWrWoMLlFX+yU4DgSQiBOy6ABxmshgKswX0W9LrES2/AlMCcdFsmpGm
QN9hFF9ySY0PDWG1YHg6xPZ41E16TaLAH42qTu6PRhurHQJmV64Xo3YntGZqqJByocyGTmn0m+nb
JtfDPjaVdztc2fB0FCqsGx1D5bdLNmtXi7nS/4lv9R//nnznuJTRP8hWlEjmdRVQkFfhKmy3PKVW
eUo+/9biDVg3e815QuBCoPdTuRBWiKafh//E2jJA2cKAPOxfkSCORJ30nUHdgUd7t6VfCr3Rfx79
5mPs00Q7v+uJn4kXqMox9+B1PPWlZ+9Ta/hR3dooxWK9stgnxBQfhyOg51Cl17LDlIZZnSKMRv+Y
OlHSy7gyueWMQRNWLTkert6IRXQUv83pVrwh2NOYILLHaSBKS5h8wcWattzOiKPsJK9XAwI+pXey
Fh2qfgqdrVjLuPoGOBHj1ZnTzIjG5bDTIHXGbgJVO2xl7HTDuWHsLtZSvKoQUGzT9XqCMfL3H8e9
sjzRVFk5IHYohkYcFT2YRBvsfQqF0I8r+v4G/RjFZNlyTopJ0vm9vxxpfSJqU5JKKQ6ZJu7twLV2
UlvQPHHghj31NSV3KpDCQPW2UqasZs7v//rXFWyYCzvSECutj6DRjZIduMndiOXZWK3AyiSR0xJi
9JVPwjgU+dv75aooab8p3PYQsaEKLeCnB0KlgKvwdgMAFUVNiDeKt9G7B28B4ozaFhmD05fy4n3Y
jzWDhB0RNnjDLyGjKAS6WY8NtxzEuRpn64xDFZSKFfhANvGXSK3sE28AYibLjnECFW4tvXvkk/KM
CNxU2lAbgn7WVsB60rRj+NN8+KN533/QujbwgfvNpGwA773CcB0DbJS93IheUY7l4BKR74Dhswrq
ZCcA3Zd7ypBIGepYoCz9ee34sHbJbOsP2les8LGEbEDEVs9FuZ4eb0b0chaD0LjzM1tJoFcx1056
Bi+nx80YHzSbNtNwPfY+OdavQUE/Bt3+pJVHo5QaPQyteny2XTKmSwBmyUBBINxousC8P003usDj
cjmp+n4MIYOKLWIORj4bsbzcJxhKZf73Snl/rWdPrNLFTYC1r5Dk/CHzgoxbUHkwAmzPkqqlqZzY
xXTYHbKPsY6CCG0wt5UNC4g+AXWOkzGP9K4QedbhBeiGhYCOQQz9ZgU7Ww0Lyq5gUSY+/szbGMZk
aIGLUe1YY93nE33+tRvG7axWieTiRnElpWznQf6NZQQSmIUAWFAIwJaRAUXspaGM9ON+G2VlFYsV
SCcoKPHisEhm4hI+QgEeBhZa6WaFf6zCKT0FBi/DqTmwIbmIGzeLsHzHEyIPZ9R367+stRKcFvKC
E0MUv6z2gZtsjZoRQeZlmyPBj4jFEKDr9TR/AmwlA8/x8WEC8rf5dmHsLvTtz/MMqGNUbHidjqoK
qESzOnoeDmdjNS3dqlxlLgCP/zanSZaOJIi10bMwBUH2lhDQZaJJ3KkSb6TLNV3kJK2c+kyXsKF+
HA8wJcPQ5fOBKQD23SqL79yPdGG4I/sjCt3Bo8te2Md8OE67fyJghzFnf6AfrEy6rwTEAnoViFrz
r58DT1hAoLo9QASnK7toF+360yI9t/mnkV0zzNP7v7DhkhVio8fc7E4YgYtAkPYhYUJRYrYsuUfD
mQikW60hDZXDFbYWHNc7ZIDEjrN8Jh5J8X9O/iLtQtw+6IqyS91/7vxqR6gP3byEhOByd+Am20Su
nKlbKdZqSsxd7NsACFZs2uWgwyI6RAg210PmTcIt0bk4nsVHWSe2swV3uBKoHXiJLtASOZ/XV3LV
FVLuqGvXmxDhLqMzsrSc4AEdOHjFK/fj+Uv51L1EiHH6n8ojgslXinionBhF5PQqqa7ebkeNld16
6iLAmYayOtUoJgru2WJd1CiaMn5Kba+DLyAMnyqBrASszaqrU5KCf9EuAH/yAG9mtkqWu8CUcxZm
Qb22nMTOeTp8h6pq7awHX8ClpCUVIyhr8rffpO8+x0Vl4a0I8jDOkLTdK2dIfaMXnDYnne0MUZhu
iOZG8tHkckyncESIPO0V+Ehn7BWoca7PdKDLDwVVbdbXpUy37hcMEg0UlltsDm6nEUONGzl6tniY
AMY/kEGOmIFGJhjtTn+RDh34WTqb7rztjVAg2xz/iBXAagF0iYqSE0ughwQ2BulafEA7prd6WFQ6
Cw05b6nsN5HmdFFt2/lHsVKmolmTvL7KEXEtM+b0MLPMxCyGkCoXeVGdv98xpGeImEs4XwDC4E0j
1Hq7swujBb3M031JZnuYwOBW0q1N6Pa059cJ/nPu3gQkbrO/ZKE+n1XpluRyWUwxmY3jb2v/XFr5
LVaYYz/tPx+3b9l1MNvXfi96eDTJEZpMpPeIWCnIc2S82C/jSygxSpGnaNxdbcjIKJULIswN98eN
YqIkR832ibyXwOyTX2cjX10bg3e+T99seBQDacdMVk/gUDa9mw3yfDiP+4XI5nJLEi+8XJFRnwja
M6boElQ1Tfu7GpoQ80SgnYRTxldq4/ypMJBLpqGPWkdneVv4Bhu5SmcXOn86TV2m5TxXcYFRkhbx
jjdASHD9F8+D8Nwj3QCQtRdPjiCObAR/5ahcZeHnVFkqBDHzbFJPFi84kF0AE8dVYCiVaz1tGEcL
UDVeMLq2IPswyx3gV3ZGcitn4o9w4cgulGA9EDxbzdqNcvIPHEjJpqdfqHPUK3XaAMG2SXPLy+WC
E62+T6eHEncVbxgCunbYoFaSpQS/Bz/43SUi6jTSTU2YChD4GlGVcgOsxqZMl2PYAkjoqMEJNCjf
chmqsQ8Gnng+pi0MOx3x+lLxGnoMTcwO9hDjBAqhwsCFH4S2z8GoxcsrRzw0/hfSoQPYrrbz9yRd
BGU30Ucp/UDBiIpqrf1wc/Mv5Z6U1FMXK/IRTgy1dSWbJsiDGbxF/kTlSqEwtz9rjWuTc0qkTkvJ
YHhIufUkUZJnCz78WRAOLgXD8J5XmUkwtP4TrdtYoVPOqxz7IM3QeY/gmFUCQkZ1BFdZ94nSrdsl
CfCF7mnta8n+Z85dOfAhVkNMBt7+clo2JOc6X+B03is/XzILEJNw6iqMrXHlMFWEKDSC4VuVBEPw
LBFk7nTLCpldYwxU/JjMWq5A+kruhd53503TkrEXvTELT1mWhsCJl21WeyqFWrKg0OESMXbVWmVN
IbB8cUXj21+5E1OOSKSgnbvq3SRFlt1EtZwcKGIlyz+rVse+iZU9+r3cpFwJiVgtZin9YoA6qIW5
ropaw4olAVP7VcEyMX7mPKNmdPhl7W2TqFhKS6XR+/228xBvMVOwAcQJ+Vu8Oho+a7urQJx9x0Pm
0Qlc+Ze5eDF4Q6BuZhRfennuoIc1w7sl7qYUlcqBSl1o27AiBtfncPmAoWm2+EuRg0FxveSG0/Hj
qDCCEE0d2h5jVroo5fSDX07v11pB7hRCqTj4JxfVLXwv3Q/XMyXqo77cjlDChT1BCr3el3tdmNSi
GmNX+LcHmDcynlmHPNzN2AyYK1HGZDTmotOOVeu5Gxb2bwMvjYqZ5zfNNONmokrsqPUrjesu2twK
RRvHdbiT8iBL3waX6s+CPC5rD1vaiyw9jmi849uiY9ptvkDkqAbl/IOJNRau5QYde9P1Op9d1IDK
LhUDpEurLGkx1kqZv39IvV/idBX503QOQ8x1Fg4gFhDbjIjVwkrczg9kdNt9GsX17/zRtDJhYQsb
saghM5Bv9G2gZsia1LRvxZoW5e8IlO9GeYo2L5I2elOe7BrplJYt39zPuld+jiwOUDMtbPLd9jkd
W/neQ9v5VhEdF8nMI8AP6K6AGByGIZBKqcZW9ugkITwkDkv6ZX3ZBld6h4HpGGCd2EcgdYByob7i
GYusflUsh8GfytfFq6ERvAPe1HzQrNFKzsrCbG4jlKLncwdVL+ctBYfCN4O1lnYWyft0gzm0+A20
un+A5t7j4NTlftwvuXkkbecjPlm43/N0Xd4vAPNyBTCkBU8B8R2Vlvy2l2MA8O2xuMNQGQZvcusR
QxLQnLOxC/yvlM8677PWwgARGkX+GHofW4ZDvTZRu/vtt98UJ4AoBGMrLND/x+X2dTy/XvJLqP0h
IxLkATAjd/f543rSUHbaPhjp0Tg0lh9U4/FyOR2U7yUmDsgRTlRix/z1Nr+a48DavPPbY1JAzloB
94PxLWtIQTEEjCn4mO57qAJ7vWt4k62AXGswdMPq8zrf8Evie8NZC0wuNmp9f4Ekx32+KROlOAfq
UrolZBlKO185IJZCGGAqnchY46Cpal3gjjneyg/3KP//tP1pjyPJkS6M/iIKsS8fNd2jGV2oRzpq
zZmLCwwakWRkJlVMMhUkqyobeP/7dVvc3SwYbhHZ0nuAo6mu7nD6Ym5uy2OPWQPGPHrJ7NtKEOkQ
xvN+tC5DpegJIBoUjA7U+4Qd+DJ+I8fSvSs3ZAwGNNDisDAgV49gfw5iUP5fPSojii6JVC+OwfRj
TaHA9s7af7skUjH4WRF/WtjQ4acD9Szwj8He3BJEZrSOLg4Wm9VzV0F3YHHY9NNGs8rjQLGXkw9k
0XaEwYxherUn3EwrzsJsMUkrauPJdBFegIYlVDn9X4AthgFHY6MZ0dsUHEgsFs/48j7sj4kkIB1z
FZdUBE8/Lim0QH8+HZ1Zb00ojkRhLWYFGZynczU+i0eDIbDZOpKEUvSxOBDUE0yOFWZ9AqIKqlg1
jrXUop5x05jrDVws+5oU8ZogZUbPlFbOvv+eyufRh63aLu/pY7O928eORjA+n51bPRfFMzPzG5vX
qNvFsuinnhu/LT6MqVIhtTHjb5V/kfwVeu8LOYkNaqoQKiIih5xz8AY840/uaXhD9NbtdsG/YQZc
A9JPe1NqYS4flohJfu62ucNuTMYiSyUk1WzDuKn6ZCmOSl/3cqbSffA6qDQjOE8LrPUT8XiGe2fv
W2vK9caTSn2CRD2mdyCivnJ0cUme49/X2zlzcIIV7Z095eQHWLTZcj7efNXy2/Hs/0iSjtln+Ct0
rcFHdEY8swMeiIsz8aBnEfqD8oRa2hea328Xdxu//yt/i6FYJLu4C2z/IVx/+y8k2pDRetr4G6jk
OdXEEOL4DqeHYNcSh8CAD6PUeQjGChvfZ7MtDWkXf7qwyPXt4ugOilnkApmPEvbGdwK3RqzCiHXs
0SZO+V8sXBwgpgPPo7uFPGP7yyn9ZR/PAB67KpCTn3bD1+FIsPEIEE8Xt5BQiBMlIGizuJdwtGCd
v1lrKvWpVA97+K+9NJ0QaCppzhfn7rbz/nbetoS4HXBFOMvlzn5tHztxgdER4KoW0F2ozC1Fk+sT
7Zn5C+qerq8Ttqwavl4gsAEt342R+qiyRObWbTtXUSGYYwJT2bjkjCvCpZAn2fld+H/pIHuhFqhc
pZZqhfYPjvE0vF9N/VTbKo4RcITTMoYRghzbf6VWunYorRANtNF941ialN8lY4ComwpiMa4eDuRf
q536fH6zCiGTW7exF6fRCUvYS+P9vE0em+XJ0Dv8L37z5QOFUlT8tne4MH5Dqv46dlOWlsy/9n41
4iDQu9ISGHXUljvWSFMFO2z5LsSHkan9nXTs/19YRtvOjaRiUd9vee7jOZeR12BpCf9a+WrF2aMP
wAoKnu/4ev+rhVroD8L2FMuG3xZdJDQDWoPcC4+rdLe9UnI+bZzPyhPbi+OnTur10t79i69OOVc+
HA9ZedN78YTEIIaRj6PdFaqOkqAZl1NgQwH8Bt1Lv0SrwQdS2VaFKpJlqmdoEf0OzLPcdfb5MBhF
inWhC0mZBOTsJgVY8G/j03v64yoTNZvYgZHNm/Hp5QS+Mi6tOBhLqFSdHdcpuOn/4i7pL85H/mU4
vb8OvxxGg764iA1Rw0LYefnYP+0nspj3bx9fQAciae4FkvrGtDpVx5ozHG16edr9/X182Y3O7R3O
u3f3ciQqemhOYnO7ENHETXkb3oGl/+MFjAws6ZjM5WWlKiZla9hABhex/CtMoC70BPbHaX8at/x+
0etiVn7WKAsCIQQsKLq/J+mEcZAuVi1DOKqr9XRW6B24IWoo7fWmgpfVyPjFTTjWiC1E4TOYgiW7
W2Icrz6NHRZlsBgpY4MaW7HwPB4m5jQUMusYNysutQLK2CpTbFkI5iHIFJE4A4D4CJGU/WVK9i+g
kXPNkVE/TBdT42mQH40ieBMwFOyLFv0NwSs3HC5PoLWnL5BhPJ8+jKtSKsIEjzH3ohFFFEr+EceJ
V9kQ2DhDyPuxy4Z6BA7gfECy6cE55NyXOzlSI6bW0NtIb9Pw1XnzZ4AUrIzQagIH2UiG+aOhBYFx
b2pV18yAF4i3QTO/52fEzVikGWUtGEGKwLjy7vk9NqpFUaNfNrN1RPAx4A59V07jfDJdHV/5l+Nd
z8YNfL1+7PAZMBR2o59CzkeCfgY1EPryiKvofuoLJA5i7iGZNyhiy1y6kj01lmTEGLRJeeOdpONM
VR0Wsd1sqJz3uVP34zdQY589FMkbIxqZ4cfxKm4bjMtG6YQjcxHlVWgHedv2w/nrYDx9gvyAFG1Z
J280xrL8tbYJW7iLaxAbRnM4S+MZMJJO4hi9x7AIS8e2uTjQ8KSx+WRs0YyahBmiDs9BETiJg+qE
RLC0iO24Wd1hRD5PbY+xF4Vicml8Juv8hZo1B1sZBv3Rh9Z/QNV+WHkdS0FZgnXzmWjcCcY1dGxh
ukW3dkN7CkGgrWseN+w0nA/u+r1b1y+eFjjWzEpKfSDW1G+mGW/YTr5jtSOSc/p6c34YjMOvlfiV
UgPSt0SvcRund4sykFSgJAnC/6HhuEIhtKXZQ/kEvPZnsEa+pjK8RezvzNvdx4CK2m56nM/ny83A
YxSxMzNPEaFivTa6XtzFo/olAvXTvzCXXQozDq3rrnmwQUi97A7T8G3tdCshqAg6Z1GlWWEHM8Me
KgWdFIIFKr0+xvnAPIgGiiwIY3XCMkIriUuGUi+b8aa1StE0vTXOKYVOpqFqZTmHpkBaaxo3KB4Z
8ptmHk2DcRSONdjnVEoWq4g9YJPz/oQgJNsFEXKDnNXQ3UEMgnEAqOp6Gq7HvWFNFfr97eQFuR1P
ypUw1iP2tAw51cX3zRlqRB9mqFvpR2Bgvkm8bMY5F21cGragb4KZd727x5BjDAloVx+ZqjrKMGD5
TslQJy6bsg9ZkouVIXFtOUPGxRZWL+nd0MtqGng0KHGhG7pKx9QKxq9Ix5SY2qr/I3zHCrk6SjFc
BHxTPRegP1dXW8y9DIbuY5X1CvFTWWo+MF+QD52Wo0pm3WU9b3GYGupt6oKRvO9YUERteaJKNObT
CTsSuTUKj33CLoVEzfzbLJOy1iGrQlgC4SGHPMaAHS0ipgCIXFiMTTQa2S29ZvCTmsZjkVe8tk55
2uyTqJeTUFvowBm3WhxuGanRHmOFhv4vla5qBF/D8wBMt1gkyBYQ9aFYCZ40mWaNyx5uU+iqRYNf
Pd+ocQXEhmG8i1Wz2rJYcbkW3onvTZ1jp8Zaus3gsdk+c6V9oZ6bknzSpSoFJyLsVCsiG57l3L06
N8sr62vt4vUh1hKdxU9EN4UBVsZOb8Rvyfz+DILHWW68liIY7MmC4NmAACXCP5VBZdSW0zsSV1yB
b1/5PC3FTKAjLgcbQGafj3bwsmvU1Ji0RseC9AQNwS8ELyCo2ozbKMMBfN7fjiIPzpGPUl1C+B8H
w25vIPwr21Y0rXrj6uLx/oD4m5slVDcF+H2AggykLaaRYFUV7J0gq/R2T5dva9IkaRxj6Jwdzj2h
U23Hsxb2ZiVA6hAsIxZkrnxEyu/j+WanF4QI5TBcnrNnxWK0WX6EoddS1v/BQTO2RdrAIM3SiKZm
eRQiNpSJeAtiuyblLdnUmKVkQK5mFRFg+nI3eCw2nSy60D5XHJtcNqRc1dvlsns6GgcjOB9zOKS8
ruWxyBAvNhQ8fbUOR5qcEo4grUQIrXzCim3Elaxj8fHy/P5uxu6bSj+6ifjrysPY9VobkgDg2+qO
7QYFnXBPyWjC/vSWumhbbeX4HrHfdlRjs+Ywl4JotcLwDN/TaYRIHLQJhfLSy/Pu6f78bBivpSQq
74NYUkkcy5K7+N/WXYVSsDcjuU+lvMz3D7+0+9U8+i7eNBAsvugv0/DBXZU+GeotWh059vWmtwtq
Q2nnU5e0FWUiQhVUa8PIyNfj4f3Ie+YzYDsc9uvRKZiVrGfRiXAbRv/Y5FHPEHfJPhCB1NNzmj+B
HiXhbFfIj5gx4OgKwc7vmzJ+pWR1jb27F9JzJ2JlwOAbE36vO5gix+LjhHTTp+Flt0m9k+PHEhML
Y9no8R3ZQrAD/mnFBalmYWZOiz9EFTY70VGkISbUe7AaQQ1UwHn1MHLN484BcMioZXgfLBHLFVd+
nuXbTFj6D56ncTQN/1xHy5ptuUinNN9Px70z5T88T5qXb/eZ8Qq2SzAOuoTUWvj0IRIavLsXbH1C
Ga71NHUrfBmIo5V9t3FRYF9/ajWafxtypQFTQ/EnhPIQbvfqIXVA/rdSsVyVM24EBuGOzjaG8jsG
HrJvbjNvFLPeNxynyop0+8ci07w2hWSMH86X88fb5c5YO6tLQhvveST+yFXbARwD14WPA7cL4bIW
u965FK2gQIO0vUjgEd54920a8L34ZlLtldWs7YvqBz4L/eKM00M1+uR8+RJu1dWtERqi4TH6xwaS
cCt7WDWy76uAIFAGlgd/vdxPhx3ysQKfSrK/dxvdbKYlKAXOeyBOiafx9g263rHspgeSLWlJ0mqB
NL1FFL/fRi+6WNWD2NeVHc00YZqv+fSVRZyMYbqX88poleBixX+OF4uhf25Gxl2azaVfa9mb550m
dCnKB3DL1+P1Drw3vsLp6HQERDMNAoii1KSeHO+5HfgGkT5b51CpBC9wWQfWtjd3h45UhAyEJ0cg
K512XJ4KehNVmXGf4iaXkSGGjuxzxyUaMmF1Mm0440CAKeN43p/u6zzm7mJWaiRf9kuNLnZRBW3p
S9FGk3dOlsYqH9uJ7W7oQIXoIP6jofQrzX7XSW+V5+QVJEwVHHqYt3vLbmlqsVJ2U6M8G9mTWdn+
7ntibXmxxD2ald3uK+Cw9gaVWZHP7ghnPIk6B+ebvi1FoVu/Bb5c0krOZXu9vECPUKT9Akl8Q8/y
+KvREcCnVyI5YiZUFCYdhJ4Sf2vRxbfRAOCtbTALqqtldqFKwJCjXLEJ8vt8Pz85GfqCgxBqdveP
+3FKX7qqnakEqSdRvLkt59arV2iW6bwVMEwwyeTjQ2KIEzTo2tsYc+OzyOKDETyR6IYZyQKU7E5z
EhWSA+zq7NObfxr58kD/txG7gYENlp6i5AjMQzV80M/BqqMSg3An6V23wmukiFp9TjS6e8nck83h
uR1t8updK3vN28N2YmZwLuV9vvQeZcWWqy0oifFbVgtGw+W8n9HMFh6yBW7oO1iz+xF6TQNFL91y
4/XtFzt04oV9mYYzv1JGG/BC0FgJ8gd5SWjrnag4D/H28W5dEKnoqCqK+TugBAUeX2g1S051msGz
yjTjGE9pVdq8UEMnm2mL2Gl29jKbmVFMAsdWLsXiIXT8g9uVv+KF8T9pGFfxN7DNhD9rZ0LScbPZ
J/7KcBwqLTnt/Hb/QPWQpXGRG+3H9NIYhyEMwyhXv87blRW5Ieq9njBbelzFwwc53Ni5Md7AXNNJ
Zp8wqA/Hr4YlXS0NzKYoGL44OqcK3Mt1uryAPlh5vwrdmKKQHo8zTKKg3tLWWaUM6zwWxWQGO2Xe
VUsdKSYlrJAwA74EBAmu87WVMz7dkIwhA2Q8Iw39FY11uDBYdQJ1QobxIUl1MTnDWtpgbMw7RVOa
N8IUfFQFYpcNM1AS3woYJmq9yK4AzaKOz8dx1SktJDE3gikab1c2hnGolR0jiUBnw+P3egcayvvb
k2HIF3Pi8krXNiM3O9dMrbmWglMYXtI848ew7I0V1LojFBe+EVUFW/xsab0drxxDIAADit/eoNYs
JbN0GYhfM4MXPpetebNgBEW9Prf6bNetEpyVCHDixB+1TIeGA07nHIBHn9XPEN4Mw8LV7MT8wsHk
Qu2waZCVkuAxCyaTWhlgdLW1Nxy8ulxx5ESHA3hzuORhi9/lLabdyXA8JTezjJAsmQmFYSYU2tj1
tldnPEitMnZYPwqOXNoeoLsFV+d4vlOEHBhxY/HhCllxIbkoq5lhgcpl5vGvCKBonpBHKqpH7+B6
G/ZfTIuna7WiWG0H4i5TvnSZWD39dDzbLTsK2aMhmva0FZ/0vvIZr3shQ5Jc5Uy9DI9f2VMybL9i
kQmfeltJ3zDJEtZGYMDcnLqfkS5Ih0mvhp+aK3vBxxYMUuR8RkPNx/J2+RVKZndP95c8c5Z9vI7D
6fhy3uWG4s8V3Tn73BHGRc89c9KXxjgi0JVTL6Z8Hp8UtJUb+lCTEo5XqglByk96BF4Znp6Dc0D/
xhCTmX8lg8w2jqWNGP8Y+OH7VhjmQJYvOZTJ2O7a2yWuH/LQcbbfPVd/JffaSCbEmSBxTrkA+7ZC
EdkSfz+Gt5WxvvZUij4AwqTFK+rWL97zT9sWRaUNheDRdMbx6Obu/AnvJdFm7N5gNrdXaP+IhhvA
FyCYAa791YyeFXHPEBBWKUvqn1lrmWtR5KQTSTIeCnPpYDmW06BHK2LVz+iDm632gWETSP5mpKlj
3AXSdWrPDnC+WHPyLNG8q5mZUjYuI2xCvmIarqVOZo6e7+khIqiwbMOMy9X7weAXPAPvAawoxlaH
yCvp0HuCYwjaXBHLszf8+1Jzs1ePWSus+ooXz3CrhRIrg9rJytpwIrIlg/ZzEcbfpOF1+KvwUzVi
KKJxA9qdpAPGYTp9bMwAz1/vTpihXEMafPXvwfHEPPnvp2n4MEzPYskgCb6YtLuWdEiaM7/M66Wu
f1BzDvzBIZojyn+hLahhjBb9kj334gQLAmx/uEx/hCD//zFD/GVRLjUaeXCkCuMKagvVx5a26Vxr
v3TXO57ZxncrPW4hu/7EPmLR2YdMC1oFa66+UF69gNFw1wLn8KA7ZrwoskEOuudNUmOTqr4CusT9
OwwPQb2GFZqT777kgMOP8bIb8AWpTerHCPIMwDCNL26AqxksUr1ekVvYP3oHJMH07doBreh5oVdM
m7KdtetgHEreGg5ss5T699piyxU3zYRK5jPqSIYKXz8fx9MBu3kluWYpTtzr7kQy+hmhMiSiIdls
P3LCeIFrxcbLHHfjd4GLWAwzq9KN2dgsz61IdqZTf128zSGcjVaDYW3qljPpLJehq/qlELxePUbx
jaiJ7L/ahQJIemdIWAy7r9UvX76cgDCep1kTxIji+uP5MH4HSzniDoBff8RGFNSPwrDk68XOoNJ2
4Sf0dnl5IUNiBQCVZUtxj4eUA1X3KWVnjKlbafKYWZUbZlGncSOVQHR50bEvDwN9qWtIbMrEfRBN
o7wQ5mkZGzDcDqJ1BuDJDF0wE5hO5zp9DMuIH2XaUuoTsS9G4ljtuvNS9tXNgr4lrOXctOTqvMOB
EM9rRyv7BEruPFa5AF76OcJo5mascWGypZTfI6TGMOtr7SBks1eUlAd3ekEWoa9H+EcLfyY0PNFW
snFD9EPhjeBgBeFuVzoHFtIQx1VzCawIm4aGedfbMEE+bqK2aBDagvtnqM5K5OQIDM3KM8+ycH0j
6M24kP1SsoOOWUxV5Y6N4+2WzNcF780431kWu+awqPthJ10IzMbIPLWAm0s5A9wNuyebJ8mKRNbZ
wDC19ZKTZfoOhsUuWjPh8/1JeMCCe/hbHMdWg5QYuB3QogTX9S0ij+cVSLII1JWRiIJ7OimFa5he
pfAr8wi1pXKTGXbX0wafLGOwXI7JCLiAZWh0SnUxkP7G0GNnTj67B8hPZ4MJXkm8BtUm0nTu7wfQ
g24t3ts4h3ZY8kquBFJmqNRGP1Xw0iLQE//xuuIcFU2+lJvyKFJusEFWOaH8TeejKtNovTX8A/1X
9FdruOJa561yiYZwQg1OJsD3fCYMw53GJhSzQAnnkqtsC2ayUaYHh48Du+fG6HEpcsHCn8nyxjD1
tZXAGn6WSVl3g9pZV+u1JOBa9mu2EJkXON2m6PwYwNeqEuFGSbQa0ZlryMxC5QQamVqPKSJcElsR
q65dq7PrUsNwOo5ZG9invR1Wc0XZEgjyBMWEBO14DqYzPBrumXin+iUOuJoRW4nup0YJlVL807gW
/JN4gtiO4zMufDo6VGXa2vOdeW7wAkBd79reCdMOv69mAXJRKZTmcyD1n6myAolEpaX9G1kgTv3F
eKehUPslBKpQfvTMI3iAkPBYOG+8Jhq5ya6oh3X44wTIBD8lMjdgxOe6GbK6U2kzvF8Yix9vRt/3
Uqbdo/rzNs5/Hg+H0UI2FTqP5EE89RZEa78U6Vje6JUd1uUAtdKAZDO+jGcYClAfOphjGPJCEDAE
VpSPSmgjmQlpoGYpwRhF3lfErcl7vgQTWih+GL9DwzlwvVYct3IpY/dJEM5KIYRMfogeIXOQ+AFR
mkQ0u7KbogU0nH/bJ+DE61hioWgRI5cXttXD9o7/xzVbp1jK7GeZEXvtZkjpXkMk5kHlVCs0gkn0
S0gcWRJimFWLKStv53HFVigtt5P8IpdVZrP04StWzG30r8tF+4RfcFad8Y77nK2VrBW9xCPPRFYa
yfm8WorZbfR0mWiJlGYdlKbXUIdVMH4psvfol3bJF2XrU6K7BnsZLdotarxYcigzo9F33ukyDO+D
XqCD+QhW/9sbce4crICBhNhlcdK5gVoWYEbAnBaPWfSnI7UaW8mmZ0tRYLgAfyY776/jihIXEVpk
WOm8x2IIXasBqqJ+cn9xZtd1bxdi6QKBVsR310p0dRPzUlzdP6Iq/GFFYCuV0woe+vnyZOXLZ3Cc
WkaDPNyKUPJeE+65/n5WPGGEixZrStfAbUbEaF7wnSXSA/jxOxC0n9EnE/9FsrWDJxENHcZ8JCgG
ud+QZjb9cPIwogFHFXKWawXNCiFgjS4bKHWxNQcbYsdzMMlw0sCqQTWEu8dtsn6mWu7TxE//bxxU
9O6ReOF/zYzL5Z4lGnlBv+RdxG/T5WwQyPHAouVHhJjySL95tsXyMaaiQNZQomNNS/YlCtwB+CVW
Cg2LbgZxbkUjLcTMWkxUbSTsia9lnoZ/bCj7k9ZiJ9ApseYB2ULpnyn3jAGBmKoAHWLMVo6P+KTS
AsgWBjBEFPbgEXAS9XR0czoTZec2V4gJO+e1EeCzbKm7MKYoUQaZEF3smf0n0u7/EyOKpNl/Ju2/
ptybeqneRSjdrcsvRTCqjdyKwB4RwoR8xUSXdH6ayA83jMFZQnnuFK4Gvwu9g+0iYsEp8Y0CWEig
k+wtpr/3gS1jYbX2KouEGHPCwZLjToMfqySIDQTi32xoQyHSKUWEeIhMg/fvVsIDM8dKA/sF6moF
198uZfmy3KhPkziyLEDULa9sg1rLFo1L79FQissJOH6bKuOAydTccgAXE8220/h88w65DBpsDyvj
4EyZVJQzPoXh8PeBsjtu3ylvYsywiYNg0rHZMkdZTmnPsYzDy/uTYiqhORXxozYIpZzR9qJOHJBJ
12gWVZzF4YLdP+ZJS2OguBy8fPmyYDgTfID+1ZebscguDIV8d5lvq/2w69Pp05LRxvVi+IT5D8d/
AL8Ll7qf90zOeE+6K7TmOq451hJlWWlfJFqkOH4BvrqFeJTYs/XRuEETKqouZKCdKG2ZibgsTaxn
WISfQEpTZSCNzRGiGmMfbnOMmcRVyEivdfCbBb3qxCprgYdhDleCR6A+9utNWau0PKG/SnV+LJHi
Tr6mo+M0N6FpqEy3mGWIHkf7rOCXQvBlF2hef9M7B9Y4magmRHTQR5LkjlmwGppIpcStrBaOgU3F
bQcRxReh/c0nlbQtNUKIa8FYuHhPjWGiohCv5mbBtjWa0ODoBPX1hkfBHjKbr7pY0+Zb9EyUQMFj
9TjN7SItr3QZe5s4u2PDdPJeGSBl0kIgcihjXfXyE0qsBv+q69vMj4S944S/VxuxJ4nYrinpXpu1
cBuiu+WsmqsUSMYYFnP+1OtlOv4K2MgThovM6mDJNIU76+kLCqP4X0RMIXZbcsg1Ug1BoIq33AN1
VlLQ3VIMlvIPuxvXaRMiGAu1oa3vcTiRZ7viRcnDkJZqbF0N3ZteoGaPU61G/HWR9uCRxnEbc2Oc
GFTCdeUaVdVK4WeRLZD60XCrK6skxkG2pgKNhpORaLS1QE+VaQgrv0CJi2T5mzOkyEKxnVmU1muX
/BGQwxx6dti9KrolRzWCpM4IAgGq8RAsCE1IDPfe4KzQZXyryqGSzmsfYhfcVGs53mtomlmg7zEq
vbWQt6/SHj6oKnelqULIxlUJvpR88RjZqEFrDnb/txE3FYtAmmUyUI5AE0mEXQAhEVjSwiGNKcpj
Lt8BFEHE1Czc2yrls3YJwbOZjcWqaGuXQkdzhCXp58N4IxMTKO6tLH8j9RSXUiZ0Q2U8siJZjNke
97+KZxZ0xGbVXtW6rrdqH4JRorU6w9NWjqXRoDTB+PLPc+T0M1mNJfKYuTWew3ophBcpaEX6Y2su
i5TGjDSEC6xKI40qxDbmgDn560OcLyamopIVl+gvsopB2SctEChxvE6VQUVPsm7VPHYaleqz6gac
VODBRLh/oTSJkr7byr6Lvl9SproKdBvjk0xA51AKuoCm2oaj0oH9hykhC9W2ytS4uB7VfLbAIbpK
sSTQGE04qoDGcJeDSzeNIZr0o6zogRREbJXJvFBImTLBQcDwYIZaq5fAREFUwi7N54SOW3xS0oDV
/C4V/3yVxToloyh3EnwIWWFV42dpvKJ6nn8D1rCUPBeiAWrCDIgGwJpVJenVKTzUqLKsv8G8/gLb
9W92x6VWIAdmfFOhkIsdiA0DlRoNVvYGy/1CNtBI+mm+MzbafD0B6YeYpEsm1tvY7TvClDxdq8EI
13dLdaupcq3fajHOuBfbz+M1JwurKUvFqhh+EXiyeEQrpchFsZS9/8f9AiBVdKO5IwqSARgZ2FmN
QxPquqgQUMWu18pFynLGbFB+jrtihf9m5n1Uwo+5bqM372eA3MDUyAKMixy/u/81tr7uHjBq3Bfo
gI0S8SMkgJkoRD6+j1Sp6f+TNK1GLwIycDVy4f1dr+UO3ijEF7xgNQD/YnKonHOyVA4Vbu39DDeV
0DE04MTUBxuH7eMMi8iFL4aNa4bB3L1YH9Q36MAlA3qTRJq/p+BRorK9F9hHKsgIRdK4a/M5FMaG
VWoSdej5RAfnRMy9lffDxXfzSQtcL9hccVJZeA1xUtTOAJo/GRvNNROULAu9vhYXZayp0UJQzU/r
nxLWuEL0iiSGwO1W/v7dyoTSIqOQ5rGf5enovP/jbXwLMzG2uY4jxCp3KY/bpTALQ2EutU31mIJ9
MjqS4LxYVVDkXBgJjxdw+9WrlZjXCk9Ac1vfryYuMo8SQWIVBADAPM/HhJ1KgtUqRTW/LGT/3pxg
XTnYuyYJXakkwVdw6uviWwQZyxOqAFPO/Dwu3pvSWJ/Y6/hcGGJljNWLm1wvqUyhDwz91Gd6Srm+
bjfrms0uiTUDYwK50kicOF9U/Szaq+Loke4EWdeqWxz7/Xy0LkYT7xo69q3eGdZxh+PdGqNRyowX
N7sX2xVvF/cKspislhbv6g6CGFf2P6ZzilGCtEqvby+33Rym6zif3Or71GjVmy0teHaO5vMZDyGP
pXM4XpgSTPRoPCl5K1Sw6HYt7J9PmittlC/ReSzWhWw5ykLdu8c39BN60zOE+vnM38zzRTACj267
hlSncxLaUgttvkVoVwUjU8qiaB/fre3Pc98qqahmSouq/IwFVvrzh73/1En2hRb5Xk/mMPrRtryj
hRZ3rtUFvvlNgtl1aZs1ef0MOe/VcGWf1vBr2rTrlYX/ONT269xH+YSYVFdsM4GsR1BY1VGvLr3u
a2Le6rtTrhqO1qziYUL6lS3Hr8fx2zu05cUN3/IYCqODQBodOZjPkA57uzwdIYWxny6QGyDcKE01
6Az2TZYLB7BtNGcNSjbc2C1xemd5pKs1VBOH4seIkFgf7g3DT9jNp7/ZVUnIhu/e7NGBjF0gSIQe
hIi7fPvMYb+/v91Pg4k99C1dCX+WRyoUaEYOHJPucNBUhWiF+6U0prQQACIU6no+DqWSzdlIdF3U
QhcAeEBa1k/kauzWbBaFrJegkvxfuecS6GpjpLpVSNTWsy1AwBcDkMcTTMrtd5pQJ4u9jOYDRe1M
Q5LsPkFbo+TlzGIzjoCh8/3f8fPY3cNJ7cq02lYB6Nj0/pVqIl8B5uKEK/15V6qNLjuJWqAlYcNm
O/6URRaluKJccgRdzsA++3q88qCEtTEGm82rFINh7yneKee/H07m/lQa2NXM8BA6EcASRlfQqyFD
0Bs1OG8+XWp3ftCh1nOC7d0/HYBnaeRAI1BAQGcb4IXbofcNE7DZdrJIJkhbg70coCMdk3TItVhQ
hUw0KvYH5rfm4GWZ48yom8zmDVmkiAqj1aUUaBwqXPw1me4ypT/4CWRJ+i1zawslTew+uRt//hJS
WERAhvgl+okj9PqIB/h0fLE63WSRQ1PCait+JynTIebOwD+KHRhbISCnxbzRLT8YpaFHK7XwNhPa
L9AkRS24gtbl6HCAZHMUc/mMRVPoNRU2w17KWxTHu/jTCY1OrhBnj0gHY9rxmrYl9gpo2SaY3pz9
g5p2XVU2jcb3FzNNwmQ9OArcP2pOCRmKq26jZrxWAhoMx13XC8dtPN5NqVD2TFEowCA8jwkwujg/
pvwyDifXKq5bmFFuzEjcvDawFvCm/dV5k+P0J/EgBOvM2qNK15Zo62JdGTTaOqnVy+se3JCWZDl7
ut/C38V2SsaOSXCuKAee2xzGDKP+g+BvzpY7P+rc8NzQGXqDWK/zAjHxdQurNJbRKYA2W/wv4+Vt
vE0f0GddXE6EUdE/k6kKV/NtSHEIZbHNeVRtsrU81B9LDNPzM7z5AOekNkjhh49224os9oCmCiJy
YAolMqsPZRPVekSILpvWxiwybR6VPrCFnhww7uGjLXpKw5+ha66TQuy2SdqP/0vj4CRev4kI9EhP
SpKw4ao14vLX4flgOZyOh8v5y/10uRsjdNoo9PlEp3Le3daBv35/Bw8SP76f98Mdgl+Hy1u5G7/v
xzRDBDpoHhHgfT1PxQCCNx7SHIj8sXAUI+ZNTiLfNok2jCMSw85j/++//un/QNLanEQVP46oRTmJ
btsk+riYKKTIbWt9FR1crHLv6XgIjIufFIffQQ77d4dp+PY7jPy9Dd8JTuHE8+NPgApLpZNrkTIH
/7dTUF+MEf/85p6iVyfP/36GBHoyM92U/RJvmfOOx+uV4t/gsgANDgyenlG5lGd3N+L4Hkp4eX7P
AzhyaRR7K6FzVYi88tfv9xsyBPw43Aaa33B6fx2S6+skOUwruj3yZI6I9LiJmPrrcEiDRBtBGwZG
Rd3J0dBUuQyH6w6OFef5h+nyBj+QHLCpl1A8MK9JzYvOIplngY2r+yWia56bl4wdvgTJg6w0TK0v
5RiwKn+MWOCNf7J3rBaYRUyOznDpZ4RyXAdwQY5v6U60teApgjAGhwS9WAxQInLESo7n3Xk4R/R9
cr+adtZksphLBg6b/FxQ5oHDGkr9eGFsptNAk01BVHczLJcSq18v6S657YyBi7Mx08vTYEZZ8aJF
cEyFuyp/1GkNJl/C+C+INglQcg0SVgyA97zxLEFIg+f28jZOZ2zjhER9Ju6mrXTPgEoJ4ssotEB8
gC/3aZ+cX1N0S0D2h6t7HW8/2zqgmbGnFamppbVuttSK4mEqIDp/g1ciOZNmqRG4F0Ggn7d0T93q
NjpVakdu0+XLaE5kTlivX6TrX4BD8I/nv9AtPVv426Zql56SuVSSLtsglY3sH4l+TSYHXFH3s9YX
Hk7stfvuOu3x+TDNRxRnoZuJ56BZfbT9lUlrMNm8Kx4gf+YVz5huyty2GpdWq1sGlQTv13FXNtnq
qUniuX6uDGNoOj649sa3wqAoI+WwlwLyReE5nABWc7+mz1/govH5UTL+bXz6crz9yXkpP1q6SGwz
Ksp6hlk5HABMeDkfuEXBiH+6JJHAbaMpC/VuBRmPCLINYi4uIGxY3uRLRxl0pYFqwONsNHUaF9uy
6eZ9+LQl0igDteX1EdyW3/z0VdFs022VEKXDnQmJb8bJFcqW9NFTlD1f+Zes4mhF7RpaoupV5mA+
eMlpvdjNOt9wdZLIGcXR0sN0sudxE5PhrMKCevYop13wJVIry3V5CqeS3BTws7/CZH4PSKw/XNyL
eqCAUtqO0AyS/hl5HZ2kEAe1tNrT565fI05sO0fJPanwcvzu7XI4Ph/3Zk+FWvQv7UGK+1xdrtPK
XW8ET1fVBnZEwyjCP6aNojgcRCq0jYW1P/CYpC9iPaup6vXJg2EFuY69R85t2ulZbS6b5IZLamag
cdfjOwJPChvnz+6mWykpVIWazivP6Lrze+NU6f0NMoHGkXeidBy1qTYVBQxXdCBOP6l6w7UlruxO
C1KI9qZuGqsvbTQhYj+UtDbOliiI5zLpDWyUSv6H9Hsh+bQb0eTjAmv777/+yfarW1FbgeZ57kVo
f58g9IYWX/LXRVuDDhbXaSuPNNpn/PJWFMMg93n94B26Z8eNe99b/MNNqylDdeyBLv3+NLxZpl7d
6qoXPi1/OjqdkzbMtOFZK+EZpj0s5wwpTQb7pO0fLTusz6L4iX5mdqVGO2MwZFsYjtz7ur97OV2e
htPvUXJAg/zFeJvrXHeK0fcjYQStirUsE6+RqHfhzWZViTU6vibH7t/QSFLmZu48coArwHZuxzck
rZgut9vJ9HXilgKsq1cRG9Se43cGAZneclMsMoM8vForXkot+AvBRG07LSxp0dDtiLU9S7cZA1g/
u93/j5W3pM1mctYu2Gx1WjGVupit5iKn4QCvyP6H+/R1/Nvld98TpkwuvAWMCdX6oMm+AtlOx4Bx
96olAgVxfzGeBzf3dknfXd1OaGb2YX8n2pZ/O92ntA8bD7WKbSHm9vSOy++TrQlaQVYBFAw6AIcy
thYgymaNuPtuSRlJJZIUuEzznHdrVtqqBSNEuKrmYcq3cbjeJ7axD+PFjfb+etz/nKzkQNNt1uWt
WQkVp6M81VLTAnW7MLKyH953f3fv7u7kvLx9+iCFc1fGGDaGC/iuchIObprpXknGhG4ex6IQzUqA
RTCuIl+VFs5gjPz9fXxZCRiKQkzw2/JS6Y3X+wswAN8NL0Y+RzAAx77dA8fxhp8h3PAXgA/+FQzS
9MPW6qYIrQrp/7Imim2jy6HrYi0Ctircgr49JxrokuulAEXrNTLEzoFWaVyzBFpdVeljzgh7/fRg
nTa56mxxtSydhsqthTBCPL5p0vFdlPIfLMetaXojIu/8gB84c7HqBcxirKTDQ2bNpwf2hvPfqzbI
VTZPU6Ba2vq8NsJBRm89X34O3LrGKR1Xa4uHtnxqIAr6/4WN3q+gNNe2qu4L48309vOq6dy0vd5x
JimH63IAv42bxl53d2f/dWjOu38xTUNaY0q3oAmV0/Mc4uYjkJZv/2hMko1BqnjFyqgNx/B2uTC7
yO2Cr0z6LOuZM1i3Sa+X+Upsa7RZalj9kBmzrQXJ8+3kq++1IX9GkLLVrLORderZ/G3xp5Y+pH4p
8vKQ2P0FbJa/+Yfq99efzSRUW2vSHr0180KE67u7RYefRuehpBWM1J+REybkgOAhvxtas50xg3dL
YeP9cdrf37Att2HwiC7y2EqnTiXu02uJugniQp3anSiDT+Pr8PV4ST/mtSBDA5u3LZZigKu6W7hD
8EcdvEPtv9YQshWMfGA/V00icrvZO5p1Tkykx4Tlu+Yyy87wiCeaBz38dTUDQrXUuihTXb84TPq+
N4YlSFoH3a70aWU6Z1Ev+I1V2m8sVEq2Lh8CSCGNSeZD+v2pdCqsX477rRjGWa69Nh0dYVrINPVF
Xen+dlW1GBT10Q8T6CCTKF18l7n5zw0DFemofq3eOh3IIsTGCfyVk/OKX9JWorjQZSzHxDu4xV/s
Z45Ksx5BteP6IvNOYIcZ/AP0rrWpdbsIvtDS2qbXU2tvtUu4hCtRUwlhiak25/FcOeWSjPfH5feQ
He21xSACuNsVmw77sJfr5hJQEOtZCEF/CmO0GtHgzCAbxtYWOvivP+eAy9bNbfpZ6qdm1HiAQqTN
zX65yThpkLXG0bWIzYNoNtnjlQtcPfal63QSvlgK18zgN4Dlvq00Pm/rwoAdLLkOmPr7SK9YxB+h
V1LOnIbsIxNV4/G8dvzC5ysjsZG+k3nakdV4sDZh9QYHBnRE+jWMFxwe6FYjBMZfj1AUN7yNgDV4
N3MtVbvUGkWlNK7j5OzO4692ZlVgRcAgb/sN8fqV5Ginb0ie0CFgYf1/3CLTumOGPsk1QAOfCUp0
2Pqw0dR/1cyEef/A6E/60e10JpJNkBWs78+QfElbssIk7uYmsXTXMdpiRG81uam2iJfhRyugxUa+
yRGoGxx16X7SnU4rvGYp5E+p/78Fh/88fqOrnH4AKh3879YXGSIx6WV2OtbczxKlDLUfD38DpuZ0
GCdXQKQmJuK4vfbxGdnnoGXi/XQyK7LRsNLsdjr2uui4pRkm0OAsNZx1Ke1Spg2SXG1S0ycMEnQi
Vs0SHRTWkTwvX/aT0EhkWze/yj43uR32LTanmNtb4QX0juWfcbfSocV8ifHO54Zggx5cXcPT7XTG
+hFgsgUKLeCJSJva+Qt49DP5zx/Tt65e9A9i4JUrAbEyczi7Ia13ppG9RlGh9lK0fxmm/S+4LuR+
SD/mMnnWzP3JpSj6isEvnKCcepepDBFKI3VAs2y7psmWkjlkckdV57ZoOn5P73grzG/4n1rR4n97
Rb4HwNQPe5DMtM1SLt2S+3l/ulwjOK1IKzVdq6FTUxTaNoJPTZ4tMVIuJN2KtNcv4yHZoyOGD89q
5KlebiLsK++IHzO9CzrGzykM49n3GiN9wL169fPsEc9iP4VNOws0djYOIh2Sq7VNXC4+zdugeQLt
AJe8a5fd8BUmC7RFNWqMc9HxTYb6AryL6TPTBMLVA0rwf3xjkAiuiyZpWhwrowuDkOj0ADrvpAF/
eC3J9zwi841t+rfNFtyYJdp1a+GqhPnpVPvNND8bbX5mESB4dZYO1iza+d1Gt4qsE+7VSqGaqAcD
3afrm7SF+H/uw8lYUiOQVWUbjFaJCscM48/AnMReN2V2zIembfTFrR5V6vY8U27E9o9npxvBwhxC
eZKhZqtZo06uE5z2ZZOlbRNtjus7pt67ZAylMawbH3uk3SWc6cFOEjeyHcmDWSgKr7+M39JVk61w
yuDZ09buEkh0RwPsnu7Pz+O0lj6Lc4SESJ+LCm5/UkiBBnGW3Wl077y7zgASc9biMU1D3DYyZ0v8
oovvfZ7WmpWRi05DUXbP7ieopwcWEe+cDT8dn+6GS5jJPktITlZsiDesw3x6HXJoUpD+3fsq0KPp
GiuPuzFdIPy4qprHwhiPY4JwZOlNPlfRx/VatFmBTL5UNZqOLs2Qf7QFP/oQ4c/4TGHUxG3DmCIu
QGUxS7bVK6KV3o92Cd40y67boJRGZE/QH9Iv54tZkllXuqZa72jsV2Z69yL7DAKiY7jBu9+GAW7k
XcJntKkW732ZvveNtibrB3vLLDjoZ0WqkmeVnBW8epi5tEO04mDgSao1bvzLccCq/usVA9JWVEdO
qZ2jIokgnnzDlfxpk826DDSLoQFzLsK3rKL3PT+dKn06Zk74ZRc6K3Ejn7TkSlQ/3Oxi1WteRWQL
2cMoSlEsKDjacCs+1Wb5kgiaKbx1XJzYuBLZl3Tu23qmaxHvLx/K7dH5dh9ghSJ1e7SiAl1n4LeF
8ttaDpHpyHpXpqse11AQrXwgukitu2DseLq1tGXTW1iVmCIhHWnBDQQev2wQn+eJA29/EUiTvwzH
6W8p+ik0iXQApJZ5o/cLFDkCIud6f7oOUKSTjmBH6eyQsbQrlpGsKyDWUnl/S48gZkQ2hVFFdEWQ
i85DoGuRz1pVYzblvCpvQ1S+0BelWXjL0up1lmQgkXEi/EL/OUzfsykShSGRlyQ8LKRdIoYkLK0T
1fcM6MSIEVAtAa82JDOhZigV1sB+wHkYLsckYN5xIzOcJUqz8/qdhc4qCuzL6WvCvfBsSn7EEpkU
Kg93YNULc3NCyf9UHNjBxH9CkOP08uRUb3oL4i/AM9qWcb4FOynX5PQo3IUfY9OuklUCLXcaAWdr
yDmusI0rRCs6b8UQgZgnPQcSy3iG5SNtcbrKGHagjzsARppnUAMYKDtp5A1C58BnHG26nJIywORn
dGJlLL92i4E2P+7cyONJTiePA5QRrkPbERXj2+UwGnuShTE6TIJ3fg4gejyD3elCYbo0LR/Mhww+
2p5IYErzgYAmbtR17ZSrOEgEYL6crrCmMzjaQwpPiDHYuJ6moIRjhFCkLSokjRDi0QTz2c3daS13
o1NvFJ6E0A5ljEmzdnAW2S2tCeKvoh7ICv/t9TYAgfrljO0op+chvWzPEIfLLlURVuBWBm41EMsn
eHCTAlH08RARRKCsAFAaUj+l5xOvO4YAubUoMDDyTWHNdt3dz4P7iz0oYuqHa51RFo8X+/1xoTax
oKFJQnK6v7wfkevxcNynpb8s4rmVkQn6fj5SQAef7+lqS73YMEDv5L6tnNbgsM5x+zq7eAvKyB6x
psvxgvl4EVQWpnV5HD8HIzn3LgiLrFPI4+C8xfs7zhW0c1qCxbUv0SMvq0ZtJM3LmdsvkIOweqri
hoqnIjp+IMtuH72eNU6k6OVDgRShhbjKzjVKIULxKkcJw5BCpU6TUmN4qOmzE0IVgzNzrU4gguP1
ejfkUzx5GNUrZ2JAvKagE28oEtD3OTlYK868wXbp+ScshBXjoImHBmXIfbNpaARqpScsjKQMyZXr
32DSDHVd5+l5x98A0WWIy9ov+NjfisEUVbtgMRP6zxbjNkoiUo0xhsQd8WHHTyl0TL1MXwzDi3uZ
8yY2EeZGdxKCltvehUa8y214F+IoPkg2TC/3NJd/6ZsNxJGaMm22mHAiNCujRQZZmtxvkju/eGr7
+xM0gn1Pb1Ibh8EnVL/fIfB8NRxM1ITixAg3R+KE2BxGFNp1CCX2o45i00b0Fk8GvYvLx7hiLXs2
eVxOHywCCA4FAj2gXL8NtzvwKx5PxnNelrmwnIlxmdP2F+4zD3oNZcHw69DIEnoCVHOmvIjpfoY6
+N3zaXhJn3l8b0TbQqruGSe8sV/dP2ADErDa0sdeZ8ohYEc+aGo6d7Qcx/RxCcer7yJ7gHArhvPx
enGH9n7cOzflRria9IWNppxsxce0fibyrPR8ZdEp4NeHtATpRDAMTM1TFdqcjW8gxkj+ZllDwrEt
I8cHGqKsszaaoVHdwCm1uVY3N0PleXZw/wA3hX7CTxDso5Y35/eLsZQoqiC1vrX75scn/eZoA0Gt
bTXZh5MSnkoeghF8/5zsTsAskUKT4Q7NTBTaIfehuzRO5V6mm+HtFEJCq5g8Yj/POeGva+5BJfwl
8IL7QglY8WOIxdmyJky1GGaCWMD5/oYSnr764uHAt7n7nCk0VO7/pQ84Ci8yG3kNNRwoQwhonP2X
lYwOakvt1rHBJrvmsibf+rYU8XrCLWE89qP7RFkWWDILJOyFKdRFqfz2wOAMCGMEio+HFT+qnZmn
nnTx8v7xbziJn+9PPxpTIOCf9+Yw7idNHaBEsYXCk4ujNUHdoIVkP8aJdsd0OE7EIbCEqfUO8Mub
D8XDW2U28MG7pkNO5Scs4LR4Rv0IPgHvM62S9iogEIB8zwjqiQ3vAoXLtkemkIZpQzE9f3/pkkAa
5Jh+drWHvFE7R8PdvsF13CIICzHoLCISptHptzPxSdo2RqZDDKyrwYoHMYJ6+dW4Wi+srx7HfGj5
RTSJB++vWxZCleXK/uZTU8+yMzGw0dV4YFPo92gKZRjG+z2+42mdpQN49ZwjDO8RZxeP4+H3lkVd
dvOoNs+WrD3WTUHFDNZVKqtemZ6sTEOgLW1R9Ql/HuKCeI8NEmEU1Vw912XogstZNSt/jTdFO4J1
88m3ynaAa70r4jEv8L/3AazFEYAuK+erCHEPvIrdho2lD+vwYR1v2XX8xx1KD6wPm/Ah2Mglc+Wn
ota+9NU5l4AbsIPYtdJpbFR4hfgOGhv+zzS8GWFF4U7W2jDB1vTBPknPotMOaXwKd+lzTz+M8V1r
okdJqv5tvF4JsnC9WkZfk8/iCPzCGzFmJMvYoXGRlu1ayTZvFXiV3l5/HU7P0BdouEkVnnZVdZaq
kTmioDDx/EZwIjZk1gp9fRmaszzFtPIRzwBh+IvYH8PNBzlusa7u3YjzU3jVPwVIh9X7FLaPTdpy
JXyaPpi9Pk4bLgyHapFc3wgtzYLUQczZHN0QbI3TyYssEjCRYiem9vvphJdmc3DbtxjztldVGHmo
BHwVnZRS5YPqz4YGbb1bt9pJXcim7m5QsnIz7K9C21/NzP6yvUhhVmBvom4W0cPlXNJlSagVhCca
Xe34wH8Q6MCUyUrEc7CNHzS7eXSJ44qo8ZBzp5zGejmnb24hrLg8NpflPXY7+3u8Mf9N0m9ss9BR
WUCRiyg8DJiOLYpUWB983TNQGz1f3JV7gQD+jnv5sj2Rvv+V2m+2ei11aYfYK2kLdpFe78EjxLHI
sDzwiaSfv1oZmGzy8jGidMqDTV/jWSgpMTNnoB6fjyNxF70N54/1rF/cRMS4LMWM069pKXKtReRR
mNkeb8M7xOnP0HIurY1bpUCFYCm98jQc0jX3OKNWOYkcBB8Qh3QcrsSJnO7pgwJaqiF4T1iRh7aj
G4LX7SwaSmtCdUD5VJCiywnbcJ6vx+vNmXof6eFEFBvbMjR1l6lwnh3Ca1UIr/5EVmo14dXNk1OR
Jx4LA8nWdPf7xUIO1DPfIMri8fwO3e6CoKdPv1HWprLgQS0ABaERDqiEFELGs9X7i4gWbo3GwSsR
0knvfKdtgzwmQubWRvrwRRy3CY6XN8X/+29/2OVN+pJ3KrbP6Yq59kh/PvttaUZCvzSoXEtbDp1C
P2xMKgaxsw0HkRak1D1HqR6xaCFtlXYMCoX+6QMAic+ISkqr569pC04ESqqwT9aDZMemqrg6WGjO
oQ7q2X5Ej3If85/bcgnijuXob+RsKI23Yf/6M11Y9hEJCAgak7cgbT6V2viqFqpCbANMJORFmxEJ
krFt+VxHwCp57+fSkL79VTqXwG6cyV6Ou6Af1KZXGsSkqkddoXFj7LLRFAQDe/rnOw0Z8/GHN/Dt
rhh3/m6LXSFf0D7s5TyOsMkt8g3Tw5XoZrsBXt77dHk+nowtqZXt05Sf8D3Sb80sXFt611GF18mc
TeufTEttJd2Gl+1wgll8nHstXsf/gdKOv4xpTDgKbbYktHp7/DPjIbRPd8uCKlS2nOErDyG6NTxC
IeKV1IGaY1rQQtROjJfZkrW7duLXry9rwX5hAnUyGfoZCI2d7cqUvHf+mSZd7UTB1GKFvnl8W9iK
chd4f8QAOYGc0qJdKswEK2N3y16cNl1xP+MEwJLqiyWM1cs0fhCXl73brYb88MsfLwfutvu/b8jP
adbW4Ip6HXoqwuvKETeKrmGgLS1Z8dojR3XWPaBTfdWJEUKs1LvMuZr/GZ/+40/MavzvX41MZiGg
FlX2UBNuwqAEQBaqr2srNJD+/Va/ESom5J7bl10AkIBfnjbtcv1Q9IsBtHTIrNZ6RqbeTqL5dvr3
Gw1Bb2YWG1tGaXtNhPuLKO3TES2s9Lwz7dL3hlWWPoNC5x3bT5rFthYSmSLs4gHVAQvUcwKnZrQt
yVWZvuYNCEQPaT6GWjd81cUixD35g0e6/fmdexVhqDNdxKjbv5XL3ES+lG2tQKfSE+yVZxVq5O26
I9EJEjFQ3eKMtlQdNYKLrYoNZ2AeaC4ZRPCNInFrlBH+egQI4Vrv4Ea0DXykV37ksf6vyxkAYe5h
Of24TpJU6J48TM0RGNhXqrHqGZnicmXlSjNd0WcTawPqJWasVXrkptVsqgv9B3fXi0XVLtuSYdxR
FygXh1h4zhQ8u/OFGwKkK8AbXYuXqqADMLtTVHBcmCV5c0eXREtjVZ1uMaAl63Rxms8Nc1hrTNgI
pmSIt2tGcujpsqFRZl3qEsgZJwaaJZs5gkUFKsGvuCH93YnByEdwsOqyW918WlMsgMXstMavBu1m
rWkXs8e1bOz32Qj+OJE+FjMRhEWv4xF6uHM7SXwJDsfru3tzd8+nMc2aJclEELtaNQ+sSsPhYNJ3
iTrPx7p87n1mNpaoBRVxFfF6qtZ8N11uJl2i7t9XJlo4nLHcCEAfxyejdFU0I4a3pGseRsOQ4f4D
H/VVIu9WsL7kD5TnoS/MAv1Muiy91FRuM7bjj9OsCaLZXjTXLW/58RVU7G9HChqZVkXfGOxy6zxR
rXi1H+m549XZxDOcaeIMg0x3422s5W0swjOjuSCL9N5kSo/rsjOKpdHVpdNa6bwm2Ixhp7t6sf3J
1s6njSTkz5e6qWzRVoKEv4y4bsWqvrPofdumNRqmLZMZrPT/FVKNnqba9R+p4OqP59vl5/H0nDZM
tWLR2k210PmD26mVBjqz1reJrgJMALFS7S/K4hE2sd5sBmZqvcOCnZt4KRiOKftUOEcsgtvSdmtm
dsIRmoVbuqzW7Wvdouv2dSsC+60SrfDKuT2FFEfT5R1eh5FpwfWDsdvfDGIu3TZER8w/odubqljq
NI0dLk32jXLGb1iQh4jn5RwN/MSzrzhBvb+d03oBW2JxgKYrMNUZa7SgMyY9WSYXK7XVYn4sTFiV
ofXX0+Xw4Q7/vv/irZXp9gGMXawpcHrX9LA5yz/WkESMPfWyvZyB9MyJ6M1YGxv8uLbIdgjcnLvb
63H/BdtVDufdy/BujNKJ1ZEHQEqGMkLD4e/DHum2L5H19el0SbhrNGQeJ0Y2GUupP8cdbL9YaFoo
+BDjTmFwwwcwX8fpeOOdtsifaJRSiEI0bMOciLEwFRviiYgdr4KZ8QwdOAF1AdsCXu0tHTDjDWri
gvJgovsP4cCcXN6+jeMZkWfmquLewKjsBsFXf7q8HJ3NQbzFCBOGf7TkKReS0GEhIMdFcIO/IXcm
FDgZY2TiqERPDueEHc93UbtgDSHOqQzp7vTm7Hj/rU0q9CY1cl1wYawdZlJRwrEGjRvk5nRcl99G
/TyLDdCNrQhKKfYCM94lBz9gE0Cxm5yz9OOF/vHqQc04Ow073SIjxorS4mAvna9kHXtyr/UXtv2G
0zfI/T5dbje3wjdnch/Plh7Ul4Htruf7r74iBYMD1grjnPLIZfSGlSB+nVQJQC0fd5fpME7WecmL
gKfPGHnEOU7Ae03eKr6J9uTY0qWxUAybuS48uhGsPa+L+Z6re/l0+R4rlXbTzbjied/MV8YZC6/a
72d8dXCllhjEO4G4nVpxv7mb6dzL8xlgNs69BCiHc+YCGiBJLsDKMVcC29a6fFRILlXnrF4/8dCi
ZSOeN6dAoK2Jz4F/t6QsTqsWPe33JzcVUv3OAzqeDm6iTi4gBg1OJ8GHV2aY97W45iHxe77sgpQA
BBE84AHkzZhlk6sXih+5cBrxgIYDhSbvb+6CflgCLKQv8tBdJmfan2c0+YiNTtnnPD9hbfRl5IGn
U4VxxrSJz7IXdSK2BGXjkmQB3hf3HFDx3bAHyl9arz9p45nI2zg5ND8bceuvZBwQEhy1nbVnvTBY
MCVTcRTvm7JlIeDpJg0aBeOU59syng3ga0wU0GEon1ySyidyYRA+48IYoIsDSEsPk5yjnEWfHKTi
wBIOQktjZWS1IcefZ/MCv8SoMLtU/PM8/8b46SYMgFxAZdVuN5lxhFzsAGbFOdv+NJwgQQaBBtLs
eXoZdSOWEfhh9SIqYxGV2D/MypTqir5fx/vhEtBO8KCmJ1OxP46jUdk/u6kjdNZ9nY7nL8nUCq6G
mRyFUBVyOoYgMCEqkw3A/3QJaWrTgxTiQBDi4eEYDxejM+RarKEh4q6lLcW9NE6mEfcLs0JFn5iL
IR2dWBDxVWkN/HycroaAsqeDn8vyEf85upaGRYWDtImFrGqIqirml7v2NNUj2hnei9hNJ2MPxD0t
8bLmC4qKXktDtjNxrGSrlInJnCZjMnEUzK2XTP803Z8+ds8TGKj+jXUu7nC/XYy7G29bGanXl8Ss
NMRMqEG0zYsuIWa9IfJCCXHZZOLyGTMpqvnlY2Df1wsR2qN1iYa9m5zb9fR8KjEUFteVn7ay6LRy
ITpYpV5KBW0ogTqKLr7dpe/1cTyBDUB3hjFZdGDGBRKSh2ZfIZyc667wftKuNBRrOT+hMiktxiWo
+7m09Np9oJMJQmy8fXFROaqFfKYXlp4eQ1c0QtOhB8ZxsUc5NkySTiyPXJtmQVV0hpIQgidjFgTO
h/YcaxvDNQgkc1lgRGGJM064it8JonhtCNSGMhGKqUFrs19YuvH7vdi7uo9L58AdXOIkEyMZZHIA
VCi9XHplLF2+csHL8FYUBlavxlUVKy9DjEiv2zADM/lIZdECFSEI41oK8xXnwekQ4o1gtx4bcphP
Add0PCo84y4ZpkcrZoUGNo8GThVgWl/A83gb3g1Hku54NT/RLj0r625LdY6U4U3ieTHOqRC2KQaZ
uzbgvgdPoH05AaThnUYIMT7AqoRwFP2H6F/S+aQgZo0AZSP2L+OX/gxdQreFIHEYjcjtqrCHO2R/
vwLtArv4wvFPjydAoliSy8A6Ch1YHngZWsEz7rhBipiH6GUIbaVHEcUQUB9XBtYyHAUXN3tKPLLa
mVrpYTULFMfufDk/7MpuOF/OH2+X+zVYFMnsQRm6xYvlcvXMv2E08W+Xv13ed7ck5W4juSBq7NZJ
N+lP4/Ptb5e/4vU2PheMRfhgVmwthvgYi316AAH/RDnikh3yxbBrJu2CVzVQa0DmkQFLbWS1Vk3V
yZQae3xtDbXd53OLule++w66Gpn0n6T7pLbCLCtXY/hcEasb4wmoyrnxQPtM1wm9eH/D3N1df8Ol
mRQb8K1749JuJd9Lfekv++HjPLwl6snITBO6Dp0oDwHzOzvrmGg8UGIlmCZi+bcsWUOTtw+GeS4X
aLjmwrzxxadqa9IhYvrhfOYIPwZrOE8K9UPD8RyeX+N564WlhsXe9YLpYNhcmZgUkiw1/YLRZrhM
pZDbroxv2uIDazmB9fKxsAllWMyVMDxiGQp/l2fGFRGSIMxccmnKTS5NNT/SPunSWMaFUB8I4mTv
6tG4ME6yENuASpshRIb9ZR1HP1dHjdpW4zjkQQb4sJ/F8e3F0BnS/W4wHLggzcYNzcp5PHcpIGxM
vm/n3lelIyyvl+n46wUhH083w4OqRGAW+TLU9hlxDBHvymPntkdJMDzkQroDaGYqb6Q1fjxXDhzb
yvjovExHMPHCc301lFK5rFMWJdEKP8q4ch5f1VkIhZrqoGNgHEgxf+g5WUUQPT81BtgaN156OVns
83O9nMb1MEop1XWBlYmJMMru7DYIz8vMIMgILWrQpk84b3z4hg3TzT0uzwpL7AeY83kfJ7Rn3obv
fnTrqZVOMeY3OpUqA6Dtt+Ph8u26Oj1upRHtmT4ZQDW0Wpa43usutnxkuHZYyOKGkEomAqVUrZ++
E1Z6o5w/FfVjPtPQsFFemkg1JS84OjzrV1zIHVGapbIUhrbp5evZxdS7PlRDQWTZsrrHlMLuhJy7
jJo05L6em5cqQmBIkzTZZbRoplOYiWJdtbRzCyhLX8ANl09qT9FZktPJRL6vTWjjvMVOo4fAtmtS
zxgzY+6Xx1jKurUqbQusx2GngtsEJ7sDkvLt5jJbyWexMZ7FTL/JOoH1NO4vbxSUup+GyfDm6Qpm
iWmgo+cHW3tKuDL+0ZtYtXGqSmQU4AaV2VJmwlBlQuxRw3cz/Jd0xD67O7nUs6hk6oQBZIh+IXOG
mYBUQHE1cGUg4ygQmRriUgjPqMciu3wB/LCib9tSp8bzxGKMeH7Rz605Ge0ClPVlAlArUjxebbyB
3BfqnLOc7Dcub90acQWODhjC3y3rkccdMdR+IbQABse0p2PspYzSo0FRZFtsHON8++UBl+wSQ2Az
KfXUvpR0NdRXXzn6M+yny/W6/jZn/cyL6vLE22yovD71tskYq9T+htQVOoPvlM5CiMHYnbJYhkRg
iNYDX5PFUHTwwvyCB79sdZRCxq4N6a3nMa0mpVfWg4bMt/2YtfFzOg0mLiLliGhgG6ji8e1pPBzG
w7ro1FLnhaZgj4Jj5eCyefox83E/BGM6vWm4aSKFWmex14ZhAhl3U2gqTC2WKjJk4MoUkCfgm73h
tGorPcT5OnmZt0RvmaZcOortA57UnS2h+ZxPjm+3rfsrlaCsJEiZvA7jVCROjUoYFm6wYXKUYgC0
twHipWwGrMDF58OGOtaVKlko6wfhsmPtjC6NCE64ecxpgVRvcOv+gJbQ8UxkJ+MfeHP/jHQ4138b
bbRuU6giFE/CirLLYfMdDJtso8CISQlMbuKbwKoKbiLEiCc4/rCNMZZsjFyJioQsmLMh1Tg8waFe
wHSzF1q0ahwfUXmEPAMjLC4ZOCyAZMnCOhcKul5L43j4fryuYpwYQp+rubHhFTNvMq2yhkVuS1Xt
5PPaRH+Kh0G1nXwl4UDOwP1z8n9Pvb/ZtzbqQPngM3HwgdyBGQw31/ZUmS5yyDYjIfgcBEo/dh7d
gqLkK5bNUf4+M0H0CLvT5fJOYuKUD1CxrEGIy05JRil7GPPecnKKy46oGchaaUPZquKa0vcBjKj/
deuAS1MajQuvH/LJHAr4XPFPlGSkJ816Zf4DxenlYMHVZbFejT1G8hk+/PqG5WewkezK49ZhaM66
F60u4mEr/OZ8kWE6EO0uvi+xANMS+1Jpdo5riYsvQu+JfDVf/UwVXJUyUHe+3Fipr9fYFZmSt6pM
PzXrxRJ5H48RG7X4hhhRm+F3G5xwlDUmLEZPtw/l4p8AF9IoVRilQnOL/UG8M26cA9dnm9l4HInb
PhalKiXcVJRFMxHfA+NXJ+/O3r0ZLJPp0jQaJovb0sWaYgncJK1ghtZpRb0aymNePi3dOBh3oyNU
eFAy279nelb8PgtsQ1u0OW1LoX6e/Sdy4oSWtAxBWkbc3jxS5NI0btP9vF+REqao9cvgNmKstS3v
hL6OJ1JGNoENEXj6uoyyDkZpnv2z7wcNG08mKpvPvR60tfGIBJniakEmzSFKF0Q4ejauN+wrW6xC
YzYh5/h6f/GZALqB1iNaqzohztsC1SN7jLshoJ3WUxX8IOgic9mhOgbAsbvg6hPaqSeec2T/DLaO
X4h+qdJ4EzKKN14aWVVEDHuIecgHctbeigrz4ydscqp04JQb1TwDnOk0Pptz0qXlOv5KADYym2mN
a5WGhRIMZhz/jZAXrnbrlos/dT10sBssqa30+dUpKoRUcQfbfaWy+4peCSqyyiKb6+W7XYtaZJq+
gBugboh38MY88BbU2/UzS3Slva+aO76EbG8QyBXCg0pTC3DoRZy724mgXFZkqG2URJZVPKZ0Bxs+
Glm33IpoVHRSeRL8AqyV+eaZOqImYsfwv/eQ2OPb23g4og2GN+ZlPANlomdfSymFHPsBk3wjOWA0
7WZgW38OaZwtDlaz8V9ywtcr5niBo0v8bYIGEKZepiHbMCSaeo2a33zlbN18mMSxvPA+zhU9He7x
ifiOT7vuNGQR5xrbWnGFskBChWdqbcAuHk4eKZEg+AzXe6N7gdvIklQybM1zHOLUgN8tBTLmecS9
ymOjATwEhkM6CTkN78mEEJ9lE4aBUCVrwMPlDobL2zghxane+NUtz+PMoikQR6GD2zZWVylRqx60
CMnYJ7a96uOQRexkuyC98oKtC2+dxWVjZ9dWRP3QON2g7WggfbK+3Os3Ash5Hxu1j3kuKnOc7+mM
n0j6AjuxuomNulYcTJYMGhQq/dzJ1GpQkQ1Z0ivs25I43Uwpr/qosarYLsTSqCa+mc+pjAdeCM1q
CpI1XqG0Xyc1NbsQ36YLuOPAfr3p/tRZp+4iu52n4/X2KZms+lLrqmZ+p5mcEOmH0oFFksV4zGV0
ZYlDeqaMldCv6lOtd8rsn6hR4d3TM/Uu2WqNCu9ZtiTO9PVcpxIjGcX1tyy26qJEY7vzh/C23Dkf
dVwbUxxyzFusacYNFyVuBLaWacg7XQrpW2Z2LlwJZNorPQLJC56353xi5IjND07D3syG5NHkbSKZ
/mdDRhzkazUx0iyzsmKtFmWuI47tnMdDhcNgscCYhGJthWk1GVDRy5dJ2Qoma0+rshI8SvB1N4AT
2L0UW9SEp0PGGl7Mqj7eKU3hFDpTbl1N1ekcS7UVAcVuUvT4kHKQdY3bg9NJ1rZYjnGj+IKqdj25
tyY+1Sx11nji7hsiHDYcTi48WVlbvSHGxgMIJproHoVwBu2Q7WLlnTybMkJPAl8Ntx1YdRs1DxyX
dzDeGPBSDEO23EchrHVIosV4OH4l6/CeLMeuiQoWsE8cLnKf/e1CYyTzGqSfox6tYgeZOJmQXE4G
GWiYaGcweormgZWAf7tAWWBSD+eCCwAGgAwQ+6dyF8zPm/g5lM8wOEl+nkrs5qIQF9VrG9wmWcxo
f94ph4dFS35uT77XVn4tA9iBkvpqbX80U8rIPSs335x/W+gJNA+fQ7DmW5oDNBewxHIO4ZSyaMuA
2Ic+7MOGklL+XIhyG0wNuQrzIrW5/vXyYfL2HkYZwP7h/cOv25OPzg/gMtibkL9uT77Va+8Xbt+6
VeXLGGEYiAX4YMmGomCWZLGKLPir8gRtXRZXUXMhwWcTdmwydTppXv6WEh9+lXWsuaqMDPLTzbKY
BMdk7KWyAPjgclzoZ0SeCzR+S6Hy+d2P6+WKTU0fN42rAJEmGnRIrV//hqQtP7WV5sttBE/kBZjr
bh9rxK11No/Gk5sEiRkiJP7Bzh2VWaeyT2U6Cn8yOYkLPUyeOjS2AGYgOiQfF8id+IFlFOdz7r5H
k11APVa5dlj8miV81nZ2A75YM1NMwtCCw4UsmdamxtOtY8JX+GtbQQtloLgnKgFQnO32JHgZemdw
xX/Q+p8T+zI0Egh9vdh+2QRVQPJd0fWuD1vyGcWHkxDd3/IAVNiS0C8DLfm8Ve3nsQm4nkp1deea
z08gSXBCkSCE0C31b/KicahCSYmvR/8MVgGXJbpDxy47m1JhOIten3K5FamAvx2XQN3ntjpR+MuR
LwNs3f6fhingjHLd7vS3gNxwHN1Xvm23oRRwXdVDGzehKomYX0disbnauraMzwc8Z/2MOVw8/+us
2EWn38PkG/JYwWo9+ZL7tI1l7SF4IsqqbWb6RoxUtpEwNBGG2W1OHTciGpEHo/RzJUacw27UM9zW
q3ENK6KhE/RsHMY4y0a+8q5eelBjXOU4ng6AjqDcB1ZvmuzTtQ5ENnKJn8Z5V2I0WQX72dofHq1V
vMksH0GP023YEBVtC40CyQzIjBWnyxT5cptvf/LZQu2Ve+DJPegJgEY09+tOAG5WO0yIzS5lO5TP
VvCwYGWz4XxpKPS41dxR9j71Gj9VVKK6loXc3+UTNTHwgAy4mZeXy9n9zbfpeMMClcvBhDDUCldV
5Q8w5Qnrl1dRVVFEmvjKAb/PpmBjrvBdWaR3SGod06/KahV6b7ptVUc8lRgqhJolfu0jDWroNcYK
DOE8KwiYutPU2a1sLoU3wFakAskFT/YsQOx51dcOqdLU8VUgAeUFsZSys2d5AkJqiFux+ExVE8+m
UWtqfBnR/u4OGCuJtgPLclWfAO4ejPX97fR6u71P4z/uTk/hp/qvoG/w++V8xVaKu8Nlf0/qZ5DP
jBn0sKinCGnFxJj/35/+tIORwrj616636bg3foscP/ytMpYi/Lbf+sf9OH25Gr8l1tWkfgussv00
Htzox+EU0opOb5/TI7NrAyPnCAdfGtk3MjPqWHAw7pGLg8WqgNlgT8PB7o5JQ1VxxVVqxYfxeXBf
7YabO6un+82cmziuLihSS9ySRaq0cbkWtX7T8Z8v6jeME2/j8DHnZQzvz8j9J8aoXdyELISQrE34
+/WC9UuJvqt06zq1FQyLnY36sjfOJi4Wckj1+rQ2yXZX6SNaPPLz5Tw6fwMhDM/Hk3UkRRgOzEC2
bubLHG+/+55eqN7/sl1dKFi6A/gE0K8eAo77EfrCGovu1cUp+m1HfL89540xqhDHMjVx98g+7e6T
s3aGK8lM+KEd/hL6iMdfrWuvFThrEKz1DJpz9qu2DDTx0NDEXr1H31NK2hCMXt3VKlvdcmxkTs3l
jT2PU69jY6GF1XM4+/g8DW/uTpyhzeDOl/umWivSzKP2R7Du4k+Ijnzuj7fLymZUWs8ubrhvZwoX
bjd+34/vyfgODZptuMl6h53XYRkKuVav2bJqoAkO+73zNozZ5VrG8tBd/AC2+QQYH77AhqCW+sHL
twgq9nvfJqRd3EJRsmKqno/zfsf/xngH47jkq3xGd2/8ja7Uc1/UPrDf27aiL7SZUm5TkfzCGtOM
JgaGGjKycm+XL+PZaT2qGXQnNk7gAF730/H9FnUNOITpaq66iRVRKLF0flmWpz+pRX1d7Ofr7x7B
ACE2cBtS3hoO01aqHo310PIwxmzauIA8pnzCMLQbMMb+dMG/epqG/ZfxZowYq7AQn53xllTGlsRJ
gAroeumn8RxwRdfXcVw/k15VyPksFg7zizvoafgFFmOM0OVqhMKHep2MvDF+5h/3yw1phM8XGtkY
TWxxLTbEONw6VzLCthvvBL0r+KxcrYPosqWCSXy1jwbZCx1ip2pRSxlBp0xy2rmkQxDVlmXISPro
9LB/hb5KuJ6rMYtGFfTx7UL1+n4ajmdj7aJaswp8A+5Ws/k2TPtXUCbW/tWNPgSSShS+3VxfJM0d
mo2uNC7lSE6FgWVgfCyOogvCuLiTZMqFi2JsbK2Wxn6MVnq7CduuOVX4Zr21tFWtKmrlOWZZaXwi
ijWzUDAJXjLaNNanTRRsSLcxiit+ainfTutr3wjmsHaJ61rpSX6daKO48/O4LtDdbJ9o3+3H5xdD
TzSV2kS+4nEnLBXT67vls6f36yvE793h3zgotfktFPelXZiM8QA0ub6u/cbJ7Mavx5MxbK2Kemul
hLafWhtPrYgpFJqAfqRW1MBMoTDB/Zuz469wcwHd+T7ugaLEvbjG0VV6t5gbyd1Q7MwcXqkrDENK
AWIx1gpzpa1D86jlB9gYRxe3s9lJO/U+TMi+ggLxYexSr1eX2XfE3vKm0C95F9/A75ZCa3v1dnrg
Ky6ELeUVrV2pB9R3fXs5w6d4LO60yTc0Zt/qgvZMzOJ+RiPG6/70IH32YMyEVxTa0TjX36l56hx5
udL/fR8O+Af8jyA2AC2779dQRYOykPxJZLDHHDyqBM5YYX5oeHsbbsf9bj5waqwsjNVBrgTSDDR9
KMCxYMeiClfEZmdFI8b3AoWNRmQmC5LHw3GlyLUUjV3x96tgukCzVdz4He08sNquDCaKGgj0r4qa
+WhO4/lla9l9Kfo3l9FvmY14vr89AYnethFbXWGcPdAIWx8X87LrRiXlrU9nSD4GqVwgcDi8HU8f
2OgZkjTjmbrBWoOJooQqPIqzbQlZxG370i0xX33+MuSCvyOOxkVLdI1HC7QsuF04l4wIjSya1J+6
57kgM2HBRFI6p+f+H/F24DWjsu4HBEgaGstMHlxh2saGl4DsxIa+8yp4uy7LXyBf2MbaOOWm0zei
GA62uva9NK4jFRIeuW89t7D3gIC1kjivWcrYw09SwHiGxG+vTslD52OjDtBfm1BDWpuuNv+8qAcu
Azlcyhvlb8RxFIISSCnDnd8aa8KZ2tNK2RkErNiCq8zFxSo1L7Ax1s5aYtGqyj1Wsa/Hw/vRV3gB
8QfBT+9P78fv44kyb1QHs6ETD/9QLaYtKDU9udbGky91Vbdv53Pcf/nYchClqKPJgnCnHDaWglJJ
G1vTn6xtZxqm+bWCzr9duNV/uEw/XC7TgaxYazBxapF1J1j2uKeM7tu2reJuxs5jWVZbc6g1jYCs
g3u6bP7lXJEi1P4qN9YvN6oOv6oUPpNp6bf9eqV/fQauA0CKJUz6Vpft402kmBEgY6zjLMSCCCBR
cU3E6+gGYeDgOE2XCW7KSoIZi0tK1dio7kObXvqvoV8vv0yTscRaFGyhDosbBFC3qGjcrOAvT8O7
oWw4BEyjRfqPMJqosdg2XtWqgii2gWBx0/2MeT9I76/VaouCaOygmcWWxmgfqILodE903rBOLbFq
4mDH02l8QRrOt6djkmY1jyGFsO1sRb9dDsfnD2UDhEmulbhXlR5Rvr3EuOBcy/F63jBSPESswo0r
/PHPP/lEH8zJOjnBKoEWrHwLgjxgQ+mwRGtKuVIIvF34JbwJzEYiKvcD/GlnimucJNbyVI9n2VqH
WCvmg6Jf2qjJw4zN3dJqiu2dLeuzVifEPobJPabal8NjB0IwkI9Xu76BBhXmhESujScQMJiwtcpO
WVuluDqkRidLBupO7XZZPB5WbR1Wqba4EFss0bnWCJ22pIQaCRLtq8xXjkYUKQq/l+N3K7tY1Xoa
jwuZlbqvzqbRZ8pJGQBWrjwetTbTy/7xSBrrd2cqizuRXd4vb5fni1lkWpdiF9rg56fuXm5JZakl
uo+O42HcXyYqz4II7Xh17vFhODvLa03Shbkle0ktvITWSWuBq4TE8wKxEdjVEtpWE3dwiJcybRvf
A2m8FEHgZG0GI8dvgYLoABfaPc/HqzXujIBGWHlg3216Fwp1qb0E0XtOs9q4yHLxhbEtF0uqqkbt
OzO8qKthPQhNpvdcLYzLCDYurFw6vendo3unm8XPUotrRp0k8seFWPtQ9/rnq2X70hohV0w7cifx
kkKJ7dm02Hplz/AFj6x73vy7YB58s5WkHdWinF9Oa0aauqxoH24URIGde/OGd4mvl61ypIcX89JL
pqS115XmZ3toLEHnft0RX+gG8nOSwVYJge9e7BU9N2MDX85mpCsrZXuz8aFf4NWnN1N7L17xpYej
tJR8bdzRrbez0N6EfgKtD4XpWoUaHL8M35Vl0/unN6RozJHMDRHaOGLKlKqoLJ2nlbm8URC6PT4f
qS5z5xz/dOF5HpEyUZvXyx6fYhSzZKZVCyuiscE+tvWtptcrFnwMa0+bfOlzyz83X6Ve0cR4UlvY
kg0PtmAtE7YELuX9ft7fuJIdS5RXqljyCKhiKymLVlJK9kwPSoeZKkXlijaKPPLLeU2dlv2Sep9r
Qjc1cJsu53UV2KlgGjdkQucOa5mg7JFy3KaCFhEpsFhqTZlMq7P0e6lcwp5Tpt8u05dxohQp/XkH
fTiSedCmagTyCyj5uaSKP8Yb9T0JwschSpECjvUsfgATxtaUAuVDWPGs9/VhQBZ9398uE6GH04NI
xviYKeQJEAPiewrUiwMIvGMZzXMeIJix75fj2drJUm2Dz4TTIJx62b2cLk8YVwqLM2ZVKlRVqQYc
v1J+D+oPDOL6popLA+ewrdTejNfr8DLam1NpnEFMM0PW9MKK/OswHZNONx1ShDWVkeRVHdL1Nky3
+7uxI7kQViAg8JQI4+kZYoh//nb+CxMRGyJXalRRrw7b3RYA9JjIwaYqNHKCoXvjAd41YDunwU7H
53H/sbd2pZRIWwxi5VxxB/yfP9H5BNS7c+SHt/Fmnfe8wYASZX9cxspaDXlTp2QpgUqAz8CNz/W+
CkmzhxFIwhqBbCRuP/q9/R8c7z/wGv28d2cdSwsAhmUALhvRTAWZ1TiKdrs87Z5ul8H4MG5K/XCH
vIbcomfKTjVi0bt7v2IPrevtbvTmaATIr4FYY9OR6by4L9uqL2iNjZ5aK0i5eYLny8q1EO1PxPLw
ct4uP98mqxFLU1YKgKrVZ6j02B3uMMzuPHw9vqzJskSMCRoFHpNRWpiqMfZbgKTA4cjbRl+JwpiA
6LsTs5FRbtafgFK8zhCXywv164fL2306GZ/rh5HLgv1x0haai4/KBIErnOp6n0ZAlnFdAuFn0P4B
EP63o5U/q3PtMNceNj5QgytKJEDNy86Z4xczjCzykQiAy5JDGfgzHqrQ8X/f3wUqb4Bu5xrWZw1S
q0yvB6RTcdV12h8uVnxG5GgxU8rE0Gl0C/1mpUPp9RJK2sT/868X6tc9PZA+WthaauZhH7FOwjeZ
qAywllKqsIeHIyKe/zDcht3dDCOLTHMHr1jHTAUbFi8gHxi+rJk/+2y5Abl2KwI9yPvd3OdOgyKa
uEjrq1bLBhv7V3d53YeEXRqdAXZCTihWbIj8WBy0FYQ6wH0Keq1j0hUacncYbwTbN/CfrSDRQwpV
rmKgfcCSJ/zExjBVM1fUlyf11jedzlZ0G0BFIsqH7wuDinILN1FXS0Fpb40dbr56yRhChEJEMM/G
MskcacS93w6BxgGTwNaPatlUoPLX0oI3yERoGYK8WW6dhsi94ktRql0aDgegXNmyVdlSbDHLLXxJ
XS+9AVluSYJwnUV+HQlvEId5Awd+57bbufN37juBbuzucEKPyxi7zay9QMjnho3QCU6OztjIJ5E/
AXO1mh35bhrej4dv4/DViiqUIo8nDIYst3651m8n2/1Zbkm4yASIzKcNJRLZ0geCc74Y0F3qg5Mq
q7HAUiRLMR3hZcfSVhIWk4mjaa2JN2qD2CzOiux335M/06qfqbaAvKqZKcAFToW5nG4JA+D+s+Ph
DoUMtvVRSuxLj9voq6o6a6Kt3o9SHKT+6VWkXtMtP8L4+Pz8f//jDxdTAmRKq43bnGfW7HV2ppq9
Cact9zvXEURm1UVOaSr1Pe8vCLG9GdXNeZOLcuRORiKP+x3hOJJl4z4lHcrtGeR4HaCHi7N5oUvH
4fJ++6/LwToGbOI5r0DXWzLsrRL9vMtKTS1C18OZr3fsYMLh8CTEHsZoZ9wVLMdv7vRf8b/HP+2g
8dUwAeXmDjdpcbw6YhLariDHh1u0/V+QquPt42fcHqTP+m9wERCAiD+RHpFjlB0TJvB26xHBQ//p
eH0boL30ynjsa3eF4ieldTqd/35/x/9zuHw7pwfhOBYuMw+oKR5kvOEKk2HsOsK5aFl1iGLTCO/X
8X64uKcT0qFXY4wsLiULLiFa0mTEDlfsGrO2I3ExCLRNntmfv248sk4fmdwdIUqnPDO2mD14XFx0
6x4G4b1ylxb8NmOzONjuN7yqHzeLa2LWtquKA3X6yuxouGTAqI5pEPq+ClpcbzdI4GaBFlIQDWU/
n9sIBZZQVoGqnYLOwLhwnBLozDrmfkjAsyCeD6JlDFAqofIREKhmeXZO9hVq+6Zhl3I9KiHfXjlx
SBaUGzSTe3L7ZRQSoHoTLF5V7ANEy3D3lDD+pPEtVdsWlXowGi88i7sLz9H5wn8xGtBcHLruFalZ
PSsmi7O8P70d029aL4nY2seitDAOZAIBaT2NoIHTbDhuxEZToFX6faEJhfE27GIvKI36cJ4MnCQO
GYw64fDUL3DDsH2ea6Ykpja8T1fIgHFeMC1lfaOkzPd1Ymx8IqOJP1zMKJo8KyXRpXKMj7lTtxSR
INeiSApy8LVWwyK/0O59OJ4xt3YaX9xBpoerJFFEjn10iaM8yuvxHChejXEqzSrAJYB4lcUAvuDR
mtGMVmW2PFOT0w7FJcE7zLj/MMC8/eFk7rbgDCB3I9ejmcH/vMo1/UehP5aMo8aCKklogcXjVXJJ
a+dd9itj2amIvNB17HWpvz5bNc25TErHvk/hY6YIPfGNRn7ayxns5GRwgIYtFCdEM5vTYXyfRsof
Wo1BaXnyduWRVPVBfg16nlxmZLvIXx6WuTYJ2e2eJjFb0ct0tI5YXCCU3ypfXoOxgigloP7yYnaH
ImH23cAP5CLLQnyuzewCrLH70ihCtaBjzJz2w9MVJN8XpWBBtbEkIXvUyjj3EdXDGGgT0j5hly8R
nj3dbzdWkeBkCulNPyiNGCkLBt5wOPBjhs1D7CEK4WPG6i9+Kf0o6YcpK7RXV/7vsu1VpGdQ9kuL
WLzBO/sKVyKhFpj1pKsirPnr+/HMW26xFuaeLX9GMpiK81SxJ+TcTAj2BYEoMAjh7KXD5Xz6MEyO
uBx8gjLPP/fD/Xq7vHlj3jAdan3Aeai6nS4nCOYgFe5qGToZMPXSUdHeInjm9XICOnAusft6HI2A
QC4YPLFEg5P2NBzWRDOzNoqSYddWars5MUaCzyTyOwhznMZ1ge7yVvHHtf2y+KRL5ElomqVgB48C
lwPQiAfj+1ZvtJSg8NYfjhMLlNM392k4GVKkiRv5rY0mO/L4rx1/L7kw+1gU5N9WNKa/vUIUHm8v
21cxUYXZ3sPl7TaN6QvX1bV2Uwqzyr6KDVPDJ5yyw0kM1+tlf8Qn28/HaiFdCbCaV9DVemgpfWUy
rd2E07Xzd9DZ1xNEx/ckVWlJ7yvBwdxikF2sFIi/hxP8EWiJhulLAqZVCeAajRTUir8zAte34cZ0
aijfLXquoXbMxLsfDV0lopRdeBn/828//enPOLN/pxP85TQ8jSfDn6/k/ZMc6XyDEOz/NOy/vEyX
u1PDycpkXKCMXMaiau6TjDIdJJ2QL8BlcPTo+F2eJpXM6iVe0EgpdX+Cq+LV6fNwPKWARxSmTaw6
OtIUsb+cLpPhOzdKnVaq6JDQRiwnK/qi6+oltx6FlYNpRCSczmGQrDbqBW66xIu+6r83/YxrtF4e
6W34TjQ4xkiZpgVumTwLXCb8gP6IinBxFKQhYigfek8N+Ze010AsyJgB5Bjcw7xOu9vlBV6xr8fr
8el4gksFyOHjcDp90F8mthE7zXNCj4DtFXqh/xt/zf8E20Q8GqGvaYOexv3lbbzaNn8fl0W/hCZ3
ufRLbOmO0wmW4X+Qr5IxeC+W0SD7iRqcq2yBqjrtgNKGFGGkXKRXaJzrKwLq0xBxGkKsFF8NjygK
Kp2HI3YXxMaLOkfdMs1Ycx1n2oe0Ow99PO8n3LNhfcWVmG6Qfx4H6X/YEMDIkZxp7Be08hOcSc11
4fB2MTaCVrSETBx/GaMO/AuvkGP+LfOuS7U1damEYS3RQkPEpWNfrfw3XS/TJaAt7sRUuyh0frL/
9BnWQtzgZuRl6R3cxTA0vw12CrIV9O9lrow0Sj9GIg66J/TUpCFSqIcFBTweWyXyq968NTKsdS6i
7QgV79dSUoap1ynzeB5flw6S7y26ozJEM+gsedyLUDLmLRlseXpNM6PRQ9zqLPQ8vj4Cah2rODjY
a1gH2gX0hJ9ogCIOkEhed08f6QheJYCrnlDbuzgU6ifTfbXzR97PvH0focXYA2nb49Vt/IdRMkQm
v+aMr1RMBq310KnHCMf0yhL29YU0iO9ncjveDGPHU8t6Y4e9nxeOaV6hDnR4Asl5Og1nY0Ez9v+q
MPF35EU1S3uwlLe8n6/3d4D+Gn5BW7UqcsHNzd+HK/KdunX4m5GW27JSljcvYnY5sYj04L2p9M7m
mY6kyOVRUd7ZukRtqaEcHGYgbq8YzjxHXq9QKIZang3CI0D9x6vR6cidnUyHVTFMSXcePyEL/Er3
361+pYVbFp+4QOGpk2JX3kxAlxpxd8F8jAjexvuN4Em9b4gHi/oggeiiSUCjYfcIvkEZ9kryQJA3
55E2Z+6k4KSMuYgQPWYjODgdFOP7BUAaK1ORTPyxdXO0AN+OZzb/nItxOvrmqdRSLh1HyqLhx2Pj
zpXzTCYlMtfm2GsidilP8AYBrx3Q2RojaObqKsQh0dPF6nTRR8o4OM1Jr4WQg3WYoMX0dirul0V7
KyyKfbAgi5R2NiP5onhCeAA+7f8vOkLJFU76TAtZyAMZofosej6PORCWUoC/XndYHXufjDVXOnNW
qTWHybAVCdCuMx2LMTFxjx63MQwJXGvBxzBGE3T9FbYhz7z1iWCKDcgpQlI0OpJbmkFB23htRJoE
VA/3Ag5nyAGRb9PwbphO2uIpZBwDbKUD4/AwJzY5R+a6m1vGRjRdJ2KqbDm0YYfSG9ntK4KLUwG4
1gjASbSf8NLhocXHcsf5obsRb+5noMV5zhtv5PlyvU0joJeOz8h77v69EVnPZWS+1hMjTmUT59PL
YFQ/j46lW0FQsizXvWno28oJV5WopaC9FIZHDKPR0brL5QyfM+X6OPyIXFJpSREpO1DqyrbYRaIW
C5xNTkWzJM5xH89Ajn8jDxFLoa8oiOeDGVahTW6XWj1K34Bt+wnuzdxxBEEHMwb+/Yar0wvwF1Lw
5epxNMWha2ffNpK2k0gQTMQLyWSrXaFZlv8zsdJcwNC6WfaTkg4ANGIwvqE7dUy/r5VGj2YHWloG
5nfWgqyVDhHN5Mc//2Q4QzoZ1yivbN1irUT3BjyhOjhUYkcQ5YQLwZi9CcRqy1apJJ6RiIU83Z+Q
L8o9eqh1rzLG4zNhRkYgjg8AhVY6Kass6HS9myVtwXRHl7MAju6Md70SeM8glyozT7mrjc+nwlf2
Mder8oQv4+VtvE0fxjBxbaCHu1yDFSAccrZwhgLHLkhvgvJGNqIVwETXd7onmjdgVyKElN8SZ0OB
tXo5MP4QD78a0H7ZVrGR4UCPN/g2Xc4vVts0NzPhHPeR6kSErECf+xiGHZTr5GlTP+nH4aj35Zpu
7ir5EuB2d8KMOxzcQwWRhCSvBRlvle7d1nzqOTlfztje1T8rxkOS6whDvW5xlsashfLDrhWhhfyV
7MXr7m14VxVwFOBF5fPwe4YEicgGpqGKeeDHCPLo3FwbGr8xjf3x7YV2eBpfjlD7tVJook3kUprI
QmXBFbmcyYL8Mn48XYbJCkRlS69IGgZvhJBynQmeRXhtUEg/r4ApubMRdRNbvwxNXqrHvZXyFWQ2
9rzdMw7jaJjDZanDufmCO07+pbtm/v3HpLn7PSNnLpoRY8ChXrT+JyvU3PfVQ8tFDzfZIZU3zoXe
/9027F0ncQ9Rz0EmH//zg5eFTbU5eaarT+Jg24tPsjgGBJIYb4RjkNiHMMZaQVQm6iByEYd6DN/a
9RR5qctXqvXCKnNAD8bwZSjMU85L/I1VI1ms/gInpi/WarVWphgrZRBiUK4WJq2MV6slcxUHLnlr
yVXWKOFqhGBsq/vKOlXWJLcd/VRDtdP3ooyJoqPdonzbYukjAb4KrpWPCw4lzp0piAzZzNW+loli
oTUJL3Q129qDsHbYYqPgfaniNpGPA80ZIWBi7HWha/SqxZ3eXIGW5UoVSMU0U27MCm9V6NQCxuZL
0eSIWyrRMlHJVpJOUS/nOuKmb6Kl0cTHj18qn+WDx49RTu77y+mr8RQI5xR5e3rtDBAZ3Ko30Guo
b6+wYfD6uk1Ghr8dpak8piskfj2sa1caXuGsqXE192HX968VLz1mbrp0dtpWDpSUFk4HYeCzYIzA
QgsjZd8sJn59PhuBIOvFVF2nE6X83IkqNO/9YLpt+mpbnr0MVfQzzUKBRgYjb8hKtwJWAEirTuo8
ATo3ArHCy8SoRffgQH3SS6zE+lD/5Qs+Gdh07xbWs+qXdmlRiAS6pzDkqNW92ttQwTCcDxtd8lpA
3JGMQ8L6kLKNWn0YHkK0NBFWyzbP8ORUCNjUstALQa077bHb0Y+60GGHOlv3C437I4MI8EbnRcIP
uMlOp4YLUClcTpPPogcBZm7AyyVcHYbLs+W44+V+Wwk8arg0w3E4vWKwRKF0FoXGXyTgnSuw1abT
Qq5wEFLCESyzQwifkZfRoAq2wvYneKi8dqHYwyrYqZag0yZU4ZMrRY8eh9cN4dEhvXKW8D6MrIfp
BTMiu0IIyxAFc8dLLgtGd9QLZ2mVOd6+ShQR1UYBd760LrwSL746DFrHGrFFjfLm94xQdPiBTE47
Z5jxdURxjNsFPlr6BAtRf1nlzIrVih9ZN+sLUdSKC+aVMhXaCP5wqKfj5uyklwlguhPdE43XS0KH
qOqvmB0IH8v59AHZYSuCXOuTLVUewU/LhN+3ouqkQkXN+i6VlTQKs2RZjQQm+2i2OZG61zUTbHEs
LYbZwY0XR8RHKnwDq2yx7O10uZh1HGW3JPfS/owvggWtJjMzUyZV2arNoeTF2lsngjaiS831dn9+
Bj/obQWXQ6C+WWaxn4f5uUnt+khZnA0S0cmBAER3ed49QTCLgVSGnT/LSBYb4mRGdKxfYuN5eKh8
uP3pi12y0XSza6aqeYiMwQnB2w7j2NjFz7AURe5P+Nip22ZUZcn0vbxts7Kzp2FarTzrMuVmFa1c
IASDI+jHru3qRD0lPM2cIA3hRBPsUsW+WjGyGRNZblEvMqvB7zuMZGD9imTOABMU1ytCt9123TzJ
0/e0a5UpDcWL8xqKIT1Mys8AQoZPGi+9jp4/okJ31wGctl9tB6utdK0Tw0FVEtcC/5NimGWpuJOX
M3Cn434XkTTG8WsQZ5s9luNFy9dWdX2tq699owoyftaLPLtGe/Vep6gdeQfCcwt03JdxFpQ1TgiQ
mZ8V1DCS8/TB5N3k1LV5P8fYiKTdQ5bNMMlqvUHl5wrvCuOla3ShIfczID3OSRPQ5E/j7n4+/gP0
J2TxRcowrSCk+ZSL7sTBFSII9JaQTVw/2At5nmn9OV2+IU+AgY8XdgYA/xgx6Iuk0PWgBnZXT9BI
8QnjgZeWNvp6qrgL/RBL6HuNS68ThrrhAFea3Kfuxb0Bcjx41UPN8RosvC81YqaOmarfuz3+kzOV
/5MCP5uM514WoxPfYr4mW4YoaWMq5dDGW2kElOolBiEWaD+5aXgxYwW9NDcj7eljra8TqbsdkOoL
XbnDQ3lPHyJRa02HyVqpdKBMOesDQGWMNykvNXNAtWSfAMTAxE504gnPA3+cJvhOH0ymaxz4Tftc
OLarJG4T/6eJdk04lRQ9bRUbt0XoZ5euXqNYw/V1MPO3XVPp3HJnUZmFHosHzO47gTycrLiKILQE
HdfLF8uGg7SFjjnmWaFtQHGz+GI8fVDC2VBs3FWW5bmLoJfD5e2KfRVCTmHlLRZF4Yi0L5f44m3g
XZOVS1ValP7FDzgTjMEMflBxkbhcRGumIxC8UuJ8ijzGNCJku3dpinUcgJMHeFm6wGvOA1zAcpqS
NngRidFpBuVseZLZJb3TtJA8RmNiWZxfyOVKh0apsZ1HLBqzauKsIpMhDyeEarqd0oM0sSQcqSw6
OchXf5Nxf0zOVVpgo+rLKzUjKBPY3b4d99ZGxx0qi/lsltl0AtzfLGSltXYqlLVl9JWnjiadCeno
Y/yKB5aqFQ2g+xlqFt+J3XglgMdaMjX2thBeJyYYmxnMz/hpOKzcoy7eozIiNcz9Ow0fCa1KJ9Lr
E8nV4j6dOqZZipgn5SsyOepvgYDQUUQ1JBg3l+dqzC6GU0HYu0aOso1MgGZTqsgux6zimUb4TXqM
PspFGQ3bqI+uJ6ishQ5RJ8vdpvkIaok6OKdhXW9g9hGi3L6jbTw9KN3qDH10N9lwaLf1rMpmcTR4
ld4sMB6NJWS1mD9DYSyQgA1jRU1UcmslGAwC9qUR4Mp13vHRdDtz9TCC3gzzTZO+tvV68vmBXRUT
ftjz57BLNyuhUEyvOWaLRL6lMfItxRL/iZixlR3XxgnDTReTyM548qWtBsWZKMIQgZgH1GhpeNq6
7qnJFsK7ofrhQpFeI7zbLBH8PUZQPbeSYZXPSobqZmFiACXwERC7vquTwbzIKM3DnS8rwbNeZ4rn
NPB2GqfTDmghDXbPeGR4app5V6bQVdjAwFNLHynaxIwOGf/ghvoR9/Cv3N/gZ7PSpquLpUvUFXVm
KIxM17PncRWvWO+3AmSvNXNk/U+gjSojOKYxskWTipGiCTlZ9JC1jttziJOIIp7szHkjoSGR2/23
LNZY6mJlQIQpY57eQCjnivS7nsXn9tPp2QC0zcikc8s9Jgfc0KntUiQDVLp7693NAjjs5ct4NrhQ
RBVAX0ZYyUO0aZWzsul1PUHZJ9I+Rkgl15nIJv1EMCjSrovr29mUasmbJwpwV+NWjQzwFTHa4zTx
iRSwqGhay5W2Kjjblssbvp7+q5Z41uJ7/mX8eDHSKrUsaovgTvYY7ALIutasPq1vagSdH7+Onw2f
dpJDh7pUlwtZkdsFLSsl3itZklJtdd0/Rhvv5+Meok+r+dE4FOjzPBM5pBCqW80dlUulwHqVRGOB
f2eEUQU64oEpNFXAceSK3NUwWyeUMD7BjW8ExBQIiKw7jpNFWtnp8OgsyKpqynancUAUxXn8BpJi
aE+N9Srq1epj4zC0ZcC+2zx2alAYiyyL6OgrrGFDceu6/bqbvUCHaXghuhyTW4Weo0KX2+py2THC
pIE3fPf3+/V2fP74gX3cvU1/U8sOQhg3z6sIPzOyNSIZCPZjnj/w7hwud+wGtlJ5q/PQ/to9Vg/M
GyMaaUBhVSLVes4GCt28F7NmO0/msTZkNkXSCUwkLu7gk+I6XyBk3lTyW9cydI/HxJ1Zjuf/Aen7
yzjtzVJ+4WUg5KPRhv2nSKLbfhZ7ToBb+I38w3R5+0uyazs9b+1SHRjaSFggAYWpPui4CoSuC/1Y
1r6ocgKgsIDjctXiCpyk1AYui8FcdeSG6li0cpdrPCFjeB0pYkNl5WS1IJ3t8bqSFOhKjZHUnEnQ
QdbUuF07c/npqny/Xt077NYJfAuX8eqtHoiXQ3/0lW4y7g5qHL8iS/e8KsQp58yYtTZnvUaOsZmn
K3vM48h0RrBZKn7Dl+onbp1m5tQELhrJ3LhjN6MUVqgNs3ap+p5pxK5vQ4DyUALf000wp+jrZTr+
ekFSUOgJYiARizlTi5mni87V08cudB5KpxHokWsUbodrwD4d6OkqXR7M9f+qSj2Ar3AbzPykxAyH
Pg6fj7ttjLl1SzjwB634PqGx8iMZRYaLpeNCmtCLwOROpcG77kZ8XgvJdd0iM420rw3vQfNTVksw
puuX4ztZshDCNsz0QsNVOvkuIhxgZ+MB6lYTM9d5sKfwP0eDgw/1ZUqEqrEFJKV3fAPUOubUGcND
aN/Dh1PBx71FpUGjqR7KDRdMLZRtrD5gjdijMtbIe/0N4JeQWXHCZbWXlGFKJC/OQ1Xf7fgWK6Lh
H357nqaIsXWKLagf2VQpXYiGOj7pC2pKdB//NA9S087igTW/vIgZESdiWf5dqRs1sOuNNer032O1
OpMj+hT+YSR6/VQChySmiI1Te4Qp1KL+3cSpsvzqZu1VMS+f55octJ8mqxsqlf/Gvr5VvfYq4q9Y
Axa6iXEb5/YLIy1+4atlrbDRLXizBc0jDsAaKe41ymn1OB/r61q36M1toAtdmPU90t3QS7FHEKq/
vTpFYVKH8+RmvZ87MQwr1vNlHfnBc6pVW1wOftFgpzkrtN2ZmPpRPTSyZhyQmh/ZHNZQre47Lbdq
nbOGl9bqpcnrsio+Ubljz6xcfQ2qxCgT458XraHnP897El4KayZimNjyU2ohqAkMDVlSMTOeU686
t4NbOO/7G6wgN9Tufh6/v5MKNvvhkZuYLaHmTsOvHxybOiGJCeTy9xfK4R2N4ZrFAg2zaM+EMMvW
FShSsyzleoCqXaqQ0zqTikn/fZqM6G4t8GDwYnOsYCvlmDuj08Vd7clsEEHJEMGl3c3C0W/H89vw
3divTGFyG3+ZWddtfE2bRRZudnmUs/MVnJC9c25k40NDOvrlcnUfEN2f3L6tcsm1MrFLvlKsV1a1
yhwX3Yv4oxGRmNVAL+RuLs/PvnmEjJaCw03MTzB/w0TPdbip+V/D8qTLYUT0RMwD6TNqHxN+goMg
eaHQmxEUbhVst1yi3b9dLn+6MFekyRNeS2KkMtS9LI+WxlRVghsEJ9YGtaQDOivJuLqbBVrySArp
uS8puOvbABhhxk6HGdsHjxfFQhSor1T55Z3MydIxlEtNE7YlbGo1GiJCy3kXt7UIeD2neEsRJG9t
ath2OqFVykgXuOrYNGGF4SJvllxiz+NousRtpp1QRSYRVrPShknEZAUQ1IxEGQ2u826pwGedSi70
dYMYo+EGzWIAtSbqXO86VUtWEMWlNcDP4yePmWi0WekCsD9OSpK/Mih7BEFOJiz29A/Y7R9qwdPb
6RILGuN6HjADt2FqkX4LmB3bbHVqfswksBjH7QSDj2ycw4CKhfGMOcrG9PDnrts8S2PUTDVyBxN4
VeQNSoC8T3fhjI2/cW5rjcz6WaVfI1pZIPQIIy8YGLKfl67UKKhqZlV6+pu9+6fbOglOPyuxEEwg
b+Pt9SINr9todU1tdE93jlRHZsPJie8GKmVh1JexHD2NfDOs3kIDWprfDnWy6gDzJajTooNzOb9d
IPtics73+VKvHh+skf0NjBJVnaDioDRWW1NnOfjT1Y8Fw/zhssZzXYs3ADnzIlenH454bcwYfC2u
FeqnPjDh8yixdaFzNbBpPP59erQiKmJsTNrL0SBl/Yn1FZGHrS71xl2BKzaMtULGljdqHGZv4nHY
zN84VCFoCpvgUvFQHKCH+Nvm7SoVmR6b3mKJPObaCuNOoUvZxWGGVTopGiEuDKlIm4U92jaXolFM
jk1v7PYWIYhPEzh6+vBIZWCN2XBwRqTFMFkUimqQX0seiDKuScoIGiA+Zxg0rTxRC7mclF9aYRto
BbQrL5AEOONGTgYuXUJtc9Hmj7oH4+8+X863tR/vZ+WRRasTxqF96vli5o1n1Dyqw/jX4/U+QOfh
p8noFd3nuli06B+6LgjV4+v3r7tK9302n9JsBiJvrSAup+ks3gQBUBIkk48cH2uonqbT/VjZmZl7
axBo+bLVaRMFAGWDuNdKBF8PvpPbdUNKVgBPsd06aTiyX1L2KCXqNOaEHe03tuxId4THdyXtL2G8
sfFaKOj0Xe3Y2DO8EEn9VRDxqWAucBbsbjzvLzbFVqXf76pOEzIYEchmhuhljy2zmq50msVhju7H
PuEgyJFSeJ3brVtu+BcsQ+cXHU+bEHuyt0w587kIPEn8JKfx+Wa2MSI4WKO7hJfzloaexMPuydLO
SabtltONge0Xy0MFUsymdB6m6fJtLRrSzbKSEifgYcXuGVxnYmrlpahFp5p5rT70/YL7NryNFsqs
n1XaVzOwOxw+uglW3o6cllpHR7IZXHndz6hlY8BqG19JbgSvNatBFdEPO+Bw4TQUfor9Zef/5tNd
kimfLapAqZerzFl4lD3eW8Ijzn/WGLoWpXHUhZkO/9UJ4P4yTdjZZnEVD38rCqiuxi+KSmO0LnMZ
EcBo0h4aAG1fQqw7LCLAZbY3nxhO1KzL3mmbz3O9mrnI5z+RLYX9PjFnwfRHLzZDRjCURpyE8CfV
GSF0eElrh1o0+/QU0WWi9iAdtaNRNPU1+yM0q+v9xYkMmUvH/Rf/iu8Yi2yzj3sbNljPtRKnE3Z3
Mm4YjdFpfv48Im4euLr45FfIumSDD5jVynNRGM9FNY+bV5rTzKSjEzSe4K3m+YyIF10cb81hnXYA
n6wUJjS6NlSV6YFtedwfA//e6WggO90D1M3430LLZ7MHXVEsEZG8OTPjRpga7Bo/75qxRrZWiOaj
s5JhhKkSqus0YKdHaCKGlABwq6aU/UAV87XikPBVhTAkdTtzlvk4WSQImebzzELDX+B3ILaPlSHq
XtNhNGGI4BSBw3rdOa/z2zeKnt2nE5qy1gtVl2ptlVjbPzdwU2oGkZyzqF9B5xySwPtC9NP034rF
YknQdX88isM0FtcqEob5HEzihUpvOEdxl+VyTbEUooespw7xnX4WdnrL0ppCb1H63ELd7C54OMaw
gi6lD2XWeueH07fh47q73553nbHcWi23XBjJ+LjTN65ISfsmKSjU7fPsS1ojGFvSaIVSmsK4O0EC
OGGJFqKlrT85DkI8rs0YodLqpEydvbGoSgtj6WE/OqNg+FSLHG/bmzMTJFlzIhTtJqr53CgBbVRA
hhWHmV0yCBCKRc6B0J4qUA8cuY3xaqld3TaLqAFuqGCkbrql7pHeV3z6sIv6m0wD09nQXkTu5AZy
J1ty7unI0ft9A3rBX61CxlxXGpZLwAsox/4vsG1WKmsFJZvA9h7P+wl3ZThtKzho2n4JVRYCS9v6
4dWSLD12CF8oYvaHhhbIt/Hpy5Hw+0fDFJS8qtKNZNSU7IxiAJtmiJXqkUAY0hTpUD5Zpe1S3Dl6
PoCDxL3z7CyGVGZ641vJRsdeoBFd7GZwwKLfWCxo1ClFkYLdarskXLw00r+dJo3I13VQZ+ggWb4o
2BhnPNlGzLtfSleykwWqbEOZUq8dBraFZtH4gNm5UotOcJiMcG6tW7vUkiWfQ2Hnlah5qzPjySYO
nLQ/WJCpVva3wKvC7UsJB0Rj4J2NHVmeDE2/3DRoOUJ8vWPt2/P95NlnVwhaG1nNXMwqjah5AXYM
8i3tjZIlUaNezQYi/BqOdJvu5/1g5kIyzU/+wLM53lAqTOe77zQZqhLWrcVaBgpNU2fXqvJoP5wB
FPU07s7j1YQtiEo30eoFrT/adni8DASsYHjBgGu/yPgTGL2tF7WT7LH9nBUeVflnWOE11xWTNn0b
xy/4n8MftjWF43KoVoH/H1uOciM3GNcaJtYjCNTYfDJb+qbxeJ1G4XfrvQ/XZlgoQD7HBI1GhWvj
6ToBTtzhijd0FqQxalF5EWlrljpFrk0mFuCU0Xuy2iauDRhnJphIcHWr1Iq8tkLtDwOZaIQNnIA8
iC69kdNY6XbHy+jVoZerDQbXtiXOB+uIOzmfz5fl8SJj0QoQsnbcSGa9LbKB6tbNDDhg9EgGYzz9
ogahBMYI0p9EYBAUPITQPY4hNiO3OhzrhhtttZRNOBzf3qxXTKrAiJHbWohhtlkoMuGGgS/FHUMt
F7Tq9EMfUoWLAnG++GJtA7KQ68y1J7JGeo6VqG2m8bvVUnuHpwkoqFYZbcROOBFo2/XcnsHsV+ie
Nm23gdlvU4Pjxc5Gv14ub5F0/mp4E7MOMDJbFnPXK/0w2kK3sKxlkgx5m1aq0puuXAIZsNXzAtVX
yIXBPKgGelsUc9XhVYoWLbai40rd1YZ0Ugz7wKz32P6HCIg8yQ9lOwxfR9BqY8QciIKlV6lkizic
UDysZgaCu6JCWrEs5drb/GSdrMXuA1ooSsKzs7HRfzIwUp06g7pNsHoaDmU1gwyUskmAux3Ag7ve
JECMAn/kiViFX1U3o4ovEk0YDA6nWlFMaKF5Ol32XwRizbjW+kZ58vXx2Td5G4Gw5t9Xamzqvlvi
IZk399pQ69+q2r+6XmY2xRZIZzpmRCkbTl2uMoe1QuO9Dd/XYgZdP+vbII3HFSeiLepZ2lK0dI+V
JqgmbIy0IOHDRkdLBhaHZn6yyH8r0ei60WhYAUxil2mt6qfU/hYfliRxJIy11eWaHodMvYDzNk50
VsPJoIPsiiXM5ZYegUaMsFLRJq41CNh2p5hRazohh56rBr5dd/VhY5aVzPl4YuVLEQaj9Jt0zaxt
b7VY5IF3Yo0bt9etMWv1OKgG06obhvE6aBpgzmAsRQyNwPqsF14VmL0COflGE1g29yuDgSZp2IBp
zi5vKHW5RM4UcD5svULoKqONeSQ0GAnr+UnYab9UncfcR4QPWS2urCURtQQFLRUco7HxWymWsnl3
FruDpUU5LruoFRE2ElCG22Dl4n3KcyS+80oPK5mc5XiZkGhsR3thWJAzHkaGeMDlxT5oJntoI2pd
sCSlFYXJZ0CuDJJ5Bq08KEu8ko6wQCS16orWKsOWOj2gRWaApBtNTKZCVPLtZbaZdYh5K73QJvh4
8v4GzM631yMkas9YyxTw0GutYyp9P31viuD6bfDhu1yXMAlTHmZm8GvPGRiMWrRNYCtBOFlGmngY
71MLapp+iRGKZMw+sKbQHV9VHbHlidBpGb5Iqwl7s3Rum3SYc3at8giFpa8ZKbgkrIZdqOvt2jqB
e7cg65XmMq0qnS0luiHItbj77F4wKwpQixqWvBCcrPP8OlZPiZDVSmK4nTVXKuQDBsmpIFngdGmC
hPAvTZnJtRlRaOPtFRyp0elpihQYb0arKilrM7ijL4UR4MkUuUGdJVxEgyCx7JYILyOlwWm43viU
vrmXHExB4Ds0SkZr9QTYCw2wBC9UxlorXSBQLTJzGiXzXbYUXgstB2DJaXQQZeIW+7VjFFsUtFON
tDN5XiZo7+LuB/CGGKjbuhKoW3S2PbbfLcupDCRdwKYQNgbY19x3hepGzgXrG4LlOEgdQbZAJdnJ
QTQwmf9QGBPKVAV9oJdamNCG7kM0vbhXyNad18lkR7rpWC2KpkJ5aSYnt5acqEVysPMxQ7No/jDu
nT1sFYNWogofCRjK2hrQYgeoq1qIFD0jdLFf3d6wXK1JU6ulqTcmY0ykUSQAntiSZoCzwcaDUPCd
jKjRdGoFcK9rcVzruB06r1zhxys5BDmpGE1Kec00jVhGmsPTkKunOYw1g6UY+xOvG5okhZgTVxow
JeXlnOYioOUVugSgW8tSrR1dqW+v3C6+++C3pnikakEnQ2MUUabDNdtSA1zXaTWiVdLKDjW5Km8o
1UAoi5yR4gSVeXJ1rzhHfHCVJJsdr7UrFm88Wi9S16br3OjX46egKzjIJa/3+eK9DPoLYxqdmgYf
EQ8ji0dWVlOqEo9a8qV8GT/QGEnaWrVw4DsOebfMGBINmlgptF5TVulCx2oxR2hTbLeF9obLeoX/
wugpkM16BdXpPhhgYG3IOuV9WS3ZWk+n4fyFXDKL6En3O+K7MONmivFoq3ylyfIlANScptvanGoJ
UYnxI7KsMJK0rRtjVStYu0e2YBwFvAu+4rKp9EpfxqpRXe587RLOaQSyP2Y45OYZV1ZKdoPBSrQ7
zCgobOUU1oJxIq4I732gGVruPoRQtKcPpnKC+PF0tCJeAoOGxnf70AM7dG7fVpdUC5pykMSOXRcq
sfFsk7ELmoLSGQjKXjfuiCBzjj/7qPZqP5diicPv2/F0WvPKikygC+FkebM8QTK2exTugkRHqf/G
EJ1MSXiVr2GQNo5bzoon+seJb8OE0WixKKgqEqNtbutZxgoddJ/LpNW/dQ9FJ9wquM4mMmzrLmaq
hqTJ7V20SbJLoSUiD6eFyNo4y6LX668WZrmCjaIJ1rp0ql4YZwOQjcZqVY1wXa8ZsFtPRHc9Zt04
X+tvpEMv4+MAxi4zp83EfNPDVYpKuI4eQd0DKQoNFOYbyqvXlf1FAixv4VlEsLbF5I6vI3kBGt8J
2iv++6auaF3dLMFWBcWqfD+u0LwLwiYmvZknGfKvHUvvBcgOgf3QiIaX6iFrWt1nwVc2hJ026pkW
X4jF8PhKKStFtWdtbFTPNrvnSnDVQwfWdhbEu9xvNpdH3y51mlquF/EwGrAf/m4hjBttf3uLRISL
hYYxcj8ycNfOif9SUXsjWK+pM7m8xtnKfkD4P1Y2vsv1ylqj4e26h0sBfwnUyWJGMXo+ztG+uiMI
FIdugk7ZX/fT8d3qCVFqsqFqqQqLK9kYD3OFUiojilpqSFEUe1HqQGYctmCFXMNKlkukUyES2tQb
szK2RdxLBGNMyoTsBXfjsxD3teCdzSMagcMyosuZgPi9DO+7p7sBu5h1JCqz9ZKh3lCEs+L6RpbW
cJLC2Pl6qX0w6mOsMF2p/aageJJpknXPV6OJOCmfeCEhda1vU+jy4itL7Ie0BYwxAaEhKQeRjW7W
bFRGE7AbGCdn8e8Cq1Q6Ggk/wZ0q4CfQ2jeKWdcJ6nHALgyoIAWbZ50euVVTrfpNU00P18eJtrGY
2Oe7oWf0+pHXAnQGQdTSkwROL0gzaGi0dkYsHIsSI54H0XPsnH4ZP54uw2QIcDbDVikuOmzI9keT
K1n2x4sV2sjYwd320MrxzQAhzWH2Nu1ynahqVt07d00N2txaWzwcIwLg2evgnK51778W6DzwFTzm
GmMHm+pRe4F7hCuuirFABVuwjUpDkUvPTo8QZJOdt5co3GpGeBh4w9cgaXm9lAB+dpeP2EuOp3Gb
XiriHS9Fp2E0OjHKASM93a8fu9Pl8p4cJhcXOqa88eMQ11HXwcC14bSiukSvn5G2zGAKYTJvFj8T
hiW15age6jhYTPfED5nckRTtxVkJ7rqfEzXIOLk4XtViiPxhRJM3CMco4ob1sdc8jCBcqkAIDoHz
8fnZicg1fQZCC+Jzw4aVmJZHBqSnVcYxyrDvkIrGUe7v0IjuEzsVp0SJqQDdEjtlsQPiIHmcUxcC
ysDcCGHN4f3IxYFQyU6jXaaPtdkRwaxIdcCf85Lrk1QZMEw2LVtCUPHPHpIEKyS5AhhlGhiDK2zF
Q5vHbglHWOMZODhDJW3QjFejshYnVsUxC5rdfOvfwanFJGcqdNhyhagfKPpxcWuMgn2cRzw92J/q
4XPy5DaLVBklFCgP8qx7fGtZTFd0TN6phZVN8uA+IfDRBis7zOaV8/VCkS+O5OuGgcDsPhkiFlUF
NlmpwbwQhFkea7gfTyfQE3YtfSsRsrL7ebRnCem0EowWbkgZKTt1O2y3j/vhtDfwwrp36WIprLIq
RqDoMuyKShHFtqJ6DpzKSNseQY/U9trqG0CxJw0oL7o5F5pnFl0jFe2bzhxpRkayQqS2SBBDtL2r
nRnbJZDVEixZYJA3dkIS+C3CEuQcqDsHOoS1AF23hLl/RJG1xgJ1vxDWqTHi+NNqiUSlOhrVSbji
2f2VG/ZXEn3U0HcDslVp0KnvSuZLL1COngbI10cqGVBoRilGvtRc/qsbA6tqnSP0fILe2kfGG9Lt
XGELchug6wKKmfv36lyYSMlqZ6172dq9mrW6CYDFJzt80mbtEuUOtw7F4qCvL0g7bjj2vS4frmVU
kSTzZNVkyvKiKnpmpDMJwD9crfLleikC5ANLZgFfn2dLUUKzxZaRnBW9f/rgg5nlTbv7+Xp/f79M
dleNZonsyQwmGVjQvFmCWMZQDvSeg5IjJ5BfjFNvlslV2N2Lra0Mn6/QdbBtkD0KB0UhjNTXK9nI
vlT0gKyhcKTwZqELZwYvaKhepZMacTO2Z0f7mJOqIhkLDrI1XdbHzJPg3Pjnmvv2tUracuzBb5NP
VCe/L7JS57DKh+8pTWuMINjqIt26PiiwU96sOkAaSdMmVkXqyO8+xWuMlamxuMgNx9qW3OtbnVuX
A2xNgvedSoI3xaLgbWFHoeEKdVbl0k7DpDbsdK4vVzZ/K+wccl89UIBSaw2nZ674RUptIfNF2eaK
nmOlQJm/ibwivpOLL6ncvTinj1rz+H/a+WZ/1oitaszLofg4xIrio0G6WZPgbjYIuKgHpHG+v52v
1mw6TTFSzgYyiI94Jrlqglxl8+UM09XekE5T5VRiLURmMCEQazy8jOZKRI/iPviOckuAgBvOxxql
y9QodbU0yoZtjUwwEPfxlnxcE3Y7WF2SOOU6tv2Jo6xvblspZh0pbdibbsPxVGoSvlYy7Ai3DLyu
dVou20YLfhsCOxwvCug92WTGaiuAwH7u545hMtEBeGmsaXTa75YeijPI1PQmvAQ81LSH0bDUnckZ
naHDUL4pOWbBSAIiaA51dWrM58koSMvEE07xv9DCSw2C7o/7szFIHgYRzKp6ddRGpvieXg/HKgi/
GQDFz8eTsySuaT8bZ9CIo5LZq8WFMFn88WC5zZmw2XDYKqZfH4/ten/efGxVXGYuqhAxs+YujDEd
zpbSKiPNlpwOlPWBze6hoFN6OO4HT2dfP2z4K1YjJKOFtO292B8MRfePU4KyabQDnb9mnL5cG/65
X7tuIaiWzKHTrolJNolDnPYig54bQsrQSn8ETa/27Hj+msrk0FSEGiCo+YKYvjtfYj+cvw7G0bFl
iQNR00xukEqESDTecX/BvtYfO9SExjFGQYCnqW3SmmSX/67+blyYWqkTLmnCnCzzYq7OpVa6xJeR
L+gSaNo9TEcMh5pHlqnV1UsjWpJZiL3G2TX9ugTtni6JeD3NKapdZGbMlRi9Xab318vp8vJhiFIu
1AhSwjVLVw8zv/zSDafTB6V//26JVpyaoKoT15CQBPQX0E/cncHVemK6XD+jbUJS1wSjUIJRLTwy
vn7+cbmWgORdp7R8NVc8w3WN6YdOpFXv19LVjjkeW2X1cagW8x7ZoswWhoAJpUfZ89o6R7pSxhYJ
WyOSky08hGh9bnoGC2W91AvSe0WSQLgS3Gbs+TLhvRKErIYcC01dJq69urSWbZJHEQGgTOdD3FQU
e5mgC6Qtv0VR62tQLWp+Yz3CFukRt1UuCZg0bHbjd+w5kkJGZMKn90vjBNELUCgF5vCru0yASnXe
/TVVSEx3oNGn2m/S3ubOR+2BZSWVbdfpDTBWXahHoZzfDkGHs+ondJUeK5uNBSbK5dkI0dIotbIL
q2Y2SjB23sc93K2DkROmAYU+aucKMxyE8b14CLq5WlxVuIWlcKNyqiMGWo2MtXFwP23saiaCPygi
1bIPs1ksev3IVOpdBgQyDfvk7H0o8B6vzmG3PaxGHEOGvLZl8lJYZkwm7mlEa6hRtujdLNNe48Le
W4jLTITLgltUPr7opDZAO6496/ryVK3acUKIGfpGzARxee3yS8kGtalpCmGcU8amYa6+r0dw8UAH
7p4HQJwQUNFYVKN0/YNFod7edf0iDNAsvBzvh2f/eKN2NhYmNomw3aXtpW3ZrUzuPP5Pl3aOJzSd
xsM2y6BWtkZdaNuY+wAYMiHt9S7KhB9hAu7FMVVaQUOItxbv75JYUVrYbf47wGrw74wrk2m3prDE
1DhKYUtTNTs3gcYk7/Vyn/aUoRL/DA/Z9Tbd9xYFSCVpBSJuTg4Ts46QvQYq16sxXK6H40aD1GgU
0gL4VfzHwKAArsDisCVm03FUhE1JggoxDidXocYUgPHJodo4FOSuWA+KgTx/SnqELE6mDeFLMQJk
yt8hM2gE4XCgLgxUoaHNz44YihTGyZoOO/E1gYZgTv3D3tyfbsdb4u7gTOq4pAjml6eUqMzACbTh
Y2Q97fqHz0OyND2DPAySd4sz8FjQ9bFYC9e+DrtPjmUuK+4Jclq17EmIcagq6fX48npKcsriUL04
IlR185FWJIUvKa4oK+h/H26As0fS2xvPiI2RfOUC+YQP8C6tMYXiL0QxRE7Frn0Q5hUZbMQdj9V6
8XMMFhCKHSB243eni67mrnVCquk0HwUTzGrnMe2v17RvjtOLR+BsKSwfyHwJArGx+rwnfu3U2vEM
3f9ESj2ZyehFLwZBqelMoHcEYtGigcIQNIFNfE3jxQRYFbsDObF3W3gmCDpY7RDdAI9nS+siGle0
aYgWyTSS+F7RUeduU+F4rGWLnFasrYZZ3d9DXf8/7uPdmlLMaFWRdMFv/3Q/Wd+Kph80F/r6xz//
9EewyxGWxbwF43Abf1zf+FxtEOd7BDUBDMPlq//1szFOTOnmWRHZptSmeJKCMPxhpPc+dSlo6Jif
xfZTjIZ+G65f3GD4CafwdvB3iwNBKUVFsUysSaz6QPSHMd/3ASFSByODR0PkYQh4SjkA7X8+DnWc
jsYgZRykC6F5uYYdWzJJMACNU8dxonf6OBnnm5jDVGEYMDC6+bYAKhWeDqg4gmCLtbJCzIhsH99B
8XAcnAEKkGJQDiwWOMgPaEr+QP/yJ/gPf745sXsj4UuJBghayXDyvFcB0fSA9Fc+zuFujb+0xk8U
4ScwUFTYP4GG8tPx9ja8h3cf4zPfrd9o4zLK8P4nf4OCZUlNRUPWccgiKOjkkE4HvpwIgGkN2odB
kS48twe9PD9f3Rk6DybtLNC4nTrGZmWPsRciVKEkrGYas1Rjctg2OSa+IxOy7xhjNnHMjs4pci/T
M8oOM9yTOxZDBM7kBOFijvZHhFzQu0DP1O0UPk4DdHwlisev8FHzh+j/k87FItwhbRThTIo4E77B
THSNNcCHafg2oWGFmHUGZL8fv48ngFKkh+11byJ22t7chwe/RCIl5p0zlpsLtE2sxNX7fn0/YeON
ZCk/Tkq+pnUIreqRLK5eGkRCd/JY36SzFicIzFwsUh4cTKwN3Zr+cSg1veRIbZ+pXWIQD4a4dj7G
wUMRawIeYkBepbc/i5tWESRz6QBepgvk8wwsWlcKUE1kwtLblo4X4RBZo3qgcRJXDWHMoO2iNZdH
bJFeyBo4qJPmXBlNQhzkrzjGX4+Hl9Haia5WvcRYrRqaxBhL2GGo9zNJbo6mBaB2oSYp3R+Hzjlu
DiT5vAtIEuTZ5p2NgHEDgqdxeUaqFw0pgnhkFUFN+4XVQrb2NH6njpmGCOUa79Y+7P2Pl5vzHSzV
23QaHdaubX5hbH63hL+bjwWWZqwptg5TdnSLDUZnW3Wc9obL0JWZEvKkdroaWmk2jYUhnEXFyajr
62W6QQ2HoZvqJeQmdap5FFEe27jGwhet4Al7eDwr4/Es1drKRWkEjjXjyRROYSPKxo1TN4681P3z
qsdbF550UrLGXROijXvedwsXBMwC64JI+GQ+F0I6oecj1fhtQA2QAEgUsogjzhc4geZcN1nEKyBT
K/PRyI9ZHU0IO8Y7WZ4ebRXLRsmUFlaWBe/7cH11ism6/L0eQymmwS1pOB0H821qOxH9aAL7jpzG
Hynd+AO0DTEeqJlQNo8iQAC8WBpuPNqFuv1NkZLJzpBJAdlug8O0sL+lofhzLddKqyE6hF41BHc8
uXfk8rY7HJ8xJXOjRiuGyhQqLtahSp1UGjqpUPaAr8ZABAL7GsbHjTL8uJk801o50X9/HagpmCG9
cYgWMIlt36ZM2jculpqS4WTaDnEfJG370huyyXZv+1Z7AdWKQ2GsVoQe28gMq9Q320/Jwhd6aWev
f7lmSdTG5Z9ZNhyW0+K3Kgyd8AIePRxvYzvP98k2s1slzGyfkkfoBcvrpTRDCE2oVBZ7JGFyzxtD
C16H4ySH9PrbMFXFA0AmmO9ai4HdbR6TpzvALcdEzOPLy41XT5fLZE9IqDh60JuUkjOsyVYXhZSP
nsXPF6e7LR3Xdcr4Y2Ug1VBubEim1VCWiCuAhb36rObiNcPYVNktDneFJa0/0kIiOVuSegEa4wWo
Fu3Q2YxWzE8uveVRqrmV5Z/HdNkFXbFMd9+uhfD5KxYuxoYbIatm2ohR9/2IlUAbqlG76EWX2mRD
kzWlzhQp9coqGlW+oQxr7WLni+fEIYdV0ZEhFlAcTbWmp40LJhJCCAFZiEDcpvvb++oz1Mm9zgJT
ccopMmw+GZ8J3pB+/1ceV8+bhGoDdjyvi+W7j6e/fvc700CXNwQ5TVMFlPTwC0WCaeo2T+hFQ7V2
+kUr+lTgwLDPm1rX7OWpMSwbVFsx1ZKB7pSPGTyavRJLQazXOzYXtJ/msl0PXviwnrG1Za0jvUvK
MAlPJ10olReNZjjB6CMaBocQFwSNdEr2yGDEW2HIrzCp4cLnzcKiTpfzy0rYo1gKzfmbCckSgJNa
NfV0OXtVbVo8Br1+fzr9jIrV/eEHhHwbeqeOx95E2PKCGFs6vlfuWPN4Ff4DBce8kjr0XSbdwt6w
mPTWsNel5EbGY0LUmxllgAOJknbgahmvaz7PkdSbvBkocboB+nh3mgwxaZbuYTKC638ojD2djJm3
6YAibfKfcTRT4czi9kvPJzeFMd5NPYgOKnFkNGacrXezrvSZL8U34TGfxsMK0KDLOqWNm1I19Pw3
sUuGvqmUN6mNC/IfVjenbpThzd7Mkhi7sx+9G7h7uYC3C4zM5xdTfKOtSW1klEpUdp0VNy90hGPp
3Yn+Kq08M/NBRpBJKYDWUACz7Ee9pGKBtW7lMeylyZLNsgJqMsaCJNdClkhUYoKDoBr+Ahs7FNVb
nQlCvkfTx7q+M/XSpVSXoaE6XZOfpTbHsHxmdf1VlnoyrKVkq2FJwtEYT3upz7nYpGyNu9Upl1K7
KjwEUDJxaBFiaMY+68g7XzFO5Ofv3zcHXYQgSm69xQC54TkJTy5HYhVWbsfDcZflheGTlCoMsZgh
Iew3TMXQrmVUOojiStrchtffZgZcwvsiWPvwESKJqzmtTtgEOLPGiCWs+6ji4KlkoU4FYMO2mQE8
negupT1dfvcsrDruZohTvayGsBLqchbBBWSityMMtRbxclFHcm2aKZ0CyIhpheoh1FUboa5KhSXL
+vHFpU0P1YYCNGFZA60wjJF9UymEMxJNeYPz8U0w9JZ46KjuI5WlsiLf4lrCsnPWoN+mC7CEyY7y
317Hc5jfFTlaTVhp0S0DVRdsDMMnaDIdf+ofW90fz6/jdLSyw9rF1uCKZ6eKLb3VKduSZYprTKVc
GBtRp61lpbGsbWjSnrl6by2t1+iH6fG9/f20v5r5yC79YnvRoNrFGTrEuLON4QXQhXNv8BWLvWDT
jaeyFDrJSioaXqxgT8Jx2nSA2lDdYpfQHe3KBK5pU65Uw+yToS7DTpcgp25u731C41SZQDnAtMpm
IUb9SSxZNYv0NEUKBBY0r7FZtYpCtJ0RwDIs01IilCgfyFyaBHTEj7Bg9PK8C01moKl5kratUm0R
y1jYESmSr+79BTGnv0m/mjhcHenoBGgfib1ANe+PSZQhfi4bkZFyJrkC1JVzKA/4blBMxBgkUwx7
QbFRV2AnS0CFjuyhOsqSHrFoFJ2hbxOFq8I9JqOZgzX2hsv+aEXIXLBdT0F16pGzMifRP5ASKY1k
RnW7TNIge9pcwbzzLDTDib3OJEG+p9widm4286lywt3Hq3tsb8loFC1VMApKWmNBv019PA15EkNQ
QXGd2K/34ZBs+kwbliuCQn6yObVrvgj0uRBNfHBYI5A8YV07e/ErV6SYCUAj9mS6fLsCXAkOy9iU
er6v2XxfV8hWaJhsfvXr+VTkzV89qkgAiQ0Fc+9p4Bm9Y8nw5CkXYpyTVJfF/Ue7Vit2St81AK8g
dmihGjtDGMX0IlEm3FU3p/HN8i1oeb2YANLiyikwzx5y2G6/w6Xms/WM+lGvsEZhJg3wpYwZyiaG
dcAch+grkRK+HQ8H7hZrkqVWdafJUrPHe+eczzsyCt/SvQxpZmLv6MHJ+fLRW3V9H4jeX8Tl/Btt
yESl6VhL+dggxfaKJhYrlMEH/8seOwz7xvK64RQqcaaIwPf0ksMHFPe4Z3m8bnqYxUtK5e4ZVwhi
t6dDKOoD+uxk0pSGqpY0H4s+p4KPJ4OluGqEqsAoBSdjkKUypO6hT+bNfN8rKVQ1qq//VSbMbtjv
72/3E/awu112btdSOSIasNdL64K5gIforiONsN38I20Th80zCHa5/5V2ETjvqw9OLU0rQccHe33w
/BCrDL9V3WolwW2bkeV0w7tVdHOTqngw8OQDujtcNtzoutRsv1yK4w2DlYtXzB/1JnQr4N4cfFtY
wwxfL855Q/Y7TwhgLLh6mFqkYSCjiDpPHI5feeUT8fsH/gSUlXT9LlQ05qIOvQ2tr98u9+t4f8eQ
EOI00h1VkDFSECh0ISYLrVmoeQfO6mnEU+G/TATTwEcVHAiYsu+43fUZG4Sdscl5m1xQo8kcfNcg
nIInq4AKClklm2RSqHpRJB+htJfz/YydZnhS7xO0pUh0QUDCsVgpDrepawXRJzEGcP8N8xrBSFmc
EPbz9rXNoB4O3EJ91owl3XGj5EZWfrcrTfbhZHh6Ga3JiAL42Pvb177jEHdnSxwRSf2rdeSlOnLW
DRfa5OfjBEr0WyqSjz3gC3XqVSkHmMYduErp42kX5Rcm/u+4CCq78aJr8Ez4FpgwErw1Hfts4/PF
TYKFZsO19E+dZz7wdsbt8v4XJ2vDC52v0YoXrkIlpK7DPttKetPSWgoSEqIjj5vJexHK10+X64ht
cO5PQIGVTAbhPkealDJ2SmZmSn1F0wor7gxC1UhUeGvdRXx7T29InamF5Uybp7qiROYDk1MBlYMQ
/yqkMN1eAEExvNTjGZPHtvIURB5V7Iko2mtSX83xipxJh/TuZlFvIn9zGWRm5+WOtyk02eUWo6jE
4D9Mi5I4uTxU5dO5sf1GyYjXEYwfp8lul3tQ/TZJEL4gkVkFWz2QpH4ZP7hiGiY/Ho70qD6fxu+p
VrJYIFguDXbdOyVNVPowEhbwX97e3FwNdvRcgh8wWJ1x8IAJH42CbpTWqK6JsInzL/o1y5vkAEIz
lnEth2l4eaF+TO6hxoLA9BvWCV2SBQ8I2d1IyztD6Z6mcWnKQmnHwA3tNNr75R2byNFIacmMM6jx
UY76zC1kpGmAuv2Z/oK0LkwqGZhBoRR70wRlG14/psKgll870sFpAWy1aupjix1iQOHHkMehG4Uv
a5kcM4/zg4xenneznQeYhLNRXyFPYlppZaRCAnej9TwUL6OzLJ394f7wCnYaNCEDApf9YFlYdR/f
fOyll8uQmzvQ6RZsSbsDOXIW9+rp5Q7HTguyjJtPjbDWwKjnqBirPUYpvUL3Z9OIafJ6yejjo6Lk
K+sRvy40wu0elPgOZ0rEuFwcDHw2viGqYT/lpTCw4P7kdTUf5P7+bZgOV7Qj+W1PDyesY/CJ8vJh
Tj4osvOttxk4mVYRZSvmiDxtuVRTJOxE6ZB+XBtFGMapPD8XogcNPUNiPNc5gKfh/TraJ1x3cdkg
vbmvujpzB66n+xP2iE3bHp0meWNs6JmEhB9GfHVt0iOU2lob4VVQyuzcYYzlNA5TWimX2nYohCXC
7gR0OX3Zp5WqoEeDoGDOOAunXn50M/kjsWmfo6nmH2r7KsnHM9cOITQEktZrbFmXVqvCBC3D2/F+
wZ5Q/k4WyclkmWAQAy0qdun5fiYJul1+vlnkb1WfKfI3ttN+fzjgO/MnNk7+TIQv0K0b8Cn7+wRp
0eSgRaVclmBk4A3kc3xNdYRDvam3xhMdAdXg4MyS23FPPSHBuGZyXfOVbXJttjcezPQGViO9gs7w
Od8ukRwqOOMQS9rAyVcJRxYBfN3yQ5R+eTr18nAhD3FgCacCW0e7oyVaNnvdleQJ7AMk0fdap6OI
8murmVIrMd+kG2zo4xtSLEF3vHU13Qg1XUQmLLBx9MTs6RSChDHyLl/v13cIFkBPq7RN3VTx4xpJ
D9kjeNk7a2Mcf2Vm3q1cnmjRiLcMOQcZmJQw1KF1j2moV9pbrucvGU4QMDz0zzjo+zBZ0lD2YooN
cgpxVGKC7/5GVpzbg5WwiBB0FDC2kZzFe3+nvAE0IQcWvvv5+I/7SBbc7utx8IYPNvuFPpyHnW9g
blt5Wa+fFbaksDmWH9Q2tJtc6xTv8KNDSlZV+ttGO9b066x5gknBfU7xz0Z3a6xD05ybHNTRnk+V
juPlS9yPnm7v9+cDU+ahDv9PcmjTBk6hzXvvGwuDF4Rs3dYVRkQbbjW6QkrzW5xn+HbHq5nDE5lz
HmJBup6HLxQASF90EYbDq8QtmanNLZ7SGSKMPvgJfCb30zDtnDp0e/Z6TLr9tVAhcCEYW8eRIF/8
S1a2+6e95WCJOCP2mCwWImM+l4rXJH2YwqgoYz35ox4jGrPDAlfmziKMQy0ye1OKTQ4XLcCefd2L
s4c3NA/QCcJ2pVoF4nvQqzBMnS8FE9J3SryUCMxtdDQbO5S7BV0ORiRba5iu99yakHFg58oK9IrF
x0zxolK9TXdUfEQ9S/cKTILz/vVihAeFw1YGs0yGpNNzqxSJM8/teqQ0np+IJwpOv/y1ks48Y7Oc
+M+FlkiPMFNW9WLwF41D43VtqlxNpK8eLdQDFLTAsaP7ZNiq0teokeBZWOKxBQtHhwN9YtqOFHZW
ETIHLIfDKQW2x2UJimzc33pBk/x9+Dq4lR7fb+4F/npc8amrGdd1JtUcd9I+nY4Ws3Ddar+pWdMY
zntZCdIInzxD4vjkG/F6hEjaBxD3G8GWJitVPqCJxjvO7PvrhDZLekbigoAWK1m0WfGs++CCFryK
fXgIqwkx42D1nVMMTnjFowBA+KhrFs5/k8HlUVnMoV1iRmBpNI5HwRSHw2FD9qbTb12/GJhkBASR
X6Wd4LrulGR5iKqMW9h5j0raUrHl5IIgoZtkWYlNNrMSkzJ5dbsFIJHDv8Iw7pYSUs6zBeMGcICQ
toEWDNxRgnLs2KvetvLFa1ZEiCUFDCkD45zvw/3daf4Q5U6/7NLIjJT5s9c5nbmW70/kyeNgB5iY
aWQXrqVTa+Ff196mR7ZQUctgLUY+Y5HZKigLW+JqkRprECO9sBW768f5Nnzf0T8c0dtPP+zCfsQc
bdIdE0KWViG5ulL1UlImvmLrc6u17md+Z7IxnSNw3wUX9mkwvBTZRiL6PHqNtwvFap5Ow/lLeoHF
IiKD2tdcpqNgMTe94FaFe3xNg1Q9cAvfhvPxHayk9RGbTCWjqqWd79JOYa2zNNxT0rlsUKS334N5
j0KwLZlcySYieUgm88fj8GV3efo7eIjp0GI5C4h4QtnZ+3G7T2dg3qCsI7QGtYyJSiSqkTenD5fP
6VGnM48n6IcOCTLs8pq21vulhLuenPvzE+UJtlhKWq5887+AlHgfQJHfrBhSIbJ2VeLu5VlaBFqN
OZHWH1mPWKtp7m6pjc96ESI0vLtze4VApC3RIpmGYVfuFHX8anvtVZcpdc/hEdjKtXdGYLaAF4KD
qN7fx5a/os8PdmA4ONf3tgHTUAvTJYcoRc64blZmgECYhnR8WLQ1EQwcBHEyt6MWcTs8105XAXAc
yk7MNEU8C3iB8sJjm4eXq5N36ia3i3ucDtA0+imvHhWf6aVUwmgDKWc+ngu9J7fhKX1lK23tlWay
4p2Kt9Jxr2Yx9085MyrC5fjiigcoAEnok2ZLdwYB7N7MTV8YnT1rluKC6ZRQ3etUeP4o/NgXLC3h
vbZgVeLGva4UYIhsH98mAos423IMwOm0k1XIjcKqsjpCCbwcp6+22JuGOnFgzc+LM0Vnm83xInuv
RScoiLfwfdSqAhBc6d2SmeESUa8qr7umq6Sj3wbtONP2eVrbd0vuhpo/WEM/8V+spu1q8bJyF5Wl
B5tfwlHxa1hOqa8/Q53cpIF/vmXdhiinQLfA5eOMfDDAIflzuRsWuHhmIXZb9tX8pSQ/BwZaeeJq
GbKssPnap0Ouv/uejLWKVAtUpeUPsXl2mGNiKH37pLii0GebgTzpS1mpuAlfSudZQZG2B+mtgPNK
/R6wmTiP0b/sd1X6KpbzwDFpzhcAyJw+ovN+3QIxrQU0DV/9upVQaej9YUANS30t61moFPKBCAxL
xzgbFcXjUlLaSvXS7RbfvTUwikhUgvB2WUpenU2DAYTfliWolORWcgPN1jpo/7Uqa9MuPYNpXKBQ
7EVMrj3KU1qaxNxrZCCUFld4qVbQIiJBjeUD7SyVUacvRKGTnUvLT78LM/OK48cL0YBjQKocDWCw
BChGay2ABn45nn/ZgHUpdVqKmW5oAuRI7i428lqENrFhXr+KvPYps3Xsda4rGaqF/e7T4tZoR7JR
gd/j2wvPzhA48ZR3bQQdhgfNtKdrgeEBQWurJBDPzF9VIqyVw5udd7NpuDv/fJze0hOJ+wiuaCdD
hgyBQEcJy+1MV0vY5lVkQ9jyUqVjxTLuEzN80XmDfnB4wdMWY6eAafzGfL+evOx+T0bBOpWcZA+O
EMpMqeTUL1cp67JLVjpn9jBH9Fllm8lzqm89Xrxcv0blopFrDCCNtyy0i7MAYmmHS2b2g3Oj7UCM
f6/Zk616H5utYP6gHsBtMZ7fXhmXTKHxW1Lo6cSFJzAI2eomwJ8XfmgWfF0BKWYqDNXKeqE/wCx/
MA06EdZE1HH3AHYNEa30CyTbp4aYrwDaMFBpLR5a6IDJrMAMU4UQ8sVXHRKG6UXFI4V4tC9uMbNO
6SvV6zR6+y9M8xhwz1b59mxWYk1JAMyDWcUFOnYsSBQltmBhtHytRWiMyih9d2dfLrfSIhuhthzx
bwp6TTkK4ZMtnxmJX1YYCSxVNoQfBrgaI5RhBHB/eNfux0+tpw9jSGsMexb6i/6J4Ti2idsTh8N+
gp+aVRuGycFE8xUUs312b+RP3Er+56TTQVvVqq2qmhhXR66goyyb3DRDvfccJ/yNY3XxDGKPSjLz
PjFMHY8SdeMjAmajYOZxaXmgNWLQ129bIaOHcYVFCAb5h/phIMrpOqPsfDsmimtppnHF2KU1lzMd
zse34dMTjWsHNaJfcVTMnzmQeK6g4pteFPh95jwqda51bm+eIWfxcmI3rWohoLdxpHieoqYisBZ8
bs8boTPasOdcIvapWUWNCq9IEwOWgsqRs86fGTZXUuYbq2CCSMDzNy5WvB/RNEKAORL0D5+7qp1W
t77K4n0nqvM2rlJIWRUetk9vVlPoM+gEeQGCGbw7i7bScEpHSXodwC4XTALyAIld4GvaHhAgLwyl
sfpB2NOZXBLb6pRmYx6bYcqk0Ir3WNU6y8VCPgumq5RDOrJe6yK+opdwcdoctkTRpbJjnCIv32P2
LBWfTPuelcTMghjlbDWehht6teLUiCRnPDn9/us4XVYm1+sSw6rVRjJWWoFfJo8ivW+ZQrD2rYm8
puJt8ljTdmu+hE2Z8V+A871WUS5seKSRzWbhtDwdTOgUXKfJF/zO4XB5p60X8WEjAaEjRnWbyIHC
ytBXx6KuwS6orHUgqavjYwgSr4rJb8OT8yTG78ATfBved5fJPodaFFCUAJksi4eSfLT1nLxYhRCl
whdyuB88wh/QiFrihEifS6bTlYt5Uzcvp76+pDOm3VJuPIpFugRZOMpo1/dyu630Ua7Bw/Vj8oj8
vZXEkaax4Cj19fX4fNthuWSsA4XrAX/jHNXJICIQIXd06uotDA7hmEyXvhKhPazJXAqR1ukQaaFY
B+p+VtHpcdtQkukn6F56I8mSqRg3X2kAoEYdCuRCq1pF6AYsZgjJEGgw5yNsgy+3Im5iRlKmoVOi
FAHdgyalHeaqIR0vEiEVJMSqmbDkN6ZtrMhUuWRVhGcYMFUYNqSCyDHgZ9KPSqt0hjdemaCJIi9A
JrVSM9VIdVFFi3o4+zII1o9ek1EF3x5py96v4/3gntLT4PYB4dTuWXTPD7bXSAegohmBBGH5YiKm
TBtFmlNl8eFhM+R4c7L2nH5vel1/0aocA1TBrlieqLz7JR6HFJVPWm3nS8l39yBxbSruu+dPNmhT
GpW1yLNWPXf/jdszUsgyrYozTW7QzU3gDfvSiJop4RTFJySddi61GVAtyUdaPIRdWcama/d359qP
f0JytD9cpv883v7mzNb05Ge5q3Yt2zft07barHa/E54X+eRgHN3c/Rkg9L2jf7OOmxNWJfJMlotI
l/TzIQpOqwhFvfhyBmg4s0POSiCtsWYyAyP7NKS7AT9xKPhzN0E/uHwTPguXMmr8JR4UTNeyDPgK
LNj2HEjmHRElU/D4ctBrtvnpOQitIfZsZqVdXwebZqCfJTiX+WiGdyzeXom/N3rXs5Q7ljb9BFS3
Q+bHTNZYrTiqjVDGYA/7bK12vFcC8OKRzSiGy9lSYHv8TKAc36lWV0cw1sJzWuDriG/EZTKIToTT
jAZpvnTQ8DFWneMfYKfuJlq719jIyA4NjRxQp2DhutFEBne8VdkyyEvjXl0pSwEOgrOo3J09Q0iH
Ok+407jtlnUKoAc5ooxQsOgUHkZgMEecDjBpIcM6OuHUQiq2mH8bvhsk0E0E7eIPxPYCzCo/Ihz8
ShxM+M4kJ8p4Ihgnjwoe2kjRnAjl8A5SfyBi6Gdow5Eaj1vMh/Eq/+xC8AmSX6BYKIwLiiE1jC/E
hGEE+RY3GSJAxysYjWaPDBioF/uEaX+u+T0DTwyWf13fx70zuPeA6y+T62JjjbB9ou0xBsqjmUw0
kKyv0sN5DA4ORxy/zBxMliQ4F5fn3UQMAOdQ+srAwafBCck1NXielfFQSzBcSk4hxNzBL6Htzy8s
KcnRCnYl8UhBndGR4q0I80oW6YCMcdzHH2adboQDF4K5p7wncBrPL+l7UHEAqA/Ff544BNbnexPi
qSQXmIvDwAXT9AL/eWD7XRO2kiG3JCSxQiKOxI1gsXzkw/DgcbCoQhCcyZk8cK+CuyTr5dw9v6cX
WZRCgHHBXHJHEgsgphPcJ8x0R3quXZ7etibe0QILIwrFQop3/rvB+d7Ewj0UjSqiZobriBKB0oqN
j8MFQ5/5Qg2A4I7hS5G8aJXUk9QSmfP81MZlOO0ZOGluH7cZ4xsVyoKiunX//2Zcojar1XtQerY1
MN6o2096nzOxBERXci72fj5CNZOz/EgV/uN+nL6kBaARwlmEdlTTeCLqbS/kUJAQ+ef5AjGg4vBx
Ht7c88S427QCEtuFrLIkGL/uKKi4ddfzUigyMWdm0L5De+0oGZEBwpDZvhJ7GcxNfakCBzVUje1v
6R0t4g0ts8AezyrcppTAXaqi8AN6LK+TiseZL0Tkm9YWcSyBC6be6ngFbcL+BlEaSnuxzYLP/YOB
Qv88ft+f7gdocm5XWDaRdMsbLOz9UV+1593t412HUZI3USwUw6MMX355ogYQ6aPPo0xirIdZ0K/X
v8Hp223wmogQDSZdKdzXf9zHCXiYnDQPNxND1YSe4XTuEYHtLTY3o9317qwjLIN4H47pTe3F0wwO
3FKL9ueje2vsl6bv1ANfeg357vZjPPzi9Mzt+ou9pL5U94rN0WhkAdTwyP0Q3i7X5DFxy2Zpr/VR
UGisbWIStV0Vm2b5LkC8N8LE5ca1/rKgLr0ms4BNDN95q8aTpbu9B3t5j0fpa+ShBSR0ifm+S6La
Ud8VYhtlXxahE4KgetN+d090RUa1oO80B4EAGoasKOTgxH/cjdf98D5ef/f9cbgOrGDi5M3xQoXO
M1nWJD/I4gdNSKtB3iTxAbfsxg9ibaaYIQdh0lMswgAYHe/5F4vkLzb6F/2a8uQHdfigKqgYgT+p
k5/08TdiGknu+9v77SO5pFLNMOx6m/wgjx+0S5voRcfpy9QQtZpx2JUqucQu7ntNGmDVP6rT/pF4
p2VvKrhGzhahRAOQ5FqWvcfnoRKINX0MT8IOuBRThg5O4ACmL2ZeKZUdysKjyn5DOsfrrksqa2HM
YMVC7fE/uoXzij/WS4+9DTEPLADlkdKOWK3MMk6zSSNh4h5n6cBGpvx7NqBS5SZ45Vulgurw7qKH
gEEBMOXsN6oWq4YAGcOmf/j5559BAn4c3WswUbBvpRAe69yENd4LrP62xyEtbsLCRtuOa80u8Bzc
PmwDpZOqOtq6SyKWNCl74U61sNkeeYtEjhhZnw6Bvmp3NQzKrpqZ3nX0+snmsV3+XFtp9LVTHbvT
AFGpl/NlwnAG+m/GgyisvTykC5eO3V2dv3AzEK43d7faPZXDOe2v562yWnz3LGdxAQnF7YZVEDfz
zfZ8H/5OcXADXByGUnwDX8CZ70/grphCXhWt2vOiTbs7hosjpBCfi+LBhvAC7qYHvZ9MA6LQDnrB
tAKTG+B8f3syrllbx2sGxb+eaVFINAhDWpjj5xBB6peajeJzshYiypQCCjZInlZZQsXGnibYyR5d
RUS+YefOFOytiWSJwSbOg+IjyTQusuftD0q+naXjaeGyEH0HDAdvx1/pH6xbVbaVupys/sBYdyb1
7VNhUXHPCywsZYhDwqMenCL6gLokijFcDd9aOhQIaeO+1dfTYAdMmr7QNi+pQGBvAeWOGsx59pcv
40rgpczkQEVsBm5Ex9Nx8VJF8/guIDnNgBlGqtMyorC1kknWDTJY4O7VOK0FFWsdVFxsdOwxGF/f
Eq0H8VaJgAPCM0PD+ocQrj2QUMKEQynzBz0B7mOfVBTqqepjwzwit/6FM1W/YF3gchFdEwmFQoCi
iOFRyvaMZ1TE19EZnweREAIMGaaK4b9K6+VOZ0bYaUBoygVKynxxTVoeq0IdXuUxirfpjn3XqAOm
LQFtqS+/F+nhuzcBwbVczT91wiAuIlzGnxkBRya3U04FfKTDF41yoct5asZtyvSBjT+P35MzmVmk
3eMrEwZMS9AskpdyFBDQAyYBNQ0z/AWtg+pNsfbSiLVL47COaaw9NTqizpzDkxsYXgeRsIjNNpMX
sJKprT76Wpy0ezuePqDq5Ijh9ieoJAIa7/s5OaKHnoQXl+YKOLcv4wdGSNBCS2qpKp8Z0oFFDbBg
W9yFstPWa8HBbqgBhUgS/gkLNaEuF+qFATSxlldrxLwwFBL45u5wDBRN4X9wswTwLLyDiJJOXGwo
YWs5OtDTvQ4tKGkct/UQ5h93sd9icqSujCNFrz2MBJOxO7P3wXaPg/hGd+O71cqnD/4lfokwrsRC
OIGbPkEcq4iz6MKVBIx9yj2Fr/oszqAJcw9HgrRLKcsPj0KsoAxej//+eHZPyhs1sbkS9c7iIHED
YTz2VfUkrvcngKD6Hkn2XrRdnFWk7nsZbz/QmP83mUXBnez0eVYSgAYPGFNo+wkm2VRwsF5NJfQS
nW+QtclNqze5WjykIr0dTfy+Tn6fpb+v1PfeMJe35Ap0RqnStz7ktOMatKiHDimUoE0vpamW5M1j
a7hEh6Xje3Iurbp2ZWbMJT2TKPlYANGyxgQYLqKl3Wwu08uKpPb5kqzthZj+4TJx/4B/+/hjWid2
YmNig8sCQHOn4eOa/K6uLA0Y5dPMhvUh0BU3NTWQwAQsbqu4L23kzeRhCAlIZoG9sU2mZVYrJgb9
huT4ylhatRY+Gc1ZXn5nwGCaxrNvW00v3NrxF1qIAnAeTAfQK8bB1UuvzpJiMW6T0JNFkD7n07oT
AhuOByMMLG8+9wm211XHG4bshpyBd+txjuRHGHjlRWvU21SlV5hWXU2jxGmmdjiZmf661PujhZHC
OStqohUnjM7agu7lK7F7ur/s+qqpDE0uNBdBjQWBL2xFkX5F6l5f0H42k2VpXnlo9QYVfQgMI1zP
tn7qKH0Yq6yWrqhfGSVE+cgN27DJ9b3nugwUXRjreL6nya5wVo3apoqbWQcXIfReB4KTt2F6Sbvq
vci9o02mMGuQ3iW8mg1eu03Hr8chHfPNcomiwuVXMxAhkGmfnBV/BCrt0yntMzeVRh3w+7oUVK/T
eZtMpZL5XENwA9PjHhqTjt8I5IkgZvC5H+6RZAakul6EhyP0gQTrZ1b9fz7/4NTsvxtdcDDjn2sH
TcKZQisybjCfxjRlCjZQ+d7jExY1Hf4+7EOGbgMiUnqhGKPwuu2zWLAijQUTTiGxUVY+JFvuqEuI
E2KIFkAMxIpN1yI0mEe4DcV1d5ScR7seXVWo0sQnJ7mVeanSHCwcAdlP7j2E6lFYpss3iDm6h6Jb
MjtQ3ATmssBCAk/IC5fo+uGexLc/uD/+8ce1fKMnAg1Jkkxe+mkEpATwzLwmXVzCOsl4bouIwaWo
s9MbJDD8RsugdjoC1GhB5CYFE1ThP0Qih2Qkybd76EOTwZwVHKf/GAT19gJlLlY9GerKfCmkFDkx
eAPZ9jPHKuXmScEF7Rdy6sr2s3CbVbUEzuMYMNF+GrGtSuCosDiZywEAwGCR/TWxE6i/NZWvsSNu
ZtrexyAW58W5SfZi3qxfepeWYYIQLX+/CrSgkUnLNMY+X0FMhn5xKeBk+np0lVbIrJjc1wwPRQrW
tGar53DyRt5SAghz+bnvA0s343B5S89KIE9LqIUrGRsdrhMd2QrswL19GvDG8UUSGd4oCULgBCwP
uShI+sb7GhlotxsvAkIi7GC4yLkTsSu7HWQH7Z4uN0IyT2+h/tNE2bYyiRA58iFffX/HnN9f79RI
cRWiEGcmitLokfKm5CtkfIyMg1AblEJLJs/dC/gHC5xQygcqtihcmg4UCENi5GTMq1BIzAWkg1Vp
h6nhUmUfeJspDwZMhz7BR/JJBAcB3rFSDZDLbFIZX05vqp2HyT3AfzIEvpcZ5zzw/LB6mO6hlaad
MuqEvSKwNqTub8PLjoMhaYpGXI/I9uLSuqRmWAt/ZyJLgo0TvAPJmfx49SgvSk033FXCAs6riaOo
JTy3mC02am+V8fa1/U6/3y6cR/GEd+ll5DKTGiMNqUJczJI2CvpbZYsJyjQsp4zfY5l0zV153pCR
ADvDDJBvd/YirCydRBaw+hybwZU6lovET5B7M7AFbdVog66fZ5IBm4N1Kiu55Er7VmWsMSLK/ekI
SnS1vqgSSjgL9UUvEc+DccNdyMZN/7iPSXlv5KwiLDfmFC8HaKiufYo0GrlTCH3WBJ9xSb6zT5JM
O8tcF2XftNEZ+2wNKzU+vXwV2wARgJpXmInIZENw5Gio11ZbiFU9878Dlz76+FfijD0f95BDmyxL
thFeHkQhA/m4s0UgLZcCihpFFKowD/VuzPVRgo9UHZEzpINbOJgwUMsYBEf/ECTo5t6U83XNypXa
P7b+oToKskl9zBHKKd8pOpqwdJpCpkIzNO+SIYwq/V4KawI2rOJ+sj/RZSI6gCQRACbShNKILdIU
VC6abVSQlNwgWZPZBoCOGmsGFFrJ9vYzdC7doNP4Muw/dh59SfKfrn7ReoPpKyKhdOghZc0kLwQs
pgslPduKrIbzfrzeDEBSJhwSDNz3XjydkcrF+rE84J21Z/rF7XXQoQnF0xYw1NnJ8v3Io5vsQ5tg
CtyZn+Od+qax7sa4XRqu3bZrIGt4ZvP0MyuUSxbMrk8HkPK0myWhzCQvgW8MDDEJt9jZtPVNZM8O
tdICdgEn4CzN8++uX18WgzK1dsI16AWlNsTx0mp+FtiM+w1U7gJmKctWTfnvpfHcxJsonDsfb05f
xE4B3Ti0FrCEa2Ldy1LLWFKKsD/bwGUchvSiK2+K/IQq9uB8JzZKjk7foiVvNl1qYvtEPx++tOux
vTwZ22ulh5JhgI+NZXR63tyjN52O0GcKcbqGI9YLgK54O+WVM7FDfaFdOV4cOxdMon88a9N8Z0Bv
86zSVmWhmgRR3mNLAVgpgzdk8Wa+Vcp7fILXiiKdN9jp2FKbhpdB9DL9Botqz150T/4EwDDJVEdq
OVf3hn0zjmRAF+Xh/SqzPARLgkeH3bVjuoUwhjbaeSV1NjMLCc/2dE/HkkWlfQ7yknOga/U25GmJ
KTqZ48kigJTTkGN4CuHOjt/tUp+20BXCHEwOynzl/c/Fo4p5rMqCQwvrYrIqS/Ki1PmGR0i/k2dI
zwPZ0NHt49WsFV4M5jDsm+LRbs9huhNECj1y2q61qmYx2OqxHBKO9MnZ5V+Meo+HQGY9R76HOPdG
J65sZsDeSrlF+MKtgGZ7oXHL2CvA/UfwTK/C2aiKf+acdSrqLoo68QBhXIhmwt9d0xjsThnl5can
JS+My1TOyQbYB4KioTEU3/pTSItDq2N8rWjWwux4wvNZvomzgqh+pm6gRVDgMr4djfRTIylMMHBS
+PkspytVQCUdScl1dW0Aw83sYCJ3fHWXCAOmyT3rtD24kKx+zJaVaXC15GAAX4T5dh/HuA0vZyMR
0rWyLCmP9saSD9qmrfNCBMGwpqWPZTUAgzdkwTeOncWsiKAeRP10ecH/y0bmYdyf0vUh3TIlUIxc
HcbnwX0R4/RG8KrSZRnFms9Bb+3X9FJlso9Axv0m1ovCSGTVOhHQJywPcsGj4WEbHK0u7PRVlE4Y
xHu7VUvXEjHfBC0902VU6eWsmfcPy85waqxaithG3SGx7YeRAjoWHVWnM4H1I9NHKA1IFmWlbd6Z
I8jKKWTZPIHHapotV5ek6GxTNa06RIQ4R0hf/hjxjiL4IOwYpTTC4cpGAjgd9z+UBQL8DiYfdcnr
g9Ot5pf4GXTc+3B7NarMZDgSzI/FgENapYnYLbZcqjhFzMlw99gmxV3iM8horZbD3mQhpL3LTsXS
2OEWhLeQD3t5IUAPOT0G3U6rMAu+E3TUE84uPBBmHMGcFjCZVMSs3CxffiBPBjammkW1a89MvIPm
mzsKftmJCvF4IFgnT5qURJoZeI7OF5/2NW3fUsQOMZDDz2MM9gXT32iiiqCRfokmKjoffmJbUCN5
XmTLBF30kuiiPyoGDrV7hpspDTv4czaL4ctwOwjyYPv7ra6SZXILquBmZWBwWrXzXG2VSlWgsj+m
A8BNpU0Mj5eSUWliD0+HobulCr9PKU0jhJ9rWz9fCMBDCp8tYpNroJHQvTY2/t2ebJ3HdKx0a6ML
5JkayMNOV4vzujJXSoSpfOIRQ+T7ZqScWv12s/HzBq/Nfni/rjlulX6c63SZ6wo9RC7L4dsYPeaS
8gM3aPE5FCMhnReSQgqjSX33KA8cjibF8346BjC0teBGOKqi+cSSrZ+OxItsEQCY2wViBWw8cKax
jgI7kL6g0tvNAvRcGWH38/DuFmoBEesZnDHXGGZtzKWHEYGKskUHtxR3yOctyRCgODHS+u9tSzAX
IXm0W2uuM9iMEailuEIsK2eBjVyF9zNV1I4GK2yjI0TlAlDvIamVQueJimOMKPQLxjMYbBD+CFb0
GhallmFi5BQuNzo1G8u1Wx3P4ucADatHQs/vhk1VLRt6QQGe3MNpuL5dqWHW7TwZjwxL9+m4RvXb
SDLFLCgy9xDth8OIHwilBofBWTvxt/wf79I2qXvNewbBkSSWMVIs9g2dfvkbs3+18Ydy8UMCFyvp
0iCStvxD+K82/lAx/6GSyigM0owiTZqRzaHujQoGXuBKMPH8eHiB+WNMcDAigTNpXUjPM2nnbjgc
jEiZRPdWoV6Ng6U/h8sF2PGfjRhzLyx/MkNF6z1UjWiY4fvEvPVYge39/TSNZKvMII5dYydjsfdV
mtZIkqnWkUxV5TtX6BJnaeo6xD2CIwHF0s4UJsRfOuQxz+M1Sc/EA4i/JxyQWjiiAKkITOgY2cML
EOjfyPb0lidsF/AyObcH/bi0N1coYEsW/YkH1vH0u1Ip6WrWOGht0yyTlBrUuUumsCHyAqwYvv51
JXOti2t8nk+TuVp5y0Y5mbmExUugprKq00h5qSLwf3xhHGDBTQxyJSg0MdpXrtH75OnIbz/3IOev
z/08fgerBBrfnY0AfDZndMjmNOzKcLoc0v6A5MKQBFec2Y3e/OuwAX6YVxqsyxPDrfoMMS1X1TIT
eXBT5j4CVosZLnuvs0TVbyZpNlBEhZb0Rhn43gSm8VcpXJpiSc+voxuqNLpB8lS3MTy/QvqWhq53
mn2+DoQ3ZMda6OlO1CLmTXBeF3lEwI1zJzCss4gUyyiiUPlCF2KJlpZrN6I84JGng6S5BtrlCy6K
pMhfM4kLnevoNiMM0qCCbl7rWS8wUmmGzLQRpGnbArWRe02/A3p220vQyUxEEai6HtNmvix4LRfa
yRAXYtRC2TZt2UEkB0OXdWqGRHxBwCaYVve1Dgwx2Y7wFX1BtnUSpdTQWfA8JdHfLtZXpCn/NHrC
+zoXkeFmlUW7d9uQ5u6qbKlHiTO4Cq5kxHRO2jiW6a82LI1YLNE3v+6ncTz/OL7fXv8yTj9AF+Wz
ca+6QofPWi7OGXXDiZWDc8peM/KzYywfaXlT0w9PrnH4yqCFHjqno5MEX7/E/AmLhm29DJmKORVw
Bdfx/OWS56x8kf3w7sQRUA7ObDgcQyvEFZhvo4qr2OP3wHOiroZr0z3BiLfJnKXEjcsC2Xn2J50l
k2hQ4j5sHuGCf72v0n427cz07CS6ZH+ZzkSetP+C2E5/GKPvBGpgTkrdYKBPVYuka0W6pTZDi7F+
qNmCAe3S8zxrRdIsUsOKIEOIjGxsASOo6CpMh/EsiYTOyQPeKAsSUHc6Rv1ARLcBJKFe9TK+6nPX
tEkXm+TLhWfz2CRcxN+QZJY1AHVo1PaQi2PzEfkVzFBBNcvceMM52S2rTANvG/X28NQ21IfOePoX
PSnNee3uhEBZx0eJU+xOqNOF8Dp+xtYURgSPAZqw/kbmKnfdB0/B++op79wkSi6yOQcmB7Z9rH4b
nWsmy5DrGJHAUtojvLQsjOfLSmGtnA7eSX60iefiB3RjKeUl6/3TfYJmztXCBUUtZF7Rup9NKgBF
N6DA8jQKbJE8cg89LP8LHiZu94jchX9dpS6spAnVxyoI2nf/iovjNOo1JaQmj3SFC/Gl8fuwv30+
7z3Lpah8FiD9CPnmw8jCpDeIf3MNl28Xrmv6ilZLOE1idPMR7NN+rVVWpc07DqDEXmf32yvXjKTT
yXXVLhmd2Pbv+jqBktzaBqkpdDmeT+gsFH2mVWylqXs8WcsSR4bdeFBwe1YIfuOM/WoNnxE7U7VX
XWz6stykLx1Yl+NIgQdb7sv4QS1qbZ+5zrTHb0K9NtnneaaIwGH7ci+X19A5jMl2ViipC1HcUkX2
3sPx6y/vp/v1l/Pw9Zen+0vV9m2eLjvSoXlfyx9AJhti4M53mXVTaiIlJZXZY6yGCVFl4f161ToS
ydWaoq5fHJ4A9M6yu0wmCVZXRq4wSAA0pW74QBPDtt6IT+c4S3p2vWZtbIzZrRENsndLg1WCaFDN
TbJ0paclCMiKcMcfpuXTTITKT84r7/QiS3M0jtTYKroPETUcFqEB/dJy8d0Ayyo5TCZ46CDMlTNY
7WF+ECtLot5QNhrFvst1M6l1Oj8lvbRC8/hWyyNRYE+952nhiIR0ZY1PbitsYyZJggGhmIkq/hJp
TNy0Rh/pQ8DhswNWccBSsluqw5SptbTsyoWG5nOJU/grCVuSV5CJEsKdqhbvu8AAp6fVarrbxCXg
eOe69JfxsmN6NSEiFOi8pocRNKsVkm3WywMJxvG7rSFnJMGJ/eeajS0rjRpcNPZ+PNDHbodp8dVc
qlXipq4yXHdVvsSD+XgK62FnXGmhR8vt0TZsnb4LVWNqJM6+no77Ma2ZIituGY2ahxF//SP250xS
TeHeVXq19dLV4nDe6tuXze5p4iDQ/fTG1truFY3evTLBgpFeYaspTqv17U9vfK35WhMbz8EDSA6m
1xWHAhexSZ0hxCMgpDFDuqSXK8bNAr7o8dUiL87Zp/e385aHvorXoooYMll48TyAwYlZRut+ZZ0m
eq1XNYm53lzLXCmhMr/tFcxaRfwasjsPJs220Uplq7a23bX1VuT9Eme6+b6mJbFQZkTq1vKjyClM
65YU2p7WhOx/DMTIfgv5X6R3ULchKAv7LfOP9/3p/fh9PFntpFA7V0p+ikUD1jlT0OBusJyISt+P
hItDFw7zVOn9Ew9GbC+ZOhBTvRdtstXAkvSty10cT3BypKa2svXFrA9Ca04uHcfoQw6P9izCwlNj
Ee5mw3LF5S0ETfsq9Vwfoq/0cRb4fR+mZMDMcWFaPln6fZ+hLd53V3W690azYj7v3i7nS7q2FaW9
0S99nvLWsDcOR8QMAziKVd2nH62lvrnps4sSAamNbnHVsbQxfYyaqr9kqKhPLEpqwjSsplPULPx4
Ap+OpGzQTiRU/3NCZGd1Li6reeLSYwY2t5ezkYKlyLmgCabqovGDf9wvN44x7b69jmeqV7E6u9Qz
7vpGpa/MYJJwosV7FT+d3oZ0S52qsj7Gdax1RaiL5dYGagijX0qlWyMU7eL3bfr3c+3EVovf1+nf
73VTnXLx+zL9fau7QixuodHWQUQZMCPSLX7fpNef6f3rF7+v0r/faY2a0YXmzB8issxK6bJ6IOPu
Al8tph8918ZV8XdBkYbJyJLpbIdi5p6z8If4PGVm1kBqsmwBYfZ9lcodoXf22dRRq7mVPQL+/lJ1
TRZJoBkGjGb54TJeuW8C9ZdAcKEFNqgkYWZszoqYzlSaojEgI/k8f5gt6k32H+wenCLljewiDCIy
59Yacyvm+d9MNPDxfVIHRoxuY47NdOFd8ejBvR+dBLxMw3sa3CKSrnk/7xmRZogyGB8rndFn9C/7
p8/HEwGMDOBVKSnCIgGhB1ggJMzMyLVVvZQkSkMf0hQirZ4K28cU3hU4BxsYJYGZbQieghStobXK
WkMv+Kn+d59mNu+wJOspgq+wRK83/gYFodEWpWdSfOOGG6DSLhcDZyTLNGJcH8vwPnb3gZk0nien
xP8+fB1sUs+uqJe4mL3ISIC4wTE5Y97nQRAly8W7KyRclcQISey7KqWcwRhsaEUn2LjhoWPhYbLq
Gf4Y3xGnOfajUa6r6YUbX6+P1wq1DyP1IrPtSvm+pljhcGgUM3d0x+NjQfWKjSrrQLn31FY+thUe
tkzRGadIgdw94L9LA6x6vXBVkjKc06B8wUIPS2sZ9+2vI+Yl6RCMBG+pFFMApwIemIA7++vVYvRu
hWoBwWqzZYKLtQAHkjprcPJDO+yECJgvsCiTUWyPj4WpEhJHPYUP6/Wpzbzss7CLvQ1OLtkQiXqn
dLMqHKh8AXAEMayia54uA9WlgnydvCYTLqZzdV/ct9cdgAJMGqS2rJcKDaAWe/QQbYygpOkaZV1e
FVChM58ZturvF6NBleCDEA2FZXMlxAU7S8NykGsp+7Iq4fB8DtxQhEiynrC60h2fq+bzfBDpEnvJ
AFAjbXr2iHXxwAZY/l+NC1Zn/RL1mOhVn/6yXq4qPu1F5HeHkdW0mS57PxWx2o20TSTEtTGHtWaQ
0sA55Q6tOj+FKFPEaLkq0KW6IZNbtcpnRVZMzefseHhTrvwJ1EnBS7BWoFEggDdbKEIGm+ge41If
O7Cn4dzSBiwNJiqaqaH0zAgen0cnNdZ8WAJpPrXks4Bs3f14I/hPVi27Lcj1z3SvHNklalEcJE8o
RPqKATiELM0jTWRWWL9ViN9Cgc9JWLOqs2ZYx6+o6pU0eV4ZM8xLMUM0YNiuyox19XJZsst3VlgT
LMQEKTxGcpHXjTFBjqfRbwlSv7y1ltWIGcpnLS+sr/KHr+i3srY31sVtfsUhk2hkZWV8xdAIWlcb
Qb552VnHJfaQ6CR4ho01w0bMECP/OX/VWefV1Snhra1TLsS6BO4yq0vjKw59PUpUaV2vQpwX6ves
ZYkqLYnK5qdMcpjiG6XfysRvIba08dKbGb/FIUW6XnlUG1lu7UYuZkizZWVT9pZsNPOrzDJvrSuX
65LKJrckKpcSJRt5uRVb90vKvAD/54X1VZHPd6PmnbduSi3VYRMDTVlv3cpe/Ba1seBTLqzdKMRu
UBU8n3Jm3ZRM3BRU3pXXorklG93yTckb65Trfv44sMyXjaWjytke8uPrXkPrIcrnu8F6o88sbdPO
ZYPPq7X2sC0SO2/dlEzdFGER5KWlN8psWXqz3HrMc/GYS0aBrLe0TSdfokLoqMraw1LsYUkizNJr
3RT5Lks0el5Zu1GJ3SCniG9Kbt2UvJm/Di3fFOu8smb5Jcoz66b04qag+Rbul7Xz0gagyBXfL2vn
c7nzknQ+ry3NVoubQiTWfL8aS+abInGXO+urTnwl+ze5i2d9Vc13ni2H2vqtWvwWsjj0XgNY59WJ
80KztPLvlyWH8q0kHcUSZb0OmXwdULoyb29YX5X18m7klWXBVmVCNhpLouo2ZelZ0lsn7N4ss+yN
LJtrG97D0jrlUureSupe67ekFpW8nHltvV9VP/stlg33HFp3uZ7b2F7mLW3TPdg2vPO59Vbm5fxd
5j3srPNq+7lbyV/llp7PhGwQqTDrjdb6qmkTFlFu3cqsm1tfvIeZpTeyatknyi2fKJc+EcILufeI
MyksiermMs+/VbfW/aoStmhtvV91k/iqsXRUI2SeOpz6Fza3dqNb1htZY1lfjbSxiyiHufXC5vKF
Jd/cBw+sPVRBkS4GD/LM0odZObuVbFXmlq+XS19PxQEa67eaBwuW9bwlG5mUDdkEPEV1yjKfz6xK
H0pprN9qqmVrObc0QJ7NLT0O3OWNJVG19B06oQ97S2P32dyOYj1fWPqwKGd2VO5PubZkvkjthmXB
Sj1PM2SZtzRbLjUb3UqWDWsPs+QeWtZyJq1l1I0+UtFa+rDN53Eb3nnL3sikvUF+Jf9WZe18JXYe
LcyGf6u1dqPpEvZ8b1kOfbH86uXWC5uLFzanBICPR1k7X2Tz82Lry/Irc+lXkpXiLXPL3mjqZRsg
L6y7nIu7jG9066Mi1gxlnE3Zh1ZcNJNxUbKIWM9nluXQt/PXgW+lZW/k0t6Qmeust6S3l9ZyEaM9
WW3JYfVgpfgIp7Wutk295tbOS/8LLefMawDLqqyaZesrtyQqlxJFtg1rUSuBkMsEgrrLvSW9/YO1
zPZGZn2V1fM99HFRS/dWCV8vs6yvrG6W41G5FY/KZTyKPG7vtVkWkTwv8j74vKyYXq5iejIqYlkO
efYQF+VbaVl6ubT06FZ6+9C6X9IiktHv3NKiudSiOELj01+W9GZzLzv3M7RupfR8ydLz2saaYfug
51mirNhyJmPLWSf0vPVWZvKtVHEAK5qaq2hqJ3NS1k2R8V6yiNhftvyvXPpf6resFGIuU4iSWC2z
YnqZjOmh7eHzRLm1h3mRyPhY6cpMpiuVPW/lHbL8ISLt473Wzhdy59uYC3DPoaVFq1T+y1qXjG+g
PcCUxe6Jst6vh9gyf2VlKzKZrZDEpZm1G5ncDem1ZZ1lfXUysiQoJTPL7s3aB83G6+qsGbbdXA79
zlu/VefLnm9maZusTVmVpWURFQ/ZQO/dWHdZZhBkH+ust065T0XaO+t16Mp5TM/LhqWx5bqU7rXi
AJmMAyjogYUHyCQegLw2H1my9rCsUpl9y7Zp67mV4uOi1q1Uv9WILIwVg82zbHmGueVl59LLJi4+
f7+sPWzL+bq8tWzdlC5fjmJlVgY8kxlw6UnlVlQkV1GRSkSkLU8qk56UxGdlVnQuk9E5tAHYSsmt
9yvPi+X7lVuZkVxmRijbzu+y5WXn0sumERoq7RnPX/GL6/A87pDU+YgNqdzf734dp+Xy2VrUiGBW
SIbTlkbaD2coZ/HFP8agWRyU8o+KAgwHQ+5AX1GfHorLMXAoGYI7Xq7JFaeK8wmzFPcQIwk56I3/
Z97OD/t5paFkDD9Em49MgmwZ2mYA2kTTEflKUWUJFC0eRiCBAOCth+GtVXMW0QxjpJwiPEP0Xhhr
A2KuyGeNUWoPUL3eLm9xocxkv//Ynyz8XR1Hk6/5fLRZBeuw349Xa70CGShVRGynbUpZERUG75lw
yudT80UhRolCEZP9fLhdbFTPZ7AJPpn383PsIlSVqi+wsZkhY7k4P+mfEIm0mwJQGqeZyIoIQqQx
CO/EBRJfL+4mE13nQRwe9FQ3ZiQwodLfl3ePNsm4fBLHWUQ/fkWOPGfJ2tGJe9kSN0GKzT/KP7JE
pxn9G912OdO1OAJ1vNIboJUI7S5wMHDtiy9Jfux0JX4jzVouMPFlLOGeNzpi3jSj3B2LoQTFKBR4
NSv1Zmmy0rbSs6IVA8Ws+JxbBaVbwcjOAsgQkD2QqPgSQ7tJZS2bUdShzCQyjktCdYOxs1uaDkO/
pxGK4qELJ7YvG05b2sRVM/z2jNkMzw6LmYBNA5je02U8kpUyNluUZQBUi3NNt9OrVEeXB3pqbO+j
+hOkOXCLeQ1rsdTopjV2ptek4m2yO4db2t+g3OV8T7c8LQV7d5lLCjksQHwanRRQqRhaI99R2NOV
BIKdVHDPr1ErrzY+qpaLa6k2YnDz/PvVNuOQJ7jVlJkk6qiimYsxlsSlixPKopp3YSoW2npQHTF2
qKO6b6OtR6kLJX0XZPcU7szmw70scpBR2SXG8k9195OdEVBjcXX0ZxrhGJWhsiWfgPNpKksoqfS0
m+mWI7MSn9xfhr9Mxzcs5KEiN1U07f/V3z7SBXil2ts5acGPx6/JKXW6DIbBeUS14Zb0AsvzbErO
Jp6OQLdi0s5WgmgAJaRJNdmlVqy76+Xu3kej1W6jNKJvVoY0zeP+Plms1oWsX0NvWXZL4K55KAZE
dHC+7FCUjTL3dpmeN7Y1o1os8NV8Ez27EinTvNh1voW9JV0a1837TGTpLkRcBn931ii1HDX4wQWh
fRVVLx4D0QaAInHSelk5kLh/fXgP5s3r7TbmedHrHi/ea6au45fTiX04u/S21MTdjLfFmshfQFp/
WWmR2Xa6ZrxolWVJ6p74AcA7nqyGC22pKxp99V/KJjGby4maavSz40GFzuLjyZkk1yN0OXK2/226
n/dgFE43o2mAbKYoCfHRsLzcb0ht8uqEK71hulcSawYu16SCS9NbbGJKcKGhGw3jlOU4nUBnpmMv
TSxA4S6IYhxRZzsjjN4JpxaIAOyXo8k7Zawybky8RcfzgrPAr5LdfrCbNRFo4hEjzYlRHazrzTme
k6wzzo2RZCknJuBlf0ehEta6PM4aEm3tCdcne8J1CeaVVxB/YO5b68HV9JmuL+Zif+YbWW0+7ZHo
0bLszBw+vuDZUmd7MtPG8/1tnOCCroSgmohzjE+6bGHydrncXo3TaGRNdFSKkWfo4i7WDWX3CF1m
+bFbYCQy9qZSLgGrzeifBPbyAWRneEt7JzM2ks6XIZdupDQ9KtoojWpv0zQpMhLwRlYYJ9p8btcW
qdEmsFeusDZm/aGuhL/3/2X6NxY156eKw9OtqYps3rezElag50/6OjdN0zZlp5go+PYtdo8w2Amx
+UArjimP4X1cos3c3PiOE17Z1Sh7G5VLkW44KdwByh0wrdP+eCjSvRUbbTyVnmrgelll3alFwTsE
GmrZmPHp7q4MEAufn+FKrlAR+YKGuVsZjfNvl+fnNDtTrft7lY/NA71IQll32khVzasCsTlbo2/D
9I/7CCLsqVyfhpWmJ86W63WUr1Pd3p6Oh2OMSK40dFF9QQIBnmxiS4NOVqiqkUvswhKx/XqKsCsp
PrVszYknqHl3bphSQDchdokkG9qIOIodI+giqa3DHdhBiLaE4ikbug9gr5eHUEO5vuYqveZyzjsp
QiDUeEP4Le4qO7vWpgJFQcm1oBQ+VACe2pbXS7S1hoesEl2MoqWIhFPCkIKXE5xx51rCojEIYVhW
1TIbjGi9oOOlEDtxR50OJskmz3XodLRA/vF2vw23NQIx4bASpapWqglPI1qnu7/frzfL1yw63bed
AyU//vmn/3MfgPr/CPylP7tp//np70YwtRSMfkhtFJrOAYdWiG1Ixpd0KLxUHbsDw9hKHyMjNCpJ
DcmU6bUavHJLcydJL/fJUH6yNXwelDr2EhxPz1vaf3WCo44TTY2OrY8HnFH6zGrtTrPMvo7fqX3b
8frj8QVoGK/XVH4JuZt6zZVXxcfVpoUpZQali+6WMJF8d7sm3aRTchjiQtpZR7t1H6vtqqU+Z2m3
Mu1Aapqdjm/tgEEA5pV5dnsSm2Fw8wnf92fJJpJLbOfJjxCD9aHX39I5stQd6YpolTtV7QRyVxRp
u7zVzELdettJUoFG48lS0Quzcb4kF4aFLAiWYVFVFemTsLWXIkuztafwm7HvdDI8+na84hRfTh/v
r0Z4VHZhFOVfMv40jcjNhZ0J8zrBAIBZh2qJ4HG5s1qV7qzWLGu2C2rrIK34qT+I2b8zEtARLVDG
SNns89349pSQiSKi3jivLpDU82G+Oqf2Av+YyjAXsTKec+Lp9fIajXEERkPWeM3HOb697K5fX4yB
BGyA3v6eacV1Y8gLdDE7fP9Y6d+WyRhNzLtGsUBGOcz1j+9pd71aotgUiWT09kczn5V31VInOd+v
RTajSyXoeuFL18jkvpTSrIyUZqdTmj74jJ6tv70GVWK3pIAfiSTpwYgJe4hnX5z1Ywe1Re4fN3mh
nfb1y/HdM5wl++3g+1POOQ9rK5QsDDyAO1jx+2L2yjfzPaAubJz54MNdSczIJrJU3NdYFJJphdrN
nFMd1pe5ueN5F/W2neRR7b/Dq0iOG3HLRgsSEB/vxh3o87mjFWn0uEUow22Ga+BktdvIFtqkL/N0
527YysG+IbKLchsuqbRroYF3uhcSGbVylaLIAB6M0bsQaOCmM86N6ovA4uvpL8F2mIfK4iGg6KWU
LD6VxdxiZoI9pKYmbXA7nizYSKvBEWKBoae8wmnAjU3aTr00wLGKjC8Av9zeRAnsn7enyyEdxKt0
9oJjPR6CNw+Fp4MCulc62/NgyIl2wshfHbY+qbnbOl8K8njrkOeWRnv0MvPI0WJW+56n08h49H2t
QuNVseG00qMJYEyVoU9ePvYxd3bKlqblGvDT92pi2KjU4svtm2oJBhNZ3yEs8m33aqBVagEUKsEq
KwWR8fF8R5fhB1MDdYvMoGp3nT+bdt1k1wR0BSuFLqFt3cRknwkADx40+6AA3XqD1k+pfmEYqBf5
kybwWV9vQ2ivGMSefPvCyHTWS29GaOqNLXj/7eNPTlCu4Z/+AihDZ2heL9BAPH0tNQSOmUvEA8yB
JUpTXLeiD5z90cyJsr2FFnCWnOPH/YS9hFDl4YPlPJ3ynEHsHjMg36bhPa0ca3Uu7L99PTpFdjyB
N/MKGnG83owQs0aL8QzWcwlNOpfQLSPF6ImjhDjhqrY9432uTWy2C5KANve8bQK0yeSTqFIgoWCc
uLtSH2+XO5mBBtP1DI+zIUSc7k1dZokO3ipE8phj3xAlKXU/9mzB9IB4UFpe85nA9QugsY1psEr2
8UY9WW2VvTIte/Vc9nJOmYzfIZ/jriVG2uFWvcMxoEF0RtcaVCn8wNVIopRzmaGTxpC91DOm41mI
3CpW4OWFx5x8RUp5NJ3TkbhGhVrYbV2N2TYGCKqfq7cZgEnoOc43oa1r9u/Ki76c27rtEtL6bTwc
B8AAQE0GZAwNyLVWVlziuBzIydOBHOkBijIZ8HoQQQdJdoC5Xe2DbGTWtAhPmb4NAdBv5ueqTFsr
led+p/aM54vdMxOu5ixX6NfkY57eSJjSrnHd6fezKT4BOAVM3xUMAG9MewB9Uuok3KdcQFSi+rxP
xzSLf6V7P9FFQE/MRxll6CQlDnOoTjMr9YnoFHem02g+BW0xcxJbnhPFYqV89skJSdCM9BEffP6Y
WobGkT5Jmg4BlDoE0D2Cr5/G27dx9HgtC4EtX09BR+MDCh4EEApn7DhCo5BJIjn90wi9CvxK+Wq5
q8Cv4DqQpZFAllw8Wd8fYBumOqsE8K1qRQFiiv4Qg4G1XlfPdsH19ekyYFnSC+ZVsU2RHWAvZuUd
EvCOL/hhE1rR0yvHQoqKzw1vsTfD8R8wHZ2W9Fk2U7UaeL7sne4D/QCuxTbDJ1Ry0ZD4tOU+IZH/
8nyZvrk9+wUeIKePnk7jLysQk6rX+rnOJEx6f5nOTpZu07D/gtiOmBM08uSVAqE2yqdkl/26qedQ
XUt8UhMpwrClXuj3kL6BZbfU1813WOdGH5AoxQgj1nCR6l9SOX0zh02UCwUVLxM25UOAaEyiGVFh
aehEnHpIy/nOfLIvhbvuX4/p6pZQV0nmMZb2cyryNH7fiWCh+d42s9Y+bEmAYnEzebo/P6+1ZKq7
mTFdpHNn6axZ3PYWQc25tru+gme+ChtvlHtUJ1F/sLrPtiBrFiGf8wBGlc49PwD3ZUnyvE3XOmao
eihD+meMFMM46XU3n3IJECOLbjmYYOBf5OvbSreYbDyswTWFtldVGiGe7Y9UNmBLh0hq/RqWSfsk
nQhVr1ofqWF0BgVLT4yKiUaHo0TCaOtDFqfRhvhegNnG7UyDxUTCBqJz3EHZq1AM5ZBbCLKaHqaf
lSamMjSn43vaStFT4TF+AtfoTwDTWM8iloUGqFbzhsbPEJ3jqHIsM5bdOlfaxcnen5J07/83Tpc/
gwF5+/jT8OGmmEaMFhr8Uc2DsliyFKtdfcDO1sS1Li6tivU0T22kLxrt1PUb9FU6mFNJX1PQXsny
ECNW2s49AY9sBfMKf9pLq2m8NuUiNPWxRm/8vh8xypQWM5HBglFLCelXwBpf82G3yPN8LNH/yufI
IjY46CcOx2fkmDAqVJqlq7Sk4tq0iutm0NTa1x5ioz5yPrYaG1XdLwENhrPzTnGnAGBw3TxcKd/A
WLG/tMAmvUCZuW2jN0P67mU8Y2XGYa0/Yy0BhF3o3RoQp1ende7TGnw1n/l/IXYRRIDOHjQYo3eH
Z2yaac+ukbYi0oUx2uwRjHg7GDnbdunNdE4uKFRUKzwpEdSiFnvpUhzdSpXzSj4cfru8x/guI2zd
ajnFcD/zEacdlV7E4CGFVEeIww/DuzNYTs61+PfDy/jDYPRqzQvJDRHtd1/TnublQNu2Vd+yqif5
2mSqiKQTPBtNLqsL2KqjYMN9OqX95kYDU1KGnPunq9v8w2Algop83nvWUweRriOLE47+y0cIXKcj
ubLEmxi2+gc5oAIVXO6DjZs+/l6p+yKSJehE7karu5NhdUkGGPhGpvEwPh/Pa1XUbTVzu1oOxry4
54xd1vchua6yr5bK9BUOyD3TrEdNEOr/n7Y/7XEkOdKF0R90wYPYl49SSzrTuNre7p6jwQUGDSYZ
mRkqJplikLU08P73G7a4u5kz3CKyNAeYkbqqFU5fzM1teeyxbCma4t7S1/F4hCDY6TRbkydbG3d9
ZHZJx9mFU9S7aCcHctGUF+9csewznyGiC0Cb48Zu9pJkoqEKL6fHFh7vLajYptchINd/LM2cIQta
yhCMYwojimMaz4QKjAoaqmQJQbp0oNM1P4xIvAJynk8JB8CSB1AWSAeGZldaEBLQGaPc2ejwLqBV
odw5kWj7/Lb/ms4sBCXDjUrriEbhH7Ny+QF2bzar0kgGDYBm09+V0bnCyVBSaT/5rYi/wErrSjQ7
RVw6BIQQQbbS8DRuU9uE2DEACyHCt3/CKuCvaeerXK7xkTVgxAyHpGSL4/SeSqmj4n2hJi1sHn6X
he/Qq21zf0T49Buf5uFT36RMhmgwkogEbRjWnb3j+9Wg2amjGuxWeisMzl8tZq8fakf5UGaNCiDI
9dhar8pSWE2g7YAMO7/s03WFnbZZatV7/EcLnVdJGG7lITIhIwXIAjAaMF4zXK9GrXUVKbpsGfKP
S0qD/GsNKK0FBP5XMAl+BRvDsH7aXDeiZ2d2KTaIdpntdzTNkh3serE/r3ax7/sI7ULr8aUB80U1
YjVNrPsFdR1TJU2uXi6NCH0oQtN4qs3pD9fY6oGtADmHPloKmReyglWiX1+G25+Agw3d8z9drv9p
1H83bdSCvF0qQJ112nCkFPdsTWgcXsL/WTSW1sABNvojL6QwIBYnaywcth0pKZR41ME0iJCQtpHE
zYc5JZ0j6i9hOcNKkcFuDSvayceFm/8ITwhBYhZCqxbgDMwziDS5j+KtEdQ0MnRXebXOkkGG9/4I
ECADKCY8/dwrx4+wUe0+DRDnsHnssl5nqattaC+MXKaxXvlyrg3rt+BwIf+dfhd6HZzlYitHkSi9
D1w0EWnaoINSpyabZbolx1Wwg5cT366fhzT2INNo/Dp+voA5ZvcKI34a0qJSRw5zruPql+v7bN9N
a8sr1I713ncHOaDSydmwVrGcjWDMWvI6yBZESG7kbsSv58v1LZ1FbFo9P9dFftgfiUJKxoyH44gV
DUbIuNVAlJwDcgqWscvycnYCjveDSZkkIkNcdUWiyg4ZxYOuoIvMSoNOkr3IPkikdh4CYGlzKlwd
sGkc2YQqLHIgIwMgWcazqVOWyNMAu/bhPKVmMS37ZXsLEwJfXucjtm98l2myj06e6NPldsMc/fXN
Wwx2vK/towrE6jFwMb7MMjv7O86DXSNubbIHW6bi4mR4eGfXadr5Ct80JkjqDMF0zAJC0hKoSN/n
z4fr56FcoX+bn4tKm/CyNEjUVNn7luciutIImlsIeEzD/np4ZZoIDsyvwIw0hx9nyN5www8QuyKK
zbQNqpU2f09MtvM63lfj3DIGE55hlXAEpjZLQXS9Rpg5yLhDAe8BJI/pPniF0sDzRoHvWAHer+Pu
Nnt65zX2lrwQWHvkE2kDeAVJI/FtJPz+mqhU+RIVomfsCGYORL+QeM5xjqaNplznGZvFqpYtBS2V
CKQjz029hGENBY2bcKxR4rmqA//Pct2W144bWA8qlU1pA3WTRm2c99NhHNPADc1Jy+e7XNqHeVsy
fSBLbdzmMuIwc/lMVITzQaD7tCU70BSasYRBQFHFv0koWGhgoKNTy0HMJuZaXLNGmk7TeEp04fgb
Iir3h0+AW5t2BFwDFfo8psN1ksklMOxcB1ZRPqKMrwVmCOg5MjBr+ml0ZQ44DfQE/T+6MBFnWgON
cdphCqcALwnbeafLCwL4/cWdvwKlZNk9ERo4cWO1E5aGHYnKLeyA5pBVbjx+3rbRx/USQtp4a+AL
RLMoTIwfiT/PGm/ACqPpxuhCtEQSWXAo165FCNC34dA/khyUvazk2NwAisKSHYclSd2f6NpiCGb3
9O0WeKCIj9uoYciWsvZv+6+z3HweZ29DBk/TUGfpVDbIT/JAEb+Bx6bsNIZbuATk+hBVqVll3ohn
qAYzvq5bIyBhIJvKJQdqgZZohY+oVfGlRuaVgupVSRu4b/sXlJHZkjjM24ePMFW1GmaJBNDUPq3m
lCgA/BbIetM5vkxbSQ9MiGkuBQ2X5qCpx8KuUlE3TQT9KMWjtZlDLM8l+I/6XAtX+gtl4fP0JHp9
cFUC9D0LN+dMfV37Cp9uXUR8ut1SbtBIAXYqh8OfC5265eVtBRNnFRoxKAzX7DrfQUb+uEKuVseY
SLYH0IwM0a0VW7SsdMioXCNKZ+t0IUK1vXhFp8MqV+dx/kaxpCmi7U97htpSZXOe7u5KPL3qdKiG
jQ9MsPz//gYybhYnt7IOqo7j+QJ8w1lHu9ork9GnJoBTh3fIyFMvkeErGEabSo5rqUV67xSQLvBJ
xrfxq8Pgpq+j7q7BgYfr7UTE/pZg5RGUjFMOGIA5s0zNsxg+z6ID8zmlYdpdp5kHPCoNIwrBjFtD
Jncy7RBI7xxihDJ0wKQzv3gAocWYn/u31H/g63AMoKK0g5jFMPtORj33xMFkEDGWSlXx84XZmqfx
vL9+IyzmOiKiKhbf0wXMAoXr2FjaAufJhWxUQVXLbKfxaEomR9FOPnJBzhdXJrFCb65fTfZGlJcK
DgQUOaymHCRXMoJOXSW8bM/EzQ8ud3gc/3W/3KzARVHry12u9LpZ426s+6gypAvx71/G08Bw4nRe
U7NB1/ky7UXaQRBxpTJUZi2gbDyMeCPKRhRIY+SQMw3wgeenokLtddbrpo9I92gs5H115NQw2VCm
bnJwlsL9rkPUW4CJj8MNMH3HtNdda7hntlCZ7iNQEqa2GKfIlqizri9P+x333bKBw4KrBsGGmdkY
FH+hW3L5H8QmTZnXR4RHzG7ylXMYEmyRjqhHaZrW+eMYWSX6V4/w3KEpdJqfmBNJI4Ba0tPLFVuk
62Zh5aQrIyfdL0drwvu72hgjL6N6kyxicVlvsCPKPJAZj+usUNd/J3CtqiMy+eqhYZxvmZhm5hTH
SF51uRK3TEcrCx2XbhOtH1hCjXqBbrniXiUasMuDq4Si+i1oBebpeVZjXpI5g3ibM51NNdtvVUL1
um54qEOw6Z9rvgZzG9YMA71tZb6Rx+00PFuFSZrimnUE+ZBsCXO1tOFAdjp42slwBJKsAcP5zQA7
NvVirZfuRzg/HfRp3CIU42VpME8RHkAKeuSi4+FHOmU69qhAydh8sGmpg1yItpalRBZa/Sz7XjBU
evBbQGNzcfSmWbRx59R2YR2muisEKIhm1IQe13ocuw+saLApG91+pMFmJvqXSkDj4uGGBjDp7ali
YSkpghi3clzp4djpF58xOoK/Qz1N5KrML8TwYjhWMhElYwjujXn99v46YGqGlKgJye+bxYYlHC52
8buJwH8GPYJ0hjEFw1ouZFKf72du53T5MrtnkPqxSaTzQvQIqj1DZ0LdPQ2v45n7dxqxSpXRrAOq
Lj5XyxArZbVBKOpTYA9VZnid9a+FeCry5ZZMslkBOixHzJamUR4iC9CgE1rEtdGYA3skTOSeiBao
qJTWET7gLtAXswG4YNhqq4FKF0e6ykMHXcNuD/N1Nf3uWpglIMuNLthmmwLuwMHgFRNxVMQ2dh/l
wl+jSu10+1qWOtNQLQ1DVZr1NXb1ZlcgXYmaLVYdOjL+dT2L1ayFHqNN1RZN85+AWgCth22FRsVy
tydN/MfRShNF7AmYfRRrtSzBqI6tNDAmjz2Ct3Fy/ZsRfLJS7CKiRIFPY1Zci9W2rrvQBgu/LTRs
icNPmuplnVlB22DNxu4IpcG01Sw/Vgpgz+E6I/QkcdTYoy+mrl6LIsrgVSeYUZCL+XxhzpaQbl5h
0o4wKcXGjTLkTL7qstZcezIWxKWJeZ1ao6tuml41Cs8XoocUJvRxIfMdMhrydroSsiwlDQ24X7YB
Rkl86UcTjHX5tdmn+wzX0j1E+6vIohZ7ARg43+G1JrJFpqHJRf54RAdfbnpMxwLbJXAy6ydJDmNE
T+ul/jc8xLzFxpeRlGTfnTvydQxBwdM30wa6kXqp/47VFCMZVIt6qlXuXfsRgsdvrr7tfxGYwLWs
/hnd7jWC1VKAbqqQ2jWf7dqAkEkIQREAjDG7TJ0GKQm64caDZSiGcBtvFmG9aoriH7IlWjCzuk6S
cSMM2MWnYuQp6J39bAgAkceNX8d04Y/WOrV7F7kbGuo92CGzXqctdPtkzk/o1gTzHIMAGAGNSMGX
DzAnsm3gbzwfDRPb8L+y6bAqiecqHwPyoou2apOCUnxcb6bdxfjjxncTsr/tVCeSIkCXIzjSNuoc
1Zg6Dx06lggJjHKhMm+W2i04ICkmX27reIKu75fqqbHF0iYmTdm1VgaRsHluwEQKkavSrag005Tr
BRcnwLYV3ah6F1GJaaoqoy2sbMpJ/bHz5Xdi55F6kNbFoKF/om0bSgLtoasXl+q5ZIpjsIJXGg0Y
oy2jFDK4uE36Mq1eHIFCgoWX3BhcxspXMvCSqY6lZGs33DpN9Nsmoj6yLmH12RV5AHA/sihGo+KI
BAkxojO6BXijCRLAyrw6vB79nds+kovp88simCrXiKZKsMx5WjeiAYBLl44LSBLt8KSkQm8AaUhf
LmmvVSG9TJUbQ+gK+LHy0r5YIgENUIsduH0QFuTImXFby6XE4kOaL910otfhCR6AiIoxDjtLVhrT
qJVqm3tS9huf0g5y5EbwULz+HdomnceshAPTZrbtZuf1EoufGoHs2rQzFXHgOH5in79jsynNHJ7H
7AhVwlDSwTgL6B5hUPktFfT3vvaKdN39drtY9N699mfKdumhJ4KRdLlnt0zZxY3LtlCDtrm2thzh
UCIsotKfZdoa1ID52lWkQ3j2NOw/WYXxsiawD5YksiGES75Ux2cY4P0y5ehiR2UgwkyjCIUXgCIR
XH2wcHeBaGt+91+MXELVaEQBr5M4YQj2iTFoM2zUNppAri7tZvSGgyRrAfD+cPEdW4tEr3bav71v
5g7LJQRCEDxsKj2ZpQ30L5a1zIL2NdlkR9ofXaCzoOpWIjI30qetLFgAjgsuBQCz6vVyIl1z+XJe
K+aWPjUIW1k9mi7EPJNmWpNFlFlwG5bY7o4fQ56VqmSUx/UxdVD17DfhrUpTgjYa+J4tsA9xSdIq
8VC/lE7/w9/+8hP2ftoWEY8o2bnK8/19mN1eYEk9zOp4h4EUUGeHvWHEl1UEb60UX+p021+hrVwa
DSNBYrW/zT4HSlEVCORAjGmNX7+SVk/g1yebANOB8DLAAabb0UpKtMa7OK/AWwxq2KgyiuiKHG0S
kKHBbT0O4GBwfJyK7gxHQ7+aXByGOCNkI1j5voyYW1m/De/3pw2QtrrTpggL7Pn+9jT4nvFrTYS6
TiOXS8EPgwRiXK/AmO7xMyJftbuRpp2TShc0ESda172VNu2t9Mts+coCewXhSRtgUQPaYBLeLv6d
NCzAVtbRMijRpEg1uKkk6WPmR3OWnMOuZ3mWClI+5Oy1iW6wxxuzksSkFToQjeyCTuFTirpfVxMa
vTaYm3SrBArxGp0S8qiFV9mZzYnVeg3HvFruEqREikLWaPwibcDltPIK1DKTAyvP2UDwSewQy1kN
a9cqaiLysnS9MTVKmOab72WxP6fN/T7Ce1Wq8aGqNgT0WNq81iH/upbEkk4FeSqONExB0w7XOkGL
5XOOLP91sCrGsmzR3XSUJ6C74B+wruSRAGUDViHPJYOJpBeKQ+1duhBaQOVb7Laig/Xczfc5HQfq
pc3T+eyBvwdHoLee7XyEiOyP48U5bOuga+EAINlAnoyqmkQeZR4RKC0TeeyfpvfLBNVo9G8SWq7t
m2Uqj1lKsTaS6FRGGNvx562E0nrBUAYqri6W2KtcezvX1coQPHEiGQKiK7PTDDoxlKtO2yqLPU8Y
vcauhLNzjfdKsmpiPK15VG84nefr/mU9R93kEd6ji/M9cM0Uv2I651OqArgHnh0XYYK/STNy17q+
KVsDZRidaUtNl8fSL91WjDqZDCqttG8zvyoyCwMa7DrMpvxt980wD+u4LiZu7DRdD2s1fU0Vtbup
fRUFN8uJ1GC6hKKMuAjbx8Lq1QLDXDvN7NaIwonh6zjdJiSoZloSfM/TdRTatWEK7w8ArK42uVrX
L5UnPlzr63C7X2cFS5bzrC9c36xV8pmuWHxDZZGz6LlneGl1HpGylAbf/gcQQLXwHiGf0jWhAA29
g/nkgYpmnGf6DPdtOB/SpkcR9Vx+BHSzBk9jEbtF2hZ2ZvmJ8SxbNjKpl3UsGKNg31h1ndm93W+b
GIcL3b8iT/csS2cCVU2AwOuwRrXJAMs+YpY0kfwAhDQQrfUSWeHH41u5Ed/K4g7yzbo7ZYDCWk07
qtsIOnfDxSm8jrBbDshb1Xpb2exI2qYxpZLkpAw6VORmKI68gZo+L2rdQML1AHE9uCOCg/lipiMq
tWxPFKph5xfTh3xlcW46yd8tMg/YuChK6hnoKEVdxbxBD71S0llTHaapFqMQxBxgpDQ63WiAR3mg
4UIaUMN9aJf624qkyHg+D1fLBWnriLrAUDJZOoCWL3d/ImeNOBMhxZ8OLfdL1fbgXR3J4zMIaDv1
TjmqG2Fkoa2E1TeqzCKNeBAXoffpK773tCTsb7ihiWUpHbzS20vPUANwhmNGUoC016/r4Vwls3QO
KUAHm2uQR5d6mO/G0hnBy2bJSoXk4Xw338Hjvl3cZcXigCGpx1uR/UdFtOBhvEOu+W6z4EuZyv3l
cFicNc6SXmZ7A2lvxC+GYLaNPXILZfpx7iW45/hR+OPu83gcLnA2qTRDLSD2aPY1ZQg3iYEO+/Pn
/ZQegssbaAiRFhJDDLOQHY1JZGEE2adYjADUB9Pnl8IYpBSDdIGmXw9ifF+L74uAeRLf0z8aQzRi
J4rFzZzdrS87COle96M1UhFGwiAzN7gRI02v1xTrUS2Yp2kI2OB2eTInaOeT5ISqxctO6xKtGR/P
xxijEmPkfDwiCrOa9mkliXPtOxUstMwyKaWaIiJiy5cJ5oyAdKFJZouFAC1rPTRwp/fTuBbFkD3T
S896x1By5gymrLeFJRcvWeHr5mPUX5lG/UnvgyomN5EDHmYTfp18qS+Wq86ZwgsDSSFPimCc2apN
c34G9Qrvbb+heVM6lhDRSylGFIyPILXK9WyZmqJAC6KgnSpZFb2mV0ku26JbqmL/YCdM0dF1HaXe
aghJZxVapsPA+RKzpKOegjJwuORpu6nvH1IfD1AxSohuRkUUdUQfnKdD09SKScWnH+EAhlLIlkrD
gxMKZKLu7hgue6GAi7WNFU37GLIdUxUcO4d4nMf7jEUccCieEsFIwuUqs/dYt+aZVVZD+iLdUCME
iVnzz9P9OnguKdcMmuBeLOAUSrdLkWsRSRcEuF6W50liHGzd/uvrfikzO1uju9v+xQeDGQWcfrWK
iNa8TrQMkfD3FZqySkQW8pBxET5L2jcpVESGJ0MvDPXnobqcJ9B6a9CSQozWevghcEWy5wRvRNrp
q9VzVfdrkXIj1CKgyJBUKDRjx/FDELa6eWgbVNhQL6OEVfUYpHxpymwh+qB0YiHT3MJMJkJJjuPs
oU6Hy7ulWlpd6tHHoZCVSGdeZM1S18APBLdtgg4JhgkJJjIPfrpjm0jONKSNgkL3rs839cdLRz9V
BK/UPQlcTghBYTCMY1g1S9qaUqMIq0pTrCBL90ovjTqLur46Q4/zgmavva7S9Mi+BslvM0Kf0ltc
6vCVI8d5e/8ddo/EbyIv933kckiwg06X2ctNuZLBG63g6a4a7nq10IKa0SQCPmhwv1TL4N2FaDFZ
Ox/vU6A7M3L8arpBx0j833tqJFdQQv9ucUA0H5nct2FYWiUG9DuRSm51HrBMA5Bn38ohni7QHmU8
Jp7Szks/jlDSompXr4Z+zcoCGrEAkTnw5ZQYupp4GOOl6TwZCA0WnDZfk7MylbYQU8FmbLncCmgN
gskauL2vl+v4G5Q5zC7NLTliJze3fthc4H300hoavZrpcRy2EsNWoYyMoU6btqrNwxi56PTmJpb+
8TYWmCZek9XJsfP4Pd7oQuJqcYi1z1sxA2oB08UzgFhswjDCCQiho2oENQGkzlydhbx5eWAucrMg
b3g+WHMzxSnIUFC4fcD35GWE84XpOdViZyTzo5zT7XXYH+1ZiYuAKZa20MRKOBrjYNJsX50vFqKh
KHekBG0TQTpOKRO73T3czf3kNaYbLc1v2vm2XDyeaMvF4yVNEPz2QWX18vrpXVq5hZl9CzfoAnnk
OWcjFcqOScNc52R4toDnwUA8VJ3GgjNc1Qqz++hBMtxeLfZ+xRd7tSYgL4Tl3vp+qEtAQqPav+q1
QcRpvr+AIfNncGrQpMHe1pB4SaPcdalqFbpri1Y5ZCkY9YK5BtG2Cm7vLY4JbKHbxcpqlYIhtxKs
nLHn6F7UtLvYLfWbZKmO0sYGdjYi2awWGkZRdeUHaRvzTJDilaEtUxy5rNO0JzKnitxq3PRjOq1E
g3sdtGJVT2GWZ89Fghyq4+c0xioCJzTrWfkmnZWv46x85wijhuuVsKdgSorOtT5S5UmpjHSNSFIE
Ionp/g5hySlNaFmLYlj8OPcLDfxpK18X6mt2zzzb0VesKz8ZckijZHoBnSjYeJ/31lp7yBGJrDnv
4ebfr/UelAs4h20nIdIqgXQWvEDumGN8WqmFlJxLkcTNWzj/a4GiK0Pxi8fD46Zc9wYIXhRa58hc
H/lVgJxzCivwJErQl0nGpqhERBuzOOzo8jZ2ODjLy6WGfvsbiO2vpws0Br/9itiFND2c7t1b1qlG
orDvZ6NrUie7z8jOtzoe5IHrNotgL4vr6pDWSnXGStdIV1KXwdOe6bYhvqwpHSLoBGzbP1uOrB46
BAQ6e8CM2j3de0kJYPLEB6n7UMVeOAbwMrt8G8eVAdtVFWXCpHWHgQbF8Pb+ujeqB3rZbqSJGwIg
hgTtI5NEsxcFVWUAG8nC2ZBauTOv3Xrr4FLISCHKAU+e8motmFhWGs3AYSTvDz3dbhvrJCvd0LEX
wB+7+K4T1l6NcvbQW2gXmAHSgOZMBUWdSsHL6nszgyWD6mEl9FzWxRJ+2IiJNwalX67wK3lpgS/3
jlQUa2QwvvY63iw6z7wotMpxHWUjqy1d7Ve1MXlPb8fZG2Mu2TJviGJ7WicG1HBBvrcPLLFrLTJ1
nJxvLmgU6lOK/0T9aPlpdK1oV9Nn8j2UpSdLeLv0xsuaQ4qHOeo6z8K0m2bnzyxU6xd7Mom8Brol
yQZmCMXo9BCNKPeUfYfSNZ06lu1aUi0UnaYRotVSjVayDeT5wgRkRhNIncdgjUDMqZwIWWylsIxJ
buJK9TJ54F36wPvl2g1oFAc+2/7G5JC2ry5blhc+haSqJzFVS02aIcA72zKG8dikOz47PuA7NPaa
Lvf51cPghkFlIlGKedTLhGE5gUIkXU+kgbVFGs+adkezh0PTNXXD1/frxtryXrjGVRnRe9hNditZ
mtD74xKyNzoeWyg3thGapewbWmsktZnzg+bz4/M3IwCkMapFKMH4ywDr08VbhJy1wVSCPibv4hKs
D3BkybZ1HvNAUN7jN9+Ub95C/FoUUyGwF/8yy6rQb/NzWmtIquM8FAAanYViaAu/VUY9meRlzAOr
Ypa1VBqRnlzTaTR+xx/2yZ+SleS1WE659lN1RLJSrBE+F7VuSM0VS1lWb9t4SQTb+cd6tjU2fq5r
bNiBzrJubaGtthv5BZ4XurpDpZZud+756oe5bpjmfrFMb227fO7lRpmu9ck0/mTW5C2ygllQ82x1
U7U3UJVrnYMKSepTyS9W5xgtLveXaZvcRKyI7i7W6ZkmrlSb/kLTXvmb0a9uY6Fl0zVgqlZFrNdz
dB92aUWh+4WFo05/Uevf4KyIe4RY7S7vo+dqqFu4DYjLr/3iVg8OP8/U53VnHoOH0vIXtWcb36Rh
StduhD9vxLlX6RUW4YtKiGa57QfZL3Y/yAy6K6fv2b74w04omHr1w0r9YtVueZh8jSR/2AsFla99
WFTqTLyglqsfduoX/Z1q0qfR6fOrzRfNI1T4C6k3y/QXvf8CXs2m3aLFcHKt3sBy++PpfQn+3VxY
FMXqNtZ6//vt2hN/t9cSXj92rQED2dQFEBNpGeIC4ymR3aAM8HtG6eD3jdCU5sbTLzf+S9gM//7n
6cnSC0CfZOLHutUfYzQCTrMVKqhc/ZLT/PhltfWE6UuxtbXQQtX61mRhnflWu4G+LPVv2tYjTbNW
C/TPQZf+hFEU7le8usrX96RQ4tLaupyWlKsf82Z+Y3zSaqGut+t/mmWjZlnlpv6hTzotJrn5KtIu
hlPOe/FJvXGWrdjLUtyGdl1K+uVL32795U7tjzcBmq3f1+r34dVC9fX1fX97xS9klc0RqkcG5NQb
kruZc0zPXxpmtvIkSjjO/proFk9D5IWaF4c+cFa76bx/n14v2MIPYO/zP99PRwhwf9qNtwnHT6GX
afRK3E2oVMo5IE3juw6lXB5jZbtouDKoF0QLd2Iwz6pkrbYMUoCBbAaK3Z8oCoYBMQrPUc1NMkzH
w2VqPhxsofnchvkYIHpohf95l8KyysALvX97Gl/u0AiWmiun0hosCmEqopU0slUnGh/z+YsllB7D
Sktw5MyI857Mgwnapwq34/0bYtSDiMM/JPsP5nUhWgC2gU7wAhU70836UHQuLLwQJ0vJ6BvRVi80
Ld4/PV2HzyNGeKwfzNRMHQGIu7LWl62aKu+322nrw9C2rwq0kfuv5o+F9oOYCcy5wy30p51Wfq4M
n3aURNRXJZ2iI5EoOqWbOEgSX3xilwnFSckYH8tZpPBYzqyAOs+mUm8V13WLi78/77YMI/RHr5uE
oTK0pp4r1cM5B78T81Ru10Ekt+d/vNG1t259rQwFXtZ58hvK1ctfjSWJByDz5We8LWloBX/cKuuU
zyMQ3H2exDtmTCKvlV3AmPPqv/7uNMfvL9fr5ctwJPzT9dditu+g0CYtwLnoRdr4K3qd4NP5LSpz
49PQTlWkAw6/wadlZv9quKWCGejTkX61Kkrj01r/ahntZVrA6HOhPEM77Av+8mymJGxb+lToJM6n
w7c/XK4U0Abt++vT5XIa9udfQXssDgUrz7icsymIW6l2RVTzAGwtrA3Q+wEQuCMGoL4LyU9zrpBp
Cu67lIVPp9vwbnxY+g+LVkBA4Ted9P6a7PFDQxRhiHC7cYgT3uPT2rqbMECv5wCYXNBLvyafchqh
DSME3Uhbf38bruPBnkLO/W5hAHBx21Kf3a9JG4B+vgsH1/grjF8fZkH61X7iaIjaDwFRaIho/L+U
op5VGXA1fjU1bNFoZVjFynD4ehgQRWHqw0y5zW4UeKYwDeUvpGVUVUtG9WyMEerQ+jLX5lguXs3L
7RV6O9A1+jds8vATsOF59vBo+KYc1jbleolMHA0PBrxdty+juUNZryIhbPJyJRu9Pf5xtoZp1XYV
nWcFPw1fd+PR+rRSDh0XNuojNrlYeR8WLZLIzFm1DeqlQTxNbxrAwksJgl/GbhGLCTJngQobzhvM
rErYBPDPOQdZA9HA19F0RnLtp9XekMe93Ub4yBeiVZYBK3WuHI8upCGuWaduNevn+5nozs7egrPG
KMOuFAHw7TmfTf3Giym1rdX7fYEb7UuXzSG6JTOSXeB5Mb/7+Ycff6QNfr6cjvb1qYTz13hzlgaT
d9ES3UZZgKX0750B+/26qhTHBk9szm2dhLJ6AoTVqpWbC33TCq6wM9S+sGlj7bqOjrFCR/LSLe9B
Vmi3oXLu4mHAKmK8Tpayjczjlgy0rxP97134BGsXuCfqUrktvfLBwBImu9c1Qfenvq+VoVLGvdC/
vl4BBr+8HBwhF6ZOYO89P03vO0cRn6ZuoRGCtYUbxHI7gaI730ChpGZfBCtF9KrGL5mQ62JYSGWw
bvH/q/A1d4U+zYr2xPGs5CRKYamJsBEMM+/cfC2G8yG9ArH2Xq+A1r4zv271140+vV8uf3IMzP/1
lz+H0GbCKabDiIb0rjX59s56NQaolDzIFYkO1Lf9ywTyAX+f3tlcHy/t7P323O0Or3doqZb6Mu+0
81CLoyV7BJp9vgF3zGQISKf2wkXT6HAOeXO75E36bCq9kUK67tdT8rMqV3Y/vwhYw7E7Pe/2aYIt
us9hyr2+SsyFJJoEpPe9UPvuXgEYhRhYXTQ0vYpi6eTczqX3rFGuG2/4QPMHewPel6Qqa5OC54nI
R8evADotuYlFr8899yP9ygwR6YWXehJNmATr9ePstLymtz54bViJydcPPlz76bzUp1ZpPWTuexA6
0SQcP2V48y+pWib6PtM/Td+/XX4bT6f9jsK9yWmH364DbST+dniG5md9A5k8nUCmXsRKXNrAv7W3
jiASwnzhUQk3IK08xHGEBq5qSZTkSu1LrdbB37MQgW3oH/m0pUsDhQ2ROSHaEGxTZNgHZb30uuPH
YKrxdO7X0XgQhIkS2grRAafKyum3e72DdaR+0+JcLunt4w07vzIS2df2JdWJtmsiFbY7fLumf18f
HSsBRzeVdEHpZysVegLx1d0Q2EaE8qHwl0moVZfHZbW5J4u5uf4Ks1XwskZeVAiUPegI5goQXRrs
1gyqLWxI9tI8EHKOb9zsHI/n/fUbjjaKzg/pedVLsNvpHUo0kh9JnrrcyyRNJiwpvZgu6hGXxZvh
e9WQP5nelUYVUTWubHr3dLpfQ996OhtjPpoZig/ZHcyAzUDTH2uQYRX7AM9gMBlVBbLmJg+LiHdz
TUBE3wKkMCzFQYadoMKE9FTKJS5/nEr6hxtdQK42D+tfZp/uehuf92mkftFrVvfmoWm938/BkIZO
9W9ry3gQvCi/DdfL6m3r4/5OdCiv4/F9dPQQYuDZwH8fv87Ozlo5SyF71Indio7J3vFet6hwRGhA
VnHcpNW6JXpouHBAxYzrWBlBkAYgAITLAmZrZ/YP7kAjNVFJwOnyBJUxGLC+XvffQuv23fN+nC/p
kP4NDaWtXOtT/xNAjeI89BUS8SxTIGcHl5tfMeT9xk/4D2bPlAJDxCFDBECWPuB2MNIE+eTh+tke
IiSUReF7CvuGnxS9Tqbl/y1WYDk29IM6n1bauCv6pFhKzrsfBFfAwHLQCCELh6aTDUajTzKduKtM
5BV9kivsgnMzZz+L57ps3BWiv5DfVL1GHUNKDxLSnCKIhJ6em0H6W5FdbchMQggEsYASo/nn4epY
O7FAlRqaMUPmWvi6ECkcNOhZ1Io0fC6nqveQzyjrVWim6/sagsqF4LHh+CREO8GEBEpn0MLGrEUu
H2ftqBAh+jCNB1FDv39/PwGrMOp2aoWI/8IYPNfIqSpfBSHOyxNphVLgpXvjG4FcxFPoxZYQwy6U
1L4MZ2sjCrWttbAbYRu5/N0mU6LZ9K0GlfIKisIShFqFejmcAtK5+3LdvxPlEp/F6+yjT0jzW1jr
EbOg6hpGPue1tZOtnke/aR65NQ8Rqidiy3oVKjtLgYb08sXgWvcXSCch2ep5+OKIfK0DKVTCgakJ
4GjJjD8BPf393RqhVvkPtvlIwPazk/vtDRBz5iyKbBlrnFuCLdDUouo4yy2dIjCjRWBzyHLr0kmI
eDBUOBR3uJzub0gAIXTCcZygjPxo3X4xEXyhvPtC3PlAEHIdzquKVeSvRBYFjh05bV1JKDUdhvTP
m3UKOiXDp0BkJTykJQd6b12HKuRGt7OTeS8kuvDGzINEHwdI0OA/bhDsXGV46lII9gghF1J+1giN
2g5fk1hadzNcBsE/nuWdJcjR4yi7uDom7tmbpDpugw+QD1EjHSqn2axZtzrb7Z7a3NJComYDr2wd
KLsOp/3bu7cNBKO2JchCJVO0qDFr8Xi726Wto8iKZ7rxRNjWzxcC8ItZXN6Dwvr5rtNZQDa6BHfp
fHRoLq1fZK3NXIVHYWmmTq+erR2Sk//wk/g9ELmv/brW4c4yzy1bq9W2VpWtFhvM59UrdAgbPeTQ
Mv8XShDLOplTfAUgjhSIcqzFZJFu5VvInZ9cCnx1T3oFLuCgVGhT6582ePyh6WxwKy2l0i/ZlFlh
Xc+u0Vfa0+5CSIh1+9P+atnfuX73nNllnW8XwXGcIrHOt1083/l3fGM96wd12VAV3jK8RrOnDgF3
In7cTZjJTNGasCqUjyz2Qe9Xy4rmNWT6LlSrpT6uL4NXBGyiKiOb2Hz299sFyVmsaWusTtXEmnVV
chctlqzIrM0vFvEUd0hxUBcBfxkt6RbmiOTsT1US844XqtrCkbHL3YO0T5LGhLdNi09TsBEBTVJ3
mDIXZtr+CIwY1kqEFKDV2HEU/22cDh6Du7s8QZhleFnORGJRFEO3cleJ0XCz2IvLwxPFK+AV7ldA
C1DTamPAzA+I6sCn9xGuTvs0GZ/n/vNA70wcLaeba42HX8q/sIRfyCv6SEzeJj/HWLgxRi0UB02q
eRwj1dmKp/Gg9ntP9zLstq4liCLEErrSxRTf3veHG1eypqkaBDlrHkpCLP4Qwd+kvkgzbfTtA+OI
s2yPw+HC9HFP12H/icKfC/9iViTQNwp1Cv5Fumy+EDXN7kaTPppuFLM8ja6t6On9db97vftmkSuK
qopAXOwyXE47xhd7eG4aicXUTKQ8wuPIjYghNoN6awUPVmW6WNPXd/YbHq4q0wZ867ihrp8ADUf9
rwiyQO6dMZQsZ2m8OGBLGNpj7Pe1tq9Fo1+Q3u0re604nqMYo54TxmhlpxHQTNeKZsdA4EHk+Rqt
krqqXkTUXk7ccs4KePNBdzr41T4Ii1idNU617Nb11glrbDUnPsOGgmM9WVuow15lrxd/vbxZYMeq
ikKh1XqssOzzJaMRT15LJvkn15sl4dJ+xIfDteE84QKsY88UEtp1FE1Nw3V7M2cjLXPSSbmk0obB
eezneWfRUhct2gANM57va727efqlMk3qzLpJ9PuWGES3m3zML+UOG8+EWz6RKn0abol+cTw5iTKH
6E+4EyRXVss5lqx2uci/2aD3ShG2KQLtAm89PdlIr2btiDa2+TIu7cj07e3pcrL3I2xvGXLYUkNs
2BBhi0qeEMNTKrvoGavWg7hlFDrgFOyCNltTLVWU8vA0JVtOUORYYOHc3jR1Oy0FIcLIRNKWu5MU
h2gMIAwvMLd7zrXMi3dNi3ActFjQ4bYfC1nvI+mFik270i49wmbgr+x1tXcrQg5OTTAp424+5Nve
mnydqxeKeWREw8nD5X6+reuuQt/tUt+tyxcgwry+DefRfHyEXQ2WQJu+olzUZk1JmBId5nLK2MDx
nZnAUTuatlKrnhZXf41GKG34LCfWo16qY2698nSkp+l23Ky8FlN4K2+btaAseYlwr+8QZtp0ZLl+
dOuUIlwtf6tEbVqZix6H8xrxcq51O+Tr2GnfvFx4Rq1JRJQIncyV8B47envKl4tDsKalqTbyjFPv
1z2gvm6XDSNo0z+8n5aqqDVlSh5fAcz7uxMyaNlZaqKy/sKx78Jd5BVM0N4Q2y6t7HSpyY1KmS2m
1jZCusdpxyH+O9UHYmjOjH9WsuwrsIIC8+nqXtfVcjhv9j+NbqR8Tq3KBrVSgn5/+foPCuH+9X46
/fA6HD5ZI5XKYmkda8BhRLLdATv/rCALqqjYsnaE8C6kvPboiyQPMo2VD5oHHxurKyoLTxVnoN0F
3z2Zcl8v+cvOFby6HilWky8WuCiLm69nfco+YuDq1jMPZa+T922/vGPb1Jmo/kIkV6Z6j/B4q8GP
XFOPBerKLaa3LvLrAv3oFvumXg52dNYPaol1OIHxZaOqFVAHxFZmHq+2ZbWFTppkqTiR8YTUuuAv
T1oxz3vIpszeYroBDesjIVJgb+aOJojy1r4P6MYNqtUGdY+OMru3q8Gfclmuuk073WljbzHQ8YHQ
UZRX7Mzh1v3nRicKZKANS9G2vEBR0bBrxoFmI/ZbBuj66oOSaZFsGMw5Qb/sPZRAfx4FK/U0/zkA
azmFhXmgqwXRrCQlUsjw4micLnVmj4m9KoJcEH9QT+ay73l7cy1jkfR9+na+vQ6prijY+agJLZxU
Y0X9PUb1jP5JTehEVQUIPs5I0dmHdis4jPp36etAiFVBwtL5zFxidGOYThCyiJaaiYGMhdNwmnOq
WBiMm+fAhhrj1AvTUqcqQv+ctVJ/t5s+je/Jf+Haq6dPsBW9xEJ9z+JY4/nTSjMKGlH09SJHuDLH
NEYKbYypwqTP0iO5Nj7zsR1u1Ed6dt1XptqHHyDjqbGXPzv/3AwpVbNK44recMyr7oxMNSRDhPx7
lUiP0ZiiXRsF/WgzXk7f3l/Z1960ZtEtrSY6e3vNNMm3/fnb7mX/bq06NFODl7VdGdderWiQJxu1
pmf5T0uQhLLD9beGmCPx7e06vqfH68IeQjKiKdKj3ebDDcdi7F4nLiIzvqdHJQQc/cX9/Zq0dmlk
KTkFuwgCgMIfERgl/rl0izJ4RnuR7ioDOZVfr/daL88OEnRNdf3E8WREhpo2NptGdGA1Y2QZLOpD
z97Uws08Xx/RVJa9OZZtiPaRC+VK7NeWjN10zCULEwdVXVeJNvByflj0k0IcdByWz73fXi1f7ePl
hijPWV9Yo1V+NOJ2YwN38wHgIF2YEsp3Vy5PaWUuZYB2dAK//TLcfri8vd/n5fwMZ4ffxn/5gWMm
Yyk8Z3Xpvd7VUW113oTXtgrI/vWpvl6ut1dA5GGEO2XD0k+I1ywkIrf/hDFyq42PatvIaZ1Eo4Z3
qAoNOpZHDZfMrLmrRdsmGLdkPufFy5SUApC4JoB3ykKw+S2MMd+nOzQzI94svKNTetyAKVINrhKr
DBbj47+jvwKtAxrHrAfpy4g7qbF+FMFzxlitzutn9linkzGUQHEX3kU015seTAavu0DPY27e500Z
4F7kk2vU1k23sugNYzb6SNplMaUe7CuKvwnqMbh38Ui31/HwabZtDOEslh+QBcRwNHh6ahIE10Xy
vklX4ChiYvRCFsm3aF7nbBq+vAKDTkjlpYduxYUsg8MZD30/Q7R1/JrevFKsVER4l1/f9Hxq8dR1
DjVIvR2n+/60cy0e6ePbCTyq3y4X6AAK5oZBMlkHqgdwJ7l58fX+9DRcn+YHAGlvXQNJHGv3Ouzh
mjxfLjeDfzSrA/8DvBWta425dWKBAQf0brNhYtC9er53x11ogmGMHzgmsOct57wvk7MXKB6F0YAT
1qyg4XY/T9imcnFgILFrmLcIORpqStnCyLxqqk/kLcSOo2vb2AkKWWzYnK3uhDFa4PjBydGq5dzS
3zaZmAlGgsuHr12x0/HyBZTLAC6OMZt+eUSx4VMgnbn5Mhy3WmNkQX7bYS4t97mujfInqHupkVYm
V7vydSN+v0cnoxU8JONvrnf9+/48nKZdqsEnqgzdGciV+E3TjvqlYuokDJseRzSqab0JyxO4fbmk
P9SNapwKwx8/DImnvPShDvrFkDkWgToj11O64EFo6eOMCvphLgVJf9ypH3fGGn58vmz4XvQTygIL
NOz7y3U8siiSsoA/+xQ4tHx8W40KV6EQkWRMHAnXTs0GHHQAfoY+0gNU30CYafwtSZnkktuB+4at
Z5ge4gXw2REdggjcM6uf07D/nL76eSn5nGljizA0swBg9SXUe6WLr3HRghGpFJB8P8mwgSjZ4Ihc
XrDrAmzmlB5Y3FgkH3LdNR46zYLC9PsKO5oeVPGRheZ41Fyb5ABCQwwvCn+7vw77kFuB12RKMzjm
ZZdrQWgfd5dD0td5C0xCGtrjQs2abx7NDKpKsC4Va/LvFhmhK8OkiQWUIQ4kIFGUSXq4Aen1Ct5J
cHiY7IVkIIg84MjvJyw55TIYk7osdwrD044XkWhZKflKBFjdOUgpf1iu7yvjxSC9XknEWHlXKzqP
+/vRIERzNb6B0EwOgn1m3QHMy6TeOWBaurzj7npKD92GqwNb0DlIL7+34kzoINIXphIsgqIycdYN
oBpmd/iM1y/IHldxp0cs2zAiRmyFsHil6PsuM+hhR+GRjaqjrAVrYOYRi4FigkZN1tHTNMUYbSiB
guN1B/OBVeeVZkVlMmIkPFgY7motj0kL2BryviCOBfvEh/PxYXNF9MdZyEV165/IWW8howr+E/wb
BIcb2yCmHuoShdDPoj7cDq8kVPPtPpiw3SpwWtCYpQcABTXBQ2qBIhY1yKoeyeLecK8K0b4BQdGF
vAyJPV+/D5qnsm6Xp0/956cbvvLH4X2AG3EGfNDnEWBOVq0aPfriePGoG2FPPJo7ateO4/PzcMW/
nt9XvqjG2y0IMMEjbbMtus3QZ+GEq9BaNmxReEzX39Kml4ywXO2AQ5HCJguCoY9hesB5djoZKqfU
HS7EKQaSMrdqZHphvnA4TvsdLIXrnYeK4+gOsqe2PyCgeYJ+4JYLUYVSdRY90dUdh365Q4N5Ur3r
NkAhiHrByG6KpUnyQT3YW9AzHgPCBiVDFerRA7Pqg7UJ+hnVBvF9oxMLckHX0BCLUpmxDsmyQfkZ
XeZJ5Wn1xGqVbhC8R/MQ8DLR2wcFhPBC2RJRSVLpzIOS6Q11ndnIZh3P/NKfLpf3tIgJU0t0jxUX
lpver3tBXP3sVbwUKecK0Vr9K4xcAqyIDSNTH30de0OgEOnWrtnnDmmB9lHpOVI2msHJgiqaZXjn
64CNHL5K49L0+nIRyULmmNzS0q4gUxiGp6uhl3UTITk2lYcMLxSccTRUeuIbXIyiq5d6BUW28doJ
5cL1rQK1A1+a8/3tCY55FvDb6Rs2vuFOA5/34wlDAqhh1y5RqajFnZUI/RvExZl/YHavvySDhHjq
TaGGqosltURPp75OH7sDhbD84CFkWyEYtuxX4c+t3tSyER4I5QLyTRELQAcm80dVQBV7a5f3w43r
bC5evDCWwo6teE+l7CiVewHB793eutuy5WaUom0DpoCa9HjL/pg5eKk6K7QO4f11fIPtZLH2O/3g
nxlHWGrLKFcW6RgMLSbX2uoMlG2TdHEfVOSq6i61cVQrAwbNYwqErCpuQedPMaGif/Sj6J7xgu9A
L+PVgh3LYsYpfmLqkCgK2ktN92Oxly68DJgIjU0X6fZuj5KJlnRFZBuS5pmPxid8hWW0cr8K6UL3
+qVwIazZ1J4V8PqhibYRaBnW0RR/Q4H/CnW2h0+YoKGWRcZ9EqaAp91QY3IUnViKzrtn43Jm2pZ6
3ME7FS/5OAR7Rsbe9Sr88GCkUkEx11qtbp/ofAci1Ne+C9gddYWjYUHZnlYojMjCyBUDPYcTN8QP
VqMcjW42UCfCqzx57r4RQm8rbmXZRTGZUse16Gllsw09jaMR2Io6/bRLEuReLH5XfUTCYsoloWp1
p8hez9Q9KVvn2ul4VpkyqdcPv4x6WyybKkFPhMD6+95yn4olkQqjetgEr9WsHiexD2cN4GPOZLNs
kl93urzg08unczmfvhkPWr7UBjNx3i73wSOvTbaUB1R4bSkeSv87k/b7B2yFu1H+K5G3yYOTmnid
Vm3srlMp+bZK6GUXXVmJrJSy9xa+njK9ML9Dcp8jE8II/USh9no5QCENACNGUShXXO5f0mg04oGl
aA4F7hSvF/lyloxaQyNnurVHlXrFdZRg9RHP1R3q69gXG0+ndaXe50qXtQ8P5Dyb9WdMuLVVo0MW
0d4b+93pbTJTBx9IF4jQVbdwEbQF4H3vTSHjOupb2y8dgR2X7wV0Jtr/EIVadCQ3vAeF8E3QLBWa
OyBTVzOeossQNhvLJaMzjKCN84/YFAIxg0H3TPmS4ZTm1au/JImI/tawLXrd5ig22nzFWdI8MmIi
uUrYsOkfZ01wgtZGFMtWr5GMW/HxOp2Jqy25x9zDPAJSAMJ/js/jSlUyWQZRLq6w7mwAk3w45aej
jk23ZHmuy3Hbq7smNWa4DZH5uhK9F22bMLRa8MW47DGrQHWtK0ffythnHgXqSTzjWIoR/ex1qLtJ
xXo/FpzKO/1OuE4oX/bvbPaPz+z6jNDn44oNn4fz8cv+OsvCvLMYwjUz71UuO5E3yO2xpA0FKGlN
vxQill6V+hb4WLoyrKLjh0qsj4AlRCa4R7LNpD98f7dQcfNzmGvfv1iWiUfTMAStbsbLIBL15NKq
nA4ZhcH9xMAgXmL8PQ4OrCUKZVexxsuMDFxB8gZ1z/R6heoyZM7g4M6Lrd+aCD9VGTGs+/nTGUCO
kcYwrrUOvDRZuNZo279fL7fr/UhNr+YNOQNYa4Mp2EgrWhQsLiV3VEfxFTUkMu/o91mbITBldrJD
bnAV3UadUPAO4Kb3slF+vgzuUgDl8akzHMlGq7tuOXnsA6Rr+WMBiCl8Q9jNeLdteRrxmlWlxmnh
jzyPV0fgle6nVolKUNf7T94BF8cjKdqSJBVxXOyWkf9bSAtrAwQ4CoFqneXpboq+9rqRaL4ckJmG
0/OGeEyvWkjWrgP8g/rYABUUC+112lw/xmtRR+YYDzCYbmWkD3pJTCkeUg2LwbeN+6eTCxyLCZaQ
YQNXuh1w7bqAygCK54nl5KXxQgicSqWBmqINCeRp7kaQwoGLOQgWvZSkByO52KQFxYbnOgSvQDSG
2djpVLwAirHVjfdHR7uMp6nTnUv7R13CtuL6O1cU0YWMVRy0U6Vdw/iCDksa6jlKPweDgmN5PEMT
+9c0GqW2/Fb6xjJfriOa8m+Xo4E9LguZb25DD0IvvSGptEE8ylorocoCt6KNaj/lvVK4XZsI4H5P
iiryftUlG4HiBeFQAGIAQmY7IOgKAbwQNiYu046syLF6H7VeTqdjZmTF2S2FcYBVetW2LLJh4uuo
mUS+eVvwI2GaPs6f6hqFD0Uty763c48CTTL7M8bVKMTbhekD5uhg7khyvwdMNRpPQ6mDux/EUxvW
SN7qqro8W4pCT2vkNyS+lXpxmCiTvCW4W/yaosczuxDH+wGqHQfq0cGDGe5xlvR4DOyQoaRLbYh3
SVdkXfQiGFxnTQ3TrGBKCDwq2/yGI99ozFAdXjtoVQt4yPvb7jRAqRVEG3LjpdPNrl1bOM8pGNI5
hnJpYrytacSulgtkWrW4vhA36Slb0UPhzWMESKLepMuOPQdsK0xcfAj65Fm1PJS3oYwAQJYMP28I
Rm0rhxBpY4xz5g9hDLmN8+/cbRtDpI7LQus9SHOJ15fiuuQXIjSReVbtEICAJyJFfWFlE22IbyXR
DWjtStR3ZLW5Td1gvZXZ0ssZVD9ywMzH8rF8lYCNAdKt42KTy2/j6bQPtXksXSF/AseXoggHhtKy
FhQlRGEV5psYrUqPJsrJJReWNVqZHi0U9pPx2uaro9UAOk61w8RBBScL5k+a9UGN0SpR9t4Lvqv1
KRpnIphs0GxqmcRDRGY4JLMBMFqICHkO0JO8FHL+tJ8fE7h3KomB/wol37jqpXpTeBsV3GxbCUOj
S/gekqhRseE2B7HQYPh6KRQ+61CkzfYRI+MBLZTDycbmFpiijasrJWy1l9wBuyQG0OfbjNBJrVGV
wh11lZqkcCa75RVZOq12RxcKYjkAjXJuwd1kMKCIArh2XF50O7Qj88LJxdrQsl5CWU9p5sQqNBAO
4YHucc0aqmssulUGUxWlud9m4xb7uUIgBUtT5OKN65fr1Hetk8o6+2AZPzrYIE8EUEO7/RPwiDit
85HsXq59oIfy50ReYZOHL5VP6SNua7gEI6osYo11VP3raaYdqIrghEb+o9HYlyrtOxuKQRfUSbF5
iGGAuzI6v1QF/IxJakut7r83WG9CPPQxSUSdcw5Xny/hHYGJqjP7Gu1G27sCdtNwPBk63IZmN1FP
QZu7vm7rZYR4zTBXEa7/tlpCccPAcZSgH9eMHrmcI4ExVH2tUiIPCEiIPIpASKD+svCPjX6KhYJB
ZiUCS7Bzv0JZVIXOgny9AES85MtLpPumNEhRiLPrPapyIUiyLS7SLOHfFlkkVmLLhUinliERvBXl
s1otkiWrGVKW0nC7WYZhHlELVCvRV0NHaaR9m38sMGJMsVWPJ99TCT997L+LDqsVYMrV3WkWKufW
XsxCeLel18leoztp3h4HjxgKmo9Qeqzn58RsM0S3xcgb8p0/VAtSiFoQrBbeYBAbU2z0nS7V1Qk2
kvLFjbuiPZWHqK5z7T9YUCKGrULJ6ipE+rb/NMxjG00nq9B/yD94TbShHyxZKeNanXw1Su6zQcbG
dhphKLFl8xnNHqkjAF3FcpS6ZKV9yOs5CdpG4pM3ulyhKT6IgDWxDFEyjcRTJ9wHq7Re8lL0GqD1
UFke16tuLCuX0PXSZw29TvKqbUMjIdJJouSp0BwnErW+ZvqIc46LsAD65Dzy+Wxu8/sKIOCvxmCZ
Zg0RZtu/7uP104T5Swr/soe6hmzU2Gbpn9j0OsaQhU5gPIZqP4Quq5aqiGPVTUTRK4Gg7gGW1W0v
tVznAIlqvqP7pzTi0+CM6nlzEQ3n6l+uzjfwcPA1Oc2LpWSqTWiyginWAA0Va/+uME8hSqkg2dD3
qyarSY3Uajhy9tHKZEO/a4qfuttQUebCQPzHrVX2ZRYp1XoTms8wyiTVFv4Hjegi94jujLbDSH31
2tyuvjOpY/oevaoqbauHwoq1jJgoncX/bxZGWC+OKZXjzpElmU9aL3BoYtXSpANxW3IzjU6E1yZm
4GPhLoGYEC3nNrppxtXJl+zhjyCZLXBLIXBQHK3pHhIYULVlvEtd0u8x4pum/BWimg8lOFtkzcOb
Jx+9NdK8yHSle4F2OtpZu6dvhMcwjOlcP8JCHI/jZDJhFEKRIN60NHnO1guKy6ROjZgUQxRkjUxR
r65MkElFbp0R+tE8fkU6ErDZfBRRGsLJldl3pBDsK2Epnc1gXuOB0qXa9XZmEVdfZSsiobzzRmsM
doE215iWsiy08Wnn7Yw7VnBYRDvKyKB1Aiwv92qguNCeRSuU+xeAIF3emWKTOucZLkplU9a4E5eB
IsM8lgE2fJnrFGb/Q3VdhSQC6n2cjVverVT0VbHWj6OdBmQkTQezxC+xDnQpJd9ARAqBg3lebGz7
dhrOL6s0YKWoqUUq52zRvxGuyccDxl239DJr1gE2EmHAl/316Cg8mJfOIruqsgjVVH8keLfFUO7K
pbhyku4gPOYr8f5cA+Pa5QINDCKvlmiUGkbJOIh5j2dD4m1/PlDPG/Hn+VLOzv/4Nt+C/Vsitoy0
i4Gxu8L2Gf8dDYwDURYFixew0SK4lbN2Trx5OG5g8obK9e5x3MvTPxFicUiPEQi9qXSh4raPjreK
eihiPRW6YqeVtEkhkNuUPfG2r4/fUCZtltrzBFOFVgDv72bXSLaFcMDeX1s3R+e3hbIvbn610krR
6SYctvL6hesWCCoWfmM8HsHLDy+7BJzvbk/pn+G8N/4M5kIZqOWJTDAutsuz7MEvxTZXtF/hMlOW
1E0smdstREjWLZHtLP8xUPf7F3ReWgpeUIgQt+/duWG7/NhqsxJPdSGKQaiRJBWY6imTrvANYJgb
Mj1gGxpdChyfr8kXjWrSsfNC1Bv5Fpctt6GtjJPXAsYXQS8l3fmiELXQVa4YUxYP0Di50J2zDF1r
RTUgvXrG2kPbViqaoKOnp+26P473af0aO4I+txa2dlKYwUJUlPsrmonTm42Yw3wf0c1VusVYR2gv
Ck4NxytOl9sE1vA0Pp2oVBTRIU+XFFy+EORsOBaGxF0X5zNP77T/Bk8vxNaP8yNxvR9uxmjiiEK1
y/gG1dO+CfB8rV5eT8kcbiEodnx/2I6b582P9ezxQBJdCc/T3dC7eVgiNujKuIXzvDmH0/zoGbOo
1XI4Kb1RY5eGJJdKkjkE4BiC7pi3ecj1GxIpuuAGiLmfJs3PUaIZswpKS1Q9sBiwmSw8IRKMWWzX
exxnjVI6nC/wE8TmE68AwZl/xJxiL6YYUuXhKJkfJB0JKERg2QkEBxbe90Am9XV3HD/T4+Qqw/eG
hPRBQvD/SZ3+33sKHUuje77ca7+ow3aGSmrCBWsrVCLNo05mFWJTvxQCQOnvGO0Dv5/hmZo/S9nw
hQBx+depFyfzDU7GOInwaZl7bI/UGM5zASkztIVYSR1eWiSbQKL0f9c4cMQTD02raZt+Gj4P+9Pv
77fb5WzcqE5pkDrSTMw/7q1TY9tytW2s/V10idZonFetbGS+2I7v9qfhcL9Os7b43/fZlzPuo5Zp
V0jGp455ootxYllQCkgHVTmC3xHfQVJ/IMipQs1C8GD7SbiWofMFRT/Gx+Bta7xptaHW6oP5PMLz
7BnbGSdEJ28ckrQf8D+qWGUZHzdarZcP99y41p2WDq0pt2vJMAzEGZpoCjjO6QKXSNBF7G/zi/Wa
xCUVghzYm4Q922K1YYtpTcVRiPT9/g5fyUGbxA2veGKtMbFW7XXt1lL+r6+pL8Lqqxr5KPLo5b8c
5ufgar/6Ya4V+bl5eMP+BAP8NH//w2k0zreplNBXbrWdsdpOu2E9PxiknsMpwLWbL4f1mmfKHudi
jQfj2o/4EUM7rAvhuDWvqzHWFW4bYpOqj5iMxnvdFcogbmTHM23pGWJZqqeN+Uam4XYLBG+/XN7Z
C34FU2XWU4Zdl2f6ELV6WFPcLsuNEh84KP1qvu6+Gd9W6uVhB8F/u8HaFfZCEMCHp8uQu2LJ5EkV
PxWCHdA/DrUUVW9IgFgErWNIZ6vMfhf0ouFcG0H6E4oJFgNpt92VRZ9TbQah5RPn4TDZ1USzTg2M
79z8/t6+WTYEjt6F0TNv8sWjO4PE9DWwP1XphysDJJS3mFzQ2RZIGIA4QBHmQ1D6zPeH9IYsEJBd
92/pPeOzKVk46uU9s8fg1F2Zq8LI9+vlZf6MIsvHWT+7RhKWFYFTysLOwD+X3FJzbcAfz7fL/xmH
9JZzXLN0Kq9IrzV+XdOnUItT8BG/5TGxHw7ltuf3+ymNvsJNDfKBMaDeHy4TSLjuN2bncFy2OB4s
1OJCr0hQODX3p+vl7e+XVDYZx9NLZqdAnY5yzraeTlgwKkrufHj8JxKh0Vovz88AoJoVNvQwTQ3V
9p0WyHppvTBHUim79/v06uzmKT1BMarscW4qmORoZf4hZcX2eHq4Ut3jMtug+6RSRWsj3dUHJbLW
Epkbou51O2zvg441oKl4pzolCVXxPXp8y4K07ivk3YWp364D7MvhdD8O04oOLGs1Z9bFrhdzsBJn
85QZAw+H+caRyxZ+EhJJ0y3RMhyiH1w5UaNyhIPOI1Oab8rtck8QZ+EooZEu+LRdHkXp5y00+vC2
sp8vGWnd0iTkgnDl6fmE/ryIHfY9lCk85Af5d3auCInBMnB5hQG83wxHhBJldGjGXQiTxnIYFYYc
PoMugcLh/fxNeoxwnNw+OoqJQpDPzzG9f7kfBjI6XJhI4TuO5Qm3Av9s2AW4WyFVWWFCcP5PjleA
ZNl2KwzAqQQcIPSvm+5P7/OsTrsFUaHDXTtG0VEZHNEmW9h1qHa/zMv8nF5flQtpQLu8WxgIvHyA
tn1JhYVKX9VPtwGem7xUG+VeaexS7AY+G+2y2zoIRZMjUrNemBtEDNeXGU4BPZEq66PW1zs5TfPS
h/sjmt05Z2y3B7zmC/Rc26e3SjTwxivDfeGGrzdU6Zt0l+iK3YQ6Ay6IDIo2Gf0qPQEFzaP34UB1
YNscAzyuIEp1j9mX+nG4TZJUJSSJ7urDTTZTgHiJw3gQAG2zxadiPL8O19mVNCRc3OXa1xTwlocL
PP93WhJLIT59ai4PL0YaSlN6kg6+KB7NLK/J/Gpf3nzEID2QlilHyxFZjNNs2n76FquutBmTCZOg
CQjc+3l+aiYI+579C2YZiq0ytznwzXNByHYqNIRfN9qqZlP4/gTd5J6wtPIVMJQrgHlcj7BYZeu0
zYbZqg0bNkxE55YNTC+0H/Dg80p58GW3yYD9Ntt+28IP4ryLdYseoicp2CPuRqFn20Y2GggANO6b
CMVuiECl5lWtub3XEa2G79hfHX/h81uMR2yElKDbpSW4Kbe6Hf/eWlp9mMHKBjmQSoG0zeFyPae9
+ZaTfrQItBv7/96sYRLpUdwcMS5aRlW3cXvSK+9VYMoc8KOeXSFkOtQcbriB6RFzrd+qx2CESIw8
3ULgaC0KJafafYe2I/E7Gvqi1/eyoUdnfx5h3pczf/OvO+QZ/N/y7tzP5NyCeNPfpC0esHAIkECH
m/ls0mGaxMi31+vldsMtnxf098uX4fqXS2IBMGYrxgxFN6kZv43ThO87c81N6XEFk1fu8R2pcT86
604So3m9mhr9sIerCYR2x/R8Cz8iVuOXC3sLn7yhlwPViy67SsB6KkLC+ogkd1jdBAa2Bh0qNnzD
T9A4oqN3eqzAv5ZnoLXzjC9OahvY1ptNslRABbc2U1tb5+aYxwHypi7umF55Gw4MADG9eWDpCxAO
iQsKMlusLpfddf9uHHsX2NxyiObnDMFYEdT5bO5PUUA4/Rti1gFHtPkX0uOWQZpaj5LedlLpgwpi
1SEnXbVytWZL/2SceylOTDCMp8Yb7SW3bSQAK8MFrPluf/wMc03vZhgafJu+3KqwaGO9Dk//QGAj
rELQ49PwjUZENYI1FK6gCFm4RkvH5krHrlz/Fdw9TrGLTquybz9TWzn9mr63YqJoyXab1Wta/4Wb
WyOEYUVTwfJxP9OrD6KPQVX7yQLmsfFr+mzC9JA6sIoUfWD2QFaS9DIrpTxW5J2uY3pSVXx9mmha
b3GhgWmQNEGrI09yue2ZF9pz1SnDgwniU4ZGvN/1NqeXEkS/QZ5nMO7hZ1wIGT9yf9iVy9gacK/z
hnCaHeXpfNovfFtb35b+W3RfKv1tZ3zKFkHZK1Ci//Q0vOwP3wJXS54equ3ELOAfCz1UXhrTYK1U
suRzfDB8m0D/0w9TxJl+uHvcusLa9k5se/b4bW1Mus3DpPEvom2vjN9ts/C7ZDVFC86N824bsdM1
LFp/3FjnXSlRKat4oztro4Ow5Eg7G0+6tybd2h8X1opbW8LL3rod4ocrj5sMt8OSaSbu9aKV62+/
7K9Q5jntLDERNxtBA3285dbC62jh8cdFY+1apW5k3iRmX1izF2MUj7e6teSlbMwLkpfWre4K88hZ
M32FAd7ewcnkKq/Zz799ex+sJWXhzmPIKhZjaz+azBTjMrOUTRd+uFxQVJYUd61WVJEUN5YEFpGi
qhNyYAmivEXlo8KKHwpL94ml0F9ES7EuZN6bIt1a21Dm5mWuM0tfd6Y05rklyo0QZXC640tsnXvb
au0RTdrSmo18kfMFzWfpjqrS8tbY523tu3hjQQHH553n1nsVzhvRMirrexxgGsB5Pc1GGxKvUi6S
SqgvyPfi4s2IiSaigMn4wbpTdliZx9raeuPq1lZ41u+KhXYeBRX0imXE9Y2SrweFZhlAba2nHF8o
6zIWvZbr2IjJLC1Qhx+uAw45LNgSilzp0bKwZdM6sa7XshmrZEudt1qds2yGFRTWkWX6d2MTzlIn
RWGaf3lmvV+1ePyKx0nnlrC0TW0+fqfxbbxB1ASgewORH8+38D5Bfebs8JuPcqEN4hV9Y1oOjdbz
0RJba3vKzHwjcktZteIOL13/znpgys5Uko1lZxUrdnlhTVpq2OrxMnnjwBqj1w5JEU2gsyZfNfqh
iTattoySvLT1bWH9cCtc38LX2Yujtp7HRpvFsUmVl9Z2tb0+r4cLbAlKpQUlNsRa69uiM6V79f66
YhdLFHLTTu2si1sV+jjjfaksZVyYv1tY70mX6/czEqPWUollvaKMrXesU45I7IzXlvTmjTZIYz1u
BQGkX9g9+nT+ylvr7oMMV4GW14/RW/Jftaau66zfrWp98aJbW1rn3Nt+kHVnG2koLOx3ZX3b93aA
yvq27c24YG3tVV6barmyjPYsuscr/p71pnaVOY3cMrJacUfwL+I1WM9DFp4HCF3V0d61li4qC9PR
zC1nvZVO24KwWIahiC9A1qN6eNKsnW4zU4F21reVNgwfgsiWsFS5vtDxpbQUtzD8loIilTXnTMy5
fXSaGks4itJWoLmlfRs7slVZ32aRtxb9cG1JZV7Yll5m2Sx1pZ+beMVW7KoVzs7ifbDiEG1pBnxK
662S8ceFb/PSjDzk2qmIPm6tO1xG8erWVoDWicu4X/doYtfWoeV6/bG0NNYSCjvkbh1ZlGJ4yE9Y
9lQrsjlLCt/bF9a6+86OaWSmgaEDE0Uq4GldNRlUqZeixNZtqTvT0qityWcrIU5LqZWlaVnVlrTk
rR2ltF6tNoqKR+u19H8TxfkfrAPLwmlr03lsrDPKOxVafHh4LOnMosxKbP1a643SUfE7ax1vZR9v
XlgC3Ra212klaNsmN80wyyppukznHOPLYL3wuZ1uaaxDKirzkbaCA00cQypUWd/4vj/iP1APghHq
vT6PB6s35Lz5aEZj/XdXM2cewQUWR/EAU0Y1b+rIWGSCtBw5/2ni67/wdDl+21T8TL+ie/owlnL1
V4wBe0VdypDS7duLg9SZ6nzIYIbvW/vutk/3aZnn+9iTQGsPS9Nm0bscxxss7VGb6aA8sy5xnetk
SqzxrFhFH+VFYjvE0tKFHTa2tFbTRe5BpPKs/HcjHE9c7wMixfRabV+qsb4tbK1luRZNGwV2ogVX
lorPdBAsXnBracuyenj+sT/KcBz3QI++f8Pvfvrlh78Pw/WHy/nMZInIi/SHYTpcx/ckHwHuAhMS
YLIkVOI+joi/CTUy0AtrvqAnwHztT5cXY+jaD10FbqLHoafb/jb9jCwbiVpTHI5JOshH9JG5x+EO
877chr89Pw/pwYo+LBuhfU1isNf954FZpt4BTPfFHLQLMwxH/Tgo/NPL5TYi4u08DMdEwRDtYhsO
KPOA9odBjX0LS4XATdtZSwUY421YX6vj18e1Nv61eRx1PFOz69Xxci0spXm6v1s7CS0rRZsWvRQ2
NRP9iXCczr/cj+Psj8dfYMsOw/jZnFcYrwxtVh/Ho2OAxsDTNL6cHZSTht+9jZa89Hrp/bpkX1bu
SqsvXu1G/PEw/LA/H8ckeXAmeg3C55CL77r0HnJpwy/JZi2ZaIVFkSnj7kqVdftyYX01GVvX+IHh
KueZfTzb9Gu37ThIgg6f5rHvE/Deno/mmeRKkJqkbh1uP8WTXTnvMhdjt8ZV/N3x+BOe18/4FBkH
FvYA6dq9AP08TECXtWkj8/CaiI4Ij7OahRG4O+c/n4ztq4WmRshEVrUb9OLaTQmSKZCci6fy5+iF
Xj2UbJvmeBlu85+ex5f7dW9uaNEHaa96Twoxj4hy+MfP1DvqTOzN5sPcqKegXXsKVlaaBR0pyPAW
b8w2BdSHrQMfr88SA3L4kAyr3dN+gi4m76Mx0/DKYBl9yVxqr/sjsIVcyDqLGlytly+jySnAyPi+
0i78kasNptPltrvPD8LlPfmAUZBLhvKD/3XYX4fb7oqNhrAqHykxoFiFJw90O9aorYKoV661L37L
XaaJEPB2eXmh8hpeN07dIgPC5cvMB1r9XGkS6Cnot9725xE7ziRJtwjJVS1ldemB+Nd9uH4TS8dj
MsYSyE3SbD0Xo8LC0nUWvC6BsGpDATUav05Eptdh2H4WjUSaVIh7yMJ8XLNc6rFhRYQE5gPcHe6p
wVMASkZmbkWW6i+v423AlrjEw7267GIJsUxQQDRuhgEuXKJ/Dd+IXEfsK189AtcAROz1Mt2Ab/4w
P557U7xEPLfAuHCTL4+GpAzzRnoy369wMthQZU3mRESBO1y1yVtCtLV84MaYpfSeESddCQFCrXjb
yTNbOxiRjqgot1klJ0kCjuU3FlpToKYKjG9yjygekreV632sqfUi64oOX+tVgJsLyCItcfr8krj6
pRabhgNQ0GCGW/q8Xy/vw/X2zVIgrU4Bc70qKtDxPOt3Xwj2McUk4qHCtnYS9z4N9+MldJqbpRNW
b82zEOfpzQQp1rhzeJUTXgQNJLKafEMyxwM2G6lgw/AcmSwXR3y9pLwffjaCaHRoYJcLegAGtuRL
xPlhtWwIPo+nf+8kcg09451jH+JjZxq2zhHYzCMRBc77/sYd7YwWRzyh8FRgOLNd1lCH036ibs6z
ErmOT9Bt+u1+W9VOMtOCYPIyvBrM0X2+jec7leUFrWoCtTMNjOmYHhcA3nxbb5fg055T1AC8AWKK
CONs3LNxQnbm7z/rTM+TnxLPRrFZK4hEMGGmpaLDnQxn4tpErr2UpbJUKqU7yYJEBbjhiGW5gDpi
oYgxrDCuDCRwN9gJqez6B+Ngf8DmcV5VrS1TFBdWgf5VzAw5DpAYE9wFGNOdjzVTgdTBRgz5sgJE
qo5tz7jAsypFSAcA432PzVbG77ijKbtAO+odtiYVStG6c/ViNYY3/lgbDOAvWQci9UERZvTwdEAr
VWu7cuvdYPsJqdNmr+DTQNaV9WQEKwACST2dJ0oI3YZ5w5Nc9TylNr4Hj6ajvLNrDoDIf/ISSXqV
ETcvdX+d//tsrS0cHYCX2tI1pvnk79F2iRKSD9Zm2SzZ2G6Z96eV4QRMD/sLFgmXwpKoVlc1GPOh
p2HDrAoNcO2Stiq9OXCylyvNODyYaVYk0iFi3oia4Zr/P7D6+dv1Z/zBn0DtzY/E7QK1jRspm+nc
wx0B5AGf+9PpfkXDSihBJpM43GHH3GYRN6o1frOUckqa9M+OVmeDbd8v7w2Pvb/RY8DdqGaX/0Dh
FUtwg+IBK9/RUF4J7k5WE9xSwL6f9i+m+SFcWCRbw6HEab2ZBkctSibKh7dX7VsQpC2bJo6jIa9I
3iYI9EKgZFVfNFWvoZXNw6NJbWFFW0JrWvJhK0LL3Hmvv21UOhI2GSA3SxuGMmxNpo6dZbrbZFa4
sBcUP7jbIDTk/ny5vYI0r7jPtQAuYkfB6mEDJW+TNd08fr+D9cyGHknu0/3p6WQ/TwIBIC4AizzN
Z6OpInL6ogbv0/DtZTh/1BsSotaHnrCymQ1+OJxfTuP0urueDM80C12fsHMDGvZ8vkDU5lo97w/X
ywQ9vu+zp3EdU5cKh2NNBMP18NL0jvqemqdBxanVI5wG4Yo/VEGVT2KKIbjzimgXLXdg2v3rPl4/
WdNkzBIpOX8k3CLtOF45auMqYu3ptmEwAX9EpIzqMgSey/7FOGIcrc701GpBRuxa0BEuB1dpbWOj
jrbO1+e1ezpdDp9SRJk4ahVOGPwsZgg9XV6w3wmfDGmXw2lI9JnjUyjCUikkVfEUv7p7sdZMnYU4
9wOVgXwXoh5w6UXjsOEF2kIZJlIWGuB5+eM7gW0zueU5QqFgq6ztr8Io4bl/BkLiWYPg19PusUmS
xbmYhR5JQdwYMeM26gSGFRM8+Phjejjux0vDtb6Ke+kITtZZNmFWZcg2/XP/vj8P07C73p++aZZJ
a4W9vv+luXMw1eH4YqolLo3BETu/SHe9/3S5GrZhFlrr+U1nd+55HE7HabiZP92Gnw45Dr0x26S8
E3MISMLUtqAqW92XXskoo78TkzPPv8v0SOIdmcbfyOL32hoE3ZpWFQbD9u+FFvHZI5luROYGfweQ
z+Pz6WYJubjRGB1iqLjLftlhmyy0CmZlFXpNhx53W6W7Esqq9JRj/NhaOyz0CdYcNK3sF0qNebdJ
Ul2qw2J9uaaarBurRbOIbv/pumaGtK2eUSmXRqGcrWsTT3tgJfbfuk7KsEZYYrKBKAtOoUfLHrd8
67nXub4hfSxA29ZXRfq6N4TAvLF1oQYqPmplWaIaTlP0YyMRd0/oYH1fKnXNYY6lrTJXWBVqGpzo
c7bxulA2lVLdnF0SO+QtZCbo9i+vtbbwFCGiLrck3T7AoNQocR0p71Xbv+30g8J82+CSn65W4jcL
/Trp6xDhdLv7dFvd3ej7fEkJ8XV9278zKO52Cc2WraWJe0vajvU13nvgXtxTp0TOHltSVKt5FrJL
s3UJamFzoFPvGgtwb3vpXeyCUFlD9oWyvYtSrOk0e7YnUgDm0yrUY+PNd3QKhN+zyVOpOm2IdksH
SFmRDx9fuWSXoESKyzGeLSVSVVpRZvohmK/Hx+zkakkM/HCAS0JR3Z/Gl3M6H5KFHrr+EKpoLLJs
3m5fiaAWhGM3vFlzE89vgTVH9cqxbnH0Wn0/64VJPlvUtDw3YRiGHr3Cv9j8fvbKw6ij+eC+78hP
dodhHUGrnGO+Bz7mOs8JruOaTSg87MzjZ2gOznyy5lDrZ9IlUSQX/0dktGzDgJ2P+yX6yW98YyKp
V9bGxiHCToPy6Z03NzvkoN/ZFKOwpLW2MJPe15gYb7H1BPdaB0aagWIFNJ51emIUTMWWDDR0CMNp
uI6zVP42YEZ9+l9fl8bqMGrG5NgNdwkgH/Hr2+n1dnt3bL8C9Anb5nmxzfxrF5rL0vCVRz5QLmY4
QtdJl0QxsjCoW9iPQn0Q+lqeZ31ynr+/gnben+bZ+j++74GH+JZ6KXFQjt7AoB0RxdOod+gZ8rq/
AnTYiNnQGGGJlGBmUwZ6uZ0Hw9LD/c/FBmXeJoPfhVaah3mfMeBzf0kOkZVhEchCT6rgcoZeX7vL
e6JCEOfuejk0qqn7ef95ZF2NiazZbEi1DcNRyjAK3LiWEaUnaFwJ8rf7bd6KYyJJDJfKUWE3lDVg
IcRPxxv0Epzljlnuz5fLe3om7F3iVgQUKvzPwfT3WGvCVv4NYdYTgTt+vA1vKyedu8YMbvSOjar9
8RuWLG2AdHQBa07L7X1Wab67u1leXy/hXlnU1nj0ba5lz4/kKeGhpHK+EU8Jm4eKGko1H75afhLj
G9Sl/RWZGc3uIDhYHTZJvG5CGFAsKRdi7lPPYY9om8oqT1TIwdPjuj5g14wGN9t1J//7FYizZuv3
/4CeSN/IWlynxssQCvCs8l6GG6iU+U7c7shPAOjwVJAepaYLwo1RdXoaXw4pSk38qMjVLvKdZtZc
3j3oPz2AhrHFLasKJSRsBs1C8svl03D+8zzKj3zJDEELVxwiZA6cMkvZ9UMtXjphYuOEGjzdyt9T
gY+CpaYFLa9afRtpWfP5cG5w+v23X/YvfwUuenQA8J9m3ws1anpY+SBC+SMd13/88pc/k77g0fmZ
vc0KlksZZvlI6/oMOqOIEpPCT5i/P+2fZh+KskcQ4yjSw4g6O1p8Lweyp1CpKbAsJqaQHiWUAxXo
6lQL48C1ONzscUQtHd06h/4UuhquG9+65ECNqLLpfIEIT8cDMtLzELWBJQX9F94fpw4BQXVcU/F1
uPQQbOCchOxuNb6bWlTbTV4JUWgdr7+/KNMs35dP93dGdyEj4Juhj8LQZeiueXn6J1TivJ/uECh7
HSGXyXjH0biFRVsr7VZJbBe/ZlAxBTfbalDTYb42TKz1/SIBkwUUwrNCmLcvvWN5IexDfAtL/6zO
piBW0LFRbKg5sZoA34TL78xUahhNm0U9KLC5zRHxtudkD2rwjDNZJ5L70SGyOZyo14r1sea2LoWl
OhsJRxtSkEnkbOEj/wRrHcH0ebsDzPDEGtIaqVFsTRwgvV9PcEmTHRNpCZoHhmXlBWCSolMOdOJ9
me/8ymYKpC2sSG5mWAzs6WTNSLPpeEuMrykYz/zSk3dhzSdTUCGOEYQdtj7Vs+Cl3Ebop/Ji76im
R+NojoLIGF/LepTST1k6e6x+V4B9mSyeKQN2d7gRNgc0AMJVTBXAK9JtQuroRKBecMTSe1M18b5K
Lh3kcnkwRum1W4GBZRIa33snjQ5oReQ1q6IrTQBpPw3ThJYJBcXuL7+Np9MerPHWWlOpYTiN0iHb
BV+TXXJK8XU//QkPLExw7ehz3SKFKR3oGq5ptAiUGLkd9BSZ56sZzDiXGOHOcSnWKAKyBs9Ol8n3
8Okb6qHd/fzpfPnCDTS3iLFmDq8WB4VoytFaX6/3lomI/o6lkuSPvc8aKumZ91l4E6vcbxC8iOKS
G1ZIE7wpSCmErTnsnsYX974nFTUZCJWyp9nqDVZ+5MsM16sxpb4U3mXjX0F4oH9/v920db71bcyi
AgvGgpMrb3cpyaISRBdOh7cCP1h9E7NIQWR0xmhAWZ8V+vXLhcn6PJ4I8Dz/5/P+YJyNcHWRSYT7
mUPYCrZ0d36a0sGWvO/VWRS9ur/367iD0MjlfPpmSFjkxBXB5pulFL5PlKh2Qhni/BsfkInCPfMR
zDfX1e6ck9oA11SHNaGPVrmwOvl3x+F5D//7tG/biCkVAqsx259B5sEeBZlMhWX7qlRRQRbzGFC+
JcSZ9YUeyhfqXLHiBR0KwpQScg5FyOpd1wkYB/o3hbfV57t8/XbDiCWAb1YCI5yeQflpRdjpDbD6
N+h3d3k2TPVMSR9LDjfLI0D8P6ikcyWql0cxNE5Fc0tV0PezuoV+4OPzyI815iDSmyPUruhOMssh
H+D09O22fwFJPE/clw/FEqqnrYBHoUP1udd9v5svitR8WA8/Tlg3QhYY6sL325op1/fay6iZMQ1+
5E+zVyl/BPeHfeyn4fZlmHfJXf4kpUpfhSBIXuLZ5cJQdreUHX7MHF1AIuF9SI/ZKEaVqtCGxHFA
k4COzncMTm8EDFn2iqCkcShdMmOxgSIi8NJzEnRSEFrPGb6On7qCmeP9/QQyhQ6kPaEq18Gj1qs6
GDFA32WUMj1YqWmpGDE3TZfZuL4FKP3ka2dA+VFbHuz5uB9P6QBV2WnOk3jhkDiichDWg2tL1xRJ
DDZZf90zBoL7UJUPkPvlzbcaE1pWHguHybSENd+xYXl6w1pFPcb6Yn46329hjPTXQfrR1ORG5RS1
F4/O2YrJ5m27pE7H79CnbaHTUYs5GAjKzf84Yb7cyLgE47EO0F7QRj9Csa9URygKw++x0uWX4evt
R84x/nEl0wBbWAvaFmhDyvQdkD/1+5cOPjZKxFg2qBh54xC15tOqOzEE2pLgZaIOT8+iUFe6kLPA
nAGWw0/DYb55iQpmHCbXTFqZHAbwNPP/fkjfk7rTJHqVzNmLymf7vndK1bkaatxKM5mFC6jVPlRy
K5kzNB3JwSWIAXJvetEAhHHcn252lL1u1CbyEEHZO22dtkVxlELrHI6Nvw4AnnFEENMKSWJf9Wo5
aj9QLpyfc0EJSe9rpve1DpGUI1feu6lhKjS9rFyzdpUiJKPGSY+QqWg/q6pt70FTqcvKLGl6/isi
XmmaQzkCxy/JSHhKW4k4E/EGY5SIUbDiaDYojl5NBrYCLxxG7naX+dPrLwb8gK8aaX2puxxuYXe9
nQwHUHspvAAMLeyNHHHfaR+Jw2nRC3Ec4IGYHa9TSl+Rw6bTdSyX4tXzhjUYRcloXeftFu+LlqGT
OXJ+XO+zAn2+n3F6hsMlUreiiio41cyVittrvsmFcJDgoPhZgG82JW0L4cxiZXEvwpb4897cJgIO
MMWGt/fbtzXXzZVcRG67D4iiHzl82bDGUiJQCp9YDvilA0Bh0p+LeFARbM3/+suff3YjXEPe55fL
z7iu3ax8Ryut1ee1kmxHmhOk06UF00MI/xTOoaMt+sPf/vLHr4cBvSZKId/AGbldU3Ea9Moa3QvX
1RD5SnOKK6a/r3V8no/rv/6+v7362cyDTBdIsxnDRCmolrTNj/Aq/iGgReCNxIxdymqFUGLf6luS
xzscUDmfx306g9L5PHKAnDQL8KHrgJwhh0EEOAYD0xTBWOr03SkM4e61GFXefP2PYX9U1itEuvAB
WhwNepaVlEvAlstQ4JczrTh+iq4+hXFe56WuDlX7odC2qOgk/+qKeGez/4WS3VZ1Ui9yI7lLarqD
RKT1xDFi4/MmfN74oMY4/fFf9/3prynV0Yvwf86h09K9n/PVnn1rQgMaP9z7r0G5smtxBng+Kh5i
PEpqn17mnHt1vhwkDE8PK1UHnjLm1IYVdaI2GDwZ8myg4Ozy7o9lvrPDNcWw1Yu0pD+eiqNbCO39
AbMZsxP8Jyht+SOE3o2RajUSv2uzQoNTItpXcraM9VVqv8pK77nx22XYGCizzYXRR+XJdiS0Fxnj
3MXqOeqBKRS3Ex/b3CxsCaZfc09H9wN5zH4s3Bhrbo2am4u7maFswyjqNCijT6NupzHNRkBGiEB+
gcXcRQbWYU/kxFBQ8nk21Yp0VLuMIgMRyRZHGX5BrwRJvf+whi/ORAYjLwisLbjVKCYgPE8rTi72
DN7uMm8X7D9Covx0tykhOpEC9IH3wiN7d4CWgHEVsc9htiaYNMvA+uqYeenJrH6ZtctwW4MCFiJl
g9FXTtXvr1cgYuXk+v4wm8sTTGd6vdznezHbhqB74BFOGzyFhiyxY0RRrDMV++OppF/dvihUEIo9
/3ljhlnN+I0KsvdPCmynJU4kP8QFnbXfQExdBGB0A8tuI5TohZTvaf9NgRyNuH/YXWB56F1J8+c9
4b12EHieTiZwTGQjMPjBTghehz/aACqfyYzgwGBv/AJa8qfLF2lzkD74YcAe7fRkmU9UHegryHLI
PdQjDGV82fov5eEOKaBCHfgQ6OeqkAKn/fjlOgz/2J8+zcezJRMmNJkgpeCn0DFOkTo0EnwCZ1YE
kmzWXQElaKMOUTZzjbrO2HhAqBuPZ6xGequVz1Aswl9BABxhznwJn8evBvy1Vkkmlj/OhlFRF8Xu
yRTGgzDsfNfGAQcEmz/PaaJ/Gk/oxQYL/Y6pAIRcQRnpKe06CNM86wPG+208zJu+nz7B5r+NU2C9
3LmnfCVzVwgFJLIs2p38+nYKpl3ag2xVSQOfLgRj8H9NlLWkXSEJgZTyK89UFkAzIbkiGHC3ULMz
Bi9EFZnw6P003n4xYpoOyeRDuy4qO9z+AC+atpyMUcql6ZN4GV/p4HbFXW9ScNiVBEWnyy+KRdTA
LNeH1ySTOiUnREUSMbKTvv0Z3LCfgf6RICAHnWafH+s136QIfgDcRyZMnAfCEZBY8ssVDNfr8tPX
y7KgniDITHLvMnCCo1IYNkfmYTe2kMau9AQLN0EcyyfNeZLGSstM+HCgHrgZyMvBzSRM1NivyJdj
U8uVqdEy57ec4Q3GQGE6xMUXDYQHWBjfC5e09+ZZ9P37aJxaUSoX0NWDxSPsCmuMQo3BUd2wpXBI
xhqCQw/JeuYiFPIyfXt7upyM7AWdbK192U5b0yfW/W+GT9TqzeztU0Vr2hhNyEjpKxH1xtKQ4PkD
T527Yumd0kusloY0vhbuaOEj1/MpHYfDaU+9OjaeWHAeq5AlxXB3WNXTtyROj86r0IGCSPTFRLZv
UN6pE6wqpYKISft7tE+4I64N4QdKf9IOap6LcDJoJnZ24fMjRDn+sn9nKmjGp3B9ZtpU6bVP1Cje
0D9xlA2/9Jajj72tvee16KTTiRaHait+/+3Ho/F1H8zrPkR0zxd2WA778+y8AESCLO4jVXKs1v0W
jX5jS488xVKMK1VkQJ8RyjRA0Xuq5JlKFKOEA3v5PngN54GRfen3G9CzXDmajTNDTrsk0KgL7XzY
9MRupdlK5mM3fTY8xjbKXhWL9bf8ZyNTJIrWygBXWrDa8Z/Z5TFPsJTJp9Y/RFqwUEQRuXswolFl
qSq3XWON/fuN5qQRwOkAQ52pZGXtS9V3LFSY1sHGLSFE8Nks9qwyXb7EYf4//O0vP7690zr3PlVD
V0AWAzH8DchFQABSLWXzjAEmVc6wulZ49X4wjDgjkynXeRrjZWE8bCY735DFMUUM+npNj8coAQSJ
t15+9FgYlzNH4dQ+QdW8izCqndyNRzomY5gmDFP4tOfCZFacfhqs0DsfmYbrO13773v0RWoxGyUL
ayJQhYkUdAtEomS4/tVIk/Z9tuSVI2gC6wCeBuBvxMstej4MQCPxkq6vrnU8JESL/jB+VnBS4DfZ
CGevdUESeGoCSEbIAoTyTPO7bMKDZeFASFrGsTuCz34eIXCjW2kFTN6W2F0edhibHTG36HB+mS+l
2NM9UpgY8btaRxC6/w5gPDgq2F7DNc01HqMUr4sLMU3YVuBMyA6sD0uze7SLpBmzevs7aUzK+89K
8jpavm7XV7rsonf4RyS+uQjScxc73snKWxfpgIP4ko7+RsbS8mOI4N3ny/XL/mpRUjS6coU28nfz
OZIqJ9DTeMTkMhwvPdZ2kV8veukgdqn2dW4aZkkd1EjmjdFE4VEZoCu4gYwjdZHp40CWoEXR3Ite
Kz3FxggmQDZ1CMQbI9S6EqYI1SwYpXLpNmOEVvdRKZl+7xOUUI3/ugfwGyZCvrwCKpHsEbjTsI3G
4KWGMXAEeX/2ETQXeTDGENzauX9coEjFtdxCabicLTyGbB6XBchtiEdTjO86T+k6AeHXkMRnUDKz
CGZ4CDtCvmS83CdQG3/eTzfMUf60NlSmh3JssVgSlL5/+G0uvIHARQMC+U7lZjSMMUCnYAX82IZ9
mD6N78bUA74hD6SC+uvd22WyVl/qHEOhNvJnCu77vfzZnk6ud5Kup8g5HO5XV4hnbEmrR2lkAkNZ
MxjJWMt49tID6UVJH332KxZe/oqGkVXXV2nATC/618x6lgxy9h5c1ngFq1bqcpw61CfsQlR1Ut6z
UenSKd+j9Zb+tIDqCqVGO+8PGgZ/pzB1XNL4v4eLq8QlZ9z3qQA6BTRd9ick+kmnqrJw84hzBVhT
PE0KxEuQlHz3JVlgXwdCqHALap82/s+f/kwf//1iNGiqRdtZd5Nd34rrYRaUjWO4LuE4RkBATXd8
n4zPQoJQVHXNt+YMnaVuVOBp7KKYeeOdPMdXaQETa9Fc2auwKvr19ennDwnHsOqNJ1iroArPgYXA
+KxXB984tCfZuWQP3M9JJi5afvjpnK5i638c6aAMSFimd652LNXRRTB+PGwdgXTY01/ZLqFnBUoV
nvThfLm/vK6QTtFPi6cjRGJ9rRc0DeMIo0W6WosmyF4AHZmZP3gP8DZrtmrRJz160YYz2FDWKRYq
x85JMm5QOTt907Dyw6V4B8FW6XwnjLcR+2vP23EeoVXjidnL1q5FJnYlBAjcyRhUTbVort0VFKDm
alGlh9g8NJYkNiVwTDwsyViCOIw6BLhZsUKXbHrPN2jXbumqsHb9wEBlHo4JKsxaFbbjBuOhxyyp
zi0VjHUAKtC9anzYzb1F8xN6Mb7tlARWsRL/wLbnWq9wDuD5dLlc/wy8wcaBhd1x0HB2t37nvK2/
/szYytWEvCeV9bxuomzEx949HYdHhdg0T4J/DzFeDoLKlfdE87CK1ysEcAjr8NWFR748ex6lgEQA
SK9vYteZqIrG4zA8P0PdnWHI9Qrfwg6E3iaeGWI11naoWOIXfTnsSqMiu9I2bsGcIphtMjV4J9hR
I2TMX7lsgqghuKR4Jc2fhZwuQRaKQlQsuzGQPwk3OJlhywKA1tctSYAcelecxJyI9tMYKAsDgQ/b
0mnPf1FndceNvaE56/46XnaFMU6pS7EKa5zSGKfSBVmlLJbe38TKptnjR3wP8R+kRwx1TUCf6EIZ
fstDWHu1EVYW8vph67kmBw7u6Rs85HR8l9VKYAeoDgV11YMwXG15yhtds5WF8mhkzpt2FHU0dkdU
WYK+cP3dMfrxV2xDBVBL4DwjdJW5N1mrwTWZXhDlaqE8kPOSxsp09aeoV4ruSZoNNgtA7SBPzcqM
LBnP2yW8k54TvKhQWuqKu4zRNHyJ7czEjcmNPQ+AJqjt4Yy9Oj9H/2vpgSBJVaidUpfEJapX+LKy
gJAIxbtuuHWnPQvlGAHatbTTFDFekSIN9nI5aUCOcN9oLm1PgiI6ifdoVK3B/PAc7tMNOAHXAJp5
XoR3CBK1LvcDIfw/j+dPMkUy+0lo1K/UbNahjUrwD0tXzfUy+1dve2QCh3Dkkct68MownbOV2a5D
P7JguTlPCLJd8//2cr8ehhVznZuXhJhV5aJozwP4P7cLNOg7fwNCd9stq3vllrHa5aVA31cqEkuT
1deBCD4UKznc7nQ5zWYyYOmRf9XiSahDGyXv2leiuS5PiftkvkMFm+1oV73eoj4ey1hOrmKUjZoG
mfgRGAnSWbvhKybInfQbU2vUprsuiO70aI0rU2yVr8VkAnKn4hmuTaqOvIDS1/RPDJswzq1U58Y3
OVS80TQITZS80HVgLfIuIBuWYl2Fsa2d8uVLH6Pn+MjsQ7+v7EGjR6i23XsSifWLH+1w9iBWxtqi
OEWxLpJeHJH39EPyGUH6I+3iUvPGPnbqFLl0lILWLqHE7Z23aONKK0yeznA+Rq3cD5e7VRhR10sh
11hKXewIpdUYrNAHwmUP3BbAKAoQac/a45ownOAhD1ToMM4+rsktXxS1ipRz0AaLSWb3K6acIoMF
HDMgnzIKOrqHkNijmeCBHQbATFdXNXH5poCDR3mNtXYOla7ZzSIyqfHKIYdQt2bXXMmeBAEKR8i6
H8iXLY5GcVOSu6FXxT6hEAXKuOfnC4QX+8lYPfSQjkEXPfikGdtHRqxAwAKQTnwxj+SpHVFvzPuH
EC0JiLcPRMICcv8jOPaNit727+M2Kjw9kgvtTpOnUbHIMgLe15FyL1SHpOtBOnVadWAy+st8MRWv
2vxnKNOB9ygNru0bARQPPZLw45U6kl70VnDI3Mz3jxGJtfWgWtZqPk521RCucPnmO20Qj9vuCSk6
1+6LDEAFrMmH7wcg4hRHYdulq2ANqAYF6ER8LRA0BfwLB8SA+eZukJdqncVPBHszD/hfAxkVyVIW
leRC0/jDHqJb0EUxPZ1KVwtGHPUf2OkqqjdudN2hlG6o9+M23Cuvcy9wb73KxtER/jRv+Ka6RRyo
1TQDpCyH/RUMrsN4LHdNjenj67sxSKln0wgo4A/7d4snwVei9ipncLicfn7fG1+FehJMelS66n3D
Re8DBB9AwqyzrqkmuL2AGLi9kpu+SwFI8ENRxB64qdUmN+ubXOmqDx7k7f0bd1gDCaK3RHTlnDcy
zV3Q97XmHchFs7StnE29oPvNNQLp9vvLcTS5JjJdKJK5+rUFVXS+rD2IoqcWBqEKlS2Yjbr77L8y
wm34bIK8e41W5M5NouHPWrmowOVD3Mbx947Xw/20vyKJ7+06rLzxvTSRai/mLweDWyUX3L95IFn1
CRzSzQZOU2eDRKn035BMR+osiM1y1eZ0S9M4NhH5HYc/52+4J4fJG44jtDrwyXIi201skFRM/nPc
E0HUCPTlgie00gFuNL9a1OYseTI0TqfA2HynQxBh58x+HuhreqSApO4QbdCVDPHk9e0nA2FAQwRk
eBmCuZ8pE/BK/2VTBNIwAe2eN8L4ocfk/4zDF8M6aZdAqmzHDdfIkBMQTrOmqW+CzsXahsxZc2A3
i9bHyQE68VKib8T+AA0BdQpv97e0zm9rrbpz8XGKAw6/E+8qVqSrLy157307Is+fwrpe71uymU0v
SLZc54xSDMANGhFtnh6gUTPgWmAaAOH16RPrlgo1J4xEbYi445mF16QKJXf0ObdjRjWOVLnI95he
h2Bhar1pSUNB2nT2js7AgXfYz5ckVX3Ri1Z8XFun5vS0J17BNEq693yoXEiIrlb3sK70OsI9KIto
HU4iiJkJoxj2pWpLtSlKOtxg1+F9D1TqgEBBQpeV1bXBjoPkP7+Yesy3/fXT/T09RK6Kp2sp9U9g
zeyv31boq/qmVcWj7LM/nveVaiVmXT183qeqtHpRDMKTaplJchqhpcj+PFzu0+nbT8PLBBnF4fgL
gNL+NF6Hv9lU6KIPVhnoTDCDArlOqS6pbRhk968XAxVShThnGUqpiOUch0h/Wup0hOcwHbEJrP2p
BsTwbd9gGNCcc53ByLgqxlsrrzYnTBc3NaRt/O0C7vph3q4T5SySeRSEvuaSOwgtvsoFMP7jdnv/
STZ7Nfk7M11tyFawZslYp1gsdeSgFlFc8Gum3ThdTlhz+uVyNTrDZn271JYT0kv7GzQi3P2MrejS
8a9sKeLnvdcfLqco0ImgY3YejlizR+3cT/Rnozyq6XRHF8euIob8wGCt6jjV+B4gZ9KyIag4rvar
E702Ue3nvkllZuRHM8XO3bcxe+zsLxnssblq91Y7VT9NIMoUE2HQ5tM3X1dkxAk1FotTcj+4nLqD
dP1jvL2m65xKFT9vKy9K95tnX4AncA3T1XeaBbbyDBnGjuSa/qrKhWrj6q/hON5sVhLJctQELNnw
NFuAIFmquZnB8NqrzsDMAuE4Nd8M4kzdbZRJKrVy4KrLIq1hel2gUImqTRc5IlTReHbN3Nf9zDyr
MlUPx7hY1235A4CJTvIQ6CatT7ML/mnn+X6NJi+V9mBdE83hjEk1AvrOov+Hv/3FwNeJFk3kO+cP
Xdwg1+NaQ1pxzr6rl3rFRMw4riaSGh1YspCL9tqC7ScEFk/Dy/7wjYI3Rti0VYmoNuNtvl+33gru
OhLzwI0HUJWgetcpFWWjosInsDnocry8IaXfCkhTFlG2aB1TXQtWyXgwk2uK4YtZjPbtVdRqpo9C
wag3nseX+9XeHq2smsVzP3MfT2OPyiWELVNJhAuR3KCiW4KeBpKH82XnyogpfcQkFTbdkyTFa0Nz
B/4Weeevw/Vu6MKiWMrd+DQXqKXxNFGnHeN96jQNQhnf0wlTddfxaBVtd4vwXIizAW6A+AiGNZ7A
pluK/M+PU2s8Tpqom2N0opXiEQhmxoNBe9MFKmonsHV4F41YnzgACBU2zSMpInuFl9P9zaARyXSv
J7YRQp3yY+9LI/kZ9QlvU+1mXVW6kUUrlzqdj2eyYbGyHfTT3maez6M+7vxqwsv2CHB/vUw3fO9u
l939TDWeUEifdju74H2xWYCS3Iden3g3p+vBoTDuZ2qQ7hSA/fo4N8mLGBvyjzcV8orPxnXNlKp2
fCOOLCHNh9DoPDh9p9nN0RWZ3639p7QNKZNhWEWU68QaOQ2vAyTnILx1GIBjNFUbRhd2sYV7RHy3
23+e9dBax4RM1Aogo0XO7UlGsKiQQ8Kwn6K29JWsM4DalMvl0zj8kQqcNqQyKn1U/GL8Yfg8Hoa/
XCLmFSOZQSz5ohdjAKB6ihbarQ2NY11yHDHxTHnsgALfkYaWjBABvyBbf03CKDfDKVlX6XRLIFWb
XmeH6T9mu9HqTBEljkjN/O06LtDc8HZdwr+kjNLi6BWGFyi+33CIxLmjHJ9wGzermysE+yE0C4Ek
o7WD1gZ1bA3M+gS6MtotBjX/b1OJXnNv+9AxnRQWY0ipMdkGqJC0/0sfvvaulmEJhmkRk38TWDzP
oa8rcSS4ToS2cSmUF1wqti5CJu+/DE9kfjl0B4WoqnwH+HjCchiqoVrKSoZHMCT703QlgnyWzCQF
/QhMAJfzOgVZ1idqs1wfFg+Ic+ZSentkhKn0Q1E7NPxgPvMd+9fzf4xv0KF6uEJ4cE8tJ76k8e6d
SPrRf7Su5vn2F46G0OOHMZE0lBNHa4ul1n5N03RNb9THtAq774gbXN26qzicDpd3ox6hq3TzMAfU
np8Wn7/EamZj+rUujokq4aLqPLsbTxasf78yTvDMTv5foPp0OP7w88/A5j7R7LirlmcOIoy6Uaoi
G551gan1dHkCMX1H3Nt6WUmTL20/rxrkwEXFkKfdWK2oncgBcp233gb8hQ+TqRJMxEwWKPeouqT0
ZhRPikAd4THdfX01TrVvdUc3tT5mfL4y+IH+yThQ3eyzVI64b8pCMSFYqFmTl8uSpZBA5NHcwbFl
6yNDw2E4DimCmCzwC+KwSMWTZw8rJqZ/bqmImfi0dUxj6qq/upPxUnqtubxDSIxRGSUbkIV2GLMm
+zRC+4pZ1d6wy/B/Ylrsz2kLlaRFNO1r/Qsi5W64/QhPPvQ9NWq9SQv06lYxv7crgI/qd+xugs7e
DRqxloO5lgcb6qNyyYBd9IFcQZ5q0jOhI+x1k8ZWUr6veHi4FtHpFmMInqThHbRZuvsKfawL/Wq1
EWzuUQBisE33LIBpQylcxdWs1APmzw70C+x/42GcX+/X0VhYWegmmiSMv99ffzw/XzjWSLfQ6tyU
Bf5if6XZ3l7Q+Cvwl0xwEVKpZbgkLIkiWvAOAHhLJ2S9qLbN4gii0KQvgYvG0FuN1lvtFmUw7934
PFp7J9ojinTtnyU1jn+EvazcXFs1R/nGOazj8Dyeh/+dDqPMYtNxvwtMKYZqWAgnBCjXM6MxEp1i
YRimzYZhkEREbS4nCPyANL3ZcZPAKreK9E80YaahKs7YDvqZL6l8E66+9mOKPMfjmBiW+dtzem5F
mFvwMZPjxCdlz7ELc2w94mm7GNiDh4mLyFd68PRAjZ4lI7QBBAHXk/iFp/TnWdjAgMnYvIHbRL3V
a81WfuMDQxeZkiOOy5jiP61Ie6s3pN24IenV92GKjT+gDWKUHjHc+TyQa6/tpymORa6kiMXAPfBu
QP7zR85H3PNgtK7qjm1iValtqPKFs1czjhSfn0W6oT0uQauBOlvcmkjItm1O9SAZ0u3XGZIzr8V4
snNlIznuMyDIvasiapw1gCtnS2V3NHoWz9Ztqd3SOqRqse4RY0aX9939ffc0b8Enk9xC4ITxagVM
1J/AwvnZU2zvpG3mLaotXWLKTO0BX43Z5r5++5lLnX7nUPSRz2tY5ZX2vLgwZ6qLHTm8xreymXUb
+1necibe1Mvt1Vl7himtm4SXzYobeDkjzsuwqLQ9ywMS+RpaipyHGL4OhzuKuEVEQ1ITPDZwxttc
0jv54IptgLZRv5/OJTOm+9Wx7bKFJOh+Rnv3GAfh5dlVoyDJmUVUl4UCLRKukC2GQOVp9hso6GF8
Ha6naGrMB0dxz9lUZao9y1btRXyieRhoeWOMs+qVPFVZwjpfzadnAuvuR+NM1uvly18ux/3pD7PL
eXkBEoUjpE2+rRS80gQLw41lfX64XiYG0WPQzoqLVQ8sGyAB5FtLlWsIkRgitLjiLtubGEdEL3VI
gbowyf58OX97u9yn3ay1Pd4Xsg+WyhOuSyeaS745WUDd4i7O6iOihYs5pJ5ul/3uHdp3W9dDaybt
ZjPUD/A9qAWm+9OappPNr5p4PPSKjqu+eq5OyhEn42HP0zkKhXm/fh4/gxd6MA5eEFnhufVVeA+B
WI5ANfvJ1ecZb6HQJYKuhIuY022xaR6lluFeNvSzSZjaVrE4cZg0FRZ2RTebn8paF/LkvVrWetg6
qxbD+Ah729TmrdTr08EGfoF0ebYhgLl+u6t0dPrFik3nOv5RJEIphhjXOujB/NTXYfPbU+tbnW96
TNd0RZXrUX2K4W9fzn/ni/WHgcwHcEXRvFkbtMlUQKxJbrrDRSB3yHEY3ilJYJxDpWOIvWRrI5fr
kADgZwGL4GVbOwJxXsA4zKAm64cF+sj7+aOB9zC5MsTrRBj6fFnhkyX1oNM6gQpLq3GRhySVZ+TI
swDZpnErrDnS3hrlytcnmIs+ijBOWycyKsZOaWK08jGWfbu8G1KkLciySgVGAUZl6+JexNUDuCX1
cq+atp2mswu16L+/HL/9255V0SvztdUJI5jaRK4M8NnACcymnnEImX6YFZ4GcAmx/WmIlk5zcInI
xkSn8ZLpVAxbH+QWwf/2DW+B0JaQKDasWOHOFEiQv6LYNmm0cBkAtd95RsWnEdoEKqPbWGmp3fLW
9iiNu5kp/4ifKVjazq8N7DUjN9fmSwyI+xNU4N/PFFUxXKOyVK9/6NVKgYrgzYAXSxbk2nvURW5b
yQbJ5WkHVrExF0FSWHkBApZkrqrAdqk7pBMm5M2aJ1TXqs5aJ6b9QaH/aJ6TpIYsvY3vVVgMeN+Q
EtNJrLLd4ILQdTSt7XADmyDdK6keQ0+E3SsDF7ffNp4pCAahY5xD/ZEUXCsuZO5NjMv1fX4eQ0OF
NOU4DaJ1Y13osOAiGmidPCUTrbQEVTxBv353/OcegGmID4q7NFovKvEylEuMk462OI2dISC/QLsB
BjEXepahokzpMMvhloZWgpq6R986l9CUVQ+f+nDUS7wMoaQKhSINhA0zQLu4du2IuMWdI9RaS17j
5grkYxloxNPtCA16aUHDg/TJPlX06hNF6R5Vumca25fUWwm9MyLaDhVJ6fpHUWDVeQvOQzlfsQTo
8vZ2Oa/0MMwKjeavygjU7u829VSYt92sBsmLXnN216qOY7o/OT56FxG1jAjC9enunXEvYGwBS7fr
J5PTtYgA7rTSp8vsVO9l08fZ9mLlnS55EeRQ4b7xihzkkpjyECpqwM17JU61qC2CoiDXLPdtvso2
3WybLZX/pUW8NkRclHPWgV8YKXQF8xrBQ/eWuswjvgtHxA2wxo9seF7I6qDQ7oyqG2k6SOl6N0fJ
RREzSFW9gKY24NNRGRi9fZfnZwxYEgTNtZoBLt/zkffLqL8LuNsOi9WkHLm3KvG8d6FVRyi0rLy/
olowgm4BiP7+frtQcS0yynC5PIlquvlkFzpzSnsSBnWGl0+VP+9Pk9HHsuv0UKHijHkRjcRyIbIi
GDXpvCbHAhLzlx3yz9O2cISXy46oBhBrHyw3vBCxB7yuocxXbYfrmud2hf/eGDO0ZEUdxzVKp/18
6ZJNhQuBjsTmq8EODV/u/nUfr5+MHqd9o5cTSnKoFntWP44DZvwtnQcpBEQNJ1N4L2gS1KXp16gQ
gQF/vKFH4mxvWN+J5rFtiNy8D6fTbIcmfMpCuH845dxjcLErI5bRQlILr45JN1cIjKWfRChYDZeP
zbBk6q8QASQnqy5UuSBh5q44l8LfNpLUpwQTTCHCKbiG0uN14jUYfRILAcF0P+yaVchRjCte6lkz
9H6KynWhrSXQwc+mJMC8TrOmfR2uI9oYK0xQWSQtdZiek9NVPSQYsjLBBuKvXUJrFyIUjSukAu58
0xpZnRgLK9XCBLfjgwQyW7mvGjEOs9ZLFeofxG91q/roPGuhFOjEtgizy9l7FRlXZFCJyWhShBYC
e+pIycoiNZ+1F6VNPovxZpMtuLLNunE1K6LNYm/Ms0he6UibrDzefbg2ZWiPt2JcGFcoaq4dNC/1
jD3spwE86zOYVJ8t5V/o69xv2Dlju4IGLHP7WD+w2LbVi61TgQOs0JmM6Ynm7b1Ht+vpsQcCNd3r
urrL1MyqSOPzWazYRJ1+Nlyg97o/T6e99Wbm4UNMRYg3E6VxXRE3aj/K2jBO7dey6/VG1I7VmGIN
Lvhv12sKPyWvZYX9O/XMxv+CSB5X0kyfX6hHl821mUlGmEA0/1eoRYRgyl/275ArwT//iF1pTMrM
TFfiFq5Hzro3XshGaKHbGD18UOn35XW82bzPfV0t1Qt68J9DXFLQkMEpISBBRGuFQXglSAI6Hy9w
ATlRpepO1L35yFidLuxtQ4dsAPZzzOWHWXXefoLb8af5VLHmBb+eoHYB+ladXYH27hXAgpODpMB3
xKJPkd13+DTdNrATXTUID8ccCo+/D9EVZPcCC5aygsa4oYMBKPXSNeuDCzOIR3XTHBvderKRkAqT
z5E+r9VU+O487afxYHxUqo6bENXR1BJGpXajSr4d/bhn5kcKHcoYphu6kGiI1ueFDuxRc7aUzqB5
lLrteRXN4xV0hlG63oqG4oGNlg5+1jFOzMkRTBOB4lh9oVeSRStxg4zTG8RdC2NVYVZl8dgKgftf
cxjQWFyvusor2mzZydEntlaI52luYtCAqMZupsDCbnzZhS9L0ej2cqCsN5WCWx3qaFH6xFmbOz00
vxb7+Qo7IwPark8r3alpboHSTRikfsdv4+2EcAhjhEIzzDXWme3207fzwVhkp/rca4DVD2QRAzT2
cjr+kAxAkVDmeqRu6aIyVfK2+9qodbJsfn0TXSqJj+drakaCPQ80aJW1MW+gWYZFUtiqu1Yk7i3w
KR731+Pq1RVCJVqFqKdu20MXtlukoAMDCXSJBx6G+3Wy5TFogCrA5EgMQ0ocOG/nz0Z4LbHTtLHC
Wgl4uHz3GOtvLC66JG1MWm7r6k5ITuNtF9/wdUWOM6Wo60glXockqx79dqaugUdTqP2k8574tltv
Lk0pnJGwV5XQzMo1dMyc3RNjb4P6gLeVCfLA/1LJeeOEu1pr+3ZJ9JgA0BilVOo9ptDBcCJuz/my
dmRdvrTnpOsRCsOtnmx903VacAv7VTVURq2eH9dCABeD8/FXyXT86Ogb/dS3iZd14+ELdtKSKxzV
rr8Oe4OGtV5MjY7TH/91359Cuphd29+ZwVjyAnSmvu4edAXEBn4Bj+IPf/vL39E7M6aX6fRT/0i/
xogHB79Kc7C1mo4sU+4JTAi/Eks3eolnqtWe68+Be2R8leuWeA2d1GwZsLp4+nYmoryV7riU5s8U
EWWslMEntEFHXahNj7vbiB4dIq89TVYL574q1ISqRT5CGPkLPqqQkgbyT7vZLS611j1vcnlj/rBC
KdMLGpi8EjRtEAH6PQVjr8PzDyvM5IQVqQRtp29f9ldHpPUDyfZ/3sbThN/fz9fhBfK+V4/QNVsC
9qG/sye3Z3fzewYq9EBcoZfonf46b8Lu/b7eaU1TAbLCeJ6P4n41OOg4SeOjA7XH+CZVngVyKUXz
ItEhh5A3lDwaHW/FeDb3inA3maYQLmKr8gf8x6SQtf1iaGV4QUIoYhJczUrnUWunRrbwmbcF2LNu
l/nI5ncPQ6BP95dd0RVVbYhsrkmQCt+3cfwKVvsbMpDvX9I8SoVQnGWAAMQEobuvBkWU5DALxt+8
K+Msb8CXtWTwd6H9ZoBnkdgAzQk03uQoy9Oe6HJvINjDBF7EeAWIqxGEIb5kTUIe6dD7dUT0zf75
mRqiPX2b9ddE+5WORDY6EilRHGtkqlnUcK7MIjTJ9Ptvv+xf/kp4vnmC552NTik7RXfpmnt76r/P
s3xerj/fn4zA4yI/pYqArrfx67NMXX/2kTUXR6psvAv2v1cfJMf/+dOfPwYgki3h+pC1f4CNzq/e
HTNH8yUbXKH0MU293bcRr6insye43Fako2/poumlkV6OClAvs8P9JWpjuYO4hUHuHYQAClQ652uE
ssMzdY1a662dCYZvUQQtGPBuwM5mNRUi2ruI+39Byn+AwDYIGQ6QZU36naty3dOFBDTLauMT0YEm
tCTK8sr4pFv+pDA+aXTnuZInlqc/KRu1Fk87+fYOeuMHL6fpEeqofUrH8yyNeba6rSTL7h7pcK0s
YB8q90ObNrrZv/v5hx9/xFTibi2X2EtDv1ecolnWGdMuVfclVrSzjBqfVKrzEK90TZP20lHSTSCy
zBCZslc7wxDPLLcEs9fnX/33cnMIY56Vvg1uIw05LVvd0MltpCEyZac+cUvLWmNphbpADiMBRSJ8
x8sk2USZayaOytx8/EJT1KzcPSS06NVvMDQktXH4G5n+grHuUGx+Gg83MBPSRHZ9IFgIbRP5N/Ns
yR7qQxUvdZ/KEFtUh17MFHyAV3k2No7D2/vlliy8o7e90+51gDH+7X6bnQEJZoRBLvi3oQsTRHRs
fl8v0i74xubj42hphBqNU4eIEPwj13AtjjMeU1zKPJSOB7Ix8jiUi+WYtRO8yk4F0KpQyO5K6ean
+9M8VBJVyOOEMKngb3yYmrW4QoequFc3tivAxuaeDRm4DLn8a3idTUIA0p9D67sk8waFH3pNXZst
oMO55Sv8I2WPDZB4oa1MQf/tYkbTLtuBO0XI33SWu1NwYb75RCi9pUFIITsLyUcCjcvd/QxgllkT
gxtmoPEb7Z92qqxkvpzQaembUVkSJtFQm4bYUrWaePTCS0dR6qMeHnBxGYnm2w2d7dIHyfod4hKu
Cwsae2mTLxMkwWCh1ALdQzDy22X2bPe/pXvzCGZp6osrWKFhL7hGkuDMZ7MxdBk1HSrS3W7SlSAa
91/W8flgnOU0fhpWKoM70VJR+8dxNiAsbaW/dxYNV/g02wl6rxtSJ1rDo0fT1VGpDIkPGfjT55fF
aptMHRSnsSAWeZu3hhBhIkppeOeldhOKqCmSJGvmvyJ0z/j8zaDx1hERNpAX+pWsc/10AbcWltvE
iS2wB4hYC4Jtp79aopmLQBJRNzjXCDE5jtaA0TlG8w3htSOrs4sivg/UW5AiZZ/HCftU+PK8DSVq
ea5p0PM2leXxvVZW+js1mQ6r1kpXIsTJ6m4hWjcgjj2vO4mNQvYNSukfL/cnOS+IEqXfEV124kIF
UOolWomt4APobWuWrCww2CbADv00nyR+p/4GX73xfF/bQWTxZ4ZZJHkovAzq8Ya3p+F49IWc/Kga
Y/Z+zCqUnOoxwZ6YEO6UzAzgWEwk5ua3tANcfmeMEToV4KtYLo3x+cUYQGxSMK2iTZ+V9uDqh5hp
b/6np2uqdwhtVRumFpyNaGrz1Tf6MDCpEk6u9eaUHoLqQtxFm4zBcrVSDvpGK8WEx1ZZCHuP6Jtu
beuMyTHVQ+Paai7J1ayFUtYiLbAM8wlkZnqMNH6NplFp8W4XhkhTYNAswrFjK8d28cxQkjDOboyU
6T2pnSf5kDcTFdQ21LRplzISUdcyARo1upXpVlwOCRZ6SMku6WkbR7SVK0KNEhIoXs7K05x054lU
33XJC5T5nM3z/rDp40rTI7XOi3YFs1Y/rLyQQf5GuCvQd+Uf0Cnod5A1d7nJH6efDAcSHxuN7mWb
CTbnZ5yP2h6a4bzrwiK7n4ev75Sl8FyH6da2nchfh6ZJDF8nXoL0x21AxApX7XjBbOL+OE/l0/ny
xYin0ShFGKXxmQ6EtulOcekhmlpPpJGJqeNwuCBCBDOJjGJwZBrT9WDMrFd9f10xHcsFEOVZXwtc
LHOlsIIjmNyGw2nrpf2lnbmcyWtLwl7q0FaGVpD5vT0Ct83mvdWtk9m9oSE2TqJfmgQhibgN5ct5
HuVI6CJjR6ulLs40lZVP21zPgXP/03/+9GcbykJfl0pEGa2PdwTaGG3YgzYCefdSlEL5wWQsPlfC
4JjWBRAUlYAxhU5ddVcSiF9Spcd4noAEWP7VyslWGvpdiQPxaWFCPN6vRnvuNmghjDtnUgtt3eFG
L6/QjABbdGGhdthx5OBurIhXozUh1AQ9AlPIbU/DUyIADjeYdJFHtCbSz0ah07suH/f2DtU/H6Xr
4IONG7tFZfGOGoFNR7vBVaHbqFUqGId5w41OYiEKcZCRqAv75FqAofN+m53/FdOozpVv3D4kgTfE
znvRjVMY7GLHr+v9aTMBbCrKiL44+OJ2ZW0XFA0OBFqrp1v+s6sioeKbeYH792n45fJfruh/sNKJ
1B9Oe5aVJyjD0pffGT5Drp2ivGL80cfqjYzOrJk2S2tlw2BMca2laingAPi0xJ0R77Nc/e7FpLip
oiZs2X+n++cZXCuFajPrGqwuh32MqM9iHPHlsGsMbo5W9zxvHnGEt/2Lwc8h2zT34oVxd/JCWoyS
KPtTmqWn09AHxtjSNZjNBKav4/6kkj9qVpGIIrGiMKVqnwt/00igPkTqfkQk4uW6Ac+SZ1mrASmy
iMDTkaCRDngNeMQsqh3Rwb7xGkkHpIOtH1ByhOPauYyjAb/plmCeohvTq4kgEfRb6G+T8kWGil8M
SKirEovbaC41h51tagM/FvmOTRpUjN0X79fRULqFpv6pH5CI3AdhPI9ABDn/N+AibT6nUgJpK9nA
KMEDZDVOFqk14I5jkoKjEAGMTAU5WAlRC3BSFeh35pt9+TKslCrjxYwCAPmDhjCUg0BdV562i/Vi
qJyczbw9AERAU34ehy8QPDfY4AT7TqN7BZOqsbtZi1rhMhDd0ZP4CnAqrN8c9teDEbTuNbUZv//B
ZJWuOmfa0OA3EmW1COWiTRl62nyeTZKLHOd/pQfolNdSu/Qllg0BP9Y07d7HbWOV2hXlGDhmkbd9
LzyoLtDrEGKfsKebxilq5ZJrw3TbrrRqJlUprQXaXeVx2AzbNKSogCULrom2+gMb1ShHkXUSmdjb
dki7Io7YBLeYTattE8m1P1WJcVzf3eMdS+i3jVfofZfz2rawXotQLM5fp9N2cW7V4liMHiazAtSl
aelbVirrk0b8sDwJdxgMoJw3n+DsJKNAFopBnI8NXTQPlSdhtk/zECwiHx23FLuARr7rXv+o95jx
y1h+veSHO3ved6P/2JYWqk6nUXFOul0fXnKvQ6ek9yMJTKv3Mgpm1Y966DvPuKrEWbSInTd1wBYp
LzOtVTo5W9RuH56l1i8V0wbANP7jquBm0DPhBObzBTKDazF9jMcUUTCIB8f5gsbC2uLBS/u6e9iq
QAGz3f+FIxZ/e5o9nM/DlZktAE1t9rfGKfaluom+zh8SsxBVuTwb3eQpXtUrmeao5HE4zdrw+m3t
6z7cMkTRZR7Fg5UNvmm0G88YKYpt0n0N4Rw30lliypJ2ah1AT16p8mNxoX12BWPG52FnoLDDkee6
79HO/XMKfkcjiFc0qwLsKgwxe4aH+XZizUp6mCbW5KUcBsLWhG04Xi/vl+fn9Eh52BHIeTL3id/k
+RmczxuhRik0WR1wPV7qWGm5VXkIw2SM0GkLrAvIf/a+wCM3Q9FVXqunnDU8E/S4NRlzyIXuaCNt
vvH2VLl+EXgdRyStOmMaG+BEJ1dfbIh/owZyvVyjk1krja9DgjXoxC4MNThja8N91PkWV6IMVFAj
0ZmuXb88LAkeE95fpkU+Xt6ML8ul3xa7GiQfiTqibZp2ewAinv91H+5mXyRaaLikmPeN7oT/KQqO
GNteKHFyCD4MB31g2wudYirU1VppTkHzENcCc48ZB6SdBrXxgzQLoTlL30fioewoRMqNoTp9S6UR
GqTJZQE2bJC+tWWXOK5tVyUyH5iKYf9p+IkkyZBRnbXy5bAAIIWgwdv+HSMqp8vl0/3dAI/qKs06
4MJ++t+//z826bcAjaKw5AJdSQB+M3FRaDIy0YPyF075SAuKC0ef0ZwEYbYpFxwjXcyWQJARptbh
0AgFJalq+2tyuFZROFQOpEN4kf00XQ6jzdTiuAo9YQy/ozQlagANSEPHsuImadSf8bCdomDgjQy1
rOP8DxbGXlLsVF7580P4D3rcJ+v7wP4BIAauZTh8m2+Z+VmtmGZcrhDiXn+1KGrmLwt1tM6th2Vy
1br5u+Iky0cKUOvLUPyRh7zG5cs5gGN2no7DkoNSH1j1OI71daWJvroH7hkCZ7jEqbkXjToD1yeG
Jc+nXlE4qbPQYE5NMyK5jo7uSD80s1Agk4eSeLVH/4XHZV2MWhNktak7uyusReVK2thv8nbi/XbC
boV+s9Jaj1dWagbAnFQ3YHG496Ur+nFd4ecJD1/WgfezYa4TIx6DoHHSzn+BQuBn6Em8BSgtci4d
1W6RPUWFfFBaPIocFkWvFdH/cTicHEXsSp5dgOvQrWtc4m9/GI9GVw3JY5/ji9Q+1DHAAwkFFlSA
/DTcvgzDeQWG2gWyNcrngRfUuLDTyxW61eRlXpeZkXRql9AIfCF8X1/TdaEMbaWxegF8zNwjF24A
wiUfu+vlYqS0BFRPxMRdHYxsfTd9e3u6nIwcojAlBDqCSa1cgBzsEgLTYG7CrGwp83qpGEFh858u
RwuRoOsPYvZAyAZjOszI+OhsEZvVsyjSctxVsvJfAlyJL7XrgnPYVUYeO1p6ZsJU6cST/iqmiXT/
E97L18t1/G3WZP82+UQuMoaghViQ6OpPr8OAvugReIBc6H0HhDLn2b8VrXjSsiCOUhA30FaMJxBQ
o8NFUesqHtHLlEuAZHm4UcrWl1EVTx5QdAhumlWUip0ZNzkupGgX0uQTXEDOix/HZ2rnF1Klk0+W
pyu7qqV+IwucU2myCs26wfOEi8dqHkOnm9V7LyQF8li6fSFObNYQ8w48oeRYre66EIP00+Ns/t9x
Jn/1ZcRWRjgrl6qU6K0cz+BCT9Ac7hxIeMBvoHrhecW3XW5AmQql9j1jzQUaj1Fa3qM9uPU4kTeJ
t8Ags9GwLVa5jovq7TKLzDgc1/x2enMLPRQpHDyI44i8pMRrNTGpiFHoprEDrjwGCgjfQWdCN0SY
27yPR2pCvgKWE0+vYLbFdprzyegw+/CsKFSmy+mz6zc5/+kd6yAutrohWrtg6oseJJ4XD8PLZpEA
2XpZpl2rPCQICM4mZw/5hqfLVwaykYAlIf9d1E/bNVzBT+m/huPf3s0ez71ogIsdfiWgERh+jgPQ
Km3ufcuqwjcAZQeJqlovK3MRzeWFwR8t6EeY0qxpf4ed0uhPZkdERqTGHeLdEoVliFh4olM3JDzz
3HuhB3QpZ+rTcbMdP/8K8M69pyenu4cXfXLN6SHCZFCbOq4u7hd5W6P7yTzfl28Xz4GchT3aH4/p
XanVRJpKrAXq9JJdITJ/3UK3UJUuZYCtleDKPC9qaFKvBMjXhYPp7zyp9FC6i6ZiRPRD4RGDZhnP
lItzxGwrEtn1SnzUzcWSMxDqd7j9V8gEfHmd/ROJMabyT6NrpezoW4hmRAs3ySm09E6IUw2NoXg6
2BrCXqvoq1yK+hEuYfX61C13BcSbeepd3yO3KlLCehxuacMm8yxcXuOUhsYBbrrZh6uK9EZVWh87
ctb0z7fh58vgerFHuKo6ulIdslZCcDDryifXG+mCNePhE3USnw3Qy2rL2V70Kad2w4yqoreMuAyo
lAxRw8YDEMQWe2gxVgw7h6D1gNfLaqebZfpRLKsQWgnxvTQws1os0ecoBrW5DabUzqyBy3OJMq0U
U0wcjvjR4L7I80ZDstn60W6CU0kbORX6PBqz1QjYXejhYYBhI4OR1BgC6Tkx89f1HIDk0cxEFyW6
gvPajFhXpatFsgeH0CkAx+a+YmZWEeulC3Bdx/e/zuIH8E7YnL9aNSyzkmt1wCA0r6MWeAiYTEtg
pYkFXa3zjgDoiMB+25/A+Z/X9c8J23vu13mMq2aJsDCN5zUiE4JuBHB+jIEljgQXFKW6OIPXxpU6
BaB+vdLixvUu3U33dxtPK0knQssIwX76u9PbZbr9PI9r+M1ttxQxwOwUeKY/0wWW5js0WLDCvpkO
+kvm3p8gJT087+cvbOOEhhKNJxwjiojF/pux10wTS/eebYUPhipQVRf5BHeKg474o2ii4IMHL02h
UiYdgZXtlwMplUkyfzFrHmqlwBg8FCloNqS5xBOMRyPU1+giHr69IDN/v14wTCzl5Z3/zmvvt/01
lavlc8+VCIVggh4HtINFqdXrJE2vR4G7ixfOzmE1kmMfJ5TrcSCSSI/3+zTcj5fdBrKvdomX3o+I
gm193i21roi3x1pTpdoysO5WK/KN5ax5iKSabLLETCs02Ap3F0+oUTxsnDA+U3GBnJc1m1ol0krX
bB4IjK5v4xkCsn6oFKUgDyXylp3InCaGspJqdaVmxbi/B1GmVuaow9bSalH/o2r59Hd6tquDZkst
fpaneVghXecRo9ZIRdTgAKEpRj6i1/zvjQyecr0WkLPYIdNFJOh1OJlNRymNJdKAVUgDioh0boBN
ot7X9KZ+nTfyD3/8649//MPun/vPe86FYeTRzoVVmU7vcKGZGASsI+IUfr6fV3qDC5tYNA0J7JCE
yyPEFwOPQs/LFU4oGafNQ5NKXYrswOHD6dkoQV4M57u8+vfSYBWi6hH8ljynGf7w888/w+X7w2w/
7Cn+i5/LLtt2YXARaipDI9/OgYzIYgmDC60IZZC4P0anWmbADf0wc4ESlON9M5oVFYHcOPR/rDwM
CuzGO+ZoqV19ylcrAnmz777K2SFk2drydam/DpMQ27KByLgIBLU0WBMyXgfIOyDbI/QQFGNbx5c9
9MwlywsuFqo+KLpIkSN0oT+QMyrbIkq/BfWR9M77steOVbXQNgNqJov0LKJsSdQhD48IU5WTbyNv
0eZkTb5Ec4MeMNXLDeAJQX8D/xtW7xvfBMW3haNtusYu9eRYrvZjqjqBxitalcRoHdfIabgJHtLQ
2s1qh+R6xoaGXp2YHXpX14HKH73fnaZ7oBHzUkP02Fe+X6lZi5/h8wXbCh8Md4M3MDyuCFJhwDu1
ZsDgKeS2k01oeRCNPOKgPK1zOXFnrbEstfnlSor22OEPSrVgrYjzC0EyazxhI+eiIJL49L+Mh1Wj
Ji919zGWW7ftDkG3w5b3NL399Rt17bRWWmmTrpa0n3SWX2/3/cnuGkBGksi+iX5i7iJAKTs4jTbK
Li+DvFah0TRL6u95WSixk4n/6uulE6TJrCB2+BpGjQfr5f3Orb0tdQOxKqEZBij2vwH6HMddVRC6
uSJbE3yl8eB8fSRL2GpDsDzPG+3F9ca+89/+x2y8rremnI+ieTCefQwFN4D0tgeIr92ETHuMLLK0
/lhNeow3BYLXhs61l82mwPD1HbADX6CagjA7UB83v8CvpubVepLt5pfh9nvWHT+g6kCKvvlvw5+m
7aXo/Eta1l3zhOQddsg1SDTO22YdXatbHlZSbwEQy5MEraqvMEekY8myxGUArZ9k8uQLoPvC8im5
u32D8igvAdYwokdl75OwTmKs/e61NrfuiuWZiwaMKMiO4AwbmLA8+xoQYC5eX1NWKJh0nW0UhfsZ
4ljzkWIjXOg7er2ZZPN9t9RGNZJj1yPJmnC71OO3zJuusn49U1/lSgfEIsB3HyFxKKaFJRTFUjQp
IoHfaHxlsi1rqPR6kHnPU2PNK2pb2yTsOEu56V7Rlcz1EzwxgNVWsTbzje714krWldHmbzZUq6XK
D7XAFdMhL1Sgi2Ufk8B9XbTWORU6CsU1MYBb3j0YttY4Uai3/YjKtxvA8CY12qLIhG9wZJUxWxGr
Vl+Wa2myntD49lgnoHudls1HbqUl/PopLbQTs9751yNzo0Igt2BUuOfL5d2ag+7AW0ljjtRDmmSP
56BLEjjSPVu8WWYVMvT6d+vHPf1hw1un1+8JRb1Ds5rs50vfKXeyUSbthBrox/NPK75aGVWJyKuO
8MdvG166MrrttCJibNs5FbsLTqRlp+uKkzZbMKjnsRZtya/GeeunTWl/j5h5gB6vW1JaUZbFgyBu
2L1c5zXL3mzMuaEnp+heKcq7Q7CIbHzGhVzW4b1lhDFwfim2miMqBYeY3V4O0kd1AY5NFUSOu8ed
Q7R4d3sVbARQ0LOyB0W1RLL/AzXgY/7Dt03tyovAW0URvDpiTDG+6lQ80hFQHC9vwDvwx/O8RSu9
bl2tnetE2lU+xzpvhkizzlfj8JrkJ6e2uaVqdsi4gyhd650I0/am8eoltkpC5V6uv/v7j1R2CsjF
6fa+B18NcQMY9j4YVJFl1B4g9w3oftm//NfyNa8EL5QjunfOwPzhj3/Y+uOFIMsPRH40hvFVqdgt
XeT5dJkgSoxtl0ebWbNoFOe7+10eAZWB3b+5ErxPOEofaMjA7mrLRNM/+jBQzpeUqKMlYCP0Ydo8
gVIsIwREoPXZpuZ/leDUabiiv3ERuml82Tnxmmb5mt+S6WaIQ9kJTn+szXbsacOX07DGz1IJUq/o
XMFZZxQNthp3gAl45Hh+xurCESFKr/LaGYvFtm9T3ql+Aw4AdH97B+M8yWxSCSYf/Db0X/JxZyvT
Xwm+q8ZVzxfc1Ieo3gmvYOxquOB5px6osAVhA9IHnPeq74PrVh80jrEBle7Rkctk5U+pir9KcKI1
jrOnVhdly10va61jWqmnVhWU3jw2n6WaXdWvQaiLEAFn/Wr8cKWutmhG6uRts47ttfQVviUUahdS
NnbvpkqwRzl97+qOnLLZIkJVpo7CEVBFwD4qf7kAeI5StvvriwHw07zZrMrnIV29y9O3M3GNYSGn
I0g6vBqPd5UrMCwXmsRllEYRZbAjsBynd9/3RgmlSBhiV8u8D5X+aUOewLsaG8ZXfPYwp9uJqmGw
m8phOJ1WO2rpDtouR335GY/i1y21WTHUloagmoPpdXxe7+rVa47QlBmmMnerlvVsQxWKNrQuog3e
4Y7taMuM3S4UpNRxa8TN8KgCea0bXqG5gbO4HPAdyuHP6XJH0QGt7B4YpKGLOho1EFDf0D69Xjr8
RPnfeH4druMt4uUyqv96zWPsSHrn3R8PqkCY44LG/eo0GreLD5IoeoH4Gyt2rcPUjDKiWu//O3yb
JychkJ/wb3bzf9ntVQShaBFCxPS18VWrOHKqShDoDRq7hQrt9rqf/7ifOKAK6NTz7g9/+wuIzUrL
m7yUzQaDl/lQq46Pg1Gw3i1JL0UOAqHzape2XuqvQHT/frq/jGdZwzBscOIKUdBZBpoi0biHohgM
4EhDlxoN2C8UwCp0gkI3jm/ALklN14mIVkQEnirYIC4ks/0tSrBAa5UBmn5Ai/sNXNWjwYkU9UAo
I2ry1S4KRa+rkVllcAnDap183kY1LLqxqQHtyyRrf6daEksH+3KGY8JitFdAvG9oGZjXzdLd+MG1
d2bOzdT3nXgesLKwEdQC2J53p4NNq0yYtYbjOS/P0f9dLw41eHEekYGX1zeNcVZRFb9gY1cQ9Vmh
GrxuWKnTLOE9JQuqIQr1kjJJBObmF2J8We1bItoOiKKm2Tb8+f/8b0+BhDxoyEm6YpYISJdoWMGM
IT8k+b2IG0RfNF/k6OpsTPuuFHjHMhQvzbr+F2hrjc4Ae8hTWizFGGU4moTyob/AXgy2BZN3+rYU
fQLoZlQ2ZNrqaP5bVcHRi34evqR7G9ImRVViuerWdLQOp1vq5BMBc0OT2nG6nFbeoLzUlmYuDHLY
7/kOmVyLncgQ+wqveoE75zpg3vLANCuE+l25FSKUiDXYlbCevkD/vN3rML68Wv5Go6uNmsfaFgaZ
X073t0WaOjp53UKJ01vwbGH1zg4DcukCkU6wq/nQdsfu7fivO/qOQaY/z6pX6jbDg9HBVtGjXjsg
ECOnhVIZNLiVyM5+NxzWerEHcl20bZO+vKLMKfNvim05GFe2VxeuCCyKD2VYDum8ghjPNZ1OFaLd
623v4XKNk21p5pIRp0Q+qyqiDRymw/5dnbghv502+r3cuYCD4OR4tiq8O8GTiP2fsL2lY7ijRbsN
hMsBM/3DulGkdzM0Sfn7dXzDGAtSXW4h4CrrqL8z+7yz4YAbf0oFLqlCrF/SQPzisbd8WHn4yqUi
iqgMzngbdK/PyiFk4fdnl9Z+NmXOJOA+uEbOY+2Bk2h8uV/NfE6Ra3egVPDMYKD45kOBf9dEFnee
IiB0iAn9R4k3RPUfnV/FiDbm9ZI4wiK49L5UwBFdPQ4zW3bYDnEWeQgUGCP2fkQ0vKvkiCnwHg0j
0nWdYAR4HGZ/e02aIDRUqwo2qiw1lGi5mxysrVT5QJ2lN2z2kubHwBgqU0UN6aHuVEI8GSUfbanX
mDzH15SiLkLNIA3ThHwIyhlkVLAHL1RlrRahFyEAEFeQLMxqTajaXJfGJKUBpH1FGho1JzYneYlA
iP+7n3/48UcKWj9fTkmm8SJU1NG8Mohmzmv2iL8PCnwocRHcxRzegWo2++EqQtWgH4O16cI2GR2U
imA1+f1mj8LJwQS8h2tH3+sR1Da79x5nxfysxlDh/oJX39RyKLT+t2xNru6tC5+9jQdoaD592oF+
u05WU8NSBY6iaXAEPM0PrQPnrtvmmQrQxzejnE08AAghqTV713i0aPkWiTqXgobj8d8MGUYvedyv
cfzbz5t6NmoebVe1rM0ucAGexnQXAAr01crJcozMk6MI3BHJ8O56t8qi8lz7xaV72Km74TyRcwp9
2XlanBDxCI/3f8xfxE83B6OMLirdUlvt4/39NB4A34Um9baOHqVsS1UTva5ncwMD/6G6f//2tkfY
8ukbcvKQG4DC4+SYOaMWf7T3PD9d7vCVtQh+Xc7Qp6ZIf9uGb6Mia3Nm2P1mdWKVNTFcXPrbRk3M
8RaKRaU/7fXP5g+furZACEa0x+r8WKqeHalWmO4C0yn7FIK998R1NKNK8MaIjaCNHb4iu8oNoWHY
SMb9Bd2r9C/Uas01y92sZ/7zpz/jB+B5gKpIPuRQEceM+LkjPv+etw7GacN0ZJfqDzzfOEoQbEw5
MUwKi84gKwadSy7PoC9gca5+e0qO1wR5xFR/+13mL86sUPvEATiYxeU6viQ6i+KHQZ4EuBiL0FdQ
evh1qzakrL7LTsaRKj1S6ecBJjEUH6U/DderzCwLO+kk4ShC0nrLf0ja1niivV5G851eCM6oUdLh
ZwSCjkFZQ7DCqVZVzJGf/kr8YOMn//LBS9LUaiP9lQ3TpshlytPGMYRc5da1Nz0B3MRc6cuKob6b
uMjSZdnCXhBhZuBuvV8Pg89QgI3lMdT4aq+TRsfZE6YaHp5u4xvYR2xrDY7GcX3EiNWtCRQ/P0JO
RnUsEW0moSOw3TqhkkwjFGIQqR54xmDCifwdDSEK4xB1khdyiHkGu/3TdDmhf3w9WXPJNSCeFfx8
vJNYGf4ZOMiIzNHIw4t2PpDRyH3LCjUMRh6T9Gg0UmiYg+DD+mGcL+UhUcxbh9bUoalaVj6MUHw1
DEDRvhPyRnnbLM6gMmZQRzPoF0fIjRFEE1KAaOdtuzhEaQwRugcRiwtbFDQEx9+Jpv8p3YKMhUVU
T+CrV+RKcM8vwOSxVfREbTpGGOuHjq3YXNsYQBS5YDClkX1Rmddh7TKWkksIgZJyHq5blMPCUI7H
2qKofrfV7VVfBAYFSWUDGdAKmZAsN6k9EjNaqrVOSUaE6ZNMjHDe3+7X/Wk9hcWD6TZCZRPpr92G
rpI8kigvDLEUGml/WivCyUpdkuYqV4MJFtffHMf5ibodrJ0WZAKiaJKSavYeV1FpbqW25Quo5dkq
WJFHTfqg+z0TGFP2U0chwl+w5tVooewVOorAd6JBgs0aKLj0RGNkjvRA0ct0MluBRU1NfMMXiBZg
Zc5pfB6A3siAsIkpFHCBc3dr53FqAyba6H7whbMRxuNJ0t4DWyvhBxnLY2Q7NdEMo1Xv59ktfRmw
r8Em1GfYlCrUkkkLAwFlFF7+D7ydgEgcD9PuX/fx+ilt0Qq/F4GD7RZOEjC/MISddFNLYSiL+pX5
5KePGet9o338TgyEDGVUm5f+vtdxD8ewHTLVcZ1CquUHLKvW7qCDg+FsLHO5z3I9jcJB3d1Opi49
fFwUysmuH/bgdnl5Maz+vlMOj0t5fqBME2ZRhSWUleBUF3gmuBPMMY/c+ZcvwxV3Fyv0pl2++zqb
dF+Tu9tphzPnvjTkiphuZp93yrPhd+I4q4nzFLGJhV4z6ePSAQQXlPoOpp5e0FUx+wzfMXH46ZPX
YuNb//iTX+xcxU2ffNk9qYA0iyfKiPAMQ7yX5ojeZXqOrboT7lHDyNnvjv+cL/f5hkzSOAwQLqZl
rOjUejmD9sGidhQHESZr/JUJtRDT77/9sn/56zwfAOHdTyfLbe5z7TazYIZjSMtRCH7gjHrOWxCz
+iGVtUOhaXSErtJ1TajvnX8N7ZmQd4Xzi297J1mMlse//iVRid6Lvjf8DDgAG4no5foWcDnps8tU
xCsAK7brh3T4ugmDC8Jfmt/bPr2uotbR5ToqIL5DQ0vrHDoROC9Ejh939M/Dc/rsq1rdet4P8U5b
X3e90Lahg8WLercwPrqpXVUviN61gyDmY8hH11dLsUDx8T/QMdhmc/RhZ8rwnsmYcyQzPlsHZp9h
y9TqmjbZw579dW983+c6v+KS235e++kwjg9ljWmp7UTCBqSh+79B1tSLxl6abo0OBi7a8/3sDVcL
EY2PcBA8iCg03fI1fjSadviuG697rTMsmnLRIRu9KO7+H1OI+qxVQVWHaJ51FQYfLU4eVK+Zul9t
9mgXOpClofPqUr2aRbVwS7dbl3mubd0mUjVrW1JFVksdQN6X52duUWadfVmo54onQN/CkWCh2w4q
3dJD6Cg122Fvl9/G+Y2l1DNWSg3TjQKI8E+/Pt1fyqbK+mJZfOpQDOH7kbMKcp9DD+E2M78XbbJD
XyH/82Vf9elYXRF3Q+fuXVp9btV/QWogIN924jELtZUJ+m181Upl3RSuJBFwzx4kt+3I80xfo3qb
zsvTOi/IUEeAy2UFgsVCkPRch5XiTWuX7gbt2f59fhuMJfbatA1l6ozBB0sSH1MridPl2vXLxOX8
RzLoh9dSuDVQnpAHqDna8ONxPiBLLxT9Q87X/zRH5JjoOT0Hrag4KKPfnPQGBlMU+3nK58UyKqtW
e4yN5XeuO0NVtjQNEnNUj0FR4bXEW5hWVKV6jvhUIvNs64UOMwOkVCetU4YQvKYREEWl3PuqeDze
13TTNtwZrbfrwnj/k11y8ZZl2jIr/m2nwzSRMw2XKL8npJBeS68O2HVoXxKXZKYJBaXS/m1n2y3p
xXba/i6XDJb0LHKl8vkCk4gJVQKVEtbDoaNp7MzcyBOezex5iKeBMZzeNYKfwCoAM1yPXlquvISH
xyQ+2dn33mraN0p/PRBBJZ6pMj2gMJlBseRdobXaqrHVKAOyaQyx2GK8ZbUO0lWL+uj/WYnm9spN
brKVSaVno6MPVbvVC0hfx0Z7kOWKjlrRuX0VoVMWwg1RB6D01IIsgAJs6+Vq5PRm9UumQWQarpxc
X6gATN2u0XKhUoiCdlnocfdY1QnhU/Am72dg/n8H6ATpUKOvmmAVqDCPVy3sslE12C9VQFNrCmxu
EtoozzrGtcwESJyD2u3S4EEque1VeYcLW7oKHAOOQDU43VLfbWpghtjo1Rrtsst1d/bQ5wGgsStg
NQTJyoxXH3cEgfJ3OE8jzUHwlrARADfq66jab3KoHAjBQ/GZUfRXLXYoYa4TqFwfIH11WKusLnSr
5n4hLozPiqvZ+tM6VTdCk2VhY2h3TODKWb65zGy6Ab8emA7Ps9GQXq2kRwix3Vk2T9/YmjG6WeRZ
1zyU6DPAjnHJL8S/SMn8/W2fHA4eoSYPPVbB42kdAIqDQV/Gs/Ftrppmui6TcO2D2fQONeizMfeW
7POa16KPcBmaj1ADnQGdlf1p8jWB6QkVoXVu2YlUNS/mfh6/GqvRnWsdI9J1fmVmdeH21fjxTLVU
dZjk/fP+OgLFKeWFjN8PTVXLAJUb3z836W+y0Pi1Cpx1Dj4zb+C0u9+eO2MAsWOCmGrw6vB55I7j
xumVqpcrwzgo/258FYSnLEU1Ip2VsU1hxpWoNLvtga78uCLsoV1sHXLP/7oP12/GFon20KGHGcuF
IQ65/qzmkMkJ7vfIoOy3p2H2s5i1a63b7bxn9UOLWVTc5u1q8kqfD9dopOK7tGixU70HuyUTojS7
TgmjL5M/WbLTqBbPnG1HKjbzJLNGNclmtDPu7uvt9r4msZXSN3zVZn/ydLsYv1nrE3WB6jXFkAft
BiDWtlffIXR+nN+33edpZ25wk4dFN4FzaTye90WWWZc8aKY60FXMmqUyvin1Ybb+YIxvRDv4QP1w
2z9R0QFxPuBz+W7r8bzXqrRXam1esDGHXDVidwqN38Ed4XoNySiWbi18ebv8c7LUdyG0YO+/5MMp
jV8UHdkzbCRdc6R3NidekLOd4tYv1/0Ro1fhX+xmk/aThbRqZbud1nsKVqfFVjLYiyKXC2w9JCeu
rgHDbv7yluLOwaFkM8rKGxfYIo27CKPPEhZkDKW7xeSl83kAIbqDrQE+OqTJ3jJcRLvt77LjghB7
TGu+PDNdIIY90s25aLKV7gZBb5QYc5qfxhu4H9zcFRm6/L/+OdV7GgcXjbWKkDR8HY/vYygY2i1J
CzAK3Z/ex6/DyUft078jsLXki7nWL2k53OEsjF2vFbaSXegHeUCA/Sah6JV8udC/HJDG2ipljWbH
dwOKlfpsh3GDovY7j8e/em1lG6NAh/UGha/Y2N6EV7YC8gv/zx3vls5tet0fE74KHZiQNVQlfFHk
9TiN7+S6WrFe0izhDmMnPo6nv+9nC4wDF5BP2o/nbZe4EsePuAtXdzXfH6qDpDoZR26YZEPldswx
c7W+kVmb+p5r5AITarvweV4nP+9LzQi89DnEK5YUiLGmwPBa9diUtlmaVpeeVuCjxmxKubQpVXpT
AtkuWAMsw+5I5FpgeUZkiFYjGHRbT+IaraVPr6VVnz+IMX5epj/PFTc4GyTR53l6K3pFe+zALHon
05PvWkU67DJH+teb9OTD1mHgcnHtWfrXO8VdvHg38iL965mafOXbsEODODQMDxAzMU5e8IiDMszr
JTkuCmMESdCeuF95WpB7zam/rBzS29+J7W8SklukZafXhM/N4uTTqqmvl/iio8mndUDXaMLuJcEv
0rLTd5plnBzW34brxTitZolePJpxWt66TG23S2voz9Pb3fa6gcLSgrO0Ku806f3iXcvSeqYTOrtI
TN6js/4+XCGkSVVBR4OxnZnZmO4e1F+Rxz5GMGys4lIyQEOJCzLONf+9MpTR4bIV/Yha5/2kDAzK
8iIV14YWtK3obyde5evlokwgCLjvXzBjYUyzFmU96Kl1wup+Gm9AsSItbazV/qjBLYxP1Jp9LHwQ
jTvt4Prs9tdhv1Ki1cpOYqFzz9LWGmNkS80/lw6bMO625IgJMZItHm5/g9S/TySdjOMVtimWGXM8
xDhg43wLdb59Yx/vh85VVAWWDVI9xEp4B7Tg+9vu6+4bZU+MLQyeQRUgLpZPZkh1qf3UyvBTudW2
UkQrXrBo8FotvZvYdWFHbRfcpT4Z7c9a0XkMZt4+CE+oQt0dL3eADl4Z92oMKp0lDIE70h04Evzk
PLxQAoERbnxaws1MPyfh+QUV0jkMxk84xA+XK0CRfpivYXqEVr8oGbuCV1Awq25A35ba8G1TVjgt
Kj1Op97FBzPEbcqGGRXKJmBrFn3b5Y1Oj1QpB8Xh3D44SNQ8iFPaHiYiwnDYwPEO0ZUVyRfljaDU
H19Idze9CE2GgNY6FpBvCFVtClLp+t0mS2v21UskOhui/9x5PkUYA+JCL68nLBIcJ1fdbailUjUv
LR5kjUMG8Hy9i1iXtYkykAFPGqdxLk/T4X6FwJPYReDAZFIiI59PJy3HhSvC4VJRAbXDqDeEbYQo
Gceii30bge0I0T1SdO5lm//idtldU513aE8z1Ri7rsKt88dkLDM8FOiERJxm8o4Y3R5oKN3l2Vep
WHHctYBXqTkjHox2Z4+haWDVI5CsdOr2Onbvzy/z2nawY8bhtUsvVMqMYJX5QStRrBU5UdoqoYqB
/oDDasbNFVoAfcW+5fTtvOcYSB6fYd1b4nGigTc3EcxchO8A9RqX8zaefFpnp2wTBgI9vfzgpPWH
y7sRa5TNtXtBaMir2nSaok0t9serWPfyecZ2h4tpYDxjR6jj8zAcQQ1ckZL1ME62pSgkr0V4UOqZ
3foSFVE74uCAxxE4Iyiex2FWgatezDQYF0Q8FOj6FQ+2sO9Eg49ZinybbmqlrhugSx1TtePBg143
0EsYWuVgCcB4Rl1qs+01vWDuC+WcgEseT5MnA7m/zXbYt11NYSwosUyPWOt6DhcHw06nV5PDpu7E
ZEKyajxDP1OER9ErtbamttczyAMjH2wS0tZSE1FjX3pV01JVal+QzI83pU8PkoutKB4GiTa3MrY0
MPJgqpjRv8fLu6tCMQD+tLOlHoEh29RAwmCfob0IbDoggWzbu2W4+d/2T0wnb59OUyiuSNeSkEf7
Mt8IMNiTJdU0RlgOvESdQ2C8zCaOqXHp607JR1M+nC1ZRml6IAfqcZLKEQeswd4oX2EXsLqyzxk3
M7/cgd/LkHEhEq3Xd0vySWspDCltNOGm3o7hOBrTKHLd/Ul/69vn2hJRZOKa1IEgZz+Nx/XjrLsg
nkXg0SZmnmeHfBxn/X0B6vVEHQEJhtiJYLK51ZyHCR6i3FhIp3ayypKHUmzQpA4t6HQzb+7+ehsP
py37Uintw3wvK/28mk7wiOnq+HgN3ZbXIOu1gDRaQHwn4eG6rtfzVrPMFhLOiyUWUDRzvZ93X14H
blMMfpjViwoGbrNS3eamiPQ0NQ5QF8pQ1voRc7Wm6MbujrMnc4T2p0CUxLyksV9rzLNWGyALzV1N
oifjMOSiURMstJTP35/r9OrKbulJUw0mPSI6HYokFRaRBj9KmhITQ4XVogI1D5gk6EBIgOXZdJxe
h2FVE4kbV4QmAfOpz144UKPxY4sljcYVapVujmT+fHGSZLz4gkIvbx4eSWoww33Q4cCMOyPuH6JI
2L94voDRgPUbRGH2ermfjniB1t5vQc9XqbbAsYKw3k/95ji6H+wHRgGJ1aaWJMt6MkWtDszwCemg
hARmMKUcSfoSyykNLZepaVhK0ziqTF8trYUwuEL0cIi9P+2Nh6wQTyJ5ItIKX3kCaim/WcCMcUuq
E0Dej2iPz7Oa7fH7fPcnQ2nlqq1k16blZdOjWKs3unT9fNn4RF2/PxnT0W90kyUup/HMS6rNQGY2
cZhy7V1m3GFwLZrF1yaZraJHpldTqNKXsN30Srf60Xdl7y+H/fumRTVNq4SXA2ehXbOnKILm1/v5
UwLCpHdJ3IYyhJblK7ULrc7S86oyJcuMn1bdnVhkdsc7lrcQsXmS0pwUhzb/gxDubFeqFRsNsfMu
9G39I0DkuY7wVya//JXem18dB+avFHP81dbQtZxdcBcjt3PVLaiEy1h5LcANhwewrLxfbt3+XptW
ZnxhdU61tgDZs5dCYShp2d82VyXYC1NpNoU6Km3q+ajZcaAGsEDLYRhAjdrhSOFTUzNDxws1QhH5
rfYwBg5Me7hQBkybfs42RYSyyJjJVnxVQ/XmkfY3RNsYpSqslzaSBGucWkdV2PsdJ2RzITtmXXOK
c6x9/DeOrkynizWGeGMxcV70DzfDetAqvavVghW1f5s9FGMKXR+bHDSF12F/3BTQqLTRXFtnYtzy
qtdn2ySCO5Y3oSNUDOiUzKKCsRQ6FV/Op2/GSxYOB/I3fWaubMuFqjr9+tfp+2ncSn3owg08vDq2
iVeoM8LJwMsIDWyJbBZBEsnSFtrEbMlCeQVH932DNNRaGoq0Vb7JaOx1iKtL26CZoXy0lxndMTOj
Rcemw7hFEzt1lrrPddCSTbR5F+/jbXhb31ERsUTq1p4h/3suGKYCAlfxsh5cKtTTV5fJHd30ksrI
RhPKkc6fzhAsue1fjOtVLFmebiZQogxNtAfLnCtEODnQFCwuxlhCFEY1FVi1ybzIdLiHMTX32VKE
TP5WzSqCI/DwReHuaGKWQajDkWWf8JyMIURrAdEIDq1xaCUXAjXGO1PobW45nHF9I8Jx4wq1hXa8
tCca3AEwtl1P2bXQdURepuMPq0cjQnFY45v2jfstAiNemoXUSmzhGoJXr0XmPiTHWb6kK/DIrsML
REGvwM/vURZr6T1NV8dhcWF1G59GkTn9Dswr+gQJ7WSmmY680WO0ZsbU2GS9jOg6KRfe2NpOGY+R
/JGl8+VqhYpk9kR2YZCmo3Wja+0JZ9GO3l7hVVm5RDrexI4Z8g0Gdg3jAYii97nxuG+6RdpdKXzR
9IYwSJRnjRzUoCMtN7VYimVj5ny2MaBkDAA++EdI8wcyagc5sbzx6EXpHo7aikm3Stai7Jjb49BW
w06TNNlSdgqu4IZdjvyV8mEZhnIrtYNQmhGJYpM53uhDN0fMN42oQ4SGvWqcl/DiBbrweN2/vCQ5
ueloRL4/sEeYMRvDuax1lCMcNDmXA+CL78P0PhgRiUZ4EwWm79tcIhi4lQolaJ/3pxPk1IzRGpWU
bEVK5Au3eLjMi4LrRSX90+16MZydps10JCdtDVtup4biiK7EaJIfx6vBE07Xu1FAjXYxf20o86Jf
UsTn/ecNRmapfzpbSeZZuaHofa8d9xZkUC9XIgk4zw7oae8auXOsxaByApHOpHZufAIZaVF+5tF3
79NwP17WFlzkeeSxVAtjvUG/m3R0tMizKAXKrAVF+sXvZHo5UBGLpvY74Cv1ac+VPcl78f43ub8L
kNfxBll6Q0VGHml58og8cDalJ4wVYLCf9gPrlKcEr2B6nqWMCMB144wA5mJnsabrsfPurFy9ES/q
RSYFiYFI2YF40W5engF1BjmM9DaIsHSP1fS0D1lVPqUPUmRM0HIqWAkd7pPrlLfxBEVwI8ef74VM
zPNH6NwHpSJIGTzUHLYHLlxQIdBrbD7avXU/ZKge/pFUYtakL34XZVX4kwfqySBeTyBEk3G2QS1j
E4WewfBZ2VsHU+obVkQSsSoOIizcBDVsrMN5QfM/AJ6e/NDcWJd42bOGqOUcGdW3HbrTTK+bVva9
ACtVgRZTCT68orfrnqJ//mYVxsp79QqwfZkVubHddbsUm0OIA9R2HC7vhpyKS1SW3okS3Ta/vUPq
439A/UgfpQ/Y4CVFYe2QcK1Bkzcb6Va33VrhOkBWoQl1Y/4UWYQvb0/jGfufo3qGlzk9bKUxP+wQ
6aeOC9u8kMgfNR5RDd/g9w+CddBm+hsG1xESSvlwrAUlyU6PKTahLkTXHOJUwtQl2FTqfajSByaC
F20Av87m6mF8Hgntz0yIxrHnAjZVBuSW3sKRiw99HIRtkInrgakDnWFM5NoryletGxAxgFg6Ks39
yf0PuPHWxTKAKq0mJezSPqO8b6OwRc9quTDURL+EGGILy1YTRSYN29JvTda1hl6KMGXcgeJ5PKGi
hgIbZIems3H7y6URk78IxiYIa7QMGK+sNYw/6Qbl3maYDf/0OvpcQ0W4cej8zdF4G3L9O/x452k7
qqsicCb3bozlDVuyX8HHegP6TIfPTd/nTPaHwNBM7hjHxAuqpfw+QVvFCW6UO5n0WsX4VeCwQgMY
hdmwfgVEJYQwZl/IOAzhNUCDyJY/SccreomgAEyGowXZfFMzkfpBDEwrmmxte1hERECwF+IeHb+d
92/jwVCgMjFcBQSikwl3hW/7F2xGF7ddwhKmWXCMJjikU4Lzi5yXfJ0y647HGbnOv+nCt1y190Tq
GoIdnPhefMVmy3l8OWO15No7VkQVKHzXm25viFe1fNfrg3HXo2BawfuWDl13ZbdkqNtPrGHOisAH
+B1cmJcVhqsgg0qBD38a5qd4fsT0ARqvcpM6fjp5y6c0jOBGG9asPLPK2FDtCxb9g1PPu4ivjYOD
GU9Lo3DM5aJczwarf7ewjprh0tQnGbYyWMw++GIEV3J9C9ql3/TsCqu2YSaCvGVoLmMLWW2ooaDm
Ybd5OKVEZ+fJUKKZDvJmCSXK2yfcAkOtisxsWGJe18YVzyJcRf4dj6HVAYBupG4BXy8Ft4av7ycw
gHeGY4vywybSZ+OsJT6j98gI0RjZmVX/A46ciAFCHLjMRAkDm9rzlkEFs8DE00LAszY2TURfg0E8
fp8ayXsRBq1CV5P7+V/3+QLM4n/cvVL97bxJB8NOl2ChoOQ2hc2M6IEIQyKJN53Ydz0A8xR75bKx
gTCbqNazlemqr36jrws95Vfc3V4F8x9ehVlvLgVs0tLdSDgluj4d90SZbTnDcpcIrdpPJLabVmMH
yR48ZDZVOmbQC/MXRG032ysXBEaH4Q2TOFcmMd8BrTiC9S/sq1hp2GGDZikGntfGC9vrGAaH62dn
5Aig9LfxDP3SDkJYjJeu1Nk5PpcU1zA98NVSmvzB/yfv0ly71P+5h+2JTkDyzrHpbEuASDYiBXrp
erN/mpV7FFA04r1ig7GApK94WwynvqyX/PIJgim0jul1f/U2CfI8HC73aV5SsjkwGXbBnkIEeusi
8llvOANB4bagK/mLzviiWDK32Sb4ULxdqIiq9uRHWW1MN6pyZ5sxawy7XWI9Ci87bAON/ioEQ3N/
HC+7WaxugHTdZv2K+hyEtRRBn7jw6HpeSZRJgH7qvGFkXHBdaFAIFxV7UkD3AX+92CShfib768t9
JQYhMYadx2Qsh8cv77fxbfzNyGb3wkMoQ4FV1haGq9pFJlKXdjIRxDn/33GktqKgBaCmZdbkf8N8
ueF0dqpYi2eGFUmvlxPg4maj6Mt5a741SnGxRqiNK9VGrmWzoCgX7Ut6S7a5FrLMM/evlI8lSqfI
eAVE7ABDeZ2L/2TGk94tYYtEwvTr/nCTVu53mbjieYTwau5is2w5uNzKWsRlxXAoNHYxzh9tE5FG
Z5A5V4bXVsbYvxqhn/l6djqSmjt1YdiPEh1TJbAAPhLvaPu2y1iea5wq498T+sjQPKXWhE7LG49q
VyyZJyqxHAWt0RewQqTS5sCmva69ghEQLpulIFGQj6c0PxiFUSqV2qu6pfykaZNkCmKJSWjevqo2
NK3Al6Kmbd03B+ObxcCbu2CLWbHHa2fdtyIX5gl6A43uICrf6p3z7vZIMyTf9Qkg0lZmJmg1sEma
RmVjiZjNUAqNBjQzICTLDY1fF0u5BnHO5zTjG6mQRuMSFxKzKO8udPS78//n98ZowX6BveiXQh8e
gGkCW2dbvViqq3p8TXl6UE65JtJdp93eZjFivT+HoAWXtTomzNyIYy8iT/XS0Qb/dx/gPNNlfM52
zS3cU66sc2cRtoaG1wgt9yNtZyX9iqVyYfY5uDyBPJIQMVnNMEm+IZL2htdreIyVtqP9dafi6W1e
hYAl5g2mm4oF0MIF3ravW0K8IgcLIJkuC28aXa2PvGxFPDkOPWjHb/M2F7ko9QYqh6UH/X8iVNn9
T2fZrbBznuvHiJGl+uf+vczZbPQHoW9DUfrshO0N8Yzq6uMwxPfFPEWYROAJ9ZsPZsMsG8kO1SSp
lQpgMzoqoXm3Qksy4YNBCsxd487UKPUS285smxr+YVwwza9on1m/0y5CSStDxYj0A4jZQ+tnTAr9
D0TchfpDz5eNivNl/bmTRmSJrgwLZ1VZCD4dC2CTIjeiKX0WZeCKDdmm0ghghOtBKL1chEEu5+eT
FbLPZFVP41O/WdYY1na/BCx4FHh6vz+E0so6zf/Hnp6PDMKeWKXAveBLKbhj2GI+cs3Qix2bfkle
8UZ/eR1v3J56PK8wjfRClaHNygCQ79goQbuDSREHazLi0o1mDlq25/YT0yGxH+o9t40+dq9IR5yn
DhTBiNb6YH67jKTTuaTGKrsIS7X0itkQrlz4+HmRME6/w00vov3P7bSuQcLQC9xwGUBt7nEOmOl/
zwvUqLtiMcu+plVluQr6O22RjiaSXzJfI6cEjbC7hqdVCeCzflKMHGOjU/a5zDFC9ehGbZyLgTC/
2CfgEJbfZGB6RcwSmdz99doYSZQoJOIKjgA1H1hrJrwe5BV10D3LRqnLJX5ZUg4gvKRJqZOv5/hb
83oEHqQMpdHzw20ow07Po1pNKtfGoZc6rtB/h+Vs30WBkqRHvlvGPKL1b4NL5AFg0+M4muoNMHwI
DFnqFL68zcz4+XdkjIus19grB6bNDetEMhkEIzi8QBsfnn5JPPLW8FP6IiplX60poViGlIcB74Ch
puolGKhyWhJoKuPJzqOanlL42kwcvj8fBkMr5dVSKXJWGSFbyX/b+FqozOBE6aqIedPW0QYGRHhs
KLj02wg+GBIO9QehxHkviazLhy7yH5luJly0XrTz8hkDb1MRusEhT/xfWxCUWdIjS7dOJ6j+TdSe
eLKxgKZ1oKWP5a97DYFtvw/iu5JwEqUzlUcJZZWhd9pFgq6liObH6lYkMieEFvW4FNSlKmIfpV8t
Ky3qpVpyske/L6YiVEkZwDIUtJsgsYYknmtBokyWBNT+om+CkVXG5DLlMVW+Ps9QUoVVCLLRUQve
fp0j4CJvV1+GcK1wcf5fGC9DrmDzdb7RYV03rsRT2GPnw5S//5FrPHvYzVL4e+G+fCjY3yyxyWw0
xEA+1w0xES+DZy/n/NsW4FIm8O9Vi6QwvTB/N5bLRviQJdTC2/h1cORzH1U3/VKpcNZaSWBdJp4v
ZE9f9xN3jzDsEM3Cyuoobw2IQ94uEb8t+PqcJIDc5cUsNNOhOa5uzpveKoRoNNKpFRHHLQpC0doA
ugPQmPy7lrmZF0tJ79xAvPTR9Sh60/Jfj5JVmuOoWSwMNgxmESyqkaOrjhP3KxeqklQQ2Fuqc6Ur
xsaVS9V2kYu+1QlqdRaaI1QA6YbmOC6HdhynWV8aXlmhCWM5BSerMr7vRRbRMAH2s9xco7JUuFZN
4Gq1A9cGrlvC6LABbN5vrQtfBb4VmZgsNmnMLPDqWsGXLLMP/QI/WmZvYdxlBCHH6Jt4GYJxy66I
WS2Y962GlfPalz2bNeKQTNjbhGzJOd+TGxDJSleCMrgv5fxYMicwEoXPA2edYbX1zVIEWFNUfOdt
ErZcqeAfOrj3Mcx+J8sLqG6Cc6+yyGytvqxeSlgsRlk32Wd5qY1wflszo3y06yL6JbYdCsOnr+ul
MMDtOrieEz5urSgKVp3NvKoXgfMGYLLrsiVPOKuqo+H16UL4h2qi6ba/3v6neGkklzSiwPg2KIW5
MRAsE7I5tqPw2DNjtcUSMexsphiPbSRG+fpju253SF87tJFCFnT0c4zyiF7JNZ54lQTeSNandeiN
bD+Eb3i79kps0zoiXFV2Gt5ptX2lyFyj83GLUYnhmcJaU0QmhafwV6M72vwUlMrjr10XQ7C5v1yg
Xet+WrG5VYkL/k2aF8nKRojMiwyTfQCvZuVdSjsf/LEQlsjCIG9I4+gYLNBFvqRcF/zlEBf8t6Fz
2hty06wMX1BAGgUzcZYbmZioaNBVKOTGr1TNEnL/OzLMeS9oWstgIGtg2Jb67qpYolj9WORhFTwV
bgq8Va54vWmsWg5NefQAjfbQZpNJSBQ0w4Blb1SlGGLf6hrk2jFSWF7uYjonhZ1ftwtyTQvtIrud
kaoQGTN841sjAjufomhTbYSRouiXwwAx2Bfi92BH4h82hsVbRa7HnBRL5EGGKo7qvMrFCgnjtel1
SaZL1xnGel0tNYAK8vmBKn6Z0g2dsT6Wercgy+2Sqee932XEpZHVkRzuLVLNcsmSoSvbZom8IW8z
6wbpLlQOK6JN7C0WdaOgB70DF1pVxfkSZXlWGhD9Jl96c+IUghFIKZawiXlrTbPQrM5cwiS57VYz
FmGEhhhhug30YtuALuWSpvhofdUqo03EABCy5gEEa4QwtV/MsDb/Egs8EuQiP+Qez6cTtYhbhiGt
VPi0+ZLHEOG/gzWn1PpWmlaJrcGsXcYGU22lDRe1SuJ9+7ctOvma1p4F5AE/9G8megXKsQxh+U35
O4uJsl3KCuaW0dwXUT6od6X4O8cvyrf88GlDV9RZ0OMqr6xfDahWRnBL1DW2C3Vn/yYYU9ikdeV7
zaYxCIYFKLPQABnOueYhqyqrVC1bgu888orYHDHzzWo1EjHbGCc2LNpcNSqRTGwC8mJYOjoCYYXb
4hLpVTKuVt0eRqc4l5xLaIwHsBMB0xpaSpXuCbSwS1Gn9CJlO21mcpvvR69a3TQLp/aR4QTrA8hV
l6/ePAummevqDxceNNyArlzKt5HT+XFgR97L7tdkADZWimKFWKNUtZRtsxIY/Dc1fKN/DlCu+J6+
7t8HIk3HfwQ/huqRTpf9belfXIfTnkK6429DshoKiiO5PIPDd4Hbb+mHRKcKuIOwKHDHptTgjuAC
B8cXmaVrcfAnbLyJVbB3SGsfcSefLl93KV4W+AlOb+NPNISG3voTrEH4J7LkT9TiJ6gBc5n+icN4
hdbuKa44nHIrdgWx293CeNQQ4Xm8Wct3XgiOhdYyWzrpscrkWIVYJ7Ug7L5vK4v0VhZiK/E/jNOC
jkIQ4L3NN+mFxPnLeIS7l6zZhd/ohUQXgZFm+RdgX97215fZlje2xrG24pgY+mGEiR4V2k3tr7sX
2JTUM4kbLa4FPnOLh6bmaF2BLiy4RARgaZzb++X07eVytoUqjwWhTw843fZof5oD1mHAkhDSSSml
v6MzSe/gw4BLWsuLDTfdNuXGUW87uanK71NVaSFqxA9QIrcwjh0FH63nAfyw2+3yRlDZtJB2sSrP
Not++sp2QlgDhZke0wnVb8P1spsfvVvCksJtFkcnS8ker9Juet+fJ9zWw+V6Hq5TWh6kGsT/qFa2
NjkUm+T0oOQrD6I+pdO8mwNLRXp8cbnw8do+/u3yjlml9NhFvLdLisUNZ+9D2ccvS7tZmtJvXx9W
X4LDU+bGqJ/H4cv75Xrb3c/jLb2juXhPJcjDVKeGwIfhyhrDa8XacNCdcgLQpjlwLyUL2zmVHza1
nOqZL0Xa6hI3DPPZ7dIeD8eXIU0FCONUTSypxmMNwY79fAO+JVhoUDy72JBaeptZiuYVzss19tOl
nOm/ypS0P7x76QFz+QKIKq7FAYfTaXyfho/ZJp0QgTJWpq4JAfdBBD06HhJULchrIm4oFgGUS4Lq
9jH9LlViH/HMq37LPmbpfZQ2OT5E/da3NIi3eZXk0smOXLry9KfVDXAAEDr3PrWRQhfP9+Z0WDEn
iqBGBHOa7TMYbo4QHMrI9x+0HayHw1EPrDzK0o1o0gsvxW5WKev2fj5QPcWqtVyJpQd0zOKdSY4h
XTg64fzjqjcoprTqFfuIR9Z0ll2KVs4241Rsau6j9SsGuaHphGrH7GKRf9cNTQts1X3AabacyfRP
1A+W1IfeU9+Nb9PBlpFKa/P1p8GPCxcw/SaIZVBbtGqzoWU4hWH/Qb9XxpgUa3OKfeUBE7ZFqGOw
tVpajTd1fF36FbVTp9WOVOJtyml1j0F646TdS0K85EU9jeTvack1xxUXovJJW+vBSvvTVbblxea+
HrugKl9TOV68sVUU4+izj+tI4Qun75LYCYQ+ts3Wtyz1s/bjFk60Kny758Sy9m+X89FdML4T6ZVk
IvLi82CmOZs+1DKLbZoN1qcVt+xk0AprwYqPeJpmsMERHJEIkhwaruYGY75TiqXe/B6F/bWDuNKA
IrXz7wrdygYJ2agTssE/B2YA7Pj++M/7dHuzjKGsiR+L8rse7vRGVW38cBcrOtkwM/rYzDCMN7zE
a4G/6iOGi3+B6vQLJHURBeQXxsPuvTDd0/6dBk9PsIzDJvWGCRpBQ+mEd6kD1w9H+kCUq5d83OTh
VukHN9/iLetHyD7dTm4e2QON8YYb7mH2gUgoH4I3yp0VatpBjZDsxraD5j8OVwCCpy+1vCZYCtQb
1wTVzuo9keZ3kUq0qMNJ72YdR0TL71LOaSGv2/gX2g2XJq3DmjLWkh8K4aWNuD4MXCLn9GL4Ust8
NH56m4UBi4DELtvwohr2RKte1Or7XtR0KLfeFM3b4OEZclF+KF0I+/z5Zf+ePj6Ze+hW9ELwo41I
V7Ul1gHmxPWGmEHzpjlclUhj1N+XhDLsoH7L874uF0aOVywCZdCSPPksrIRA8lLFTi2Vqw0quC3D
7cvgTAxSoPQ/Tetk6ejif5SbHX47TdeVm58O64gNrzqPYxXV98VFNjlz1RYXfl2ejDBPHT/m20Mv
pl/YBYWLsPr6+3ZpS0ZGnAhGULpumx28IQkgM+HIO7a0jMt52L2PX4f0OGUVj5MGklhpw+JhnPb7
tlW8Eel9LeJMV/fxkMWmH2pibdBsjtGlnY9eCGCDvGPVRrtvg1y0saVv3JpN+jcTedEMS/8ZnnaY
WI/P1+8MWMxlGwdRppyrrRzIgvn2qEwEv3AlI2qi6QHZC4EBiWaNkfx6mNNwfrm9Tsa8ej8M7BZr
TD3IFkOOBuv8YGXgbdODGfY7rSsLG8Ws4bjZv10ub26rDidInOzgxnDbwwOSkR9nzT3PFP6nyR+o
CzHJ1jNsjBeCE8K3u9tlN80ylt79ugyzzBF+AixGCEYep8N1fL/teL7GPMLOlxDFLyFlQqhf5EI6
0lKncFFhgdzb7G0/fcIHhM4mLcAtYqvJ7kNBDn1yEbRCyVt2fC/XA+Vmnq7D/lN6PMr20HgYv3Kt
PElQ9i/pT2nj8FO6EvTh8xWqTag8YrgC6hVG4gwRd34huDPRnuM/HuZHb8c0e/Q/NbagDlOuQlvw
xPOLn2RhqkgWTJ+8AZ4bp/X+dTLW2YV1lj4NsX+aLieA4vJ7Mv6WEhGaQRhEJB1m1YD5MycnrpLE
mE3V6oGi2bxfoL4HDJ9474259WHIPrQMpXVdAESNtQ90XvvT++veOBwxVqiGBoXjahRmE8oWySac
LwLOXfeLt/c72ME0LxJ2KWVOxJi8RMgVXLZn5L0C5P4EQGf39uxO1/REcnFmobed/1Q+wfMt/ro7
XV7oX+Dc3JkaCxWCFeLFfvwrffV4tHQO95u78rA+NLjgH0zDvZVJ8lBTaUoP/kZ6wFq8qMaAYc58
TDBX9G/Ox5XsYivRsJw4lso14Nj9z8a/lj6DWggbwNpyLtuZdQNtLu+EoR6CxAvu9Fketn5fazXa
mg0r6cKKR6DwJXkX7KoH9ar7tx2y+FlqpFKzZovbbymWdqBqOu2/zVrK2EChj2RkLYjxgAD+WQe7
i2qVy9HFCGMKjs3/sYtAl7tQl690NRtPmC1BTi7gUxoMVVeoLWQgFM5ELBZr21J2OT3BmVYzdSSA
1ttUiTe48XnB+6zXRiDZOJKu5f+EvzA2vQnTkOHWeEGQSMCiGmNFzdJzy/K5bXMrvbmu7/oHjYv9
/CPf3i73STwHxoFWwhbyKJ3ND8/jM2NIX6tuMIfckubArNyeUx4rbZfYcbIQ6tjEWdVDrRalWlgB
l/PsZBkHXugDd8gkfO/homJZ5+26P09QWmgok17pwv/x14T2XmtPzmqSZF2Ht9lnPbraf9JdxrrL
pWMEW0Dvuqdfhyk/nS4Hw/wp8+V7+J2PNC05U1YZW5/vx2eoI+V7CVuH6s+QMmHcYbDFdWalgVBW
jK87bbdXZvdGeugKbQrSvJ8G6CPrfanxDB10p/Gw5jvllZJw1wgvNh+F1sCjgs19sS5fnWubt+OW
G6BxotExCwsTv15OhlpvCmXkV7kYMVYOxijV0q2Mv3/QpuxHnl105ct8thD8N+ZbN0su2frOOm1t
jJxpnZwvvknUcNLYiV7JEZ/80ssG7AvGwyZstdrbasHWM93IRn3LWet4Dit3qA2ihky47eIg2IXT
GKRUBkcV2X5oLJjObC0EK5Q4a4Ff0UhNmEMZnDzhlv1f8H0qXRyV/du+T6HhcOX/Dd+nVL9RcLwy
BV4mrbnoQOvX2DgZHdbhVUXJz9P47vUvVGEYSrdWB831F4vK0W2Y6TPnam0JG3Ua9tfD65qVWmm1
XS1fA6DMvt2vlo4ql2Ie8ZxmXXtPEi/ShIp/y/7cEvgwzkmrSF4E/Sa7cCtXumj1c9NIq39/Gl/O
u1cil/+M/2VYCtpCc729EmkIknl9mPzjWdYanzTaDiRdun9/Pw1bvZS8VHfFMaEmEAf0q6U6ZM7e
8y5xey9m8SUOhHHWFbNiexmu0+55fzoBhYCxdbW2cdzWdcaMWn3yC9GE8yXdfYZ+VmxEoC2cH8bN
3oe+Qy4DqD0I79zZflwdDM0yNGkDq3xrSKZYGgD0HVBNXnkYCLobtyHT0lXEO2LaClF0RkVkVyLN
RadtFKfWzqC/xzM6mAcI78zvEf8tlqfatnNd6FHzf9c33hiCbZS9A4YbreaZBWPiz9yfd35KSJGx
OHIJNN1kDIDpjuyk9Mrd5nfjCA0r0rsBHxfi44DGFpPYUtODA2V+IPDaGRVwu7y8oKEfFmVPp1Zr
Kft4Oj4jnd6OMAQ8i/3Dis7zoaXEDgfo/QDI6NI6WyiYQYAq8QMmB8rCQKAT+kbYC8lrj7tQhr0E
Plt2TZnNRCwFE272jnIVZc1RbUaxXeZXC4jTxFh2TAOHyvVQVbyzMB1EWKYCPDhKG7a3hkZv8Sh4
6ZLZUtyfMBFsP9gkJkKLTM+k8cPgC5p7Yu55J6iRh9sguIT3J6ynndLTCuOB5dm4/YE4zAeugDgw
OPx2cXHpRXVhEq3nyAnLABqPFYkJ0gcr6l3vRFK39qeZ0iYgbPhUDMdxj//7t3/Nl2g8Ay3eYZoS
RwzMWxV7dnhGIcQyfw+NN4hQy+KFxjE4n4HM333obPQv+BJoETgbCAi1z56CCOix708YQ5vSQ3NY
I6fC8VA1wxPcuEiOebtFsqWK27VDdrzZ/L+O8yJ/2yc1Da00DwP1IXNjrtRYnNh78gj8zv1zcvuE
szTGaMQYXoy/jOf5UUpbYPBpnYef14msfzlP2fmliYAbjpKJCWCKqIpGAVRGUs3QEF0YAnGCXZua
SGWM0oqdaALGcx6FktEv+7dEWoqERJwGRrZLvxBmzDsPLywuxoZUXS/m0at58Dg8RpEeo5e3Eilo
OzeGJ7majctpVqEjBPsTvj3NR4wlqT2SY1XGWHl82J24AcieNn2bbd6v5g7VcofyUJW0cN65cd6V
mEsbqjrEXOiGPw978MatwSpO6uJg1Ec9e9ARbtR0W24cqpAXohF7BJRof8Hx3q/j2ZDEQlzMNqAI
HC+I0lvfzofX6+V8uU/GRRdKNMTy5326XAFKtaLzWnnmgsBn/n4DVQkdlRDBEJyGR2p+MMFLvQ7H
O0RQ3i4rcxGaQqJiF++ocb+6Lj6jPpwR7O/9jUfZv4/GQQURRK7f2r5YxoTaPvkUxBfLuJ5NFl/1
0h8VCO1pmKxTEmKCoeegAPfA2A1R4lsiSkwaVAxAQP7y4RJBqOJ3P//w44/ELvx8OR1TTgK9uJkW
Ha8pvB1tPwpZ/CjkYkrYvcftq6EdSqFqqMq6Y1bn5+E2vlnKIGwJEJb1vXyeL+fDfThAebL1Soff
RsRilTA5DKmQs+8CDcTDg2So7F6MIVkH8HF9e0d6kPVRqi6WsJVnrTaucBGdbN2vqH/j4tRyYoJZ
7W3WrKBfrSMuhb6XZIRJ9bYLL4GhEII1U6K74sZ8uc4rs1RJLW9hr46bvrWeQanrO/WmbtmKVt62
LnAnpc/EshKEPScx/ou63jjbPlsWlJfh9jM0VPoDWNl/3f81PUIupCPzjORfygP+r2/DdPsVl/Ur
TCbFbY4obSYtLLBBXcftsc0b0Bo3oIrfjFYbvLOWGWzFVlXLe/x5PA6XHYSzMYrCTqnQ44a+ypUz
KC4DVGLQE7JmALXyJfKhNq30jVX10hMoAq/PgrIy5Kbqkwomca83OX2tUBfoOHv49PsJOmLwLu8T
casu4Pb5mmIiql3W6NYmiT2mEusVq4wQ4qvmbyssaUk5oEIKK/562Wk3u0i52dum1OSxXVIvb5el
RepYtXnNuDFKUstn2AfklGbduh6xPRhDaDo9l5XtrYM5DuZV06duh/H81lnsw1XCsIKiz3QIi864
VNvBEuyeCat0pQuVIrwHUkX8c+IbNHw9DO838w40dWTXlQvP3cZYjriSRKlQpXbV0sdN/P4W6TfP
OJ1eSLykxEw/xJZB0cTXJ7k0Y5SqjV23Rw/b6rdHpy4GaUOeDoc4jhOF/G25K8KZY9ohT4UeCsOr
qOPQAzcjECE7XhKU8EANVIIgkp7MTD+ZRtzJ2JtO2ktVqEGMQqWreqrKVfShTESvLOlrYqcrWzRM
LGmptdfT235Cb2xLk3zn9ufxbS3g28YvbWPPxAoMZrEP1Si7ZjSnUmd52h7ZerZtpe9Pm7iChtVZ
dIlgkrDNLEeyj82DPuWQG+JRSsVdCJ8rXsnBgj/QenqVG6jyh4EwUYYlgUeHYDJmJswqjCgHgXkb
z0JWjKekjZ1RUnNoNAOy5na5AunYdfg8AjAS5wo7Z8hOr6Io5YoQd4YQ18vRTf2shBMwNj6Pd4pb
nKKKOF4Gotcdz4fTHYDQySqyLpTYeh8thEmEWFoBdxlYdI1cQz4Ov0GEzY/45+kfWDjw53mByzYK
NDUrnInTM9ankxk+lCoC7bic3yxb4/mOGskY1TlHPa20Ls3qH/zEHX/PlSutnMjT5ehl/HqB63I1
3lAcz8Vxeg7K0WZj35Iv1/37O7VCGow1NGEAeIhpgON4vX37M2zvny5X2mhjc7MwROnBsa/j8X3c
TQCkeN9DrShyWGGqkfxPhy0wFifnJnpryOOhDQoVIx6jYpxbkelzI0UjuDkA/RIANwh/497qu9Pt
SnDV24lw0JZ81OF3RG2mO+yvzA8SUBYrh+1iQj29GbzRrvCECrDl1hD0Oz1eV6p9aAs5Pzwv7OC0
e3p/Sw/SBIkGra1O302NMb/Q8lFBUV8v1/E3QGadYF8NCZO/gQqK9bAjCKGigtOwxz8GLKrHySNs
H9vvTAYUknalCle08dKRWhAwWzxfDveJa04Oxn5XYWT2BXqJtQ+sDYZMOduSZ9c2sUzBG/tCLNHX
4X12KnZfDYkKM8LWrb1Zjk0arFOqlE3k2T1q2/RHuZDc3N8ERpzw5N1RuUP9yJE1aviWhufyOabe
OV+eDAnLhR6lV6fUGwtiyyQHT+NxRJTYNcUMQafdq9uq35zjrKOul287VLSooqe129/kauObYpM2
Md6iOlOi5CHLQoOwvFu6VLysoTEnOyiiCHWXN0/jzbTacLw+jFcxy6JC48jZ8akYWxZWWIaXyckb
vvhUy6KGJfySMap49qVVKKY4W28kwqfT/n2a9dCX13GWYwRQ32axhMDZ3jEfi6Jx47CEgJJk0Y8S
MHM+8x1MmiV0dp3hb+h+GWo1XBusaqlSms5zE1Ip44IqN35ETJyc4UbpbmJMGi06U7rj4jElFOuj
ETfv9/3tjH1b6JEmJBqfMTWKty9Zmy2Js4u676+zOT2sXtRaPat6jI9KhyERD48iky2QQfQ6nHdC
ObxCjZ9rEZlkEKUr3SltynEZ0C3j8zeY1TzWOInBje2slLlbPeqsdwB5bjubutAvT5XWVyQOBnqR
FlroV6lef0ut8wjHDlrBYVi9LfJnK0VNui9T97FRb7u7Lxxcm4SBZoiieBgD3dHxuv/yMyCsj3+M
HKl//Gxc5EJdDX2W4GwweJwedZ6uIRql9hqKWHhJJgjlDsb45At8sW4MGzTd9t+goGnYG15EoS0m
jr+m7Lnn6941/F7TbJVYAckmSeRsLnvXYd0ZycURyTAMrmq3f6aGyvPC4fBv8+0j6k1jwF5LtXXm
xmnnSnJ4aXQ85+GLfjHJEqa9NA4irBRensZB3Y93aiLtXwJfMkMODAQeLlcwrU/G9esLdXlYPD/s
h8x+nXHi0tPNQh85ANgza7l3Fg3J75RSbNU7hr7E7mpenabSLpe6id7887MxBmp19GDBvRa+1KwC
8W6bcysijc9sAp9GjEWIh06QhxmHWiuV77rsPI6GjcLnif3eeo36MLc+EmnUOKGK9HqZfTKIB83a
BVFBpHTOF2wJi6EBdQOM/eh15KkJHcoftO/vfzIuZC+Mtco762BZX56p0puqvoiATWwNqRAZ3zJE
s1dKuc22PbE7w8socv1s5OlH1nhbhepoPe5j2+UOtUpWiKHKYzO1DY6ttb5cB5PK5numZmsdYabI
bIWMGq6FCVt1riyF4m5zxaBzlrdxmpFd3iu5bMqV0Cq86tfBuDGtOIna84jw5z5Kzp6Iu/emFdpo
g5ZFcN1zCr9mluDSe1lrK6OMfoP48nwEPNQjfofb1qodZz0GKYMT2Ai+h0QoXzHEt9fWEUeApFpR
LwCWHIYy6/n64vwN8chiL4Vk71/3C8GdmVYDtezkqMv3J/Opz9UGcLbCPcIw3HGYDgNaFVZ4Vl6K
PEANH00bDCxTPN30J4QMoMrKXf3Esk+BYfo0aQQNE4zMMhz2QoTze8JmnVLNnI594EDAVp04f3j1
5t+6/v95+9cnV3IjTxD9iyiLQCBeH7slzU7PVUttXT3bez+0HWOSkZlUMUk2H+eclNn87zfgcMAd
QbgjsqS7O9ulqlMVTjwc/vafu6sXgXC8VGwSMwCTgs/gLAvxoBC0ucSJ9oaj31R4TTY5BKyR4g9g
warwGx8zjYMPNyjny6OeAw0LYcbKc9ReOYI2PYIUd2plzmpIc1ZdGpwAlysicsE8SX3SoOfRPg2a
DEwFujyJf5IhjejmeqBztN+8TW6iAhz2q6K+2qWn1WKENzz32UEonV6fhmObotRUBNDCgreJBR94
8oBByjUaqkkzRS0vYtkef4CbC5GhTRAk82m+Po7HEF4trXhMQwuV+NQjuM/al55GZQg992366aFz
IZ/92Enqs3WHiM3UjjtZWmPaXo+fm+3usG82Q6d8behrE9/wZT6xjasJ3tTKp2P8tHHZkKZvWW7i
fboJys1/PMSPof3Ur3p//oD/+gQQ9vfZ+nbBjK0LLCgzpHs26NrxO9rej9MsZvbT77e36V9Otwlq
U75PMuQMIb0DRGk9oE93Pd9uG4+T5rSrCNwEK0mBRsNcHV8MMl2vZ2UXfFJ9GznZQVL+iys1kn9z
YFjkPkrDixmuzjwArnSwGsqN2HgjUFaDegfiCJJ4gA9r4gOA9kCbwqVRtpe7R5RzqnsWGDsRYMkv
oSNKVbS1A6qA8l2ffoees/pNQ4zvbrsfF4xvlU/pxTnhUNdNgNBxcU5ojNj82B7308dWebc4FQEW
TTppf77f7tpnhj5z+YHQ3rQ9OuPYGTW3ncNzVwi09LttDIHcz7/cr+rl4BxT+GFyhLZH90hxJirU
u24+Dq7OaPc4bgt8MyS3Nvhbm3Yf2w2IwM30c+tyYdpemqeLB+Xm5G6QoCFnEFIZYC1L0Buhh833
4bJRfhEszY3Xm6CT7AbFUDrSbstwb8DjCAAiPn/hzWNm0YEu3dwOL06z3hwA5ae8VAY8BOFPVE3g
1Qaz2W9aAzmxfQpig+G/22yk/frJUqJPJ6kRbRn+FQSzqsT4DjD4lc1nvq1r5MZ5N5AzHGOBTmWU
Txr6pCYRSpjlMa/jbCsj0+kZHSjGSi0ezDdNQmWYJTAnT4IwPSs7yL/qc65+w1U8M8+xz+c/v/dN
xgqRySOeNIyrqCOGmFRzBZ/U9ImT8l24AmUTljYBHiaisDk3YOcyMHcXEMB8B5lOapTAEk6rPxyG
dNVYZSld8gk66Clatvs4hJYgI3RTDpBtrYnZPe1+UoNWvRzaXkutchSzCcg6MYAgZyItoZL5vbfR
6avaRmG/Nrm5Rn08yrEPdfoIsTKmUfgMB9gGPmslSEEd0cf/ep9cEhYuVLXy66ZLPglzSFzo0Usp
oU7cyU2G2wPegVUB2NwXDBnHSUbkIqlwCH6DUIpqqu5dAuZrq+ToNV20trXfZFBAEJusVIi3JlQW
4BdkBkqIjU0YmEhfFAQSfNGkp21ULF34wqb76AOQpLyRakh/pMpidErHHSuBWwCxDD+qMAV80cYv
nEcWv6jFL1DVwW+M7Asr/4ah36gZq3byFza/DyN/UdEXJoa0pQuKDQnsN6yO9AmLJ+QgKL60Rb6p
uuRKY7GezDdVn7yYFn1z1yt0nE1Tprpc+EzMWlqaW7DUQ5nsGYULXc0J+1OILik/YEiADREt2HVA
hlCU3J9vCQI+2jvB93sW/a6GV7ObFhq3VhEsvYkxJsIXwQUqUytWXrpaHO/3nJJ5QMj9djke7qiT
MTkhm66W4M39LpoIBft+gCAxwo3Omvnp1mSKdWoMWqM+Vn8uQ6KN5ztGNdopanRIDiYIVKv8TNsl
yrodpZu/vTuMFCkR6FVvem5o+sUKDOXkSjfSmISyWYSw0TiY7tvduzONrhJklCXgT0/MRGJ+xtwB
qv/ZjDmFDJlLLoNlO8VcUs7MJFcWoFTrSjFXbHJlOJBQ0hWemdrUjg/8Nyq/0iQsi4+sMsrrb9pk
YcGyaZVf6etUcg2azanYrgOZ5pTiwGh8SfjVVbKGp0FXXPgpOxlS0YdH3CqiryNGtMz+aRXvql+4
iG3uIcD425DQmn7ejcLEQ+ImhOYAep8+IIGRcl8P4UFPxckYlobE+K3VMfdWdZruSKV61B3Krdd9
cnMI3znzoSIi++RXAo/Wypk3deoe1H2KmB1GBsAluPiQgm1uCfTXSw5LrFJrgY3Uqx4bwSZV7Kw+
sbPaqmwvDqllZlRlTsha/guqF9QszJbZiy1zMxQLs0u/wJDfbxyG5X3v9BGEUE2tCFSTirq67qK/
Di8FM+rPyWbsVVCMKJwlR8tpCmGL2/162Gnbq1Pnula9Eb+9OmdhVVY5kbZJtGpbPwcwYnvmpEkO
OlkGc+lrVv4EfWaB5F2hwqxKQ1FyZnJTPQlVxypiskmFexMDBHwI05rhBv5G0nAHahwX97/7aZDU
maVIkS61UocFYvAGY25qs6ClaVrEcGNs6sPpsvO+lKGnlobMkCKPdqRulv8GY7AaTaoDMcL4eLm7
aYtY+Lr0q0Kth+saOuDoYB6uU855THZmQlEV/EyyeDbnpWDP1qlxFay+RtF1NpU4WLlTdcqT7Jtc
KBZx21YaR9Ykzxpj0pVVVtq2qYrFT1pF3nRjeqX18tH7v/0PUK5y55KlGWMUKA5GgWKFtqm4C+HH
PCdRgZQTHa4s4226g8Nw3B72G2lqoGfdJrVxKiHKW2BJFrCEQXNoXbWKa9gNqbSwT1ktaOKFHi5c
TVlwMDXh+yUw814ZxX1pUt7v269pTuWhVqnM57WKfIiBaxLH5JZc4GRpVIanCJY3ZolnhlFOmll3
XRLJh/2xwvDi42OWJ7hjIYeksHKXsvKi21cbAWFpfEN8iCYpz/ExFCaylUdo0lzCwq/DTPFsrjlY
mA7+P8W5W8QoanW4hzdgTKJhkS+dE7nQij4wQdtTLsMmRxMwQ1yX3GI6k3IsaYrFBrtKeS5tepLL
6ti4CcI9eHm8KSw9JqIjzPgI1jNVBXpfrxjcrEYi2JDoroxyn82QxgnQseiUU+gXpxDUkOLptX2q
MAeFBZRbbxNtgqBrX8m9MIz+umFQF0ruZUji2zEvIqcs2JADULmmmHsxaSalNeXcy5jmd8q5Fzbm
A3YeQvu1cmvM+YG6uDqknJUYZpPedBsjccE1pwp4hcPSEFngY6tELFqbj90p4rlJ+XjE3dXK7swi
EFyHMJGyss6mxQe4MqOszKZeYjRJFU1nm8RvwEcpBFL1weCWhln5oBE1zsk5cEWNDUmpw3Lm3VfD
WdXAYr1UJTkzgHIFXZpSMaIfeyjEq1kmgBXmVbVigpt+EbIKt6mozHZR3SDXua715ashZV3s640t
8dcw/k7Ze7cyPuwSU8qB9GnMPzoFisqx6VONxVUQc8Gij2jVqbVA1ciUCAe5lQS0v8Nq8e5DAkjx
o+yYrjkYjMrPtENWiBnlMFnkAX4lxPmVw+xSe0y+R59m0lMmaajBCnOCneQ5nckuUgiOOeMipnqX
A7cVAValxlXNa5+WTabYr6OYHmlGwUkQ1qwTurvlUsaR1Qf6Jh20HV1IHz44nDZKXMclihg8TE3I
9VINnvuCNQtAlVmHLdnbD9d36p+8iqLQNQtssD5WAbtHB73c2+NRL67vWSs3xNg72vpyRnrEoMOy
S3FhHL0EEic4awYbIFwowLWeXyEFef7YvF1dMNA7mWJfSden0AXRuxE7z1rWjAt51kWBCo6Q8pJJ
PKAlJkGvlvbBzQ5pG0joz7pfH/vYBwKnENAGuAHwu58S3bHJwSJFLYExSDhZcTeVTfoUwxhPZW1w
QyfXAoPXrveBdLxJfoiO0wsGFNTVdQzmDQRMn8+yqQvoOeQGlemezoAfAb8P9chq41pfpyAtIaIg
VFFCqniBUtRHiIWrG6X4elAectqCjuk5fC2w7NQ+R18iK4dYP5gfCoJWsGllfm2TFn0U6/jz2ATr
jT8VCqTjWIV8FsH7wev9DU4+PG4vF+qHkkVquqwQUW2MfAUmEamhEf59NrJ/xTsoXLsZc7AH0Inn
wKY8+5X8YXhni6XUanWlW3zVpGwbYEBTmRs6DxWx1xuO3dATrjTXDH4nCF4ET3zZU6ZrjbStM6JT
pWIkrNm3M+oKdOToaAMN0uLB5Vjx5eTTdDo/3t6xxNzFZGW2aBP8STtm+NuRhjGnPv6pb7/jiJa1
r9DkNGF+t5OYDvpYbgztuhRvITzVqpU1Wp+aGXoRGDzuOoE1YK1CgRW8d4dpjv3kegBvk3zzJodF
MNuPz9yli+kqxQvAQPvfr38YRhLokBYXeHFwt7hZgJTwAHmPndbT2TMw1aZ6wtecZtvXNUnCot2t
+xbhrQo10Q1paydmJXxCsmyO1FlzRKiDAsFSJ+zPDzon3uEpKAY88D/vOgYEPVNCdWwX1guepHXT
2Jr29+qVmhQuE6WNP/VZVLlBy4F/tQ7vrk2lVqjh+34+MKHlgVkn+fpM2udqB7VGDG6gyjUv+5/z
HBNAMVTEpI4h8UI8eFBLzeD1mwToAuVF4THImqUaEvXYdL9Rr8i/wLwi+NuO4S78U/BE/lkFxe2r
LpEswU7eXq/nH7jnHwqsZl+lmLWGSyZgFteEI18SQ5d0PbY9q6iIpVBhfLyuZpoUOKNrEruQlKoL
BjyOexCbzlyU320KrIp2wUIU8ByWL5lZJRKYkvXDhTo17g3vL7V7AzYUPsDN4sQ3GGg4yIiFXZMC
u3BTVlcqsl3P0DFASXdqIRw89zGx5MxQNOflKMHA8XzZDMSMK62rxW7MIboU7QDkCvmx1SlkrGmF
Ey8obSYhWe6nlg9mgRHcGLUWDb5YOPL+N6b9wWteDx6+dE/kZ566qt2oFosBt6d6A9niycD3R6fa
910e7yan0r/wgDlY4gBtMJwqRhbQCC/wGt2Ny8oOo6AmtnuoBlqkGUuuRwqmYnjFmgMkz4Q3ZXGR
Yld2nHnXw4Z2No04tE1qn8CJnV+mzxsrryiAV3YM8MTnOevEbdmf4XWFM/UCLfZTfmx9oQ3WNcsX
1acRRD2BCkzc5cxPktGhUAbbaWaJrbwhxsg14aWQvw5kg1lWFP49A5W1hLm/dEq5bRLenD84N/Us
MVZku2pMGSekSepOlj59Ar+CdX8Y2948ThhaiK1IMs+OKQoYCfI0roKImSEX+H7Y72VItJ7PKzAE
1A3Rq1ASeD9D3QYMLltXFwjrTa2p56YuWK6jg2WPrM5UDIUyxOfQdaYGS2p54xxhtWag14q6rqXo
G8c2NB2NjnVxACdN3CkCXuYq6TSkr9NyY+Z8PcyC1J8bor0fp3tZz445A5CeCPgFrjr/x0ExcZkm
MyQEPrY/w7MHtmE5hLVcyF1VPnFcMODm+y4wX9vl4I6/pokUZyVl7VAPb2RfnIWVGxpcc5vvDjyv
zRuEqA+XDeRKDw4GtBDs7lNE6GqZvmFgwwUDgEO++tG2diHcFQjJjgnfmlBPviR8n1S3zIBt6ofa
4pO1YsCce8hsFvdy5YFDlotesIysMhYglrYprllWJnyqCuhwrNvTPfFnmIASf7e5WF8+yKlMFug4
Wn0d0zqCjyCfIJt2wQqrsPEK5n8hjm6Y1bICtqyzKT5x3671GBtZ6JjcOos5NlYvXciwpS5X83cx
rPwri9EdnVqvCMItnfOUpJJx1unLBCjC9/fpWkr/8Ek2VVRVvhsi1EDg3jyKYjHi3CzCcOiy1XJm
jEeSqOHDxXAgW5ukhW4lSc1uzQV26lCbaeTYQ51ma/EOvJINyH3gtetJXz6arBUSIEnYZ30gmC/Q
kpciFerBobZperxWa+7gGBYA10YtuQNtVOeSaWG4RtbDUOKJVe4WPMcd0H7dhCSnZtAxjEnHiwEM
VXCelHY12GKfC2eI4QTFAm7zs2b0BJkOptpx4FsIleD6vGm4rFm4n+WYZcOLODx0hlrXByyWyo5m
zN0Y2LrqdaW+bpe49alF+4xqpDtxbGoQwH/UapkdXHeVCv3mH2BfKf5tCv8f3Zjf7ErLv9SnvzSq
BX8QglgEsWs5RaBkMto0iqSq/dfDdbYuZv/qPsm1K2xyHgC2VgtucbbJ7Nmez4oFXqdR0F4tMQTJ
mEr29UlUWeexeW3MZdLsVCPa1tVSsiCxw/2b+/YbmAPfSoZAmvHE+/5Npq5s6aaRKB6yF9wohvkv
8wTH3PW6iAMvbnC906yUTiiPxCLFjuEEAtycaw/5L6IFq4z1+5hm8sHL1/NxPmY/2+Wn/AtYXweB
Kqot2J2PMOvKN6O+PO53dYgkEBqIEA17Two5vGXuHkPoDcQshrx/Br5Io4EcF2xYibVvLlJKTaDe
c0ggFztD8CsTK3cMYOx+yXHKI6LIu3IijMSUcOtASFXJb2KImA2vwzrTiOGOv64cdQPAnrFzhJqJ
PQ2YTHh++at/FzOfFiixPpeRbEQv+bDg2OUYX7aH4wahy59H8MnkqfEG0Q8Mwrg+XgKJLy+Z2mYA
aJVnWp2FMouA7f0ZQlHGiHJEe+reGdyZjNXToYbVnaC0b35SM+NuS2sleDVn+iGmGLODfmrhGaCQ
gtshfDWFjt7nr4++VVlfSZfQcV4In2Z/2MN88RsEeSOQpwcDLyCZdsTiZNf7gydTzzfvLw1Al2nx
gVGf/ZVhYhnsLB+PhO0GvsJvvm9fP61PSgJZZRk9mPhWL84Vtd1KXoeDIFHFPNdg3McEa/T216VJ
YfdMilBD4PKI+SxCfqhi/A5Id0xod1S8yTuf48iSL8D61rRiQjpJQMbgvqCGJ2CwSe8T9AAr1q9j
BHX1ETjAZXmxLTuDATjML3d7O+x8/2It47xXDKeZAT9LhUEtw40dsCMv1kxY5ZM6gbGPoDit/AnD
rnfx+gg3Y+RPKsIq98PUENj3cdrhBFOBl1rWaBhOIv8C8GEtBnYoRE2ypFD/XyvHyyC8a5qOLaXp
Wgbn5XH+ATunUyMaLYOBGUIboVcZMCALC1RdqsKp9JuyvyG5Jav3jXpeIIB1Fubw006Wg1DQvpEF
TMvaSgeTDACRql1aBrM2pDAjknvespatYdFlVisMycDzmf/rJBCDb8Qif8WhaBlI1IDtR6GnV8jb
tAz6Nrw6XLGPky34mpBllBWkjNnq1SP+AGx6MzVbgSKEWwYlMWDLotURqvzPmZS1erXSuGXNlEGY
GavCD7QMby9uCktheVpBlTOLW2nV4IH/xRQJP6ATHE7FM2RjCAguBfEiwBRcLcnYTA9oVNVreFuG
4LaQZFn+g24qWYm2DBk0vCaLaL9v0/ljul8/ZzV62cSJFojZ5HrJtNnaMIC8TWzAdtGi5I0/1NGJ
XtYAN8BnY6rZzzmqcoh+YX4kw67y/6IAXgVrbxK3FV00b0M8p579z2BUtGQb257Zxh5XeAgR6fko
bm77rj7g4IZBrKytgCUza5jmv2PVA1YuxYqj4LnC+gkc7IwZIdniqpmJ7BGVn1u6IH6NuQg/syHi
/8uHwu7U9ypZZh3+vUfeLdyRp7qTxXN1Zfuz/ThdXQbRg9+sNvntUKdTHLroM85LxSsIA3sm+Vna
MTUBanYeajN/yyYKDClaGosphJCVQiLVS6hk3o6fl3dFn9omlWdDGG9086gxMF9H/ryldUMNg6Fd
K79Z535TyUq0DPg3yD3Tp4MfiyecSuGQKDmDU1T82CTjf5qnUeArSNiUxJgAbConXKfrbhhf+ctd
8ePNmMzDeWIvZdnpuKIGQw6Zxrwl/lSsDVNneoLTbRPX2HbJ0/GmLwhEXygVZ5yVpMiQSJEm33Pr
9drSCZ1OsrIZWdwBvBTTPU3Ju7opqS5EGnNv6lKHhcCr2AncDn9zAfv75CqK1DlRsOkxjbVWK7W4
vNtu4VhjmudpJhxhQ+mISuCt8yPsqdgORLjo/hTKeWG1dTqKqFUGG+lxO1imSSMgXwtYyGT7ZSCs
jh4RWmnA3vPNSzlO2KthsaoWJgAwwyTo8gk+rbWAwTgkpni3wnHsFo6jLTv0XZt8EjNkisHfV+kn
Vu1UaxmU2JDOIZAqFFoGITkEwLJOxd1qGehL9AH9J7W2sLFP/Lh2RbiobVO/uSuHi7o6df1WhIva
JjtYbjq+cnPwaX5XMFE9k+3xMciWRkA+8r8DVfGVCj/VMlCiReDox/Ty6yGKsThoLCogZRF8jh88
PVOOK3Vp9CpUvTSKxz9U6W0PKux5yyBfgwuOzWfr7kHZMHt1EBdAaC2F7rI+wlULrvutIZmzGQaj
NMqmhzT6Fj9RHlLfZsNcjfKQ+iG5jQDrZpQL7OvkVyIspRIZG7pkL/HOlV8Z60T0YFeowN5xYt6L
HOqoeezHtwLVKu5uy5CjhhRGUEKybxm8c7y4WoWqaBkAbpTmRkWyb9mMuviMrDpwoGVAR3FhrQo9
0bKJLmFhkT0Uvu0XIkEH4G3ZFIx41ysCp12VjrGs1abhlmHgxoXxsLIv4HqRO3BbNmgnuHSI7Vrg
SYUhmXpJcMFaReKOVcKQbVOOp7cL/2r4gviUnJOWAeQGbzVyuhLx69LY5tiqJWItmwwRU0ON2hPZ
stmRQ4qQHAY0szofTH8NYl55HJ8GQSk6Eb5go6N6NjRRGfBmEsDPCCRp5N9o01XZEqhoPfTpbwxq
Kyr8xmIOWq0eO3xB1QA8uF638heLwXRWjeDDF3VS0NEWx8zVo8mVgEiSAu6jSW4wflHJX6RD/QKX
yJCt9ZgOMWuaEgBrPQzJWdkiAGs9jMmqIlpPJa+qYfUsrIhZGYBoky8K6Uv4okrfR+vDJpIUdaHv
bal7pmVTtmL0v9GkcyGZVvMcpI/MG3RkFEk1dqkeC76PIptHklStjyqVk1htlzW6tSRWt3Cx6lzA
R9N8qSMYhYFiwHVNuspwGFb5lSpr8lrFfh3SjdmxnCtr+8R+DeK2VQyUcbH9SjAdQj+vskXmhfqw
Lbp6ncYkbfLzYeKhlllrU2MndIVY5ZOhSS0Lo059aRkWZzjKtltnWVCVkMZybKq7xwNASXGcuXb3
6bu00rZTBckNQom8gnNkhTA+SLffr4qjdYuQbAi2M6viBt9BWZ0f5fK+/X5QphtXHJbdh2natP+f
VSwWpgZUbJ5ZQ3EOz6s6xn3F5hQm08+XF6rD3bJZMAYyspgJ9ug8UNGmfMyHCLLi6phSfNze/Zk6
N1yfglyxMQQGhGZXJ7XFvi5r0o4kmZDWsynrrnhqE3ov7tfHTR1LzIcO+nRYXc5NA96Wz8OjnH7f
Hl9l9maMSaLQv5AYuCiUoVHctCErsVSKLadCeY6VXWa+enJdgJhlLkYw6bDmGOCepOxqIcXAgs40
BJNqJXdurqTLtR9Ou/PVjaD2qdZTHEkdfseh+Mk8CQmdNG6ODnUATAiDOl7kVwILZuHt51D+ilJM
I0fOx1xFN50FZtdcQ7deNlunNZ0BVNn1Jj18rV3hUqq03L5bxYouuURo0o7jZYDknp9iS9LuA3CR
QwZkWYeic/xI1RauqGDov5S7Ua7ludDeY5De7ufrJ3xxccA4nlVnm3e/vW9fHNLR6ewLRnyjx2b/
kv0Nd121wfRdA/0ps50RMt6RcGgXcLUVDjBj97gJuVUkWEWC/ohRW+K6EZ3bJZ7mf/Rcsb3fr4eX
x31SyGLdSRMa5TGgsf2YNvt5TbBED6t/8+oS2mmu2zcx84bLHSNdS1YuIm5/P8xCy4FISMrP0xjo
DBk6c9iwn3yjba2Nn7c01zt8/rJF7ndC8/ECW9w8hB51JEjraahL9u3sad3Psb38JE0h8HQ6Ohun
B/tOOhvVBsYzMnRGFZuDhcL0+2GrTUXAu+ppX5RnCgtBc+x0Vq6qqcbkqkI9L7F7QNWDiWnnixAK
wz3RxY3QxzQmCzq6mgB35G+g1Z01JRiEfm01ezne38PyJHdrqNresAsE32H5zLo+4YUmmWTq3/Tp
LItlPPiBiNh48LA/OnUqg/7UeJMuAMyNfnkBDq3tPv0FEHT+97//afMA89PdxLz906Tx/UDL9C01
VZ1bqEaBXQEFXJKn+Hq+/the909P8l0/QrSLwiPv64TyLK5na+22PTqTY3v7PO3er+fTrDc0inSz
DFXaX+n2cnD2ybyuuzQvAN9Dl2wY1SG7DkDTPH9GIasdHhOlbewbBUdi3hW+Cm0tDa1lzLGGz8fN
nDBdNWalVwkJzhrDOAs5obJpUw2JnOgrUfQ5M/sqgXDiwdDGnIWAz5ptbPYIZvMAleEOzOQf2/v8
b9R9Ekc5tq0xgXzbOhhWZAMQZp4/T9vv2n5JPFvK1jGV4QUNtqAdH1JXIrIme0a+3LiyzzKjICiY
zKH2GFUrlp5gk6pFNCGw3ftr+qypbMKsrXL4YIKUzr9OzZA2hWvfHZ2fuOIRmaFO7CRcF+M1V43u
Ko3hHe0LxmGTGgBP0gECYVJVDi6IxJQLUKER4Wi8OyZAixjZq6iISFzBwPE6nrtqB7oIAlyKdgPE
szCK6skQBpabb/HwVvJlcOO0VicZcRZCjt20VZEwA8AhxExFHbR/wNQtcZIVmgBDajp3ivjRzt6k
nkIqVd+cVN7ecfAmlJcVdsbUl4kObfK+AbsNK5jxjd8wYKI9c5MyrRuiExzReV2vh+MdhpX5gJ2P
A6LR50YouwZOaGS/yR49C5nQdIat603ffMwW7VbXlr03X2MPvKt2dhWxPDCZX9DmDuXe8EOPk1pR
31aJV4om28d5f3j9jOQkN8J9z2oSIfyJbglf3+vhdLi9u151H8JwDqgcZ0riF2kYVqT2hQ1bWrCT
M5hI8J/6SGjxUlisGNxNdIY9jS/ySNMnsQyskeakXPBZO7HGJiGqBCPBU3DFm+fT7PDDKe2n02fx
kNgWl+XTp+m7EoRrEkiFphMXI8czknZX88xOpQOxTfLsQvNGhsJX2IaCViAtKnZP6olYemDOt8Wq
hnUMveqqqKcEenCfebF04k2X3tmwVsCsWV5L5wYph7rAnesuo09X/PxoviJyGt6VkxU5Kb+suhUm
+i21m+1utwb+69vjcjlfAdb4w3lhWTqVjxeYFjBbHVtj2vhxOuzOs1H0ctgfnJXsYR9c+8kkEQoJ
VI9zGRtdUkpIaPu+vQoqHijVRAlCSAHx38Ut4IPd9vR9m3cnoVLHZ4HgSYHpOHZEYPP6OGFsfTau
H85SuN0/j5NMrY3UXB1vH6Yx/tzc3rd7KcoLXza0Dt6OtVgHtvXIZLpIhoWb3OrP3uaZj/WwZxEe
ZUU9rQgKlTAJwL6FwlJt1D3QMWxnDQ3FEuFw4KOR9gG6F2Xv23W7P4iD6uDLgV2oi0H32PAy21L7
g0cRgu9+NB5VwI1KCi9AKp4BK40FLxpYGJo/CQGhiAIIdNzPATC18ZmAULjkCbBIIPx9n1mBUDHk
t8AI+DSheSbQKFvgkXKO2JGuQNkCc5G9jdZnViA0LfszYNEfb9RmzqBRVsAibjjrqsrcQqdsgcV8
wHBHHzMl0CoEWFzZGyld5hCVW0hCfgyBNiXQKwTs8gwyt1BrjMQzJgMmip9uQSEwcE6EfWQOsVFe
I/PRPSu3ucc0KlvoVhxiraygW7Jyl1mBUViZxeKT4Hm6AoUPWIBWPkSjcCLPcPgt5DhROcShW7Jy
nyGgPCYWZzQ4PCxzBsohskwUysQMKwsor34F7BCBK8cMK1cKgY4/Z1aOkhJQzqCzy0NsM2egPGeW
PEvmTqYrUF5jxwVKI7BypfBB1y85MSfWFancMnkQK0+eCChn0HE+MGRApQSUt9A1mef8f2KL8eu0
vT+urtITpns4iC73pw5exg85lswy148wRiu1gX5ptHhnE3zzfXs9AGbJfnKOghjQcmRaMnbBUUD3
6Pth+uE2yIdA+wyur/DK/fsIoAjlLNlfHGKl7QBISRzxS/lJGeVpiGXOniDNiHK+yEaj+d1VOgRc
SZF4GFraLUq6yuR/rCA+MuJsRM+KtR9OK8j3RN770bV40jhd6PA3mVyAKQdyUM5l15+0vMiOUW2o
UKJM9V2maYkmRFmwGXvFpcm7rxjNhrqTizTfpvsvooc3kMaEdgYTneBVPCDTHBhnwQj0tXf1voKv
+AsOFnuk/nHe36bjpulEmWOizIFePYRhhoC0ly6Pk8OAckgwkk+GxR09Ok0uyuGfzvT66gopXgAv
8DTdZK9uJMcaSg74MgB3RkJvjTWV+LGNtSX447NH+XmbRda0ef8hUqiYd05hPPx5X5lSXEXD/Gmz
pHGd3iTBb4K3iN/amDfHHcynP80qaBfG0ChZHhOQ4pFWFcGXfQkvrmZ7miUM4i8CfIgYdTcEg7og
iIs7X7a7w/1TPdwx3ZzN3C2Wn0H55E0+JvL9WQ/N0zFNP2fKp+1RPiJ23AR3hnR254+Xw0nm9tBZ
BatoIsgVfn2bLoetdhqG/TZNfng/7C+HcD2HG4ySeLxc5ld31FtOTLDo8Pn5WTXJ86HbVpbVGPaE
aYAKUIACBRH6BVZQ0ZHQYNGAGb3uFWM/71M8KgiR4+MqXwl9CxWf9ulK5Ptgt9kyYI/HNSwcspJY
IugqR8RV9Cw66CjnL8GjhZ+V02xqdp+xPiqs5nqeNYVr+FgVsjSWXWwDIeIquy55NbSrhga/PT26
GIOUXx2xqfOCMCyzn/eD0VO4442LAD5kTTHQfSH+aXI859OqeVhwMozhfFVoIk9uzh/YKvsxbSIH
8FwTQas0SRiChQ5qx9apHDrdZ1pyDHUcE7WHj57FgjEVX7zigPXsn4+zBOpEeX1VHjVM4HuHDx3m
9A2ANzR7KLMGekw4Uc+Hw+f/6nr4Kb8z9j46GJ2UVSnIVL4kX66XZm3P/pFAH2STVVJ0tq/b4xEK
AnRlbMdEd6ZGAZ0HFNXI58nMKwKYfHqB81fT3UuDdZaCYYqd5htk6PqS/R/zEboxKr4ZZKZ1fswW
q6ytTcXEmFOUdcd3/7G9/Yrj2MQuAxMGnCAZQPjGaOrTOhXtVpPQGKFOxyZo5itsoDbREiZvoMlH
0TDztgI3WbYwGZvJLNGlfNXz9TCRKhtlJt1QGwMWwaKD97iCVMA892zUUcAdVzMfrxtNoBmIfWIg
po/E10nEAQEqQzdDaoaYrBmiBXPAEKkSC802snCRBQrxC6s7FawKWdB1qVlTK9JDNe6aVIAsKvnQ
2wsPQTcHWArUmeNdndOZqgFsE+Mb48FlSSufdZUTY97jus3OwGV72mv3zXORhGH1JF5ASjnJp8kZ
YkBom+iEZ0mtdLq1Ezr6n4xiRM9cz9OMA9qYN84sTHumlfxMvYXw/U0ewWNC3Dbsho2DpUPGDeG8
BN6HU7ClDM8Le6ODy/j3H5ub+/8P9927LMgYZzaxbOGJEaBOQ2YBdmPgFmGRmpv0tbtObiQvntjH
LJeun5vHbatti2QjlICOiqVzPbt6UsXKWeyvexbT8uXT8Y7RwQJ55lT4JaC6quiHJiZX/RogsDB0
BTdJlSXs0odoGUWvNUgRqMqJfYjy+YxJeMFkz1rzQ42l23IxsXFYerDKZgIWR9gMBv/fH2+T/xTs
ZJlRLPtp183RWtWT9a2isp/FYnpsFITs9qlikd69U4xhErxfFHZQeKNje9rrgD+xAZrdeqMLbHlZ
dN8t4Tw8BS3VO7OprTAsfbB5Oa5nVQknDXX6KtsAfb5autd9VjLjRt4fE0oG+XGnAVR0flbZfsy/
4Vn6RSxNPcJF7HPMRjvW4B1HiAaMwbjO1y7nUqvLGRJrwI68ywZFt/wIu+TRtE1ORaItKxPhcQlW
RpRI2xf3VnbQsCqzBVO34OIPVjtb+UwtYw8HipGaSMRgqvXQpmZfT3tyKVLXj+xsoYO8G6YJWwtm
rO2eBAk0Gb+erx+y9BjS9/bE7OunqhvCQ/KH7PY4VrlDlg+3TYRZAMZ31wxNhmEZKLZ9sxPEYWav
xv0XIRB/QpEuHyBbqY9L5D0bNVza1mmWo5FiBmIfrwl5wKQassvmbGRuYixJuvJZdO+O24+LbrQH
ZC5gLBs5U6YlE2oS97OpSpZN0XEzY7q0ehVF2Q+sksCyrbU0k6w227wVnzdKUWDJDMUCESYaXb+F
/2XG50qK1SDh0D3XJ/y+/T4l5iJEDWV3KpstSVNi8vlV6Y6p7NYJId8ChP+w4aINTQmlgKTGOJf3
Xty7wJDBkt7DtRG4querA4OX5S6UYBNND6SAFdSRJizO9Vy9HI6QCsShvdjpJi+WqmbAaumzSwXq
OIDOO8tgJNJhYHxSXv/A1u/U6TjKP/REdhP+M3kbrGrHu+hWpu/42oELyNRMcighHVVYK7gGmocM
pKm+v3ExjwbrWlec+Cr6FbtPSMhh/0lAlVn+ToGc6VjpfwcmjLxcF0yWN96wuqqYsF297QJ/1dTs
AO3iTZW+jzWGAOzXsuOLYSyByip7uMKOVKTqohHdqrcrU6vSk7RpXkdmDdqbS1b3ZpUEMfKZszfN
gcqWd7o/T34ALoxo8Id3/Ay37OQIQh3JK2dcWEeUaelWVuRk4Ripq6VxiffGNl9ZvloTBIsmkQS8
X0eXMszh3e+Xz1Emxl6P9yKaNZwpb57o1Rb6petVMo6vWWYMy04WEnksCnI4zZczX77YFgPLa5OC
KDOuFBbykp5amELd6cvR59J8l9bsGfqmKMBHml63M5F8NSvZEL5SwFKLAZB0VV9u/Mr+E8tq1gG+
uPuoGdlsT9CG/YIvU/QpWxTyImWUbkAZIh7DuFwwgpedX3n0H/69CyBsb4pNRm0bva+YiFAdfLnx
dF+P27fZjLi4XKZDRtgBPiI0Y/+8b8K1iL+EHmSTxonZL2EqmxLxhIGGNifYm/p+BrYfPnMns5/7
43qaz+0VylP8qHPdhqVmo7gL2y7pY46hkI2kph8gBfG9QWEa9qfn2bdy01n8M5KGHNVkgzZkwY9F
vpwflMyNRK8HLASFWoT+9YUE+2n2A68KMAHAJtFyfbn9sDxcSHxvd7vZ1fIQBYHrwnQ0BbUdXiq7
PciQB+iQ72+4eOc5zUsWRQgqiQZjVWbMLhGQsHLrlF9HvRRNy5VNP3dHGaiyJk86vrBqQeF2fnUw
pNJkoJqqDiN7Iz5qfDOhATUIGLlAhLqR/GN0srepTUm8+Ed5epIv8oNs003b5S+EgN8mesf6C2+Y
nOpZc3pmyfyG10S+4KK7SN7WuoDiJzKLqSIPYaKwCSWnQ0AIc6INQTLiz0Sy8fekYumONSeY3Ak/
k3LAhd6vF4nWKVHhGKZ1jDB4Ox0JWpyFklPtWhgZJETHJIQvMlak3P7wCuGfO0pPF0KVkMlrssBB
5NexDIBe6GV+4f6FygxquFinmd5E5OQWcZQ/J5sClqPtT9MGDbNNIJWCjjEtxIt+xVCuqS64SauK
s+9h7RPr2B36pqek+Dq/1fvhqOjqgaSMy78OT+yqpnCpvdVffRexIVP71dsOsvlqBDvzq9ZNLR8d
uw3KzBVtku397vCHoNhIbnqoyaeFH/BxMSub4PIrZZrOv9g6T4WsyQLBdmlo2ywzw9/LvExU6jEn
KWX7pbA8fi0VtbTS8vbb66/KkxjJvBiT4GlGpnknSkmc1xQzbeoEBZHYT/Nnqd8ceTlxGJ9XFEuu
2L9Weh48ZhfdRBuDV+y4UHDv5B2OJmtY5J+CYzZIoqE7BupAPjz+CCwFVxeKAO5U0QNdTg8U32rE
26fWKfm18lvqGQZ76Udmo2PaOuxq/Dv5F5jB6U0jTeTsrufb7XUbvBX5gPlzdgc89MvnDEr2JB8u
s8cNAzla+HmyuKd9sY64NWbeesu3KbgiLJYR7fbVMQ2ua+o0VqjGNOQnSXfiPN/BrJLYX1gxt0d4
5Jv9AnotoS7WO3veKeBoMIjsx6MO67JcsA4WZKLewKUiEUPvNVVTxJt9CjLQocjm2ZhzBrlfxNSQ
zwYEMbvkQFnMNn2617YkIwvPljGdL3Nr1vqLZeeIsYfNnYeaaiBoDO/N0nwFzaiUtR+RAkUqbNOh
Mc40L5tGdieZyWFiib1i4pY0Z8NEp7NnmkozFt4OrxjKNPKtMlHYAej0sDLIeMoEAlaEUogpWfp/
lRW2Pz9eFKFuh7xjUVSH8Is0H0IJ2TGdzpFDBPdsJncMIbZZ1xaPpjGJed+02RgsPxqUhTIn1zlp
95Vwhlu4HoMglKj4fFV7kf0ppIBwfq7MoExiY19b9lycBJMPwiwDeGNW8Gt1DjX1pwUp0/Sa3A7B
/5WOcdMt5WurO/8FlduQBcKAZDUTQZf/honFBtJwGvcXBXZD99oMuVBbQRT2dZobqYqCJNbRrQr5
8mzUUDKuA8ZbycqiNbugzPgk/Ar1MATpRoquXqMA5BXRNgH9bxmu8urjZRYL8tsak8BmU33p8X9X
jLWa5xwY1JMiwDAZ/Bt10+J1t1kZoZQP19RSEuO8T2EG9yGNe4H+CXlFZhlaWK4J7cLPzfZ4ed/K
qzKJ0dosAyjvDudazT6EuvDIeFay0VYVchAGlLcFGjYTSzK0ZCumtYk9bTQ3FZBIH9cDiNCCyduV
PFXMFJ/3CpWxSrXjkGUrtEKkETZUVR61eTG+ePpS8rSvUrO3+0pIxZ+Dqz4pnCjLADtlaqulB6a/
CFOloSnVqYlSuaDYaE0O7mCwvy1uK3NnlybXbSW8YXnTi7z5kAlPp29FDlPzVKbJVlksXp0cj27T
ZbVVSSLIvEd+jcsCr9O14W/kizVJUGOsvuAPBHh91R9ol2EYW05lBLUk61Ob5iLMSp33dX3XVUkY
7bnoI1pMSvEXgXsuFaduGBZ5wozJOQRMXHjLHsYJAo4biDi6t8C7rkRsqZoBV3mPEbsTiNbCSJFJ
UeqVsT8jJGethuh540pikpWvQ7u/IQpTTwHMwqFe0ij2Pw8x4o3pXkvDJPn5ygHVISpKfxRN9IuS
7/+m7oQhyVFynH0fnSgVqWOI0WVPavAVAiAsA6Ci3G7vLHKqtasp8eF+/MfVNQQGqQAIhGKqeiY0
8ArDaG8B/iKgJzrT7/N0f59uh9vmr/vt29t0F4n1AyuBh4faPpPbCk337ntaTGOhSIB9/wQSWSh2
7KleFgI4g0JKhFV0Zbus3hXKRLowr8kbj4D1Np+QnHtz98VKy7t4X7+Cib30Naqf1eblQ6yzHEwK
8G7iaqYwP9VfvkiAqizbOvbc5A+mCL/Zs3LaAdgYxdR8og+vnX+cZ5P95sSdTKYdk1JffJcuvB1q
NKPZ6YDwpzv2T9zE59Wwl4rTKmJ3i6eT1ptTJdymEga8D1FVI1mG7kxkd4fr7hjn2kpqeYiRBaAF
9Lq46ZD5wrz44342IhVWAwNjykJ5FKfjTn/SRsoOBJULtS+u+MEicsZx60aX6mb/EK0sREOM/jUd
TClyOcQiWDxeZqkQFbVEYoiZE0/C97f1y4Wcj59vs1Xi+nDOe1nxWX7XbHY0nKxT5KdznOf1LzKZ
jmnyEZIGy5PxjVXq2bKl+PJDqzBLLa+FDqeBPjmsT5deBbsz/Vm0y9fWp0c1e0uHy31zcaPDzzIE
20D4557WSMe+kADys2Ln7ePr3eJ7vWliiOEmpBHL95a7gba/eTsXxWLomPXEW6Cen6cmtgdCYY58
ZMYhz9gyQ3el11XyJoZYspWxTCOVBBfrfr7Kd23ZXWFsZEnrDJOrjx6yRWkgGGL9K8fQZTL1+Pg4
nFwdp+6QDbG80ovCHv4y5Oho996S/nEX1y/vajrOf3uTT6Zpl6/A5l+qdlWmFjCFn2RhhMJ9nA53
+YBtq4jERA4VublhasvZMVWbVaTyATWpKT6qgowxtgiWPsReiWdB9qTf12izhqlmCv2vk7XKEtkr
5hB/zxJFa7AaaN6H98sAo9+IL/n8Ojs4v3o74N80VWWZ4VVHZz2vMwueZ8dI+TI/I3BbybRhHjAH
iQdCWHZyPOggZ0MM39LejGCcaCm0IZZVoHqx1KTwxGVR8BXNnubJWKnyJNeIDZLKDHGPHVYCH1k6
szaxcvnJkySVSoSH2PKDPjs0lz0byk4R784XOZzSjktWsk+srquqtlpa/vUXJI5iOjVL08480YUZ
VxcA5fJowIUzN31SF28kqT8bMH+brmf5LbO1tSa3Z6Uue4i5YpQwUFPVCksp1BEOsTaLmy+tJK5k
GowPOGjO0zNZYwkZIgZBsu6//s9TuINGWWiBD9Z/7ANkVfSi8T+PvZgr+lwhhpw6YxicLXZNDmEU
Brfv/FM5Tj89mvr8n7sOok3bz//VRvRMGZw/S+WlGeh5E+eLuJKBeSte3nYUq4BYyaxKdn7umESj
ZxE/Vos+Pyk8U/EYeACBIVfs3CTuzf7w3Y0rfvnciC+bW/6UYN09Xlw//vS3Q+yfj1Od59vmcT9x
S6kWQoiilVNHKrYtXgQeQ+g3H00/bpXBB1W9JMJmNbgLnpehj5Nz2+BKGXiURfs+zqczGDHi14xL
+wg/p9sB3N6hYuy36f57fFMwnyKEbsoSqR+TNaCXeIeRM3CZ4utkKs3GBjk49wMNk5ZjPlX6tGwC
TMlqUMX60CGEkFEjDgCggHBbCI9ZsB6HJze7ZVMV328y+1bp5g07NY84u5udI/nsBE0+mxJukM10
vZ7lsCCbBOPCBFjVJ0i2RqRCatEHURQqIg06/poC70sWkDmgZe5T/Pxv5/OHFyrTh/wpXZytYt5u
+ctW/t4mY4aahl379e1FvPY6EYdNvxQ7MurUEOeacsesS5geZKc6LWUIYXjmVGOIk11aZ0zfid/X
ufSPHyEL5ig2/qKZfH7clUAVi7c2PSSjuqj0C2zMQoowivQpYUztGUqSZPCIILnoFHGDHAuouiSt
2IS0iC41xiQBF0oM/CX6JywefpvwLZrJYA2/T2JF0BASHsu34tSMyKtDyuItrfLwOitZLXY4MiUz
RnyqWTOexSfZN0kqMJGIaLJp+RP3o32qDbvsm27ku2zSRtomtbPEhfdpajiENp3+FG+jS3gXrRf+
jMVNskVCeQgGrw8fb+oqhzoTZHzKeZGhPj/nrWiqdwySq2/YVGQ+8qkXv2YALF1kRZ68E6ecVEF7
YbItgqZmZzu/bG+HnYwrwyZPOdu2RvvNL+RydKegLWSkrB8AkeP7mJw9PYstP/v6J36anIz53c98
vQ+v8WBahX07u1svwteWVVs1NOsh+dpO0k9zyIgm+9PdKHzb8M6zMUqKdNmduOo67dCxzx83jbjn
ussVzSenPYin3aVlllXmvKz0w03abM1n9cVlt+Kq0ypc83xgtt1Jyx4WzWrd8y8P9lX4umXVaWCB
PK+776TTblgBMmt6SH66FS+aNZNAS+/zVQ1G/OEx7SEcng+skc6rb5NHZZ/Pa6zEHfPer5qCSPyH
e/GiuuJ7NL34LJoSi8y3vJW+5m1vNsudQy/v2aYskpFClXTLDX9UNv+ohkZcdp+rWk5PrJJ+mXcZ
U4Fc+sui9OPwKtxeYaJAFkJNV3yRVSsemE1Zu8u9qZ34qMbkUdnMcdcyd/OnwbBPk69r8eMuVVbP
b7LuxZ+2/KervCgRHxY7b2c/d7mHJS6bQ/vkZdjeiMKzS0XY810ZUbfbPlf1nrKYfFxNVbypQVTu
LWsoYH52oiXHragmh1QS5U57FMVYKvQzu5YNGsPbD6nlIH1XvfiuFrXnGVlSjfLLaFIBmhEmrcie
Jtfwzr9tRWXFhZjNC7FK1JIcF27MvkhROxsGuMH8w9QukH6XmzNdXub3RmTtIe24yDyqXtwxK5CH
rNgzb7ajuOP0tDI60taiTZFay5krHgeRt9qyxdsbUbX3Y0kGzcpG/O0lxledE9ryb9vkotucthEV
3bBoScroWPGy7AKQK8NiImfXqe2YO7BGtEjqNtcglp52I592kU0akT05ftBIVdrJTYk2nB3T/qCM
JWVrUeIzgCV4VRm524q+DeuCg2t+flatqNh501SX585WepOWt5SbrGIXj8uYOgcTkXwrKhqT9lPn
zOV2EPm6LjlFs4qT+WvRA5k1wUTbkRtwfQTgXFieIoe1Qw4zJZUFg2iEVUUO6+QzS73njCAx8k2z
NijY9JAzpORnlcqS9plBrfighwV/Zh60KLdNk9ojGfW8t6L1lzqDGZdftN/MAmMxI/GbUYxUsCZF
X/SfM2ZkNTkWDeZe5BGG0gWx8lxUSfzYtMXAUC2vux9LQr8WAx2WSUCw1HP6WXZEh0XjcObIajm6
wzBGGTBEYtRIPNbYprTpQRQGHCelyyroTvzdZTgrc1VmkCOmi9POcLeoJOuuaEkZ0RZicoSPTuZb
bsQtm5IrOMp3bPtSeEa0hQy3ZvqsDBpFQ50De4+CwO9Eu5MHlar8WVvZwWhsKXgoeydNAqSU906s
/DGTnn2cOL54j+Jz7NIjyylYkUmGqmi39q0sR9KAVkbDytEww80KIaBlxHUvcB8zhlgjGvo8kpaP
1Y7ig7RtKYQni92GgRC6pKzN/LBoPS6s1txrFvMuHHCiFUwwmTk5vrtkPMqWEPPmoPwj49qIAZKu
KWr2Wj5tjpPUZoVBU4nmzFDUzWLYsWEGHPBmxlYXf9lWxZRPLQfCbPmiOzGT0KUhuJzF2/Wy6E3D
aG1GkIgakq7ZOtvCjhm5XYvcPaZ4WJkQnJhIaFg2s7FZ2dmITmjXlvzIWgwM2abOQbckPyweV1tU
co3sjhlTdMfaVrxl7hWZrBsqHpdJjfyMgmxkxuYOrBCb6QY5HJUGOXK8KbtUzdCWHtVQy5nQIcVf
yTBJJRq8fVXMVPWjnNtrSum5UY5rtwuh3+XsAjFiwDwE8Koyu+7khfcLGOBn4Sub6oahMzZ5adCI
goh7km3eSWhFwW0XwJy59IdsSTGAKfi/nAssvixb8vnnuxJPe0gtqYxRUjdidUPdl05M9G1MWxUd
o0EOMTPgKrfsNlMaYfdiiKX400bUdKY1pYykqcVQh+2KlTu2lj2Uxct4VtGDqCabRYYtk7gRBRED
UxJMqVpkz6a3pTSXNXKI2RYZTFSUdmHEPb/ITnaAFy5/zogb7E4MpaVuVeZRiRUdpi3GmK0c/2OR
HbjlPqdv5JDUwhzKmIBGDLGMi0REptJJLlZqbA76fVEDI0tPW0o9d6L0HNOkZEZhWFGEDSlkeYY7
B9FLWEZqTS4mvxd15CI+k029yDF5W8q2zw6haA+ZUmGEyCPGjqUnWbdizNOOuVkPiyoUmbf7kpa0
Yk1GXy6la0Ud2abhsFyJQC/7VUNqk7S5chAxG5rM2MgavraTRUlbjM8Mon+Tn8uRLlsUBryKz+YD
NHK4wpbrpMTI0DLCnJGeVswG2IUQev7hfS3qC5ubgJWKPzFmOqY7zkmSRo561rZUfTjIUU9WbiSp
G9HctnU5ITqINlxbLTI3OU0nc0nXFLlEdketSUudMnzSibdV1UWztxLjFV1VCsuPoh3WDMXIkpHj
BpUpfd3LdoWxJRd6FOvwbFXK3MgB6oZN/2oawa0SFV1nSuFHUVeZcZHHyETGxfhOn5spl3o2cip1
4cJmZEElHjVL4kpOaCOXHtZVyRiqGznFZrpi6LKSlXvbF0WJmLrmKSepglr0T5ohB5KZblpUc10p
mCaumTlkIHfHDI/IiZehJIHE4hkzVsVqSfmHl2Iz01MgSq+6Knndg5gha0xx0WLTiu3TyptcLKuW
K2+Y+QYtfLn6AvGn2fRXSbGLB2b7pljxLabI7KJWKVuELNrpTVo6k/NN5NDMigJmscDUDmmtUS6F
IXJ2uZhDNPEND7UOebtRzCNY05TkfSuXKXGnu87Ln048Lp7BEIqIe7l3ZEjXnemXEYvrjbWlAj6x
BWOZwMj5YmKZZluVDLe6ktsg2rYUmamN6B5UbUnazx673L/RlopTezFnXS+aVnI6So451uXzNnIS
dlz0zj2LsE5cdzK4UhB/jcyexQxbXYtGel8OHYpWVJU2v7VdxukWfW5btEWsHAazC8Gb/Vo8MJY8
BvCX53WLyQ/D1BxAvWeuysopCG5E2bySFON3duHJZbNFYqg1LcjoMwaJ6B2wNCxUPOb8ODm83PWl
oPgomjN2UfDzfFxi85uxTal2T1QXDZNgjVCYKkembTMW5V8js7ZJYxwZGTaK2Yu2Kvn6coF8Y0xu
NEXymkX24sPYhSCt2I5qWSyKYTGl4aQXMTiyqBHIvGXR/SzWa/dijmlhQ+XCQaLctN3CJsilxuSQ
jF2UaOYiaHI4aNHjk3PXReOv70sKcpAjI01XkgO1nOvmT6rPn1gvHnc/FP0DccumL4fx5TqjqsSb
Yli5MUU/f9+Ib2IxaDvXQiFydm9K2RoxSW66RcIk5wPKBXT8PQq9LoOcbq5SIyhjvFm5nNZWJf9g
FCOVdlF9nIkXit/yeUJd9i2PssC2ZZAJOelhWTAIxn/kDBnRFDGL95gxdkUlVZWvuZGV66K4KuND
inV/TdWXu9LFsEx+Rtci9yCydlPqrBzEH17ECzOPSmw9M6MtYZjUoo6zoyk9KTEoXNtSCZyp5drO
Ni1IyGZ8xXxx+9yR7j7/GTFrysAzFY2Lg6tuvgQ8U5FMACQdwaHL96ZXEdGdRnnUK4FnKrJ648QM
sxJSpKIi5PC7WQ5vxC23NFhFqpwRwA8qKgaO67ZrkWcqKuaAj/O+ZN55rmhQZrzn1cAzFSUwwjV/
AXimIsCceN7dWuCZihy6yCTNWuCZigqJw4FlIoB5a939MLspeJ396rLaijqq4OtesAKtyCVNU/rt
vAfsLnpgU4hs1umX4GMqqkeL616LqlTRSE341rj3vVJZVlTnrrC25CpU1PMSv7ZroWcqKtwOLyN3
VXnvuyKlFW9qPXxMReXAGnPn4WMqQjFQRKBQL1mR4oofN6vRYyqC/YrywK41MCrqhg0/nRO/lRU3
3aUKp14LAFORrxFEd8bJ2UtKI1jOccvjSgCYiuZ7K78rAcBUBBMUf7lZm7mpKCoVZW+/srygIjAA
5WGIR133QzLxq1mN/gI2CZuq1Wbrq1px0aYpn5b4w51JWbNfjRxTkdkdv7Zrc0YV5bs1AdiKy+7S
w15dzFZRM0R8Uc1KzJqK8t0KdwmYNRUB3sSbaldi1lRUTxa/7Veiv1QE0hNV3LC2OgD42iRP2a4F
y6kIgCAOGxxXg+VUVNWliPtePGrblo5L/uFQ4K6Y6QLiTUUlh9pzFBBvKnInNb0uIN5UVAccdHMW
nKgSf7saUtuxW1lTUVH/RnxTdiWoSEXtLl7i5m1W8XerNmXtdi3gTUVhlii+utWANxWhSHkk+2xw
e5SN/GHh2Iwr0XJgz3XKntVqtJyKshABkTZbNy3J3VCLpjF3K348dEUPoRE/bpviXYnc2QymdNpW
fJKGPQtJeraD6I+1qbXcrca8qQjxQTHBrMxi9ZjqyGY15E1FCJPwtc2HIGtx12bhwg5r2/kr6jDX
DF6h1ryiSpQIuNyvBcwBs7UvSjHRDLMLbVWthMupqB4k8udquJwqDs3SXP69FW38ohNqRtFmJf8A
hp01q/P8FbUyLOYQr8HLqahYSXnQAl5ORZA34UHnGKwTD3ssunK1uOymbkpxIQGDtKLqQVg2DLlf
DZdTEXi0Jj9rWRoYUjkChssoOrB90QcdxCAJP+78gXXi7/IgnCDBzCDHeauShyGkriuqE4hS367F
y6moqUrRsZ3onjRduudmJTpHRW138U0NK+FyQBa06WnVK+FyKsKsDk53DmhxEEPqtulKgZlRdE94
EK0XSh7FONgiHp+rMbByjJfJziafohMjh7ZKVZyp1vbjV1SQpixbjt6Zuiq67EbU68yDFfRUI4rd
cSi5RaMYNewXnvOwFu6mov7bqOS6lZA1FWGiu2/d2xq6tcDkFSERK6uuZf6y9VAyKEYx/BY6BSOL
tCvhbuCi+vRJNWs7gyrKacKUiTFfjia0k1bUihVl37ASKweWTbJPwkSvxUCWMUUGExVc25fOupaj
hv1C2verm0krwhNWJKcAmwpO0SIO1q4G2qmoEQt+2m1kJdBOFafNIo+4ftBqXImVUxHejeKOifHK
ehyLVyXGKRqe+W3zylXc8Zje8rh2REFFhbzBzM5i5svZmrot5XoakTtN1RQTRd0gswjJgjGbWatl
l6hhrm8tIDTWsuQ1xVRPI/s17VBkbQHvpqJuGSUZKUHWVNTxEr/uVkPWVAQQGfgsl+8ZZM95TCYV
ZcpgGvFJj0054S2aYSyQBlX+1WrImorGf2hiTNQZ7KbZxNU1kDUVjcXRbroRMxhtmsDNFeGIGnpY
lL9UqyFrKuoajrUgw+oJHhXNo1DErxGVRr0IH2ZyZAJmDXxczjtbWVV2Xal+ZhCtwD6N1mbx7Ebx
TbapHdetBa2pqBxPqU4QjfWaO4MCioAAHVMRCmlk7noldAz8crFGysoJkLorpfYk6JiKmgPUoh8x
Xd5URUdU1pVDGiPJ4WvIYcvQFa8kyjoxbMmiDdDc2a6EjqkIxS96dPVK6JiKIP+VaINU1VsRHlN0
M+rV0DEVgVtG9jRroWMqwrlVAmnGirzNDluYktWKhQ1DUXgKwJgVTZ5TjDGxosIssvyZUG0nZyFs
Va41Es+6qUtZ3FoMqjdLv79ZPTCgIiSAkN3LKbqhFrVkMWxZi8Kz5sWa+b7lUQ4s9UP5xMTYEC9h
MV9Af6mo/w2CHc7qXgv+UhHApBYubeSgui3GhgY5kbAoNcrizohOnW2LxSCDWJAWmqOUE6vkex77
Yt2O7Jo13cL/Xt8FV9G8qPiku7WdMxUB/WheoZHzEE1XLAmRKzPachBRrDPoF8se1jV7g5/QFQ1u
0RjqU6MiU3wj6gvD0lxwVvU6+BZYcl1yBa2VS6ebYlSqEs+ZJRXddXX9aviWinCzFL9Igm+pCJhI
UxiVHDbgldfCYDAxldovbF6zFh+oIixPLRcqmvldVfpWXDOPXDZCs6IYlmoWvNmuxX4BBjOlqgip
zaiibh/FlxOmvIApZMsJXHHTZmEKDSvhXyqa36vknXvRTOevecg280voLxXhpiqrrsVSpTAUTLfB
RJs15bDsPYuH3aYB1yx0grhss0hntmvRX+BN2WIJn1gxaY0p1rOJxanNYEvpObEo1phi2bSEyF4R
6pYi/Fo51bWw8rOo6nIiwhSZpJO7ZcaiJOnlzpFlj1C7dlhoRUNiFAkolym1bam8SjQols1F3do5
zRXBL2vx5UpOK7IQsRQvFXt8miZNHpv1yDMVIVgp+lVCj6kIq0IrnTFyDmURF8rhLIqSuxmKQqxv
ZP5sU0NsNXpMRbOAlCPrRCOOR9XbrBFnRUVXF4uQa7HQvRm7omdiezmo1KVBJbN2BG9Fk6qUsKWE
HlNRa76Su67FEF4z9mWfX3afu6EUn+5FpWHTrE/OsqhkpVHVpWCtWA/Cq4GFqxL9MR6Qz8+IEZvf
6r4vRlpFzm7GUt9xJ/pyTZqIzdV1iSUGgy016cjV4oYr9rwxI4aTjCneby02ozbd4rTqtf3tFQFx
RiHSrJ2IWNEsxqjlqnW4M8CWprRocc2mHYsRHVHiNmOx3qeWm8AabsgIkWUjf92Ykl4X+7vNsgal
XYs7U9HITS2UJCes+1SC5ADlejHYWZdLBMTYSleXrkrsquSRTmEwqtjzu7A3sz2ool6timE3MVdd
jwvXYD1yTEVj3zSHexAj6f3CDqlWQmnCU15UK9qVuDEVTQXUms/Eb3l9k8nPeeo6uYajKpmqoyzr
h3LBjtxu0vRtKWYooM5UBGWunJgVM4mmKlW0imkxY4vypxaBRBp2VZBf71dO/64IIjYaMN1K2BiI
BVWlpyz2YBlTVhStnJlKTcVcMZkcp7TsniCHWq/EzKpoHKsShDK1LOrHYlpfQJ2paHw3b0dyn2dB
Z4bud/HPOXgNzWgZnBUIr2vMe7DS99h657/vsjqnU37dOxjwNTQrmmwOV/68iZ8L0SEXNBU/9x50
/PVcPM1Vk4h79wEP+vkxX2olfu+fOZ29zaaN5KujzyUUGit/3dDFCUmJWRuIX/vCJfjaZTesMOtQ
Zhs6emDfKl+wJX5viHGE5P8wyF9XJvn1zMGbWt67qdLfrrOQCvLBE9O6/2tz8wukjxElyq+8zXfh
9Mp7sQnH5EZ+KRxjGLvni6+cxyazDEkaYQSCGZRTo0MXIHShBFV+a03KcE02tSP+fGtLT90Fg2VJ
Y5M7z5n1baW8FvbS8z1jRrl1H0P3W8+/FZdVl7fOBEU+Dt7JS8cMET21IVfIJf92X3pqg/LbY3rn
uXFvtXZpQ/rjmRFkykMdU+Hc5fKu4k/XfemhAgqTzDBVcuV1tqFA3jjTSzbffquoBmOTY8uijClS
oktY3WbH0cobb0yqUvMty/K5V4lSzHy+lwUk1q9E4VyP2c4qWSvVJa1UayKqalN2zQ0QltmVMZzQ
kDHUiiVUl9W5cmsm1Uu5xgijGUK0+DFfa9+22mPpS+fea7/ej6kh1eTK0+STS+VErrffKL/NRFSf
vTajyMd6IaPGbB2jzK9jem5NLq8rKwaTPrUum8yWub0vcpwro5QFxZicXK6pT1k9okH4nxf6JBS1
xk5OHs+mWM9tU3rqLhslP7e2pBcVEYuN0VFUZLHqFaerYk5XmzWFjKIYmXxvhGvrFEMMK3zUk+s1
WWFNagzZXMuF/GJs6iybXCBeFnP02+5vxzYLFyPbUsyCtsKsEuXampKsaJSlM+sbAMLzlWSyUZA6
2hkxZxUhaRchjlxVl3JsxRiDS4DIb61PtUMGQk/Rym1yZZn8a6ccet8lKxdGcct23JCIuHyqXRbv
qQVrhRm88kOrEvmcSz1rTjYLSwnldJ3C7B1zVZusiw7dkvLix6JyUtz0hvm6YrWVEhZDWBQ1MKQ8
l4bYxnm9XT7pL/94l742kwd7kzffJ9/nkpVaSHDo0yBFm+1rk389dV6yONpaYIm9mXxvW6+ImoEp
t0pADFZYvklfTJ0Flpbl3MIYzGXiFPVQp8duckB78sbT15oJMVjNFmzTOG5Os2lx1LpNrLGcatsq
MropCfhBeWwjk9GtYMkpksI0yec5vapwzFilxozJoyXIj6VOH0s2CKzY0G3R3x0U/cRMcJMvPnHd
9PLm21LwXVGtVVWO/Ctiwvap25bvGZY1cxq+zhWhKPxaFyWcEp7hkci8NTQoenUc0uj1kO9Mkv2e
rhTdscqvt+nOs7EhxZKrTeq02Ty+pXzpXcnrcuA3smpJJUWm58Zo0XeT+ruZhE2naKa+Klr/inLg
SjWfVe4UEdkNpQjyqJgjVVnIKOHIxqZx/2xFnxKUa1jeQEivNgrHNoswcEZOKA+9aE0MimZhEg7M
sDY/XUPWDYtb6/MwK/L3ixBHn23RkD9fPLYxPyhDvrci07l5KrJ+GEoOgNViJG1qkWQ23yiuV7P4
esgipsif10lqN5ef1Azwri4HFZWDWyQPhmzfhGwPFVM2jaLcuM8pTJRRjp0llaUaFsUErk1ROQ0K
x9RdSc4YzRgyC/O9y5d3yedednh7zZK0bRIYywEPtkZRzWmMJvPzimqsx6Fk0yjBVMTuIvu/yiIX
yk99ce9jDnxf/nFbOvdOCUP3daohcha0YszZooQeNEe/rUp5Qqh/ki99LNngVlk9N8Hz9QBGsUnM
wtfOYhHKEnZMf7vPdU3KzrJNY6k2i34mb7xNhFy2ClSLrzCecYnCPjvhR750U4pJ1koIvOEp+fwM
QcUoQMhfeqomh08l33mXJqyG7MQw2aBKbbmst6uYFE2bxsVylT+KiCs7TpqUqUqej+Lm45Q3khNd
btiPnFOv01iozeLZyuzapOUETbaSX760RQVJlx16JqvFRRlGn0VrlvdepamyPjcDTH7oJpVRs274
Pyul1Py7vEWaMjaX7fU2bf76uN0Pr5+b3fl0n053iQTDM3JCB13Ol/1hMx2nD+VDjogBu8CI3utx
+vly/glfuL/fbI+Ht9Pmdr9O9917/iQIE2AA45Ay9C+Pt852RqoTdB9iIB7CS8S61+myPZzum+v9
OB/B8fFxEikE5vd2KUV6rufbbbP9ebhtbvPfH48v26u8CvRBPQ1fkY4buN/PJ2X1hr6j0oKP+b85
HA+nCU9Pu8SaZg4CGXeQfRXvYnO+7idl4UPFFg7Pp6Zv1zBRTc1t/hJI3yEvbF62Mx+73Xxsr2+H
001ZTUerGaL0Z3z0sf2p8FCbfu2v4H59TJvdvPzpeji9yWfI9uBSoaG5D5hnA0vYvR+O+82Pw/19
c/4+XV+P5x/IG8oFdwlzoQUE5C7X82W63j837sVqS0PwL3+8Y2yWDMc7n8v5Om1eD9fb/U/zMct0
RnbZYwwGfxxOh4/Hx+Z2+Nu0OXxs3yaF0drcSuZtuAOev5xPZz8fz+G02b7cLmf5qkOq2x+ML99c
0nqfDm/v9zXE+PODAtq+p3N296SwLr1AVt6O8kMRGjY5Skx3X6fjvE7PImwj9/NFOYgx4VpcwO19
5tZfZ67YMA6cb1tZ0UAbqeKKnASt2k7Kb7gTMEMiQdnj3Rzu0weyfeB45SSb3EZIll2nmcSsmn5c
t5coE+T9GHbC3hPwO9pPrzPD3uc3DRLaca0iUSy9P+gz9ot6nIDKtN/MzO95VhEMQyKj8Ql/zPzx
T7N2+ONPJxrnxWxvCo2auKymeQHb0/n0+XF+3DYvx/Pu183HdH2bCqRq9gQZTrrn9O3ufr5ujtN8
Lvf37Wlz1qQBmm0+MRP1Ht0XMl7x4kOxPXvKTfr6guDfbB/3M9yYsioSw26BTJU5WQcvC5YYlhek
qCL1mI6FirbOS60ow7en/SyD93tVPTSMCwinhD1ynRFDhUtQBA3JcHhkSCjIvN18e2+aJE+ZAN/a
4QQX54jKC6nYu6LwXbRx/CUpYoYpNL8nf9lgZ2xAaurnyFYONRx9YJbz1sn622Hvd+CORTkAdh2g
97voNvx4i9bnzDLfgAv/vKk2f85S66hjE9LEfjy54VxHJCqZRE8kQHKZREl/k82wjvrd4Wt/qOkC
PK/f4rnchKSCWwlC0fqct00turiZeSvyPTsqfEXYSUtven+4Trv7QTBs58/7erGGdkjW8Dadpuv2
PstfkVc7mg0zNlj9XI/j86FuJK3YUYenv1loxkkpOP8AZAAqJ5mQZYSA95vMUrydsrldtrvZdr+e
Zz0jUqwZ00HcwozP9+Q03WF7FE8IG289ET8PLMe58/8LAsYbFiLB3sqrQjG+OZ2d8D1uL/J5YR+z
Z4AmZQB/4FVVix+zTXU+hPq8qbrEwTigjF398xJ6cQnsEXUViZe4BGdsb0QDxv1+zU7Sa8U2fzXq
LnouV8A5rnNnUaDSsuvwPbipdPpxPTip/e3jvJ++zQ/hfthtj9+O28/bt/Pj/g39v9u31+v549ts
zc7/9+3lPLu2HyJ7N9VSpKWXCFov/JT37kRaFbtKr8GFo/xzkb0ZJTTM9PciU2IcAp7d4vniW9Gu
xXAWsd6PSWig/43H78XKy3T/MU3zI5zetvfDd1liVaO+QLgA0LoyCXaHEL83bU6V1Kuli2n1lw2u
QVEUD+xheaMuFcUvf521k3zo7HMfc8yywPpNdf3ylPzjut9/vM6beb1Ps6hgMYxwnZOiHBou1yGa
ndjB31JK7k8ValxJ8OCUuGN5q/zsKtFQqtHQL5zbuBRt1ZOAFs0crqf4nkqH7lUzPiL5+K2uVvFx
H+ff2cj2S5gp4Mn4nFRekRXlVtPr5sfry+tO1kTs/oGxml4SVbq31xFGLxADadq3wsFHK1GLwHaE
VQckwTup+gyze7vX/dntvr2KPMpsRpSpzVqZKu+5XvoHNrPA23R8La+v5srMey7VM1OctvfHddaL
H4efs5H8sr0dbrINaJeyopZWp0Zd3OGxJwkeTW5tlepL1f1S7z9zquy81OxwELMo74kVX0zLmAoa
PBbqb8EHQFiTyJVdqg0W5HBUZs939gD8W5KocPkJse5hzAmEdfLTDgsDM3dZQRjLdkylizr++DCL
IzufY7e0eW2Of/6sONJmXAqrUeJmLakEL+1J76VW7/X8Y37+8rM3T8y4tL2d4zj/nzNbZCfWLu2w
IW/Bl1m6XqqTzOkWZAW7bd/6IT3wlcYPt6Z8/mXMe/ry+TCe8SN/Rj32Id93t7wvK78u+VmNC8Gx
ML1cyKAYAMHqE1yLhQUpBlyBk4dhGYyx3FLCECLE6XX5w90fT0hS3k5TyAq7W8rW4flhYHx2jUmP
Be/8jcgWQEmHDeMy9tTnZdAaGcsNQcjVNm3OdCqFQ8K8I6Y9BDdeCVKa5VIYE6SO9GZ6fVVcoJ6x
E8+shMUsDbfi9VWcYE3FAIv8sRbzCVDebFF1/trKtnK1dFIa5en5zLDITPzBjM++po+4y3zd60uJ
5owqkTomSzz+2ZAPWshalQdkfXg6IeHfPDxVECdCAN/xztPrGuWoVjEa0y1X1evaSFZDy2BqLkz2
5y/ota7Sde1a56bmYZjOV82vc1Q1JyKg+rKYg+iR6Axe8xgP1B3aQfBR5QdXMLWTGGXRyGl1C8Wr
uuO0lbfEvRgxShEyIMWQVZWPNpXuTz92BEngDFvlQ2uKpWyWEtMILHotJzjqmu2zr3lebmE8FeWv
tUsLvs1Tkrdmm6VCacoRAcUtsbrCA57y8Ww9IhqmyYuB9MS4kB9MK2dHkgej5BurhcW04B/NJTFm
jYlUr4mCt3Z5Hq3sIpXNwCYfL0tflmJFcE2JJ5TJWvoqAixwdCnnSZa03D3OZTJzYQRddPP8LIT1
bJVNScq3V4hwUQ5DVryNHpjk70sXZGOd9ygkV0C+e7OMselPXonVcDbCmsCy7yVLj6FfZp+Y4e3M
vxt85KtSoAADmB2YrCR5hyh5B7DseEXEkmCon1pDE9GLgCasfxg8+OyzOS1LqVoP5uTCxvIpGh7a
g+RZ368MHBczQjw6LhrIVcnx53kl/zCb5+TU8SzbxmESEks590K+rGh1cAUIf+mKUWxfb7A5n46f
svDpdXkt05VJDvlN7263ULRYsJE7pkQgfD8Oa+qXnXTul1GWfmEC3S7H7ads9NRLRdwKTmdJEfKE
nZhVxKi+HJ3r9Uh+khr4vr0eti/HyT/AQtiPG9UemEH2Q4uuEc+hw1/W8tCKpDXzCCHKZGvhBclP
xy5tALPiEP82XYuH+FRE0YsFO0p9Fg8pICiMdnwFP4LHuPmD5q/PSVbZZOr0lDzzJDXpOQ66HeCs
mkINXLd0G0jkbaD2UzEfeA4+F6d5qlSQ2acrBf2DH7QykmC7FQ52tSalVReW9lwUoFqiPG/IPdv/
4SJA7k2o99U9RcYKERdZntT6g+AmJK8hl03JSq/FBHfvfr6Uql/qFcG701kJ//G4fSZKw6Jup7O2
I5618WlZLaK5QmlzfZArqMKcixw06pemYSdkooohwKcqyGHV5Rd9SZ4GyFXQPPm4xcBUs1R7QhWN
7LRzQyeXWkoKG4typS6dHMoVeT08K5F33kLsr/SGbaHONlKSF8OTSrkiCx9jU1PZg34iz16tEjKq
Vok3zRDhmlWsNazX6CTLPVBwnczqOkHVHeBBP7G69M9rHJau1UP5ixIZxXuvudz1Rn0qXMChUAPA
ldUjJJlYgsIJRq/Nf/IRivkps/TthpI0LxQoccvUm7wLG+7lNkvQ++wq3M8fB7FQbKjz9RLclrzK
gSnOAr7geNSlSfGgxvVZ4UIGnSfilhn0pwhB0Tl/KsbLVQfKj66XE7lxLa/n68f27oqyZ5dillRn
2dzh11Z5j1yQM7KAafN+NFiA8IHvb1gf06op/gTBxr6j+BML8Hyc97PgEjlqzMTJWVcudgud3Fkd
sYfucp1ep+t12hfa+rCk8rkBlcpPz9eD6+1yC1U6DDtq7IKxa16FxoR8eDisU8w37O7lHinelM0Z
/6lJ7HDcX52Mf/XJp19YVdQmNnAqPWkmbZj27zU46Z4C2JGODbc3MU5e03ww3+JIiIeRWLmNkHXy
M1jY537g63Q5zjJxr0IU+P2xbmUbOxzZBZd7WmlNTgljLeOCx24zp9zfz2/n0/ao9PnSYpwdOHrT
L9zW9tWZI7fZ73JnDa3YhR5A06WNw2mWLe0Kn+53FQRgTM+pzfY2bv77cbj+qrU4DmmLY8RwaIeq
lQacVdHnpk5UG5qpt5/nx933pG9mX015Mu2QICB0SRv3Zv9wvf8z58DBns6FFsnOJC2SKJ/xquZb
9x3RXktsXH4VV6r0EDe5o0GKbmnEQcCayin3vC/akHk0X9dlNmQOu8dxO0tq39HjBOx8c6ytsiAS
2jrtayccjm7sJVS4KmYLYvt5AKDB4j18urfpvvl+2ILzrfQP+c7tOm1xbRZt6RHvYPN9Fn575Q23
6dlXqYD2VsT+PLPFHQun6KC0e+ANvRUVOv94nz/0bQaHU7mTNaA1eTodlfFSe7IzSfafp+1suqFQ
0B7hE6BHYpz4hNXmY/YYNi/Thnj65XOzn163My2l6bZOT9LyCmh00fHNFrQF1teQ8BI6xhUC7MEP
8cGzDugQMoy1ccdPRKeY/949ErF+07dJd6lM9JeCBOASoG88bjgoY+WiF9p2ibNwn37Od7Ld/fqG
wfLz3dt+s6/zfdIYvBMa3LlM4WaXwj4Mr8SZ310C8FG8lTBEIoJQeIsC0zDxWpwYeJsU7uCapImq
jV3uJgsTcodQfgGKoWoSOwVjBBH2QDFwGDJBk4LsbI9vs7F4f/9AgIIS87ZZ0KKP7U/k0O+Hc4k/
a6ZRTISOfToW7a7YVbclvI4VKBBtosTRmPzbfC97TdcO7bKRv0oNx4gdUbI/SR77tHfmepQbIdHm
nHysG/G1If5lltiqT3++ysmj1VA9YVKY1/IpEpLM+oqFxzEwQMn44wHdglSAdVXDqE6QPgaGurAS
IoaBPwDqc8M6vVARpz6OcmFdFo9jYZkrhg59bwn1Zpa3V2cs7QgYZrO9XI6HCVF9XqEhq4AYUw05
ICouvkrMxOBi/Ii/NtrSpq+kMT5VbLElNB/DKqhiHAjuS4GYoZ9376IdElsOQ6dc0oEqFDMY/urH
JUQTUt2evm9vC/tGIdOkcE0R4TEAwRxUNCA6HNcK0Y9ZnDLlGfWJO4jcfznfDhDNSM/XnxDG8ab9
QX+iAWXWvy1WaTabawEowy3S8SV4MTpMS5Naz6hhCOVFcX76JZTdkAWlc7FcRT3RE3Dhm3FYvnMp
AuwfN/k4bgmoEmgF7hA0KLgwfiGwCYd+CAEN5ZZt+oRaQtKyjdX8WHZ0cIz9sqMZ5G3ZtrWpbWsD
Ttuam69tKhifBT2+NeX9jykJkzn+tXG2gMMbnIaYsz5vGVsrPseYMrKXpbEq7qKCDdV1CleXOPLz
YX7Mkv31MC+j6L/XuUMNEnEFrBWDj4JxVXWKZebQxAoUbJ9KPsSRxjQB1+ErXnnNQ388+hnONDh0
q/1OhlHI5iXSg1ceOwugOmDxiou9hQ8DKYhitKUxSmg3pFdUUFDM9kbzulmCo62Fxgyw7aDKrYcK
9Q8SzNkNISGdph/l18CAPuGUmXxxlYnvHsqsACfZp4B/6F0twOiUNXQLi50VWYMjewoiLvTFqasZ
bWosLVF6NAgkLy0XliCibzibPcZQzisAFLkbzassGAumUTV32GQwzq9XBz7r06Di4tCCUNIBOANK
9AK0j07rpYD32rEo9OhSfsw8LNs/3OkEJYXxATBn54f5cf4OwczH3eUkfO2GbmqygAEoCoY2VQrT
1jwCxyaPy2aqsowqr7mPW4fI6Kv6fbi35IbWVYL0iJkbiotRzlIxBfuc8KFLLoEV1kxdOemK1T0Y
toosN/PuuQStih2w9LqavC9jFGcmjQy3aeIDYzYqlxgG0sqUC0ljvJt5O68HTRbzF87qXQQDXo3m
MRPVOddDj+qTCQhFWdokZ4hejBrxLWLgcgeL1zJHwXK6PCBUUMLD7gVIaIjcgZAL9ncJfNU0OT+Y
+FgBpWUpGBc0wGiSW4LPym5KyNrcA+hjfGwRiCHcjnV5shQJFt9lSDKtaFbwDladBiDRNbt/Hss5
v77NuXVPSuRaQA9l8oVj+DD7KKZHOEcr5tKQs+Gcy9Q0ptbAh8fU11rkPn6dpgvaszoAdJ3A/Nrx
ycnQkzCVENjKe25ONW2/bw9HkF2Q61E4uUkTCXbxmJSzsQkLoxEL9/N7NPvT2NS82P+E1qPYf+RM
r3mJBa1uk8vjCPC3d2f9OEOHlXR+HPZ7NdjYptH7J+O7bGiwYIhL9GCrkICLv5kXefibe8plsH9m
vDrZhoyPieGPQ1o+reNttymObpeHTy4462Ou5oHDiHvmB0aDf0aI0UIAkaXX2Gg3HgQIPXmO5gui
l67AQa7rJfAuR/b0zdleqEJN1mGnTQ2wqS2rKmNFE7OETgdmV7smWO7aNE/77XV/K8i2JEE7PFVf
b37Mp6fHPkdaoYtAomJGD7c0GsM0CwEyLiLVPkoteCmKyEsDKzbU6/zwjwt6Y79vjw8oH4AU++bw
unm7Hnxmcjq5Q1SuhRmOkAoMRsSS1YoWKPOgLdmP7GIpb0ZDOxRVsZg0kk3jlQKMtR2f8tdA5gyn
dj1s5//VHPEqYuQaCHDGVKtTfe4CJ+y5CXchTnCxNIiliu7z7XG5zBwxy4nbTSiyqCJWHkx/MVHB
uGB6/H5/3j2AFWCszNWLx5/iajq2mjFaXZTUhk9Yjnu2naZtRGWUfVdDKN02DthCm/uZnP8HJ+2M
TK0jan1FNpC0OC3QYwgwxNYL30KipwlaQ10xtl7UcWi7reXdtozawGx6gVrpKnp2eC0lcyRypcND
sD5PD5JDo39Pble74/k2M8d1PrUbCo7ZM7u/TzfB96h8DVjgwy4WD/nRSFA9WByMNNLT6OPj9Eb6
387nj1lwy5GaKvaghwXEFCDGe53OAEZQ5MNA451gGah1uISBf3h123FiYxbN4np6eupJcfaKMbeV
l0/x6+ivTrfd9jLNIuJjtkMP4rck5pzPjIGVKGCcLpl/fHKTK8TDZMOmPPe2LJ21uZ22F/iK/fOs
q67bD/E4ArCXnzEXBRUnEMfz7M4fs+cMmvrzKFO0dOOQCKrRl+E0zT7WDrnBUvfPi0zP0Kbrytn/
dWXb51WitXSjWKc3ZuV1srukygJOM9YVMwPU/xulsp1qAL1Gc/835A71bb6Xj+3sXK4aokS5Cv8W
q2gnyiu+z+7vzRXQ3+SVEkkXRURNkr3+ghYPcDfA3zD64IkUd+33SjaEMtSeL8kf5tSw6vnGghcQ
pbz6kS9q5Ioy6P4XSKygMRqIy1xJghWmDz8fnBavp4lY/jbrmAnL8rR8SnUqj9rcSzu/vt4mOCd8
v64SyZXIzhsUeqIoIoHvzplU8+urChynKXMaUrc88/w7dqnAguyiFTLLnVPDrcsUhpzhl7z0w21+
pIJbQu0TfhGUtuEkuPQoHZDN2sIpW71P18NdXg89HGd+db03ILJ6pmAV96lqwON9n3WdR3qBv3VJ
DldUzf4EDILlP28qoWraukiL5wsf7GQdV8n3Agi6+x6xpP33bEpL+vuD/Pvse9/83zx/b+Tfx450
/z2YOpnfF6ZswPrZ91BcPLaZ7zv5+5a+BwtnqDL7H+X1N+z82IyOdP+N/H2/4v5q5f5G9n1L4Avp
79fy77P9c5y09Pzk77HV0v++peLLdP3K9wP7vhe+N5W8fsv4xwj7r1r59+2a/cv8X/H76yiYNdso
e5dlyLx3iKVur5vwn8z0lVnKAxvL671MvkCZpDwVu+n5fOVxeeaBpCO1PXKSygDfxQTeYBIW1qgM
UmYTqH2fxLBu28oaezaQm7dblLatrZLGbINWNqsIKlcz0Dhf58WO9SqCGvvY5GIMesUpe8viqWLi
zafrc+pBFs81Ew++0bX2C/BxwSdVd3+fCbyfj/t5VcqjJ6FhqRQqPaXd4bo76rK/4borhs5TMpfz
8fPtfFJlYMd0sKF0XELH1YHf1U21XJMvVvN8OPKVGX7kVLcp0JE1i6H1sHYsTweLczTBaphitovP
w6G42Ld2JKZPt9KoFyRfdEdCHoYL5y4IDwjBl7RVdUO6s9yqpuPxcLnpb8vS23KWx2BVOvLurE3Z
eFDYT36pLd0XS6UIb0q2h5o2PepR3ZRMx9LVN21qQmfoyNuybboto21LfgwNPQbw9rOPQbbSDbOy
BuGK4iqU97DgvFrkYwcqpDMxsxurmMOQpIRiP44p88lLghb27eGqL4ub88Vrl+nYKl2WUenI925J
RTjVPFaqBFKE+5jsqxkVBlCs5aZP+ajPsaHCP0zh9cKpBEkhm7wte5pGkKaRmeW9mDHRd2ZQj1ZW
NF2TbkrTvvILbZtU3lS5k1WUZVMWM8Rv8tlaJoV7QXyGzchH25IJAEXfdTsoGg+iIvqr7MsGTuRe
mUzDNldTDCvPOLLebGh3zrodVf2rLMcO6VmrGk/WMA27ehszGwIZ+eYb0uJOoSdhmKVs94gi6pX1
VSrfG4WR5LfV2rLAoOQG/LG2qGYoP1V6JTJ/W+IACAA3a5alSNVUEmVN1XBWsghoSbg6U77V5ZnM
3p1JXkmjiQDZfmqHVCB1OXmmOBErLt7/00zr4bMJqovUpvpYNQsVBWjpqqBKT9NgssXctomwb416
VfKVd/WTJ8AixoH3vJfrRUAmGhRkQ1OJXrytWBDIDxO2ipQxSsRibJeUNIvYKOGU0S4pafLcDAol
Fo/yMThtd7UW7ehYiMcuo9lPlEZlTSz+hKWE2u46hVLPdsfQW4U1KZSGcRm3U7mgUtZkGKWnqPUT
JSVgNfLAX0ODmwQerxUer7+0plZZE+eCTopvRkoaF4zL3an8pEUKv8YFyu6GYcmZ6pq0d8ekSizp
8QWUIPsywoqkYi8it/UMuY3PuZQojTKlhijx4LpASXg7Q5xaiJRGSVgRJSOvqSNKfDqpRKmSKVl2
TpZg76VzGmRKhq1JZFNak3x3A7s7+RESpVZe0/i1u2tkSj3b3UDwmRIlK1MalpRUf16wQwZChGK7
w8A6GjGZpxPNG0Ewm4jk5KvY+JA/iVItUzKsXK+ncj2JkpUp8cI/K10kGW+dSKkflrtT3eRGOSdW
PYgmobomeXc9K+LkgwclSqO8Jl6+yVqGpRNvZEqWKMnWHq1pkHc3Linpu5PX1DMu8EGKSt1dK++u
+xoXKDzO+EkWe7Q7eU094yc+NkPanZHX1CxfixMM/yfnpfiKeDUd2DVJfjHEjS/TbjP93H5cjrl6
ElnpQ6B30QiZOzIx5wmdh6xunYMPL9cwKmtoUsDTKrsGpSF06JeN1ia7hkomwZrGLQGELAl0yiYW
YKN1lkCtrKBNuxLyW1BuYkzxUm3+GAeFAIcoYJDbSxK9QoKxE4dtX5JQzmHolrA1+VV0yipYgw0f
tLAk0SirYF1Jz4VMdB8KV/LO+kFIXojuKxDo0y6fPE/2Ck8u4BXb7Cm0ygoYU/MRKss1aCTShjTH
lbL0KyS9vBBkgYZGDGVifxHGfpQYQd+l5IxCrpR+9QSZC9xFAIISQU3qMw+vFvjomaDifPZ1smWh
QCE9Qa1+iC6E9WXp5LS6HBaSGlber7ZZ8rQZMmLp9JT1dWO6XY1hCukLT48tsI3tvKUFahxdpRxd
rVmgtmH2QsbCAguJPk+vTYvD+lUbVkIgPauS6nw2Pja23D6hscfNjfnYHo+b3fYiVjH3VMPfWMjf
9ElriVjfy1p7hph/gJ//4VtEoYn3cpxiwbC8BqIFSqN/7tG5THfX8eN2wra3c80PSv9QzxuYWkJa
4S1MMopIFQeYwC6dNuqWuxTbjlitehXv2/9uCb2kirMoYqk74v7vbrca/mvXPfiNsPrgzwLYwDcF
KWrmHBY7c2ZsjUPsgOJ+2p2vCmRqHYYewecuhYA2I3wdO0bkj+nZA9N4MeLauL5pbVzwKUkgyA0O
9LuF/dqcLIQPD9DFIH9JMsASgt0R4C3K6zXJxxhDcsWa3zRQTvcl6VIX22z78LLDLItvriXZf+pJ
fTu/fgNEapEmUwgtQS561Ej5I1bZSVldgINwq1C7XOB7Oj8YJlPXHM51xfeLK+8SyPFvdCDyUdbJ
UeK2w+iD8gp44XEX1R4BJaxZA6s0BuEWnvJxe7sdXueduOcGHx4Pt/s3uT3O0kyemPVFfKX44bfQ
ASNTWBQg1EsKckMmfN6mmdlu+bnYjWdp4hnkh1vfXkLA1vJXVF0AQtgSQvw3GTYEvlyUN5g4+OR8
/bY97b+JPdXffOetJJ8taSxnmvfLDm39Hiov/oJi6aIYZQTUvljbp/1tyzbkbzNPbnfvWse7TTt9
erskAYckft0lHeo0p0D+pK3SXt5lY7f4U9QZOI4wl6pCW8eN5VnoQBBO8V3PAv7bbbpKYLaGesps
nQzt8I3b364gXAEU4ZsXWiKdmsXhRtqdp+OHNHyTIT4NPUxYCWtUFocrGuqy8838BBTAf1X+PYqw
2mb57f18WbdvY5PziwhTQOU4va49PkZmjDVfSEYWiSbCrMZ9oE3BViB/SZkGaJcbnu++tGx2Z0O8
M19bAmdY+N6ySGkfNRyuQH5NhkRb+DRhOPkj+j0wLZIdl/ZapRw+8L2q59wM6Q1ZtIWhmdEzSemc
FnxuF7wqs2ed/nRyQYUH0rQJT2KHRVg2vunSwhmDVE9bX8EhbZM7dc4hJQoVnV1Dw5e8oFQ60Q11
ogO7OC3HPz3PDO5saNWGMtQkDq/MZF+ZzHLsBkyUCsntlXbfsAtoacADXkDp9igl0hCCOz1v+UPa
s/vbLhFnuhowbaoGEBpUnNRoqJ08btIsuUxmL5PwZ5he4XdYOlr6VTDPn2V2UXlU6V5FpVnk8fSi
MAswO2j7b25st/ydSRdQZXWgvP4m+dlU6ZPyk/m7Sfnb8tPXn4alo3PCsU+F0yrl1XJsHBpS9WT6
yMtnDNBF4cY0QpGDmGjqUl7/VjB8huSBBTQrvn1531V66gP/Vj5wnpDOm1pFLm1TdhkyCkX+/Tb3
VvQLapmJR9Erzl9FCVjnlAdX3fKnQ3K5rX16HCWDI32czZOBWpIuJjEaGi7bZJa0icpDD1WJ2BgC
A4lm4PAk7otr7Z4EGBz0bXrsz/DB9rR7F8xBS5ZoLJ33wth/v/CHtGCsJZsplk0jkKWDdvWxr83t
cb2e37Z32fHmLf1+1rJdUpG/HdI2lI59KZ2hJUcAjmAgbY1R6G+Ls5C3T10DYQaij5XddlsEqjh8
uND4VnCuLSmWGGXBMQOexjfZSLc0uRn2UfnIofeUb4edL6P2kDUfWuyS5UPc3w6IXX3+0ANePM/j
HnyDt+9c9Isa5TJJgqgJonx7u33b3r6p2FTwwyxKxmcaYWvOzP2T/NsU4YXxojXNdPh5f2yPBZ4H
EnUaJEZ0yP2qtbPkJ6wBL+xxOiD0AaEsfoM/FEMkTQrIU1NUpfAhIfmw1/+36Xp2Qzt9p4wDknHY
6TohFtepYxpNHfZSeUnJwYi8lnhcj/LvMICmNn5xnE5vs6zUV2ietoq3DbHYmU98IOh8/bG9uijW
x2Xe/4sTAAoElSVHCZwU659MSPY8hZncn2FqSpZHNtehA58quSNLfg98aWJIA7583X4cjnKolGEN
OLOwoy/lT0jewQ/XDVuoHo1mwC/gPVTsQwk8zZJmBxHb+bA8HPX7/e4h6H5c7v7hXCc3sBb+/mPa
H7ab7f1+Pbw87jKu08gDjZCtGjBX9OladVZ8XzPeBOulitm38wd88vtffvm3+TX/+0MDcO4YRqpL
fI0YtjR7FE2oS2ZCL4f7B6Lv7a7TrFj/xf3pP8OfagDX0NeIcw68D1RRbfATJYXEEEmAS1hjnnR/
3f4AApt1ZEYi47R+7QAtYc8/ppfN9nT48GPA/cbdYAmHuuj/8f8zfQJe1x9hdizquQ8Io2tnzGYA
uJoCvOq36f577H37j8OHisTcsTo6mLHVBe1xu18fstz337YL0GScBDKv2Uvd36/ZAithc7q/xsnz
t+keDkUdnE71Tq4QbYwf/4fDs9OGx7K6NWgixRz19TzfyQ0whTe/hgXEHje1jm3eDJsf6cRDSC/v
zhcY87PmUKmEzGlWPNLysrQ5CKymC9yw2XX3jzFlu3+ftvu/nI6fyH4rluwvnWrq6wqw7tBo/Cdg
eQfxDN/N1/FP8REoq2WzIwZICONoIfcpDN5+uZ5/3Px8KRlIGMf6MO6qfcyaU9O+ZFfp3KK6rfmu
QtZy1QlV1OcxwgGhwy6l/fyxUuvLABeH0yX3yu/QTQBWQQiLPIRREv53qHUEgC0GzBJv99riumRH
I1ZE3bfX+yxytF+jVo7R0n0c9sf37fU0s7iyO+ongdhTjQW37hhdIu3fpQv1P9zmzsZB6QoY+P43
aZ9g0dRY23c+lb6sqY8GuBjhbuGhKb9Hqxxr4pSds+yOymfEK84dCDMpYYmTxjA9e7rwlzEe6S93
/TwZTzvF0eK5lJZaUx+WK8sYusWrcuzjHF2vJXW2QIlZL4SuwZqRPyDu+JekD5tyCzN5luvzotLr
VaAQXAxNorHpApUvQ8ALOmozydgwMUiz90vt/otonyIBNkATwH+9KJ1O+z9MkuzBL9tUBttUsf/i
Hrr2OROeYA/VbVj7OhVAVklfx/R8nD2ufUnXB/LFtDgksbDfOjGDZkvEn9RWnzvXsfETkLuoMY4c
T0plNVJ08BQWbJu8hJXGQ5NYQ7Wr8wWad+DXDZVOzX8wEcgxM0zjn017j7QsPT7YOUO1gfRqbVBL
RnN340WeJ348u3FAd0lDeJIUy3Oni7DKl/ftDaHbb04waWui6NtQRXSQ7Q4mgRd+27Lt9LgdJ38f
VwcXv4nXqpAg7xUio3XoZXCDQieisOZwB7aaFiyYxeH6U31c9lCTtrm/u7ngXuj7Y5LlsOlzGtx/
DWbmiVwWhQppORgF2ATzG9ZyRw52g/xW0iN9OzD0w0APbHrkqC8QZarfvTPScV/YKNOwDqrNRNPq
CzRMovrwyANv3VW7yTC16YQyhqZgTtgXVsCUdhu9Ja+y11Opx/SSWhQy9OZJzgRfJREDeIGAALnh
Amd/uCnBTm+Xk1IcB7KQEpLfD7fDy+F4uGsin82ohhM1z3RcffURZ9n+usIZZeOchs6HPJYkV7gs
NnEA+1Axef54mR/nvJLMSYZYga4b2RQxNJSW8gSmCbAAxeV8RGE1XSOavRI7YgMiep+k7WtM/89X
u7tOswOnM5inYxl8Ogg+HEC93x++shwWUO5bcKz7Fg3V7W5Wso+v7c4wcsb4mZLOB/Hc/zadP6b7
1XvPf/jLv/7b+aBAs0LEqKPAk2NrDL7M3/7r9n49/Ny8Xs8fbiClu5X97Oxft583hRpFwoYOXSuw
yV9f3dFPp42veA7m8O89K25+TC9vR4UshbVG5odGqlhGXTJQgBa69qBaK+aOexkwXf/jvCrShtYa
LCkU8XtBtnt3M7nO1wCi7v/EDa10I7K2LsF8v9x+tz19ivkMU9UM8wMcwCrISZHYj/P11+mq0DS8
lrqmwUOe5n8/zvdtYVWGkjR9YyDxYpbrmoXU7SurqlneyT3eBgcYiRQVUlRjX8OQ1PmvfHkw2HeW
9j8OSi5r3qXhZKCAyt/tj183mTDqk11LoiyEBTZX1Q5q2sSCQaW8NF83dzmQ6smQfnYHiYbQQvtt
YtQX6W1U59ETJjsNnEB0hcJIrWBiKQTIpOrqWI21WJnyOcWUnIBBBomW3TrrpSGLoSUQTTpkOhc8
KFUae5JkkLVDLAFa3pvyPRljMN64z9/743T478cE8+KB694PF4UmWcPOCenlbUKkDA5tzVbJauur
zOmttCDHhEP7dknFJUzc30CqXaFDDNFjIA1nCfKEBhYabJy9vtVdftgdA1JzaQV02iKbryZD6Two
ajZomt6m6/dZ8Gy8RMQ0phuZ+Mfvvo7gflENO8MGclu4E2/a/bxPp72LcK+kU2cCQVDeMG13GFF2
42q3R+erbl9duclp+/3wJgsJr6M70qswOnX+6xgyOSfHx7frbuN/ZPMye+G/Tvvf3R4vCsUmUoRU
qpWoXScflllJtmUGQAd/7bFkPZDbwnlGDSsRMpFQSKIW1rc9Hs8/iuuz7CBr73OPfH1eU8vfk2VS
O1+zDi7WGZnO/c385KfXI3SJxtWBqQejJ8/Xg8NmnM2+2yyf/T9lf3CEEdeod8AMqr1lP8afZL80
X8/L5vbY7aSQA5AL4XloWht94XubIxcXXiQZQgSeZOUJqyRft4fj4zopqxwZyQ7+2rfipsvkOnaG
EAafDxGTyHQhYH6/PGa1MIuS6YdLRMUfUnZv+O5b/wu5pe7O518P2iIHtsgGknhVz4XHZnv7PO02
0/V6vm6O57c3NW3eVez9QHU3pvknNxPWRdouh0WiWsv1M+gMiFqH2Yvzf3l+XKO947++I8j+bKf/
h6tK2N0Ur6ZnL5LHzq+OYTzxGzhwirHrAZDJ2WpqQAQfA6F0Oef7u0anJzerqXqo2EJtdXXToa6H
WXj/rSCvB/KpOmiSXG7JX6NyLEO78KSquBvHWL8rnUZP8h0Q8jvsweNr8APu98oiSO30JqadZhKn
WTH+z/Pl367n+3l3VpzLgclLGHgYplcvLwXtCWVDdCCNM3mbJh7qzB2hOmoDGvsmGhF+UXQ2ADTQ
DE2e5eQRa54O4xSAYDZDfnOzI3243J0XI5XU+C2yOhWfABU4+OfH0Vki12k2XW/amTHXvk+e1k5l
vp6Ub99BjEq4tVdxKrWnw8wWF5oMxVfynRUfuWVH7hxarHterqxMiOSjgZLU2kjMXSRFpwUV5bGS
AE6HTNFZgIPCUuRsy8B5YGkYP5n/w8t8PLPsumydu7I7nk9aELXl+Tmv8JAOcAzGNyAc+7i+TPuN
VvTSsiKkLgZSRVKNRooVv7SsFiEhBaJRIzIk60HLIBApHg2Ds4KIGuY+/RUFKswYCFOA5UmsSJhs
f0iVZE98+rioQeuWFdX5ap50czMTzA7TRrGekU6T5jvDBHPOh5pGRbXP2Mg1GNZ2wY4uB/W4bUoR
b1ae5PRSvbiyJxbSap3aNk2qEnaIt79vNz/d5LaxIbF62NEoLa1MFjfdJT8ACQhMss6LDVa+M+YQ
mW8Kxt2GuSNiCGx2G6ige2gohY0JRCQNA+ulHnmkwwAo3MOqsU8fzMSf79cNWxmC77jE6gbidRpd
ChqyxuHF8qafl4NkOyCZli3PQpla0rIQSGkkzAKcuQ1FfIfvrlYMN4cBYY1Qw6KONZu7PLPC0Ydn
Z7aDDI5GhUKgg6XH6VQxBDDCcianjDZ/VXdGwV4WtLu/H64wuhwmSgMxF5j6qbUmzLQonA34t1Cm
iWWpN+ez39MKA7e4/eQQFOY9yyYOvIa2YYB1Qwyj0Ut4/3zxfsT79rS/vW9/nV/Br36s63F62+4+
5+PYbeJKNlF0vE/b/XRVnI6WlX5ChxRizJxPbxFLyhPRaAwpDXwhkxtf70Tg+fQxO7euBFhxxL1c
qLuEVECRdaTu79fzD+VTw3ZC/TJ0Ys6D3bx8uplOs3DeHQ5BsIqRX787VkvqOclfzvm8gVO6bD9d
fbm2MIbkN8Qj9i7m5CJeEK/59LUGsLzp5yyl3b94XI84vXf2l2ct6S/W9VFsrAIuGkMwvtM9tu3N
antmipdpNgqdlTMpN9Eyb9SFTtugad1mN7vrVijb81uu6OOWmkm0u/BMhvndlJsL3gbekk2WixVE
PFI5K4zJBQRF67BnTxHyfxWJH+DARfBCIUIugbOjumCB+QUwMgqJLiHR8wucRQs9KfkqPB0ywQcq
TY9vU/7QsthGHa/QH+jGs4HyMVnr1oPzLdZfMvebOj3Blv+615LKrzO3vIpG4um8uT1eLkVvuiEf
GFou+Mp35/0E5VPzi71psQlDHOBxntGtBzLKb5tFTnbMcp9CgLxbKNBtU2uAHYDimTZ0fiPza/D0
6RXv3rdH12/lZqme9ucPscTU3wpdqVOgmICZb4V4eWYMsKvOStq6scynBK1cheyJv6NZpDxOIKWu
03xWk3N+Z8KzwhebHUGCMGseSuZqbpH9UItnTZeUu4ZyGjqpgrfVsspJxwLYc+Wkf9mUZsaDl37+
XB8OtPF9e93u7qr7UdkUf7lh7P44zUdIklg7vG5Z6G8FkU/SvGxYsDpUpnofs68xv0PtSOp0T/aL
Txg1IHPMwBTFDtjnPX0cbh9b5/SFx7Viawy1eiSWiQp/N9v9M78etlptczMkVx+a52Y73YX5ZsPT
edXXeTklA5SVcYH2RHi0qIJZXcpGFyDo3jH/f4xmnL+A6XvhHVaJCRg6QU9u6KWryAyN4zf3qlFy
aGeU8rdZmiLBkAYHAwoBXXZv+pzNrE39rdbMXuZxu8hkbSX+iI8RJBxYnZop06eHZ9frADSibWoJ
x3iCMyL3s3R1b0C7vprDV/cMjdyt4fzyV6jlOM8cAf1D79PuV43YmK6GV/JqMpWxJI1whFxS0Y1o
2/Q3Edtjd4TohKyD8d2zX6ZBwMweBZv9XmqNswwVnuCEczbw/Ng1dkh1QwCQzNF5XFwIZipLH9af
Abm1QVmbzwa7V1Emmz7dcNXTfaOaXXjhNueJzq7A4zpRhCX+c1jV7y4S37FQIXn/uuWLX6YPEDuk
1htRqFirnA/0MtslzILS/ajgSAS5HBXgx/b2a4graGtoFlMqSkYovp6elbjW1HiyyhFj5bvQlv93
uX5ltmlZ/6yhSdlrfS28qi455iDtvOnnAqe69cd2DAIj8v3MaqVYdD3kzK+MibH96aENNJvC5vj2
clbNx6pNZh0E8TJrw/PpGCJk0iNrWf8vwLshiigc+LT/p4/zYxaVvgQn+n4vj9unJn5ZQzT8SVOt
9d9wR1y4dTQZJ3OoLg7yBZttyOnVxw3ww08Q8nNBlVkpxp/S9AOT6xXBXl7Pv06zB3N/HbQzsolh
3EuGx8VB0J72s6hwJoj2ioZEyYRhbKDv10fvTJXEMRGwenucIHOIitOt8qieMzNr+aQAMIAYK0VH
T3teTWJmoxKYdu9nb/XNTBWlmibUmlQHVxQlXWtis6EksCkbbPWPaeNftipVSRH0IyS+Qv3Lx8WJ
py/Y+iyzx3QCcxpKWqXthpy3+sx9P67ugLa73XS5rzAeaIuAddJpj/ZLXmSf8nYdPa359u/Xmawz
Y29HPaTZdMmx4fCPOL9hPvzD6VHoYW3ZtCRAXB3+KxO30O7OJs2sw/C14CS+iTb1L6plxiiYVmre
gG6r9ThXTbRvZjFNUjWwpXN/NIKWZ+Wjyf4bgk146VUaOkDouMNpe/0sJJlbbrl30Xs9nZWcnlc8
TU6XO0bTIWOQwZje66O/cJruLu62QewKbzEWs/d8gFG9COr4uMcmJDA0bluYcsERhVREwYjsTJN8
bIfUCX2R8JlwA0+1FdgANb0eXZbEy03nWby8zneqqTZWdswWkvV11ooq1pltCXTzN9q4/kc1wdik
mqPNnITTA+5MZylyfn3VToN5JdAxlYixda5NyyZ0efx4wgrzqqxUrGDbXIAuBr/AaN7892O6aqYz
c45YkKmY5kEGS8MLaBhAneZx2n73avBNQbrzB9HkHV7us37BYzWJx9qTEaa9M5MuQVLGMZvL4lwa
i9POoIk8TPR5WeXKD4kqt2NeNRR8o5ZZyE7l4taitsSa/mlzmn5sXFN8Qfm2vG/A0CwRZvqgfihb
QF2SK8DTecyW9iyNfM9/6YyaRaykzp9RFCHaOZk0DNwsAlbOBYDGZNe9r/fzMsfChcH6JmegQPj8
9eyqW9922oGn4FDYrBdfeel9M4sA5F5OAwSuvmzdP6qZjpb1jUCzvtUCy1xXarfYpC53n4jTJEzj
uxO89tRESpuobjE0B2bwaoXV5WLqspuuMVuXDFd0hpUv3Po43Dy2qLvgA7iwdacMXeirKoFDRoNn
VhwuZ+XlVKgKPG5Pbw/nggYr9XeX90uOaMdQcI2hzIOLvU+n3Rnewby498N+73p5nVE6v5DXw3Tc
b2bW2s7EZCzksU0mVWBW+q/b71ssPnZbv93Pl417JlLhjaEKSSDl8b6aijmEW2gHcY2Nbr2iU2Ao
xkc41qRLwyW8yJfQjWP6dcgVzIxxVaZAdH06lQAZf5Y52JPp8rpyuMDfv03GT2BmxosY172EFd3K
2vkg7GiGHPwRzi7C1nUAadjtHcOmhioLjDl/f/PljXDybrae6yS7zcIuIqCCGa5hfXcj7Q5S+ZWh
Pt49bu2msJpJwNnRHaLz5YkQkMeuS7dWDpvxm2/JQo1+PP/YXEJZjww7ZQhm0B9XHwU6LWp2VWJt
5k16oj2bJgFb6xZUbrej/C2twNcYogsd1H+J6TqGZ27qdE4g9JS6nCINHYwhEbF1x5C9A0QHS4A3
tCXX8XB8iPaJ3xq9KEiZBYw0LGWAxm/kbe8EGnlBHR2xixOgdevKdq8TZO+2J+8F+4Tk9bCDxglF
TrBBN5ZsU3Zpjo9AUIlX1zOJB+2VFdbW/HS/Kn7HJnhAfNFf+PfDfjpvLueb01l/72Ptq5qvjV6H
qoxkHcTGoNvIY5FFnUja/Lw5TfHpuOx9mu6/+ynxa5fg72MGiCQUYHI5gXL4mzOE386uPUPjs25k
42BgXKcJCQtPEVtQof3T5f9m0+NNYQw2ngauZ/yCwgUz8J8Pb60iB1M9g/v/Avl/+eUvG4eIsPlf
/6b8ypDcWJjf7QuXYxXN5nLwd4ZXJstJYgBXzdCHkZ/XD+BY8I4vx60mp9hQMd+biZAFJ9/uCC0G
GFpTHm3LmAdmvmEq8+BRUDkDyrKkSs4GE3pYBTB9vEwwyGHjWFJiRi+q8tTZEo338jBAu5/dMgAP
ClIvBil8Y52cOzWUxKV5Ty03Dr5GyqYDlFBhPU6gy5mlsvED/ybFWBtpVYAdhWiEH86o395uLlEy
H1fB4OuSaUjofMbG3/t5s31xYu9lFlS/KhZck8zewZeFxpO3hN0T2+wP4CXMgs+bVMrCmpysenqr
gJeTealyZ4Ch6Go0F9EdtFW92R7nx3naAjQdCmlJNmPlA/kHoaz5df4P3zezC7nFxND0Q522gbCQ
UV1HxPP5jUPRe4xXK2bDyGyyHjE3YSLLaT9r0/35Ds6ErLbqxXiSxAB2bvIdspGb5jh9n47znm6A
cAcbBDEfbBP3ChT+57ajEwfzajE25fl+79wF9B/BEGBSUhaSTWJRYBD1cj4edp9OkkwQ29m5U9wr
iDeGkCf9k6CaXb46ZR02N4Nq1s/zC5oNCj+oQ7mDPnEh6orr0sPJwf+AofXbvAg2tc73vY8rnOTt
2/xMZzUz/ffj8F22Umw6Fg5VA7TPzhIEDNbJebSKaqhTwegXd9zewJo8zG97rxawGuqi8wfomKsN
OKmejX23Agae9oft8fzmUSjcT2yPilXOhovVA/zly7bJH//373W7oU+Mn6ZiM5HnnbsZNScf9zmc
dldovt4eN/JcVkNBZXRRgL0iAKtTiadZLEB4YV8g1LHRksZPsQu9hT7ALk7XMBRYjrOTMGaEet+z
t5yGMgQOSKcTY8gfBw9GsyJKhLDrcXwUmqoepqEQIGjZtxE3Al2z6wFiiPPN7F1UTifU1/xKoN4n
FHv6CQl/9I31f3ZxPjdN2CjGYcWlfnx3KVNGAcFZUlGNbS4Yozwgx0NQsezxKmfn1lX2QqbicP8s
+dBscJzvDxgyW3g57x6b2hkhu1/dbGfFKmrHdAIspui2j/u7K4FGtykaOH58/eLf3qAmk8IPm3Kl
KGjumkGlVUHCFk7vt58cm1bncTjQXQIz+u+PObEJwnAxSB31YFtVihZMg7GYa5m90rurR5rt+ev8
UIBvvLF8ER4Kc9cMqBWD3PgFqfvL++H1/u1//csvCseMaeivCSViifJRRFOTmwbLSzxnGaV8zqJz
A4WwDsfjBooxQtO1L+X3ZceX69kFLTAD93IWJgP4Y0ztGUQDwHt0hXAz0ykyc2iToC4KfTBug6V7
mw2Izw1vzVU09JhOO+zU59msep4OlimEL30jawiPUOeDPMagZxD/dQfd7oi8I63KfHVVym9bhvc/
Ym/5M4vfdrfHKvHXsUB428WpcyiAZp8SOpfg1bhCo+NMTg3w2EXkGa0ScLvw+hV126bB2cTO91oX
BNT0cxZ5d9+LqM6LxskCqO8QDcyqHGS/zEGSlYoynhrTu4HAgP/5L/8K8YXr/CoFedYOaY4CEdIU
3QBuVdk0HbhhQp4fuI8I0B1DFbofygYs93DjzMBT4LAM1WuSgTYw28rlFLxfV7KyWFag9rmsEK3i
bKMwCHcvAf8+4jAFnAfJh+kX41BN4s2H7nfx6z6JBeDXEKFDI/Xlcb9rT6036WxwrKYBl3GlD8VG
6NYNoN1ZRMp9NrW9pDyf9PhQ16Vj3as0/Oz7yZ2VKh5Mm45lxgLP5/BwMTbcsmwNJDm5+/F6mFWP
4/j9VkADNNTX7xfTUytwzDycT9OmxCh9tdCI45MXgSkWxUodmBoEb6IJfO4wQ6+b7zcQjXpWkKen
HfOgZ+fPFlqpbu5MtKowQ4PhaO5xxdyaH+/uZH9sD3c16VHzVBjISMAyB6fG5ZeiNeQHBm5ckswl
whRF1qdGZIXzSk5uXAOWKPtC+dssczcw1UqRbC1fH7ivTRiffvsV30XpnFoe2YdubH/1XPiXJVxq
LQakuaCJsJrl7AZqiLLGJvH80M+/3ih2bF5yA00a0enJt/i9u1FNS9fMM+lqanb9wgqd0pptzPez
tsQ6EbmmiT/iiN1OEGveOBMa/l59Szxh6sVL3bZraki2Rz8pQQ6NtaliqNgbLcQ8LNfs1o+EaqS4
h1aYwaQNgFRhD9bp8g41Ya5BJFSVnlzB/0VQBjZJ2SNO7LOncp3uj+vp5ltVSxBLXnxUycRqhD50
gdtYnYX1KwBvAugmJYXB4ix2+C2vBAui8N8ovFMl/iOaX9vdYW82l8NPpQgC8WD8S24i1rlQmVFW
TE16P+2z6v87AgLdIiAQij5A3n3zhsQ3yNrdvvmsw7eSdcG2bwco1A8X78COwpWfzvfD6+cfzprl
yvRPSw2a+YBao5CpchVf+NrAmFtVB1U/TU8XqKjByjRm2lVCTu1GFUqK/rPpkmrlfGqxgIBVzDQm
2vi//N//1/9wNS8hY6veecviCS4WMI6rnzpqhh0mh3zVBlhaWy1vzTwCF2wM6SaQvQ74SBB2pklE
UgAy86OzN7fDm0OPB5MTZcZJapUyNEOTQs8dUwN/x6NsK+ZigzHakfRRLoElmmxsrnMpqiAHt8fD
VispWwSVmtQvuE6X4xaS4bP8KvFm2+bUygKoeE3ZE065I6MFp5C8zF7vrwj9d9ozZHfEac5KWaXo
35s0LYO6o/arZ7zzAHMuk+oIW87Qs8LPI/Ab9PaLfWV+TQQs19K47bBL2YHHry2fiALtFOlSShEt
3A0brDJCvXVCJK/SlFURaKIBwxKb+TPkNLR/T2tgAXrAx6w6jZpIh3AFe2dbDR5yEuYj/DjFEeEw
t0GruAdiA50XgKOhiw1z6Y5OTWwG7WviHYvQar5qPKYIPeO7JKe386A+TohuVcRA7njQv7ld5tXM
BuLPjYuhuanzIoGaNlPjXFimtl7Pu8ctYMbJ7Yl+KQwss6n8dFlL43Oh2NA72wGJWtwU3RYgIqIJ
HcsKIH6eJFWvrs/5qoI4jjUd/NjDuOqWimDhpCUUdVwV40UcTR1GNXpneXvFiexYX4Q1elJ8A1fF
pVJLWGGRZBTNzvB3dLQqF6TJ4CpHmKA4YuaUqEpVl0iBjSKqBo+8j9ajK3AviLWRDVpqYAZCE8ZU
0QLk9DUugWOkuvkUKJWeT9eB6pz2WxmV2NNjwhJ0O6pAWpGLmQRefzk/ZpLXT22T7OX0DRgq/XKT
PsZU3Cp7OSOc9jjizCYPtAufXRzeJE68dMVO8nN09r5X9xAXrRoQ6mhC/vUyvQEA6mF+NyoNjJ4A
hg4U/4V2lMPe1UJedx799vIpU+gjBX8B9YgTfWAzaxaBBYh+EQ4Q0OYJQAfn8fK+lRczEiXH3y0m
398Or+vPFStyIe7uZ0EOJsYkL1+4n4buZ3TFeM04GEZn1dGYxf2g8t9PAHMWi7IBdOqgsqHbWUsr
QvgGXI4L/XmMdec0YJRzc5st/Wk2pWdrCWaE0cTIjXMu/t05AAogoGFQm05zDei6RXrwYz6YqQVW
PTE+vMd3DGMSYeWSFdJs5sUAaRITD+bNf1L/rvqdwY+3+39zAYTbP2/3/3R907oIGTQZm9N6n37+
8niBEX7mD//zP/71TxoFBrtnRprmjqba7jhtnRF5ClMANFJsrmUYPTeGBa1cDetghwdvw+QoNjMR
i6Pu2wN0Vni/cH/d/ijJyKGjUg1XNTx0ONN4vj6vwwgwOdRj/A5rsH7nvWaNOAlgiGYZ6uRN6Zw1
C2Ho+oSMbVIyrv1dRS1ndnhPFVPLVfiTut0dVowyvtyviM1hHGMU4XljfgClG6ZepMjSqYaNF84u
chXBId31oC5RGSKI5MiesiYGYSRyK0+RmQ6tDwV4zkbBAl9hr853B47/MXtJrn41JNwvWdliRwZV
O8S2mjSz4KpaqDhCRfutCLvWEnJObO+a/SRfkXK7OFtyJyPR2pHLUzAgmzg1EcqAAlE06MF5xtTg
y6f7BZk2Gw0z0wZp0aQrZURXLrit2FTUGiA1Q7dDIHr4eEOTRdn2wJfWeVq5bbuzXL1fNruk7rGu
AC8a2rp2swzbb+6z0H6b3DwrF85RQH4rdjdd7Ih6PVxDmtgDLfksq62slt/yCyS2gTpegSDVHxWn
dXiyHRsWFbEmoC0zRopCofdtA0MTZ5W8YlSfHasE5jiepif6p/mCfnEGz222eVDrHLezSfb66cZy
zFc4+w9u+bOz7/AwT5uPWWOjkQTfiMU/WFoFxT8shHSCUfSBbNxciAk6iDA/t3K7UweVYtbHk69j
N9Xl+jhNq5Y31qwuCqqVAsQQ7T9dbDyD2+MlLjwO7MRezs39rKyZ6qFcANZWv+0XXSbLeZY+7OAt
GO0iaHQpL70u/+oX7poOE6o7vrIx3MbXt0UTVSEc2gURluOtLzDWWCWXlDmuf/gF9elL6b7+i19h
QhqoCiOrzMpf+8331CW/ZzFsHec0hCmMHjD5O5TsBT/V9Y2pzkw1pEPIsXfcD4jA3GCwZzbTT5fy
VCfl1TXzYKJ8B6wRv975IPQxbJZNGWuogMZ3j/sOjzKRtuaTy1toAcYcjWtNmvbf5iV98/vLVlJ4
2W8YAHxM3WLc9gGVpPPG/ve//wlNhzNgxkJzGGC8KS6pZWMJnQkRIhXBKgnutLs8YXltxYybavQj
UK1g3CgcwEb61c74rIMkZxt13sRpjzB7pbJZvz9m3kClXtUkS9teLlB7MdvG8vnz6a7GG0qWlXWV
eYnNl2NKDhbAsDS8Z/jhOtV/viuD9CybSQmFGwHC4gFcGQAXKHTsuz7WdDX6q2BhChgMgCE+HwML
J3c57O4O5sm1vmprJWIG/BQ0iqKB/+4qr4KN+bk7asc4sjG50QxcWLuKDdVzgxnqctvQ9/y3EHCM
xFykFf58Y37KKUZWUTmO8BcMlYSo2Ob1cDrc3IXsMASjHLxNH3oyIqssbKqRzbKMvpB/Puyx+MLi
+T2d3Vxst6pP5f0wmq4C0OJoDJ8K32/esVAg6jBfGsybGdU9WzbKc2STJLjXcdemUdqRjTT1A8vq
TvKtYIZWaTxplTgvvt2noqNUtsKGP5L11FQ9vuymavDvXHmFcuZsR52HF0ubNS7Xw6yu76V5sXak
s/WYUk/vpXC07PIr93jnvWQL2f2uqFDdNWvcnsV0rsp95aeKXVIlY+5hhDB28rBppj5I5sdf+Z/c
vkhdrlC821DQ27aQlEsrtJMXFcaPzTpYpFiPlBgYoW92eAL4Z4OdRaj9oIRCFLyLWJ9IA2vkErqu
Bk8uSvft2JR0gCZ7g2gsrtTXuXRxxNpM6y6OWIPnR6uDWYptZnW8l8HXn+uLI5JOYAwBvPD1/JfT
v6Gk/aM8ZiNESGL2IbZVhoac98N9cl0r0OQmAUd7o4RWQo3X2SY8+Zn78nA68AbwT9EsQCisACPr
W3/d2m7Oh7tSQ/vu/PEhpn7qCgsh4zVgr/wJjGkNQA0EKeMGh/dnc0u7bU/7l7NzLgME1XRyHdAh
CvDjcNzvtte9/DMVpYTqHv6CP+Qe5+Y2UzkGkCY1LzTvlhJDkD+3T+PQZJy3kQFnQx65BvOiNgwb
TDiskY0fgU8hIInVH6kI8uX/LqT26hKtCrk2knPqF0daLc7eq3X3rgEfz/nlyoSRkaFt1j5UCLW7
2EKWI+35jk2ad2YlTfyEoTGfWvkzXEtP1+JNZ2w8jD6cIkcaerEwkdcmE0P5Q0O+g6DdTRclpqEs
MZuS4ffh+hl+ONm5vU3K22BMy9vs3WXsXQrwen7c9EmUIJDofbZUIF96Yv5acN8yxr3v/Gb5cDbb
fPbL4XlNusDkqfA2viiFV3QFUzEF45K/Y5+jR/wWXg0qDLgY9V6qkQ4U0mWV/gN4QaVlj4xfejJQ
46N2vtXlfHlcZJariWGc64YF1OLCoH7CMyRytrK6LlFHAYxjf949PsjX29w0a6KhLDhM5m1K1sQa
hc227DK9mOaBClnR6PRmEp23M75RbXnpE5sXxa9rMhQM7Ms2C8T4jTYcBZLAxKcDlbvnNTxc1f78
kNp6vKKvU8uqkR9StEMW7C+LkWqw6bNKDRIYGOA6GyFwWiJmKmKFuvPVqkDu//nXP/3PWZP9u1/U
H9UAnFfHdIg+M47Vu29/O1xWjD4H+ciMXOpBSmEgZ19i/lvFD/LmMh2RgYrphkFTkhxAT0S1M+q6
Y1Yb/CWOjnPBJG9qVLVcDTmzQ5ekVrGCoaqMpsH9p9WisbfCT1vtG5ah7yLWxPzH2jeUoPYmoP+m
brRtNex3AN+2a8J3RvuOqhxaGq5RSdN+/froCFvqUp6PUPuGMtquiBiV9rxV7RtWalrT2upK20+V
lKfGs9PuiFVENhQ6qOpa+4YKDkE/h3vV7qhqkwHhiKRW1dpZsyLChnDlqkpbW8UqV6xPV/rCc2U2
O7xUbi4O1D+7EJbRF/XAXq4ytqDEh9R/5OMZfRuQsiamD6j6w8uhm+s+ReszLgqUglEIkl1btyBp
46gIJHCZdq4SLuIwKhK7JmLO1u6t6NZqTSiwriHV2ThrJUdqluHb/R7G8GCBxe3x4k0N5XIHptnb
SB8qhIBqiDTczxs3WUHZMzP0ZjkGhbLVOP5j0iLedB4XsRr/8KElb4q62UFOK/fcJHWTzgivGcIt
zEqDKoM18aia+bfwcqvlbnk8arrtthexZgg2yKpULUSya90odX7r7QH/9vVxVF5asyCM8s+n8vxW
w4gXZagLeGrMGKn6nhVkBzvwY+YYwJoLOhxnYexxtLyH7L85dJ2/HjTOpF9yHvcQACZXdHF6m5W+
d1ZLW8kWXsmgZ/ElaHrqGctA+KfktnXEdX0d7efrNH80m993DfLam4Cp2dUFMKPH6Vc/58GnNbDi
5ucsqu7T/k/KpD6wmsbUl+xXuvJlT8MwaQpn37PmTCdVvNusPVMWOaLZNrMz/0/H47+jSP6fRWe+
TcJPwcbn9mkx5lbRzUHHfMFB3n7FTxz6RPYGfwwFWWg1NorMJeFta8gumaUE0qYJ+A0SbztfPbjS
eXkIu8MFasFm7rEMFEGMNSLffR2RFs+pmchqoRH1C+ypyC8yHMwIJSjmv74WblPEhGWycSRIOpym
+PPjGC9VeZVtEjDpNfWke0Us1pxUdX44LIYrwIpetrfbLPX3iuRhdhHENSr790c+/WmNSTS761J7
C+BrXa5XYf8uFWDNmpxGKeNCNKFXPWAITXdke6TrWQMMMGh9dvnWCB2cl4n00CxMkmnGL3JeMMaU
M2XdHLVv2W7bsrE+awxndBejoyw7UkPePwgLf77TTwd3EXAJFcZkWR+YdIs9zWlRSTl5x8Qfu/9i
DAd3Xg7itGm6pU4CtUHp4nsMo/WU02sXofN6jSpBdiuqEsa2TeyNL4ULS2/BpPFCNgIe2t3kCY/A
78w4bmLuUtwumcql4O9A52gAcnkcVpMueKRVEv0fyWAIEyvcRCycQ+7Bq+S30iYhwACpcWKlzMoL
YQ/NhWICVt2zr6OYUDzq6u4iZnlmm5NGVWn2U5VGfds1DOt9kovDHlMZdkhdJyzAc7gv7ryzHaGh
mIRF/rF3EnHSfdFLOJuD8hS5FwN1bSutC8WwMIwroR5eyUIr+paFRUeYR7WsLFTkIVsC2DlxQnDi
psyndNBSTAundsi8+sITNYZZbx5yLXQyXedX6OYyhGSIQoPuiBchRfn9Vzc/dAvgQcElVEwFpnxp
EKs/Do90qDykIU3FGD6VulSyYpo0UFU9B8zDhMb7+brVHFp2IDh1qHvOy+8n10r0GdXcf4gjMD0o
FLOyO4DnKNkkjpEUA6TNFazQiIo8YIbSxg18PeQUZy4GxiwQRa2Nadyxk7dMdqzfvSLP6nSNCCN0
vvryfN8Zft3P9ujr5JFYY3wEbw4bb0igKpzAzDwXkGmsKRZF+KdIJ+mb/NtqVTxRidKYJLKBCXN4
HDSI0r1SNS1uWDbICwxUeM6bcARUuWe5tLE0jgs74b5uqbGm9U6sAnjikFlRfGKhr8InJklkDgEk
nUYV3A6n2Z2olO0OSTBoaL5QBqTYK0vntTHrUvUFk8okofBQtOmcu6CpXz7vME5bk30sugzFdQ2B
pPLEZVmt1Mzw8A6kCZ2jXykUMazab4SNIpWPWU5sIDBHFYjKHGKwHNjeegN/TRuoM67smtpBloOm
zAH1tQW5U4hxt5wvBjKVaJIwdufpq+EWQevnDGfjuSArCktiNSUeEqQvVsGk/yo9V7BqNFO66obE
lh/seo1RdGaqpSVqRIm8Kp9j00hzvy5VpzzgMfVjglV7vkyncjjL1CzeBhOs7CKv5ts1oAqkVATC
6kjAH+mebSmAuore3iz5Py6aHu0Sf682Q6FwtMDk7KwgA16tqCla6eCzbIZbaswgpLFi5ezMIq7V
Ft6MYuN1iWPftWtyr4p5zZzuKmK95+9AyRiwbDLWgIy5pIOyjiZV+ssSI2fKrSrxY+VfOFCrXYa3
TufHTcs6sFfjx7YO2YRRyflgyQvf8Y1sM2vJP8Fo4P9ROJKFMAlIyvc0BaOYKl0azB5WPIiVAQRW
uQ8jAkJpfExkhsy1106IDLnCuGZYQV3Ve+yGvjOl7OEX0gR9ahIp1iXInEVEfV2lVsUKB9wPouPp
fUXd36q6epmHbgpPXGEhrvcBa7ZdX1KrWKsmfSAme4g+OhAadwuamOVoDbj8ti8UGSoPz6RlxEFa
b45nLfpT80Q9xP0Qbzl8WbL5mLXtQfTqUbQmFMhD316VZo9ahsaHwybWMFNtmySKPrDxBmh9aABn
sIVqmQqsiYafcshdAP2EWM4VIqRhFpluahcs7XaRQv1qSvGpgr+Qla567vE2VNAhHEmBa1jyIGkH
zQdrVqVmWLILvYZWyWPqNSc1j1JxOInyay8Dj3okT1YT5PJRjfl7HArlh8bUgB3FoHNa0qGFnRsW
DDBO3DTRnXUZXr8keahpHYC2uN3aKoLvfj1cPqRZMF74Ncw1dqX1jVnTCld4Y3WS4Ap52acIgMLl
vMKvpTLqaKbinQaHVrGlWSAW/AbsV3k5nGZBtvnp67ox+KUYeU2iJPImRsLUCmf1ixpNjAiCl+af
gqvPKhQMDPm+IC/0ETTC2Z0QktN9dGuS6AP46NjoipED+MzhK7vy7g39OSgmGd/NWgYRN0bkBYnQ
TaNEyHe2gmrixi9SgfBBrCTARXTS2jsW5w8dkBhmNWKIeDCYRyDQHrJ+wnBctIIQeev0bB/Fx+l6
9o/Q8X0/u5jt/Ux/JK8FK9qgAnKIoOL/f/mlLv4Sg6/Rf2lB3P+e8hNtshmsq/h//1AHWocfTPB3
r+OLB4HBn7gA8w/hsK/eRk+30cfSve1+nz4aNkRNoUUbQmvNLs707z0xQ4u1sQG5fGL/uNMa6cpI
9f7WH/+NfNv/Nrb5h6+jIgFJc1f+4b/SxF/xdbXV8Hed+Vc5juShz98hiitrir5Nx1fIas/WshKZ
ZYl6J87RmvSENv5/fgGUjT+f7//xPl2VYEGbLwWeDcfDbsI1wd8j3c3r5FOsKmr+OFL3EZYBWE44
EHvbafUwnhL1u9R+OhSvtX+crtObS6pei0saGKHKUCD093E86mW6OqD6zfbx83A86NDbPZvb61pp
65GH+tiixOXUHN+cYoW/+BP6Tzig/2t26LbHX3bz0tgCtWW1uS4k9F9c+a2rwy8dec+g1yGMiUmp
5ZFvHHRI3Ksf++7i8A76SAMbHxbtSKG8w9G5Is7ocdoCDokLETgUZjgOjeaYttW1/Em4OJqDb/OI
DVqjVJ2srOcVOG6kvUvxFU+PNal1MRUQ8IY9klF4ROI6qGltYOAkKXNtSl37/mCqdL5HF3J4zsk4
OndM6abwFFiXWhfjicl13d1AvP9+TA83y+59vrWjk6K19qzZDquYyn5+iyrOEh54kwzDiC3GiaRJ
lrtG7NAbcEoSRezT+rRl2XRZqNNc90sA2CpAjeJK2CgFABY3HVWYrGGn+QYZuj+MjUgmyhW/pqOA
cixMA+PiYfo4E1kYeAEQPY0om61AidXFpUGkAAMFpVWOfJC6zxPkSPrZqL/IgLRIjU7M/W3SzbZO
A/YDn83gMjBZvoSUCrGmtqSWqVQXxWiyGwTJqZGpk77bzqwX7UW53qStw1x6JmoNshv/Ot1uvuqt
cJCMef103iH/wNnIc0xsF2yUYWGj2JpbZCE0qxcItCn2E8Yn45q0UUXw+ZCmC8bF01phC9ZpWVGi
+J6BJxCEXCZnk/6tMK/x+fEoISlWY4uFNpYmgBcT1hUHdAHAtfRQk0X85fRHNWJXsaph7MzplmPH
iiecgi+NyCUQvw8jBVxKFhONzthwSIxydgQSa2w2MQDicgyEEAI8fHw8YEitHBnztNjYv8oCMhz6
sxo9ZVSbpUF2o/8LYWTORgyEvTxpDtMAb2/msoOssYE6GzltfIdlhalQDr87E3kD3j1AUcfrQRkf
23ZsNnIbAzDfXVAWFnN0kVW1RMzjR9bJxD2UsD8DKK83tjaNAIbgSZh0hChGvXiPLQ0rpNyPclps
ZDME2JtwtcB1BEPoXFARqdRfK5tYO3gPNJ1qdXvfXrXZgW3HJiyDXYgtwDpjKJszyb2FrfEUFiJE
fu3Q2Hhq69ZsMaQQA1HTPiTgSszKdgyO0bK6Xyu99WfGpkICslwdQK4+zlesG904iHX15NnEQx8A
cCBrvqbjMBvfJI3oHzcstbi9u2IYkfuhLg8vF0DUITRuq0U66N0pkePh4yCI/4qNrQSp5p5Ag1lb
tjCYTqEsxEQKrTN1WvtEweF4IoCka4yRaaGGBVrO6OzQfE1OnzPV5nHZw0AA+jVlpWOkDsG0GgF/
kktwPyMPUqzYoFygY1ooHcK8O6OUrPI0/XDde25GgpJ89MQ7upAWQuV2Sfq4nYVHKERWKNXEISBn
7dMiYd7Dqouho7PuidgYB0AF8DLtzh/zPTxOsYtAYTq2sgH+0i9XZlavjJ0XwP/Nfw1TDWcD6riF
Nma6CzQCQqeDbvV5Q9NQJsv9QKg/ZPeL9qxGhJJYmGn3W4ap43LdvP+WpdKcHK+dVHtiN0h4uep5
N1XSIXMD2OX1IJXQex5p2fOPgXVGd/5b/S47EiAgPFs0i5Pnb1beJcm03vF+H+Ls7zCGx+mVaf+4
HBEAV2EwLpO8i4PikR+ZGErxG2uISVuICTxTCLL2fpbnNlZssro3Hmlw7WwByHW93kJhI7+riMaP
JlwyHUWaGt52pIw8mf8KPz0/1vPHhw6v4Fdh0xn3iBMQWhactlKUIY0wrhtA0GxCgPl+vlygPm2N
mdCxYeIjK3+Ao/DS1bV6HZXTZAPuLc2ueT+4pq5P+DZCwDPjFhrzFPNlZIYaRJejqr8ct58Y9nmc
/NTl4/nHLfwITYdWqNNI7gTRmkqznld8k3mB7qIjr59vNpqoEEI97SZl52zmNUJOtZG3QJMW+Yqx
JgCIIHPmrK0vGuKWMV0HEZiedaPEl+taCqXDatnFwjTKJh2AANGbOJYuTLbwpr6f9PRX5fA6cl8g
GRuqfh1+0+YIoDDOQ1AOb+EgMLTHpWiQuYuOCaJAQbzsHtdbqjeVjTAnylDslHuHs5ft6lqcnETn
SiFHDA+tmDYzCGp26sreCpOcLY3nWPoUCgH28iAHZSosjtl+Otucw6PjH1Ex/SxYLzDxPqL8Sj68
V1gD08NOwrZhFHKg6wNm2H1zez9cHEgVerlF6mQjeUiuNk98e/rY/jqFP165cqbZWkAu9PLJG+b/
6QQU4uxcPg6befn7o3edVKoDKd/OJRX7qlssGc/Z0/4z1CKHlsHikpkfAEHKp/NA4vMfTNc/frjC
7tXEB+ZQubyJXawcmzVZgyMUj93P/+uXv/x57Zk3zAGBeXvGalv42vEMzDp3OQyLvU5Ldrm9n3+s
XTAZdgZkPibrSuyNh1UkT1asSy0izGD+LP7tfX77XzgMw64Tis9w0K1DJN9eDt6dgIGhvqLXAdv5
oTGFfrWx5YCNBoZGRO0JnbluEKsn437s5C6xhE43sngsDL6ziLqRIRoR4E5u4OuxAAU7Jh2GsOaR
mkTdrg+nQgLQEakZnCyIJRhgzuJIzmo630BEUxgEyzq8qD0+3LSt4JnIYPBhdJAvPwTWyxRMw3pX
UasjNYe4EVwTH9pe8z1B07dUYb+9Y4ycDR1aRa0iQHoPPWICbMh0dcPDvkiO8O2h/G8g53R+mofv
a0jQEICGhh06NC0Ws7xcz65uFsp2Zvvy+kCY5RXkOzq+0Sf5IjaEtwrgM/bPAWnMm2fyCAM/tJXV
JEAzRETbZwSpZhVtUcz9TKUJ9wNL5NXWYc7Mv1E90U9CqQ7BVB8AzFJ40KHUZwhewxTXwjwYpMiy
xz3D7vzpMosnBCZB2ujR+yA5uoLFY+gSfN/2edJE8gsKNBkERnAouBkIHVy8Mm1VhiEIQwz0+SSn
86t2bkMyRbjtnr53ApIrHXEtlDiGJocQwX66VXmgEi7JMrhrqGM2eUKnMw7204ixVZk4DYmTgjG0
YfTrbBpvP7RNVgk5VCSZlZ2UKnO/MIYHXsUkScoA99mTdOXmMFZRWxXLiLvQf4selVvGP+4FMETx
Pr4ATtW1gzjVrPRJ+K3zojbXB/dEicXcPI6j9vR56Z6PcmKM6jJdw0R4r3/pn8kh83O2N84rEgtt
4Ml65HZ4soA1gMZxmebm4EApX1R54CGAPPE+hqk04g5j6QDJ+/kZ6CMSfC9CTb9QRZ9b+wUwvOa/
OU6wk0+NOAWaAUSoLxJHZ3/FsZOkhPmq5gsns7up3RkVUcZZscyamw3X+drCzHM/Uu7xcptd8Idr
TwXb1hnL28tFacf1UfCeRdBbwKfwkQGXCPnkjW8F1DVPjbEKRAVR5mPfWDJZTSPTMjIN9eTBtO8v
kOmIDGj1Ab0MqFemFpzEknKpTGkan4VCDu9gwDAKP8EzlIO5W3eHjzXDiVvg66jvYN+4W9weIPom
NtP7EeUsF08KcEHZwYiDyReSz/Cv/ORN6IC6bE+T8iP9sIjHmezPeKxMwKsA3yQ4TwphCvS5HjtM
FchkYRpV9MnWb2CgeOnYIohI8CXBQvDjJW9qmtpfbR2vdvDW5H8tnVIgmqQKkR/9/Ml1y/bjoGl6
du0nYNn4a4tf+AJRGgTuOwUxp8VYfHuKAyhBcpyvriNRtAj8wbSc5xuP0hD9VOJ3uFL3R8oKabp2
43IYTVuzJYY+xJdpZpGJv0xfXqEs0bIl1n4mbmj7v52PTjACL7gWTgZdqxCsiCBMj3Gzjf5r1WFC
bt8NxRRKDTz9ji/YyxGzir5Cs3+mOTCPOiknhQSMf3WuYvlDO4sm0nWs0OELm3WYfxSzQNu8OiDg
23UXxzOLTufInM4K2uL6wPkOk9M1oXq776bQIL8fNQ1GIW43dP1vDGJPnOI7sqmk4KY76zGkwF6P
iPH04Wq7Ka2kb24kYi1NdfQTw18Pdycotp8TTgf+rlEaaIvA3Ujru6u73jmo2OPh7QSj1AH/08uh
QvZrZGN9/eGBfm2FC9g4xJWbE9fKOi0LmtQ1G7f94p/DypML0+pHbOnp2YWuI0BHD6gfY0hzuxIq
X+d9UPigrSj647vCsSThS9dPm3B5dwS/cEVl6QRsV4UIvOVbdr0GV5ZGLAqQEDUWnWE49AAsqqyK
jZIErNaGg5q8bgFWV+WZMOLb37Kl0NhabhTgi0Y24BiWB14s9vGvpt0otNnWIbOKcPxcUPjosq+1
VA6RVgnNa8OCPwFnYL8BflOo8BAjqBXoxWcZUD72242BP03Xb/vzDwCP+EbJaNnubckKH10eY2xC
t/X92/T9sHP9fd/wB75t7988LoVGkEplUGBjzdPnbKoddt+2+z0jqRFibg0YWxicR2Tob0pLiv+e
6n0aJ7iaUOLkZKpbgt/KN2fW0w4dt3zbH24754qqriL5HS3Uo+PBhcnycuzAr475G5CHRqTG58v7
5gz1b1hd/03FW/QLI/+etRV7B5h4I2w40MvBSPuFjuw+Xf1LMgeofAt0TDBnIYBJfIlJLfOdoeoS
CwkCT/nSK9rTrI61JdUpLoI3Bh6nx22ic/mxvYoFpp5MVzFQBGiiq9pavUN/1t+UElrcLr1JAIQf
nje78glROAP41aLu/soT+AYCS1stcXJb1xS0CzUasYNBZjG6XhCWaDHy+gXXDfjmWjG8/zArsdnz
c+kKdJb9EC55la1Jwy8Y2XGEbkpzE3zaEL+wieDuU6XJyv/o4ilW8cuQbVm9/C5liZGW7+wEbfWs
dtLjZvrr8X40szLiEWsRVL8YFnIxsXnULWb2Qh/6aipWydlRJWc8TbV11f8601gwYXq0rMMkoINT
kenmMss3iB3v1CYnYMVqZOsbGg+iyltDXMERONgBKqlAj9gOyt0qRus6Xdz4uNN9W6ggwQgVE1se
GLblw2VhPbfygtjpOfNiHOvc9vwU+QKpjol2P28V8X3C/nazTX/70vnXxB8d9tcDe9z8f/+4vF2d
AYpe6eO2VVtxe8py1DD+GFM5s1xzAcuZahAjWeHkaVDeEGphal54iesp9s51bCJpZeGvbc+RyDeN
Mvly/p61a/eQ/saq/MPPaf97H+iFLw8wJnA2P35ML7fz7tdJE2yGWUjYCexL/1xEwqeQ4EMHOgVI
Tfhv/C8QrnH2J3oYy+fX7V9BlLoLeg5FQojWeCJDJMJSewsi+4ODxHXBOxHUwhPrI7EeOvacVfl/
nob7BqXl9+/+jZ8oslfVBdwVm3IL2qyn0cGRRpS6Gh2W8YPkAbZXCZSMRsqymb2OFFaIZTamkmFZ
WpeDxHihS5XBBzFntrmd5utQ4nptjOuxgUER+v/Dpct8xInpJ9CU0BPp3CgX7Aodp6KpDRB4FQUR
/Qj0NvNr+/N0A0BVnyDJ/erl6Aog3e+633dVHicxnel32ccfdiEZFNePy8WPgi+kGP3aKe7r7g1d
3f9+nF0AP5QnZESX//2OgsZ9tHPXnLJW+ODXVUXSXoisJu3NjiIQnf+VmsK/dcRi+MIGvnRbY3LU
2R9byyXKrwx0cMajXfgbPex+PZ7Pv3qz5XYJ4H/YzSej5LQEi4T9dmhkMmDOnx9Hp6BCWg4SbBrN
juCFEIo8wA2A4I9d0mF2ru7CeZIM0q2GqLAJCHKQQ3M97sfDDs37+3V2ojcRi3U6JSCIWPDHKsgw
ISHpYI8fZRiaETUQL8nIyQ1PpU6oBDeiAJ7pPyU4JV+hhaYNffvbNtYRTpKpI57HVzfWESQbKwhZ
tbGuz2+M3+Jv3NqYUu5+29aGhEqQg6vujF5C6ABOUIJznLnuzGzuuL9+QE1y91hu8eUDoqfhnHmX
OoBtPq4+j/m4vw6by1bokOuZSwiGnomlMLO4OH5uXq7bWTbohbOeiCEirngEAbBvNxfQdb8PEsdB
lc9uCjTXwShshWAdCUKQ3ROEhfiaDQnbwX/dkN05Mrz92/n4fYoWoguGQ4ejQsjSMtxjbbL7Wr2p
ipblmn0xJbo/f2Bu9U4SOsI2OKMYUuX3M6RNL86AgCC05o0ZiuU6nRBnFkm/8EXqFJkYGHa/n2jv
M9jbF3fbL8ft6Vc/78RnfPXhNZ64ZeFZ9xdsinmmPntKvx6cnHr76k+wwJfPBQ5haIA/G7Ry/sNZ
xB+T0JyItNIaHlxspMRaFWDyH2viED1pFnuq4iCg7NqkHidcGsUdBhiKIZwjGba/6b54OB0KU9FA
mI0XN0hvuvpu/cfH5Z9ublYb/GP8l7/7KbyWlh4xuBrYeukinvI39MIgcOOV/M/HUf4iFX/oqUHJ
IkB4XqdZYBwnf/IQXZMo2TaRgTa0880Ht7lv3+TvyNMGf3n8r+TwokXsZLm8DRLAvuMZU5r39w95
75Y8avfogq34XVkrOfTMiHJ2OnOMxY9JmLp7wpZgpQSgJygP+KqpqAP3dlzzk61NPkbT8flsd5fa
tLVMJtVGUKeHR0XRytCSejv8TUX9sWxmdQ04DWM4d4KCednufn27urkBCqGOjYOBgkq0jH0j0AFD
1KGdvZCuAYqEZ+QSwaN9XpiSUwAKDKQb8lkuafNMBWp0LtPOTTBygkdbExtmBj4YJvznl/m62e7P
DvtzP5XmfViGjB6xtUCXY/EkVrhcJ6fZX2dHy92A7A025EbX7UCdxWmrZaDjKuE2KTKOvF5Pf2QR
AOhy9cIbOoxXrM+StzpA6gA7OAPm/m5mLQm2cyBoAizginIxHBAGUT9Uj7mhIEBSvKMkvwbC3oDv
2FgXpaFhIEwXv2Bq9sdZoVA0KaXu4POaBREsdSFAzONjezq8ShAV/vLpx32fHp9E46P8p/mvu18l
yeDXsIjNjClMiFoLOxBSgo9bQTTEK/w4GPzH4bjfba/K2fdEAUDTA+pJCNGia7LiRCh25ye54m5c
mPvqcOtnrRj0KoipMsmmW5JEtLXzBXGrauVo6EEkQ+goJOLQPtJ1GWV7FAd1AVXMD4Y9rLgqSwTA
F0BUCPcorw+wwn0TsHIcnOf87kJ631XPxFuXKbSsNnUcCCb6aRvaSVjLDrYj1ML9LN1nucyGMfo4
ERXSbj+Vp0DXxYZh+iNRes8HAjDBklu2IuKTRvmY3uDAhnDEI1lUMivnQtzawtCSgGsh9+p5zmLn
SbMfwjG6BN+P7ae73eMUAMjud7egDZupoiyLKZaq9n1qbWzVcZ/97qfMMExAGTAADdaH4YCX7/OV
n5VZPAPh5njWb+JYs1RYljdSE/P2lFf3eCoRwlw55ir3gMuK1bDzg+7xGNqKIxml5gm/bGILqDzB
Lr7r2YUPZtW6dSVICnsyLUfeZnL6hcNnv08oLkvgv8sV+z/dHwsVIANhL0S12fNZy9g9qbanDASQ
5Yk0MYBvAadCAeGAb6thaYgNfBKPnGceCDONiQqM8KAMjfabq+W9qrq7ZUIHoi+uGCjD2KHCSDcE
iJihaR8IU1U4zI4tpBsJqC21TN9V69Ny65ZN//nY/nTujSb1WObMxLgTMKbC1A2ze7x3tBDYiv7p
iHnY6HpFrStvu1tyA2rl/Sxfz5D2Kipl2grkqLt1Ro+2waZdmD3Y8HB+ffVlshCpUTizXtgJyE6E
Nrq563YXswmhTQ3LxFKOWmHy0EKggwfBPXaf18Px6ECZrwflSfSMJaEGolvwiFUYjH4ZkJvGiIx7
DOE0ZfsDk9gw8aVLkK8Kh8eeMvD5sDAVEfpIObYmSUanw/xcQhmaw2bTwJUlB/FCUFThhzQOYRzm
W926hdkPyQwakxfgrlT3z9RMU8KF23Tws7R2ZaH0QF0tTRgHAspzVWIa0U6ii9X0eRdLFTh0HwDo
P/KZZt8PW3oJktKsmZs2+DwAsz02LtoPXUub8+N+c0Y0Y5a7IrYNcaqT4JhPxNP2nWvK2dKi2OA+
CFP4dNnSBAXgdN1YqtlpQyULOhjEWEpLkt9Sk3q0JgKyhFBE2UTox6WHUj2xoXIuTPAAvD3q07xz
T4/DVopAqsaUDU3OCtSYsKeX4CzSZuG4sd7Tw93N2lHEi0lPuNWNFuJFdYM1KwBpAV4US45+Yj3g
/L93ajvy2vCv2+9b7GBT/aSe0KJ9NJk1qwXg9+e0tRf3WGQqNsE1WGoFTXAmctzpPLuvl8fF994i
pI5IxFbUpghNsSgj0BLe3Obt+oHdl6ufVPNyPf8Q1YBvzht4oyLNvcXmHj9RGAcrBkky/XR4n4eI
iv+HP/75/yv/wkDtn8BT/XNKGtpg3JM5XH+9CRoXTtHYHC1MPUE6E5FlkoHDjxfcSGFeCJzxSF2Q
4Mx1EZ8bA/FpB7lGq+lpuSA50am97mY7ErCZ/IU7lDdXRITnPKvuSen9tL1JVoivXFuh8OT9Gpt0
jdh8By20nqY/Ow9IottjcN8ttb7CdXUBEuARRrUmLaTnj4NMrBno2YQUyXONkJ+Z5P9IPjZDfAi1
95gQmw985t9/+eMfHO7kL1Po2oQHeTjBzCdX4fThmUwk3zLyhqAfxW3vzld3jA7dtAAD5M9hSA91
5IyPTvVle7spfM14kfpUUS7OB8iX6HMJiBzzfn4c95uXyXHr4T67aXIfte2ImSBZaZZnjDUOsUjg
dD6Firp/80OBPuUjrmkLznnALQAuTYog2lS9zJ99l1wUmjOI+CXelzzYFu6n6xPBhETjNi/X8/0s
mpD+hlNZ0faSGMZu4Nt0/7dA9S+v8nZH4hzA7kxEJhsUpXJPW/WplOhEJfF+OO6XGkJRDnQZgApa
5wcXAnbHLfwGvM2SlLQkOdicVsaKCIEJJgL+DFyTfAgNSTaISnVrOEfhmTGVGB1V8Aev4206Rx7y
+CWxnl9zMD1DcdiFngbkBQfz8ri9uxG90HdynP0C/w/cEtEDnn4TpIwA0rXlKm7Wa6uVGqFnOEma
q8bk6XDlWCt2rJDziwMnUqXhnc/tcXY6FLFZN4nMsWOeQflFzXrk94+r2+6/IWqiTL5lx9d5uLTM
UouLpMNjpcry4bnbmI05AQvEnyIHgwDsqX75gJy95d4PlySfOMKE/zTTokrVj39hdBzQUDBkj4OV
Gslnwh5rQJ1Il48P6D+DDt0eFeVOxFwo7tnu3JdkR0VXBEjpDUeGdkUM3nTzxepOjsIJlsRny4wO
yH+EKnU3tty5sxFbWT6ogelseC4Z08KPkyysBnvc/SmNOZGLqkuLmHo2IF3oIiuD6pIoyqXJmt8S
mEk0yRT7hsG6DCyVnpMs++l1O3+svFpmztCgS16nn/hFiqpbPP92ee54mfNfp59ogsmHzyCqoOi2
YlHNw/+A08ex7R/nu6IZ+j4xWcOwpOfTx/79eXmAfKZza7dYXZ+Xx6ysURwc4wUw0+kmXsKTdzrI
+6yZvjHU0UlW/Qrgd8+uTETYaAE+XyOUWLKghqt68p0XLrqnGHG2TcIH+NKf9qo4i0wbspH0R2jm
xILMn8CzKPEdwquUeBwJMN/DYlBDtKPxv375j+11VqVQhnU+7eaX9atzRq733UPBOukJscPd50Ay
6P/51z/9z/lh/ntoetnv/+iE259w8QpJgqgBadRIJFesjoCHIEQ76tv9whpNgl4TsOqeIyNcvHwp
MIIAN15cUaAgoeeDYN5S1dxEhghlulhPmxejj9Nt+zqJ2W8vScc0LBRAQvkrCeaZzNwjw9QiyLls
iG5zP1+UMB17JT6mMjwZH/5+A5rdfBMfh9vtNwUe2OadY98lwx5LvSf+ZsfUhkdAjvkuN/vZrNss
67TkI2zHxAJA+bA0b7zR4/WHUvnprRPuF8BqNWv+NH3XQkB1m/iEnckLwFoRgMxeb+Jhs3Gsvih9
Oh4cVIaCuOYbrhnkpZMy6JyHIoPTdj53gGZ8+QT8Iij4Vtq36wQ2Y6hkaovBphpRhoA6xFcRkPQB
wB57EBTmwN32SQcCvorQtIvrvL+7mDXN5tbojUm7Ohad3EGOllfDelmgH8SLdSYxLlB2fT8cwy7L
JKlpo4cGFkQrSMPRk3/oQVre3w/XPRjqn0XJ2TCMPuC/JHglWrZ6jJW73k20O2LJE9lW3PRWZADz
HKG0PRSic+3gkhTH83k+V+dCTi+3/1bEO4vYgda0VOH/56i4EO0A5ebr4+TjuK56DcQ34cK7CJWs
SVvCgTPQKR5CEc5d/HmHmmvqcZKAhUbWBOIx+GgaEGcGZ8tper0l4DSANunktSh2/ciaFgK4XOdP
sbSArmZwizFvxRdQ8sZHmgKKGHJ0FJl9KDTIVoQQkQ24ZMVT7Ag2zeEEjqSO/+lPf/rLf8762AsN
P7JraRLhCBSFPN0zaL0kRhQ0vqsoYTRBEwJcxdtsOqo2ckcmrfNoEZ+Fr94H1760ZJsMl+htsuR4
KoU1a7B8HVmktZPOtR1Cqjbr0BQChC2TfCyeWwrb3647JXY5pN5MwKqZFdKNzWm4/zhDM+NNicOM
iRcZOMDLYyDiFKZqw3apc4YZhNn6BK992u9f1iWJG5bo8ZiIeSPncnVjaKU2VZ+zrtLgvBiG+cNf
/vVfXKnoB8MukpxcFiNqY0zmaXWtYoJ1iQpE1n1KCeqWoGnSQCNW5H285XhohQ3ddDbNLlZpAohv
UAnZM3TwHkaLjjxMmJwSoqkBJHjaKCdzKW26NjBt1wxfz/aDcFAu2KYn27AWYQyE+LGojxf8Ayf9
Dxc2WEp6IX0SqGxC+s8FeG586NOK7tJhgTCHpiMzxTzdaK0otMYmAXULdVeHqy/DI1oeyN6VqORa
AnFhZNOOgPDSJdvc+GKeeJR/9Ra9JyMD6g1tMuIhYFv7ZGz0BXR4/qFKrHc0i8AtYV3ZGgHmnnTR
jIu/LhoQ+PWQ4PWh4FBurHDQI/k1gLVry8esnG+XAxPEBd3fp9f7cynSeaftlrrVHdujS57itmgs
yZrdu5iVU+bTVGxcFOxijM1qZcczjKqKd1MX72bFAIaRwds1gHHXFMl6eVJA0xwZI7urbwYs8nI6
+n//+59iGDNabhtyd2PIzGyOs4o5KuZqnZqrTwmoZCQd/xWZpiUzuiEjQVirF62Tf+JwMuosuJF1
uoNdOCYBSu0wFHoNg56OOe4vL5i8nJJha8fEFre1fuortmC71HWpVlIsc4i1CSa07ddS/uIl2DYJ
srfDqksl/Ablehn2dp87G065PIJxZGAA4bxN4VR+C5fbJuHyUOTJfsMBAcS5fYgL81PwTFgO3+XO
ui7akiDz3aRdZ7w5fwLqeeFPbu5oxLJ0b1KSRwANy+0TIj3QLFbkWebnGHTE81kzNC1nS0xJmJH5
7Zq+EIvYVvW8m7fZDICP6B9zOhMwhgYGwtTayr+0ABQlRYrWFdvavs3ZoL6PzcVqlxWiUI5ulCB0
l9CzmSRhIYbVsHIkd6+9ecqeLEKyMT6oobP5bIpJ3DQ7igW2P/OoHb60dkzSO43JZqMbpeCizeWH
2JtCw+dwgiKAw+l+pjxHKcnByqeh4aez0Vl3AaDZ7gdcv+tjdoLW1KiyGCUYgnXNfX9MTQBVnqYo
3oVhbiAUhHYyWaxVvJ/XZUIMz3wL0UTPhMVVNqzo291aVyW1qr4MgtAotbJUOsfBsfXQ9apk8b6f
IlwYPYdFbCTvFKI+a6sMG5a6dGqqr/Ta3FUO/1gl1XttVSp1vU3bqwAO7vN4Q5rHeyK4uiivbbr0
LTd5idApQZY+CWe045pC++3j51cK7dskjoPVvPgT++n1cJpCSbD/mb/oN4IOw7KEMJMU4eXNq4pO
2iGl/FxLGoFup5/Tzo2Lmp87dL3Ld7QYF1Yx3KIwKQb6vtKeU8VcYFVAY+xc/5L8Ncpye6a/ALy2
W+TLuOcUAshgqi1KVRIzVvp3WtavSkYyooWfrANvAfwFTDGELobrzlVO/1OAT/vzL8ovVW2CwYZP
vPRL9ENv7Ic8+p3mlXZsekRsJv3Ctr7ya2FoDvjAJj6+33qI5736W3yySYzbrT9GR3mW8NrZ9Ung
ovvqRS03o3NFnfJf95xMeuLr8A7ojzQGb5I4GWtU0Z6V/9F1P2CSC7HV33P52knZpHSgy/mdi118
0ZvD/XRpKK/9e67/F43PxjRA9vfwmfYzQ8JhrHRZ5rBVktMms3jbLutZ/0NuhIM3xpK5L3BY8c2H
0VyxLqVZ9UrWRWfwF8Z0dLH5O6WK9lNVko7AEoy/QxzrEmwxeTj3a/M9n6Yfm9JoopaND3FZ3qb7
wiFRGUVZwrdJjqX74m1rrFonfNQgeu7ueLi8nLdXP1Btd758ug6pgPmR9jcEz6SU44O4x0gI0q0L
oHR1SPDEn4DB9GnNELbe3UTJ7mkTbvPgbmPon2iLy4dfWQFUPRLgeQPQpiEasvgNaQOiVeyjQgTw
3QI2fIXg4bHviXXaKCVNi5AcJiE/P17Ox9u6ZKxdZKpzWONJOGrz41elcLAZcrXXaYnqdXqdP3uH
wfCHnRuTs4PRIx6eWnFFWeimA4i9egnJG8Y7Pznm2N55OL1Ps3tRrC5oWQs6VBS1fSX56F/ofjRj
k5YaWKFLcVUjChrudHUcmCWJAq5rZGDVxQBMhWGJQjxR4SzWTAkI/UklfnKGt9CQrAQ36OhcyglT
hVnOygVjfcWySfpamkyAczYBYJz0st+rVA7ImlOkgg9cJHPLFXJpt5IU2iA0AaVzwwwJLZu0bM8H
qM9j8U+vTkun66873Y3idA+sDwo6Thvx9MJjPxU6lZNp3K7G8aldRRuf7DuoWVN+VRPySRqLZLVd
CFSlTErylaPVgm4AgJ9e3o5yUBaLZhdN7EqcqEpEcW5GwjNHxoCtGlc1aR+CGP2l7FUh5lun8AdP
OWRmAm6Ph63S/GNYAGdgMFnPMufkG1rvd21Y+Jiieth8ckrJSTGh6udTd2KpEw5AXl3mxIe5t4Bv
VmWkjkvx/fOf/vL7/88f/6CwpE2qDnsrHVrsql6h61LjJNV1UmyVKhvWBVe7XDlaQnE/eS7Xrqlh
UUrHiyjflIZc3Tv0tXcsl1PFnmclci4OcPNxcyaCCf89iwpRKzKtSfsAG2zscKXjmE9xfROhQhag
q4qZuWpI+03EJ0e5v0LiiuGANDQNQDMjldXViRzkoyjztYZfeYOLVuAVRuJDIcfBS1jfITPoAjT6
GoNuIAUwNtimIfTL+yNd0zBfE1EorayHJ8XqCxdiM5W3YjU9y7CZGkAoNDpXHm5k4Cv33qdNWp1q
a7tMm2JpMzlTxyaaPKpM6PP9GqKMTbprMasMQYT71ZWnrlL5rCi1dhmxunmKRYY2JAxyKXVGXp0O
6XVXT+k6p19iJapYO1Kn7cx1Nus+KMn/KudXPrl5IU913mswQ5YnhimHr3qphaZjy3KvkJaqF4Ns
lAb+pk1TonIB+mq8s4Z5OpCgH76S98f+xRWATYYhIQH+3SA0c5+YRlfMdqwVI7/H5nuq3JDW05vD
UFzTVzXkAGg482FBQbmhN10d9hzApLHqd6NPC75fPYL3+/V8Oj9uKlHf00y1iM4Mw/onjgikfd11
rP8Eykdr3hjrG0d+QfFepkZlhX7wRR8RI8v7oEJQV8uLJfeJ76L8MFV81m1PE0FwGzhzFxyAMq0h
WYhLMa7pHiw4lH2KjRJibUsJBH3Oats0k4VQ4pOxWZEWQrf8oYQn0zAgEWcb9optaBQ9bHNu3Sot
DEu9npVHyDQoTGzIePixA0jZaFrxEaqj/Dn9guCV/8YmanpzCcZ3IFTwpsrXg1TQh+IvGQZeu3bM
DmNgCDH4fYpUIkKwH1h6E2n2WFIANE3UDBh+cXg8KkfDshBCBepECQ8yQ8IFhGI9pxKH8FQbokoI
htTFHrkGL9+IpEbsF4cRbpZhvHhO8QMf4kxGnPDqQ7HIU8GbykTuYK0dnQDMZB5YFQlEBfjAPMar
MkAu3E1H900TMp8vW/Co/PXS1p3i7xLLJJpbftPyXWCcAPY3xAlkr2cWkSmySY81q4EImjUBSA9i
J0fXdI5/Enjm5ZOyefIKTZOuMLboRsE8W0rXzXIMu+o9wqoN3QGo/KSp0Cf9jq9xsZXMhcNAV1FX
AJltlieACHv4J4xTPKCfegINLRTqxkJHHqiVWfIgt9FgTImZW7rsHnr70GwqF1/CgfV0zSBU0NR8
uCpB6AsL/Ksw7UBbSZBEfKRDkRktfdjGCHoaoDyk8yuVmle/HVqLiy0P7fLOXACxKCIbdigEmBTM
h9tlYQnFR5VooNKvjBgnAjk3xpgOrtWF8NyYNl9G4P9QOcku4SY8SUTTgn0f/BiN4rM3xE4NweIh
X4ZLceMBJH60dKls0iXuaqkFlB3RRRoqH/fu62oqIzuXliaR5RT56XyanbXDQVHntKKho0B7KlaL
2q1vmfptaUZ0zrbQpBPZAYBv0URnidhbuKHRpqo6HArJyPks5Oc+sCfmAtqIv7J97A/n9TfT10xQ
+0kdfY7T3GAnnd1ITEOjfxhtBtwOUTea+7oJY5XEvVUmUR8YO8I1nU9HhGpEBSyuiS4H8PuH3AkV
X2JN4gGKdTAcz8bau1Tn6a685T6xJsaG78bhKE2ukHcn6xbLlFTF4FDBL9l6sBDHMF9hf8a4NSFi
ZdjfDVi4adbSWFXMUITQC1bS+2svCYeKXiJEmivJYGsV3UcCxrms/aDbG7Xyoum6B8g1oWk/3beu
k3TjtMAVXMON695wBvC01QRoysqYqPXKFVJprsooLGzrJgDMtr680YG/V1877ccyOochmD6Q8qa3
8uEKuATe6q1NlD8OLyMjfFE0omy170igWZpLi+p6vbJgd9lQkWowvn0jeohtL/wPzWP1JjndBgwL
ayReU55OQ9uEHNAYJf5qoTIy0WQJ9vLJ8P6KxV0npnyY2szYQv6W2Qp1nymq49YaIHAxg8atUxHk
baKsUUlldbUiq9pEVmHBN9nosoNJj8X1KaDf/zH/8BbW7s0Y2JjygFn4oHvyBTV2NPLC2GV1sZAh
46UXGYlFEdhsxKWZVw5GpK5q1gUoC6e+Z8YijA8feNxzuZx1Tmrf28ROwiCir0oBYcdtjBIvjczY
r0m4eMzv/Xm6uUnTnw5QfkPaQ9FdTXr8XZQFKWadX53juVq2B1P/zT4bPcwtBcjF/BRC744yPUFt
VOXArT/xMbGN8WOQJYHTb9P9Pw4fk/cISyGMJgnINKsjGCv8d2NyjKsFqeRHSWLGhbqze/4XN412
lUxlFwDDl8ff4ruWdWWV6LOnQNUXtWOX2CpmXC3qFJpNwogooCKwqQvS+zEGH2/6Tff0cp1EGPKi
hUV/omhRdDkjCuXkAw1m/5KOGrkf1bMpakt/PS3gFQ1+EnljTz6uOyNWMfa2U6o1vbVIIgUg+HrJ
3GkUc4fW0kPGWAi/TR8voCS+En0zQ2p4JGkuxxZOvpx/uEzyRTGmmHvk4t+1MUUxbGQxPCaRuFBP
ykwzssrKYZwm2aBtc2yBFXWKc818EhMdSKpl+UpUv1rE1FotFKOEH0Y6JhhPZHFvWHyCyS7l2noW
dmTVtdkIjFX8tZFZmE4ujHbp+8XkmyJcWODOGPKwHWLgP725PNT7dn/+8Ye//Ct87kWhK294PRxd
vZtD6xTLISG5MSIWC6AB1DHX6CkFG0ZO7ngaCEnjxxTTBG1mjuO7jEWamuDyNDui6eclugF4bG0g
DCdvOWjTD3CFQ7JLFPd+/kvoDAYYxu0btDADWQjmuGHb7N9oM2Jw4YZ+qorlENphaM8VadIlDY6r
BwyMrKBqNLI2knWsjjG29O7da9YOlkhAjm/kJJRGIf9xRb9P6Wn/sRLTxo/7+DEUsFn2MYz7eFxv
QpIdOb+lpVO7GxGY5emvh8ALt0lbi6W1gDzthIOUS/xwT7QkQ1BLSKfwkFuTsDjaDPRYZiZe8VC6
KqGSPLncKDxtQTXd7vJ8vVa+HB8i+nNNvocXLF0cD8UZpEyjpbfD8k++xBFNz9saecTYbYxoM8Qt
Dtjx7Xp+nDQill4LaLluKdDOuhQb6USb+PkKIdBoGyOeg2zhMPCXtCbDj3ujxfmeQkYFIhraGohV
BjCXsGWQmXOuXPSDF+Uo6Q8WCmOZw2V46CthrCaNtjcYRKSYTTGUUTH7DdT68ORwzrZzSTf67S2c
y0aJPBRNwdGktq7NZdLK8Z4+iV+0Wj5Oq+0g2wuw2MenWMPj8nadPbs4tE2ONNRp6L1ZZtAX3a0y
IZauGVzWkjt48zLc2GfVoOyGxOVG5YDexHyyL6E+5ab7E6ZL6fRJLsvblcF2fzufXz+VS29zCWFp
SbnKvg3MHQbB6Spqbg4/Ewwn91/elE3YZBPNIJXeFV1blr6CKq9RiN94VfPF8E2V1iw82e7n79P1
Ot/8jQedFTt+TJN1TTJQZEVAjxV2gf3aZbkZeWENU3dJ1AI7HKn1yYUd1xZ39T1xk6HB1FmPSctw
MfYGAOEQBJWyZY1CiykAJyJr062uzllRn9TUuegevBsnwD+299nZvIUGCvfnirvZpIm4YVUKVQnw
DWmcoJFqPcqpmyFdWRWjFyzgI8cr0vhMb5/TUWV9wDJAML+r0apFFIOAqSfg0GbJWao561mKiQSo
Vx5XR5zWVLyNab0XL2h+dZNgXMPW5scsuHbb6758dyxdbKiDiwvHy+XoDJ/rLA2V6q3BME1RxWLI
RQ6uaLGwXDqORM+rYy+aC0ERlncDhdyWkjllgd/3TWrfdemLdhkYyKvD0w4P24kj5WGzDLv/S8s8
jy+EcIk12CjCLybk+qFNRFbb5yrfypZnmtYLVQNZEyTlEcUWSaP7KcYcsup02sfOMUXLtmn6MqnL
c3D595WpoZHVLBro6aua3N0V6TA7AuZRJrmzpCsEumA8UrqstJsk3jrI5WrCsG4fISXRADDGLZYx
oVk3yxqYlxwiXTgECGttY+99ERe8JrPFO80EwBipeSb2jcN36tikrgSfgonV20rFKP4e+dfQ2VG1
wg8WQ1MNeaQMPYMIRYSXIiVDZ+BCNNgwkSzIh1SCaxPZaw11S2HS3vdlCzuOsuwrS2dRU8987Zfq
f5FKkwRgQvI9rNA1/PAmplW7rpJASPlMVxGlAJp7IyHWTuPBPQjGKsY3FHQCaMchSyrqrOjfaiR5
pBW6LseUKL3N3/p6KBLUAVZEI/DSEs9sPUc1dMbOoAsjhzgvbBfMsE7QjEmgcDDqu//6yVTJyXSj
cp3aFbIDbmLOUt19+USHNAzeF1/XqgO1JP+cvdV1Kw4U60X3UDyKTA1HexC6WfFUxmQH1upsrZ1F
lwjDUZL+61iqSVgKT4BgRiLTrxMIxPi1s4ZBuug9UIpJ2KQ+ns2YYeWSI5tWQAzLWJtsh5g0tGZ0
52K2JPbTizT0wHsZNvUynvwziNf6GoVCn9XALF1Xk1/XSazEtVg/brCkzd+m69nDTjzAaoKBp4rf
kTgxUISLiiepav2tFbk8wU8VKfOV/upfF87uJTMdXJvbhVUPFIoeh7R8yupFJVqyfkzcacOKOoXG
nEKiu7ddrl5wd/54cSwdGyBVaeK9ri53iqtaH3t2A75DulTKs8axrJIi0Sapt4r7orJ9JXTatIkz
0Sa8l9RnOZSIgi/BD9yZ5nUvV28U3ZwqjRSFQ4c4yNquqp71nYAM6J8KXAA1Ct0dDvZf7pVgRSEU
/mHBByfFF+9WkQOsOghYpVT2ohxcGpcK9a1fSeAMVZOL5RfEkBYrq9PK+yRCv+ohjSxBBdvqcy1E
IQ4po9N5p54dEeQ/x/GrMlfZLC9uJawPz7nrY66s0ovBny0C14rGYmV17g8q88T66ZiyFQVebSIG
MXYb4UbWttnxsFgfg9NQDoNaBxge9AfU/Ml1rCNv2etiZUHEnnBawsmJy/U8u2wfbn6Am5f46Ubn
rE9FdH3anxjAtXDDizge9BAp0S6WuGsgKugvtv5d7Tv+YTHv87Y3HouHLOA4MnPW3NCAPtvEZ/jb
p//kfE1s5U8RydU3wvW1xc2l+ZGgeP1c7ahZPOmbNDPIQLTZ03Qla/i4lukHjVE8hG1HMLlVRKdO
YDDmN7+b5M2hGBsCGkvFdwdnzBTvcXrbzme3PEvnd7C4b3KsRjwCbyf4Y2W3DEP6nHKA31W2Tguv
ATW/rpmAAvkU1IumWvxtdHEpbNAsOwO2u99wBvIRjPF3OyjXscrh/2NOHcSB/8ke4MwMB5pgLPP/
ztuCQum+cuVPnYFy3a6pMbWQWZOaL/IE6bGCWh5riZYmzP3T6COHWaiXRnyx3FkBh20ep9v2dfIK
VqFL88JgxmSK9bG4gtyto44txa/8jxEMdedrwzoHF/vbGJxx40oGJzHXQuvIKG3Vkaf1KPtp6dnD
yI/mH/tWFXlFL6eFsWI2K7NDyrckdOqR2GCA4GLNdoKH8ttev7iFhuSNN0/MP+on5WNrhvRBWpOK
+fXnZeN5QceH+QfJSllU0mk5U9GiGZZj3oKeNpVNtKwZnwpJJuhLcGEbiu2LC7O0MJotxk7icTpA
pOXkBkIdD3+TIVb9FdErZTOV80/qHyMW2viDdqSyPvaL60IPfvVEzDlOSdwpZwYYRXkwUsOiO8kv
a3t071276sYm/K6K2q8cpiKY6Beha6nqs4KJZQ/Kqo9GI8xuEeBqoNm7pPpWKOP0T5eUkMecQ2iw
EMeBj/KFBPnYrkMw8dq5qTFqxDvVM1BRMh0b6TBAVvS7ix+PySJstWiXv29/nRym47RzQIuzpHAF
bIX4FdAdiG67LBRcfUTYzgY5VQKLKqMOwgo6WoGJaFVUqqj/cEU/TE1TeDelI22TRRuE9mMPqFT6
558h8y662GqVkd1fkDQQoukBc6PzvlfXmPbJAPmSMdjUichp6pLpu2q2iYE782THkLvllzBTdIib
N/by4p/5qD+W2Bcwad2NjcSsgJGBr3tJ9TT/b4RjhtESZz8W4lXpuQduIo7wDX0JNJz8A3BQEPIq
0GeP2AnQEJMV6N8w/+R/J8ZYRfIDe8tOV9WpqJLIw//STcinXy9Xb9afTkxryKs3y9W3q1dfpj4y
6hZA/5Lo+vJHkmi7nDaCJHrFSLt6tXrovsKW5YPvmYSsIbXYZ3+gyCHzWukOR2g3rL+w1PIp90xV
GrjIPIMvgGI0ixzINpEs5KrH9a9mxascLGMNA5OzsvRXCJCR9j8Q8tO6010jP/hKexj//TX5UXiB
/eKBt4P2Rnh5W+mJMNPHZVfs8AXBt+Lch6XgNsOXZEfhVhtmIxnCE15ShzkWu/Px6OC1C+KoXQi7
ZlgrjpRTZus0wB7VyvtTaNJCO98+3K0X+mturmIHMchKBUgVzpTEJES6BdFWfmYje2bVQDV3ivXi
tlsyXkj590/Di1Mhru5z/pCdWWWwm+5LUrwgZpgdAY6uab5w52V9NjBDooH89PrXuoYP2PGA6qzq
r9kpBY5lr8zaLwrhNafDtD14fZWVdCgEG7Dlt6xEyUyBEje7+szX6FBm2fY+s+i9qVw4fHs77FZE
BijjBOENrM9i4bzTpxIIoOitx4UTYwrlhVQsRFH7OVD1PzZ3JUdcyGlrYezoUwRu5WmaJgnIPgec
7vPFa7EvSlxZP1uiyZ5oaSH12PPThBpu2/9jkwRKAIt2AXM4sXz8+R6VgzRp1K2AiFnmLsMDYKAY
mqfk3D8gPdPQuqEvM8wIXYFjpBQ/MVhDExPWSl1DuSeN1eBZFSYmRkhBDCrtEF2CJJx0XsW6u1zZ
HSJD6UV3/bDASe9YH4lKnlrL1R8YGcCiK2Zpq3Vo9Ri7UvoIx1x56LL9eoM35+M3T//WVR+vqJCF
ecQ9jRwHQKcmDjy5BaSw2+Nl/gwuWyHU0Sxm5xGhoYdru6XdLdp6aFY1oMd6VvPDnDaPA4DrFObG
ISGaDe+rRqugqWbJjMv6neIh+U2x2dxNrEbG1aBWDlvU1kJTsb1tiMI1Oebt4+fheNheP7X10PRo
mDQx5tljdcm1Xx2bcT7GTT4R9VDJ/g2tJt2wjQNWsX3euD9HbdfEozCbdHi+yTCksXCdxBMjJCLS
84vyFqTD/YzFv+tK4f1+6RG0BE6K4nw1043JiHDL8jlEQvzY0jOEmk4rb/EW9vilLdKcdD/ZIHMZ
T2A1hQ3T5HIfKEC/G98ZTGPEKVNrHhujBg439r8lPHc/X2Yj5rswBw+XNaSXKTy2FW0ofl02EZA9
2uJ5eEYFQrHPdSGg/REr7TzOnU81KaV2fQoL0ShQv0opLEM1aCMgHZ/nWjAvGAAuGAODBJfozKv9
GTb4egYXP/IzNBS4KjxnhfhP5SpsXvPsHfbOlCDPG6We2KS4kUaZb6Hh56TVo+mAi9fHyRuy8W/K
9cBNAqnXjAq433x0H4fd+SioVG+z9ezYRkrE/NbxRD3DvYY+3YbXYfthxe/zlR8p5YiSxYPugL2p
WZn92CSM1dR5yJ5yVtxTq9LpF30On/IfB+Y6pkArjVIjreGTjylv1mvxWtbAJ9RpA8IT3uz66n6G
1gOlF/IEgrpSOJT5KSD/OfB5Bqy4DOuRltSbQYTTUNA0umSiQUC2fGoAKqM91SkSUVvy677UrWG6
HHh17gb2k6to2N61++RQRzC5Go2253Y1qFRa0avWcTxm5A/fPJ+4Fpt3wAf6sb2epPGZvjmFISIR
pgIprfUYD2xw2ZMru76ZgXUjMOzmHJz5rOrc/JXdLKvdbfgTVXqz2IgcaMOxv2XsYkWN6YRiXclI
CIPCGmaJ8pBvZFPnb3v9MaSzF/qv4Gn9xvlQrMXDBVfaUHX+Nm/f/SqgxcMA00LDJBPMDIWTGLDM
dyYZmIfpkLRz8e9qXOxTFCCjdoaVu8E4G0JXy1AyubReSB5/AQCnbATp9neEkPocfpyn/1VYIJO0
OyHPRENuPtLb/frY3c/XFbe+GCrWaC1GirHJgoTeS2rM81TZ24qpshUhgBCQD4FWhcMRAatMIodD
9dCa9k/F6unGtIOq5ZPBwZ/8opMzstECYKvinJdU4bpcszctQ8CMPDIdnH20qQ+0kNIz1yLMlYvt
ZUWXsvRFH6Yy3GxUxDazpQHHDnNVGfx4q5ijba6JXRIq5YFlfcYqEMc0lGdT1MnjaittblkZfqvK
tXQG87iUH/CvtMoaZYvXXvTQ+dCUPms5fmW20EKaKXhIGlYgb4uHLEglo1opxk2fG3QkmgABK27m
BuW9NOksXqt5jWXhz6HxHahFzo8rt2kvsA9rxchU5OKQnb+RN8oVW7xP23c7WZ+VYz9Z9LAn0OCv
D51dzHJtGvUxl4Nci/7sSrTPFWZNkzv4DLMN+8odWpMbJLyubX2sUghatw0/pdsVqN8P2yOWAb5O
10kelW4GGpXeEk5XYkmjsvUx3Pustrez4p6FgqwHYYAdoq05yiOgtnSLoAK8ZufRHk4Ht2ACMJMH
n1tEtIScSUUYS7vtabYC5u1+zHp7/p/tPvx9+rLkg8C4BYwrNwRxyYrwXHi4k1fWDMlIdhtmRt02
f/jjn//lj39w1RC//N//1x8iSpvsE4GQN3R+DQBMVEuCziqLZxZ3+FOgh+gccNM2Ah3lp7qrL8BP
d6d7gEyOWS5udqQex/m9O7a5A9940ChvDkItn7x3Rh3GebVlrtzudtPtprCjScfR2+WCnbf35mYh
7iAhCa7BSb2hmpEklZUGBy8XmJwir6tqkwfYBSFwvsaZXuCE3q/T6e3+Pp1mEePWOBtG/r+RORLL
hYH0QNMI+fpwrAs8klmxwitS1trR4yNMWk8QK53gFpzd4Hhy+ulw7g4ON8AlGeXHNxJv2iriPPpt
slki/knL6+vpCTJ4TWXDwJIfM9Xrp2vuud0cIrq8fUYe6oPtuGQi5MqTb5CZGVPmHkvvmxkC6WJ9
Quq/H4frbOv08spMn8ieNow7n4X/LP1DTYv3o0/nTfwXkGuZF3ySk5HASTVdfEPvEXGuo10WyCoc
aYlOs7ighIHgH7RpG55tSHk1NsKCPx2hcnA1XWlL8A2yNvFJc2BMJx/kpWHLVmewHLCTdoom26wc
/s3JxPvnZfrLq7JluglwAc3zlhPpsEKSE+84pm4TD9szMqRquCrcPn7iLgoVHHDr45CuOc+dIUq4
Yc69TNMQTRgPVT8px48j5a+cRXT//N1P+TEy5U2dsxAd2p0/nDibJcfN54pPt4OI2OlH99LLBpDG
dpWJEgKmTsYXb810xAdQYcMrJnmzF87iKxWjw5l2daLPkBMgKB9i8m/TOShIef8DUxOu4q7uFXFU
WhR7odCg0hX1tmaVtnWVWFVWfJevh+vNIx4rxjOpLbMkhsd/nQ6vBxfq90wdV3mb7ncprQGHaJlh
Tkg8CW287fBeTvPpnimmpL15S3LYUEBj1gwsmDZf1/zZ+2Y2r3agzG+77SUf/wOaY88kngvkYwN3
hu8JBHKtcU6HAelf0fDYzzrjrt1Yn7o7xE1iJAGOijkz3UiYBd6XAcAsWMXHeX94/ZThqoCj2zYR
h3bMvo5QKa7lTrwkpFfbQzkUs51+/8svKy2nNlHMQa0U9CAbWlnqL/VKkT0+iPVX4xrRqPAFPUCY
NVhpR7lOr5BN71Y4VnmTYlRsMdoklE+27D78sbkIwapbGerEZRsZ0Pi8n/Npxctp6+Slh1Gc08vb
UVZFMT8JqOoUUZCPbRgS76oZllLajQG8wbDF7ctx+o1eYapX0UtYiL/p5266gIjVS7mAYtWkVkRf
sNIuwURTDLRUwgx2MQP8OG1/Vc6RvRAKIuQF8+2y3eURKr08Zt6Kh8wN82YV5enydQWnl/mrFDQG
I+H3OcT7VMRDoaIvMdw+5ovn/1H2N13kqPUZC5hmDnPbB7OAU4aSSv2+gZAX/0CIibnFWoEj/Z94
FFBlYW2kB8Xj3dfh8j2dmtZlY17xa2j5foNjJNTSwAA/LxvQAWHa30Yt+PWEKiLExjJHUOlntE7h
agtzG2E8aVUl19JkUM3LdcqeEh2kqXw3Tm9TDMO0XnY1DLUnT/fdNs+o3gEsfDU5w1YLwYtq6LTV
rqru9aSHhKOWQPHTz/l/7yCKYVQnsXxEvpVZo4ukXfp/WJB24QTndJQYI/x3SlGx/zk6c2yTEmdJ
rDjzdmS8VrOc0BNaOhipOdpqbN7/Bp0QyxRFq3f1Lbb9mPJbnY7VWUOBJB7MmB7Ux4CjWlfxQVf1
qayxeZm85lKGIZXL42+ZHOEpNQnfdzUH0vwaJr6nV6c30K7SGEo7p2cQSwzSUv1VaAmiYr/MH7GX
lC6j8JC6mol0cH4waPLln/3Sj9L51YBfU+enbpS0iFyA7A+UGCg3F+PrMo4uqGtio0rmWFgj1999
VhW99tq5/3VbfXVOhl88qRULQjrXDPCF59lVTSLPbP4Kv3TA45iK4f5ZLn2xb8evlO6tobDYF8Rd
4eV2FYl2mKjc/4ZhG/4ASHpCOXf322ZteFp04RDUsr9x1IbXGOwp9T5am411/NOf/vSX/5xdiI/z
XnUNbZ9zaZaJ1V5JrI5plD8ZRXk8zG6k+vsswQaYPLXhKgEb6J8jpt6blKrmfZy3S/xRTBmnzhp5
Voswmkh1pPVC8wi6gNsPCmHEpCdEEfhRHk5bBJ/EvLDyO00a7a1inMKHUWc3c7ObvVUHmnFzYXTn
oM/+4o/zVVn90KSXZcQU4VlJjjVVncYTQgj9eHTJ0O/T9faACfVXNT/Udkmwt5XTyJlKQiWVzMIy
Vex24VLwdXs4QiW7A5d5n3a/wp+A5EGTVwrBd0laPQ68e3PJyU1r6lGpjWhqllEErLiq5O9fJ3U9
bd2n4fJKTdjdlLDIIg6FZ/Y+v4XN+XGHKdCuKQzzs6HqUnnXLJho/F/yeaVijMyy7CnoS1vKxHZK
9K9Ly0gCDOD3iY96clJ4fqC32BWFc7BdFE6LQzejScjbupgNcc+YDTSWb7pJxbTJHmYpW8O2b2Qq
WvO8T/osttmxGOr/mjfjS/9Xhra7JLWHXR1+I/8TWjThs4C05btKZ+vIpWSzVAH6yXedQGk9GIg9
o8qJXKQssafSRSpQRWMFKk6VK1QMrWWIUcxnKhAGUsg0KZlaICNbsZ5MG8nUVYWtW0uVH+piVF/a
CzWTlIag7QmoDP/sQBn8JAlnNB1cbZoLQf5UOhWrdLxzsEYW32/ervPDhPr0q2tZdmPuNsfppxup
odBmrQw0ivqJNlA7nhQ6aVVmAOlYscbjacUqTVoUu4p6mSqb02RXUlWoLQp3O+UkFSpdUiy9bqfb
42Er92B1rPKzIf7hVoSH0CLUEGV9rIoUdFDQik/7LGSuPDW7jvucfQIoT/et0lXHykthn2OeWum0
hicQFLC9b+ej6zr8z/P1uIcPcYeso/N2v0r5cejztoS35ULvXURWPjrr4SF0IPpPGd4lwWSELe2n
+afPn/LnhvDVYLRtzVmA7SCUUSsLYZT6mEvxnWfeV/P7cQXvTvL+fL/KxGoG+9ZaAnglD8R7DeIw
SaimJXA3MF9aZUULFGtlZQS5BhDOFT+wNauybFVtTNucT7vZmviVar+Vbf3/WPuzJcmRJEsQ/aBL
1gRZATzmVl1Bk9tEZM3yMBSkbqbmrhVmqtaqau7hSTT/fiELIMwC4QOY39s9Ux0ZlSomEGHh5fBh
ZsuEJXNfF+4sTuupuXXUvAW1JDjpCptfocsmdBlmnc+W1Adt3zRpdagX3yM0wth1xeXXgRPL5qHv
OYjyc1ParEMJ2VGuCT62HHycSWrxqX14+dKMMWSAM1a2nMb2pQ5cGaTfhyngH5DvznPhmuuxnv4U
4u//My70j4h3gI1o1v4+f8jnl8unwDs4XE8h2YM+xLN7nWGH99dPx+seuTDl7wcl4u22LtujOsrL
j3Ox5lmB11hcumNX5XoiHtg1eTvg9451FR31SqVu7kCxu52h/szO3PVguXRYQ0Q0JtpuXy7vL6ld
XfO8waX3rPNzzrs8nW5vYb7bX8TJgunHht14/vGny9P3PefSFT2iS28kqEdSFRhRJh9+7LzR9ejq
u9i8zJ6L08A+efudF2kM9sS3lEXaAlqkZzMZvNt5cNikFNsUB3vMZTXRwB435IBY51KTuL0hkXGX
dqSZYvXbdgasVY4suBKOtU7Zc+1E0vOIktzVKjak/jhF2KqKud7PPLjwiCMh6/F2u76/IEjNEc5y
ySDso3YBBtLIqaG+poM/Tdbk5R2R1F2nGQVu0BulUBfZtqVSKMug6lZdx7Ti34LOOj796Zdffg4H
pwHlnWAKJf2aOc7/Cgz8yCBLTRnPl9v59Pz88PR9+vrT456C1phHMSXDldiEOcEznd6pNDkJgjcF
dvHPwctJa5bcTBoZmUcEzXvcuzdLsrIuRmrNdZZWSHSz24trTjnoWktvfqot2eo0YXIe+J44lKui
HkSmtoMjhUHhDHMSqKTI0nSXR1hB5jlHtiGFrJ/QH//6jz/9b3/5M1iQEIFNu8ptwck2yzi68kYi
ILl6c4GY9OV6OV/ebzH5CyqTOg659bvIwNtc1F6zLY4r8JokYFIyOTEcZb0wsnfszRZw7wBwTy5D
L8SROcDYci+S2iMK2bQrutZqCmgpw5bLwPX/9R/BY6UKai7FmbVIHlsUGniXvl25Io9hsGKf9KgR
Bt7WJmfo6z+W8jVglQpH0s1VPr470nY44QrNddMZLFPiX06hIwXYrG8Nm99zvmCjvNdXFop6zWWP
eYo9mXggd2JP6zvWG1A44L0ysfG3OgIxBrdFufZfS0YOLKT5oWjx9sBl9Vyy+r2StfGNVSfNft99
TSbyeXKW72Bhw0ZrzwXI1cJR7Kf/Ab7bsi502Xn5iEBtPS3L+yXZ/RIV+m5NwRDY/MC6bXtdt04V
mwIAgolnfrD2bStgQRWoa5XGi8V0j5drMHQv3/fVRriR7S8HjVvlgAu0uFU77Untr1+u6+0ao7a/
/H4PwUi4sKoCDRBmRp7zz714Im8l0cai2/R8OgbQAab9DSncimBjD3sYzOmFfyRDK3UycGXRoJHG
7aqGHKiB7HdF5Vm5JuGXx+n/xn1+oGaF8gG6BVAn9PmYoN/mKPTlUnwncxQMEHLLU/M5TD9ONxpJ
IPMHJSu5w52jDSUKObkmdlmQ2uU1rEZ/qE52b9GZd5xK1NOANvWoSjwnTEmylC9FMsdCDXzEOMNj
QQwWvmLOT66q136gXp8GzL1cGF8cYxAsk4q4mLZYnvAf3p9O90tiTzy/v+SON5HxkJgZAFz1kReQ
Vh5j30NfOtelPjrBnsSWoqW3j5bXyvX2Ya3gxc0djcsUi/CWc1e3yItJfAYjrmhtWTG2mO9YiXXY
XYpRUruscziAxy9CH0JfItq0xb654OHp6fZymPTC5Ptc3kNxxv96l7gtcY/Z+YsnGLkW3Zy/+LwU
xP3PP/5veGNWkbNTiz4VPvQ99GB7PZ1D/lbqC5Y+1y+rhiKEnLgJO1uWfLy8vh7AvoZlhUBIyQ3q
KbnyJKTX489N+axAq8sjFhbhArLUl5vvSud94UBmDEEWTmeKoAc9ngk6oSbwcJ6UGrhh58heVOmi
lHV1xem+fzs9phlbx7PY+CueTUYLxrnhaumGQ97I0v1NyfvLvQ7SG46T8VzpXjpnaLcfhzVFkkNR
bz931lzUSvv0gXIpXxhnq/ct4XkIk33lTWV8YTkl35QD5T9NLus8qv32Pr26z9OdTsd3AtpAK/bB
Q99c+349nCLlNTyVyVQ5ICmaveJ5TMpkPsiVlvXlr3ZlZ4ELPnigpj4dHn+L/wx0lG3qUUnJg2dJ
PjBUQ7OXkBvJC35tkvmOPeuxTOPIk6VCK/73+x2sYQZistJsQLMW9wCXXi+bEm+YfhxoI+yl12io
FsYue9wW1RJBw4x5/O5zaNSSbk6Bgx0qHUOHdty/Z8r6tJ9ojW7yJxHF2RciYn1DS3m5Aa+3bClk
/QeHNPCu83bEHPSlbLF13vcvh9D6MhR2HW5lbEXUhamUdtb54EaI6ijjACUFC2yHL88ntdd0DQV7
eJ1uKgTRQNyK5EZ82O7yjwbgHxX7HkC+eSpzU2MnzxNEsunSy4sYh+LMbNhdoBKJURmjx+XqPTbt
KHj+PXn+Y7F2W8eowTEWrRTzZar59lIDI+Rvzb210t7IMybHB2O6eGLUFRxKhrwsAQ3m3BxgnDta
to0ufa/gZHRZrC+dFOqTiToJuSiWqLcQGozdejjJf/7rb39NZ3xC+k2N7K5y6+ity3fg8g2PWrrV
eefCgOArTv8RuNudYT7mfPs0Egg9OP7wy59++mnr5BXxDu1CMEsa5+14DmNMv2U8CSgcYpN8sZRb
p+XBaZVtxbRyXnAGH2NN39wcY+eLtrYyNCMM8i4bAVlO+uZH6MpX1ws+H85TaJ99RuAk9q0ISNhd
RF5yQ/vp3/6v96Mwgc6XLC0x+vP4qZ3Rex6qlT41jjM3K58Dxeurg8qkjEihTh8Y+uSgh01MY8yw
t7UNe9uJwQB0ThUzrm7vLbWE2+NwdETvlHQnjB6AH6CKKMTx2zOF9XWuTth0EvtiaSIO3bUjji/X
4zH2PbuRSPKJ7xOIFZGKWAIyp4gEz8cCz8eTpUyBh2bDn+if8veS0FSXJFP9vZPv/3542YAi5ma8
S+zRr32wbfNhbMt8UDfpcv56eXm/Iwkdx8pJMpUgnM6Tug9CD06mWFZSz11b1hxyYqej8hfaZzyT
XhZ5ksgaSYcSj8i13iC3ieABEo8oDVpfjakGrp4i0pcmEFZx6ym1S2KIGHh9ZDNxKrvf5zpaYLt4
xJ8RtpUGBYaeCILKE542vIa5dm/7Hi1xBvuIwuxCOB7+S3d6ADAHd5nWHqpYcZfUaMfU6BxjlFuA
L2du8j3mCYmDgREuCHVGZhuW5uhNkCVoyh1YMIlNgr5TmTBCop3MeITg56jqR+O2zSowqIbHwQO0
BsC/JaKai6Uc11rp9OWdUOgmzvHUK4N8/D02gY7DGeNUyhtQLuWcjFKxO2k+qfgAT2X+E9KfDD61
ZZ6wqO2Ah9ARj84Vj65Yhv/6GdkES76nlNzxyA/5J+WvR0bryrj98fTZbQUeY1fBa13xHp5PL2Uu
18Ptv0/gcrzmRlLZ+inECriQewUWgCZXbHFRaw0WXQcIktNItkB9H8MebOcrj1mb5sPcAbbrKjTr
9oFBIzBFJFDpl345U5DzZbIgweyvHdUHGoHLt0BgJhX5qtrvT0+BO7G28i5Vt+2fA29VjXUqbscZ
gACJ7C8m6Ky2MsAG1DkRva5AssS+36+T9/odmPGewTA5jda4TyKIWNPQwNHF97HaVOgqcQ5XuJG5
1CylOnasXYby/aTkgUUg0Oq4UPNaiDDsbJ/w3oEHjnrHA9h7YLa27Fk5b73XHrxXx9+r24O0Aukn
oU1KmXa0xGI75zo3RS5+WTvnGjrAxJwTULaWh91D2ysGfrWn553cvk0cEyhb34JU26hVm2QHokFb
tE5IjwkY6csF+em94xtU8xz4ZCB3GBRDUoZRnEw5czKZSWIGJgEYeZowm+yyjV2nbciBDKXEq6wS
vBiQdyLRRayiNI2fA6VNcrCkWyBGpHZKUfGM4iwX2b1asQB2QjeWeP6RmmMVJIJcjy+H2GoKzEf1
pdiEJIB1bcj2UjrMMDLHZRz3qC0QVJAcbOwNltUW2RqFeICV7SrX29TrfD7uJEUNvooIzEoTngNZ
LQxTA3FuR5zXeLFZoeb+Shub8OV74sQOU0Efe/NlRLWkq/f1mLqtqM15BiLMwvNBNogjJnQodbz1
wyR4J4AAOqZys6tLUG+gXoaucjq1aigYoF+Ix1KouXkA5R5uB3lAKugR1aumod4TRZDNRKXf71dJ
QAnpD/CdXgMDfRuIIqG6CgC/soh5t+PLR19jJL7BJTmd395BYDOYKpe8Vreb8IqjnJa+jFop6EMg
py7uACrdSyc1tp6JBOc+vlwibANBWMKhiuEDtCnbH0wAOELiEUJyAFcQr4wQTGqFMIUjoWX6LfwD
sM1t/swPh7zM/1TF34ehKaBBEN8hFmTqttZ4IOYqtOJ7usQAKCFhpawxcpBvx3N4c3n2LdA39KUk
EEWvXLLoPyz+BNB+nCM4OEiVQIwACgWa8vRSE8PjfQebzJDgMVMu9mQfd2AzmvNB7FYa/yOIPMfO
56b+Td26yxYSL4Okxep06Q5uNFU8JZWxlSsAnp3rajZMkpY8C6bxNhNsW84ZGD7iHfWlg84uSi4A
P7smmBFue+UlxwbOOD1PQpHUFZtu8pI69IcZUhtJNEuy2AG77EeBQnW+zEUQrYkk6ckMPCGkWhAz
uFMivq7kT9fY8KfJ7wDYcMfC3dmjhFANiDcHAtMtramgpgaKmjs/G+HNngoBR1k4urXk4qQBd8fw
6EbgtDQRWGCCbQ35DO30CcpflgNLE/H6rfwlUI6eWUmBCVSrIPR9Y5VwUvuWBErNVuEqJguCg+tN
ldv4UF0BSGgRGtrQlS3uzwTsgZuI5KjwAOe09dbJAgDTqQq+V1bQLgFMQ90Jk5JRFR5qlpKPHWGa
c5WXOwp+eB5kvyk4xEON5nWd3Jse2uLhbXA8PcdXuxUVBsTOnld56MoV3KCnGmJ5owMjkaD2G3Pj
yyslHZW3oHXgXBIKIKE95LkgOxxLIjqxO2U6o934EYlNw1UPfg9EBuyHr5R0GznZQUCnuHzwFQ0F
HnBuYGCEIF8TcXZojN7XdRtNpBwEMqqpeikqt8PLrcS/XzWPnTvuxDFBpa3bpHeOCO0j4DmfsPuS
xTZzlcD3VQS3VZget7dNIO+ajNWVTUesTkWIHjo3/tnyqZDXONRpfL3GSIBb0HF15xALHRhGAv2F
RGz2o7k/vl2q2fFk7Og2Q3mwo75+E331JHdzE0j9kSuTGVeg4r5UB8nBpKqNWhbBO/BNYoNUyTQt
9ukh4n5xS6iyiRezDtK5//8NNyEejtKRwuKIe5w8pWV4wBZTu6t0V4XAAHvrORjRNxirO26UVHPF
DKNBbwh5rSPnQCvMW0UrdUzdYSu5EOuBr2+4ltCSY1L+1QdclHILuvRQquJmRE0h1K5h6fywFt7p
37wcwvfeUUmyJWG8sul+sfc9t3w7RwbwRgbAEZSPAmviLSNTMtaqH/M1UYMBQq+MvNNhVcW6Jz1N
4q6Yr5/nqQQV9O3L6SV1dM2gejrGt4PUzDwJB+HddZGG2LUJD4iFSLwjHaeP6fXIhtAwAg2fsbyZ
hW82s0CdoVLniq7V6pE0YsloE5xRS1pWxG4uHZg/T9prgHadPZ+VNHeMv94SwrkoedMZ0P/OtVpr
km/7gWFErup+NGeLq4tz4OKqET9a/rYBfBvpQtRXc5+aHUdApxpt2FqkOUGrlWGUhxnO3H1qig1+
7htjvm+ZCTy3B97swEhugrSIJ51THw7PAUegd0Omip4PX0+fN1ozjWOrl0192Qpctmn2na2baYbB
86ldO+gnRKZNhUeh5jlY9aC4zTfvLJ/Qs2oS9XR8Pp2P/8wWALx7sqXgsamh3e/74fPxsljkb6Ef
4z8voWMvOnpHRoW7tsRwAVdAwBW7hT6P2CsSEH+1tMUqqMZZnNaVcvm5ratnXazW64BZUGkdvawT
VWm27y+xfVgyT29l7mn413nFBvIfF5zHafo8ViIv+P4p99CaFvsSSO6zRxvJLbcH/LXz0Ng4UmKI
zUqzXx7m1U1LnuUNzeMn5y8cFlLeou7ARLO4hDHLErEaNbe1CK6c7ezD50vgKYIz9svPfWmrlGxS
jNY/H9NTlJfQ5ZpUiJqVr0Zdh2qG4/XrMWrJzyJEGBfry2KuNBhblooKdrKVsXZq+m1QiuKDSQsS
YfRkwfDT3EcuOppgnlS65rKx2DYpo+jsruLAVXBV5NuGJYwpz41An0H3pYGQUlOTtGJfjj6RN/KM
59wkOuuZ+T/Grw3yELB5oSo3SUURKtJ7rwiD2MU9/tq68p390ktg/rjJPdyUSl/eFHO+gyOQfqvl
H7vyY2ViMYvl4xJCaj0wbR6+nIIUTO7g/fgKDrkrj9QvdoEO2t0h1uVA52mmUfPEqYW66zZPZCyy
w3Iu5UpKAjQPpJw/7yf4dba8jzh7YajHOmQtQBUj0AVFww6ubDPU8V73PpOxqCSSAeOjBD94hbqI
RBzB1Xi7WxdgypcRPD1K5ORtB130djnfgJp0RYxiP9Nq0GluFvmRjyqPPzpRmUKXMDyiVbJg3NM8
KPCF1BjFIL+DKwKZIi/GLlM2395vX5KqfX97OgTcC0Y8SREUVWLLjKx86nrHqVvyUWU+V3AWPqK5
B6LRupB8djMcSEaYJtTiIxc4MnfEdrT1QbD6WSgVEKqyMR3rjDN4yh/cpnIh6nYsyNzSvDeajMl4
fDtcn6LpOEGPhNxZMEo274mHcSGTlMe+St6RL2IUO68YQeW9XS9fTyFIOrxs+Gq2aFFb5trucgCB
wRl66gHGngYZWyQKPvbsha9mLDYiZlvNcmrVRYKt+LKG6hPpWhKqh/cz6JqepMsS90KX9Pws3lEu
DnkMb/Sk3j+9nlK8usss6mJ8lBpKlW9uBbtczIa+6ftqGWMbVuw96bFtG+bJaql5RO4ewe5i7xP1
9Bt97FLSeKJbbv5IPjG2OcnqfhLQ8JLiiMeI2KAvGx0LzOzsyUTNlVRzRONPLy/Hz8JUnHTgI7On
OZB6zlVRD5lmAaY6Jy+TvBu1OEX5XCOaEPKPj9Nqx62HrYgqNQUZm+76cwgTkxR9OU3x2PXxS8D/
toPYjlxbrPhcSj7Lo976wpG4Q6XskWiwt5yIKZIKlJfhtjAvlldYDFH86CPK1abVyuHrGEPmhuBR
U2yYQ0e0TCoy1dj3ABrLFNsThyr2lKizsY+uvNRYVWpWieyVNZZ3MnQdE+oMNzTePHjrBLGIKEh+
658vSVdOSjGxwYIIAA3UcbFZRT/L6wB3NLbOZjbiRDs/PE/fdtt+DwOJE8JrzThb4vIvR7yhqQ1R
huGMbf1lyNcpEks7edG4cvN++loXr570lidYjjWQP3OJ4YLhJ1RhsVt7ERRDdU35tFlmIra1cbId
9d5jrzk9OOotD3tiFM1CCj+sHtTyFEIaLc6JP26ZnaHT7Mw8v7eHx++PL8i4Ey9wWGpLZ5p+VhRb
Hm5PYK6hpM1mlGzj0lVR46RRUe2kbMl+T3GJWHA+wyrXW8GEP4zV2PJpxi9gPDPq++OtQTEdaJkE
qT3xFlETpcvhzlvqqJPTl4pn8jw3/SRVI2JruIb0gQK3ZZlzMjenYhAYxUbAkZSVfKgB8NmbXKRv
65sUd9syuZu49OBBe4bHDCvI8el0Cx77JBzxTNK//PT+SZzSmtQ4eU6l+JBqYhpdA308srddSoIq
h3TDHR06JnRLWFdJzZ4YjCIXUZT92gvY8vq8Ja5VTIj6ls7aUDq9Y1pz6FdnvLGAJ5fkFpYrj4kW
5bU7OHLEXQuJo3mUyOyun/JZPwVds4VfD8XwabdkirK66fcYrPLc4zhVs8A7H4IcB0/wnT7Ox812
BjqTwOQpZkizUk6u2zFazi1N3BVF2mdHIzpwx/vjl/iDuewx8TXivxcn1Xel9fIQaVzxf2SPPyEx
6aRjdwROAUErumVFF0sZp//JVcFrbKo+ffAbeDR5Mb8sRtgSYT//dTuiH2YYLc5uUQuMFg/kIc1n
/Q1KYv7ztpxOpBP1dJ3IQ4h5RnhzeSnDNjTP9XwJZZzsoNEaqmwntiEPlSFL6Xy897Cbp9PztJ04
vDT16kBLdmXJOKc7zJVmhwwn2HalxjRvK0ShoWNXksw04zs/j/jr+ak8HYP+jlN0imJv/5Hg/I75
8QQ8ejBLfeBqtfimH+6n+wtYbMgp1ghu6yW+FBZLmDKaBp7WHJY1YxcM215zAbzRt3blW3OJBVkr
/yYrsf++lSg/DUySEYOx9O1N81WHhZTTXC9mVXYtashE1EIfWhaNHWXmRjJdmKV1OT/dwHKWzJJd
5hnJe9TbS+oy8lan8eCd0XxZI7Ayx1LgF3/vSrNAxrGY0f75zjPHeHqZL+DoZrxiZPzkaBWe3uMs
+Yyg3Ke/8nl6108PnxLKCtZ0ZU2/5KXo+a2JFzuuRZWtRjx0kK8lZ672SSRZltLz0G533Ljq6Y33
cSJxJ+94vr094llGFAfY1QHx3LGaLjOJdTFVcI87vt5o+vXxf1qec39IYGV6lGXFN+E0yTd3MXrp
qhx+6/73fH5562Gb2XWc31CJSm4xvwst7VhaW6fZ1nYVhoRNlqzEfZfUE80xLK3YiNZQ4LflFkjT
pU1K5lio0UOqkF7cWHTae9Sgo2IRm+/UFoAp6z2SxpZMk7/9OmaLDvwUaE+eJVirvNnelaSjrPn3
CNjA7s/uUYa79JYamN5yZq9JAMLbszv34MV2my+22ORYrAfkZ4/gmLXgaPi09ul+rkprWZwCPnD+
RfAM9RLaQvcAjLspFigigTPK/5ZWSWB4YrwvRTL/6336G+DAOqI2Cr1EOqw9N9DRG3DCDaxsxT7/
zXAbNMnd//v/JpAuDIFb5nn/dvyeoIHD+/0Sgs1p/etB6G6VG1FrlyLyboH2l0WXSbq5PUPI6klL
5a44cangv5usG8piX8J03mO48OvhfBPnyOcZA3mtOC9z5oKdPwesI7BiYoLw/SzXw+Y+CHmVqAqG
kl+MNSBvL8dQAV02uLmv3DU9plLitN/sWmTXLxZyHE7nQEKY1MzLy8PtFP6KtJwy5fijbOf08LyN
2H8gtDN9OV7FDvFz4cW8rwDP+a4wJg/X+0wej3sSF8ktMuIFpsvMVNv75MumSvjz/fj7PVWonaav
y4mpm7yvrtxjVAO57/DnkHsIeHmoShZG4OYyF3I8c+Lp5fA90z/T18UqF/lwunI4OibYvK4EM73O
9Ci/Hq+3Y/q8V6nWKJ5W2Vru0JA5hvH2Tsnsn6l0GVkMynfqIZ6Vr3Z4+3K53r+U9I34tYa8Qr8Y
0yzzs3YQL8wSeexS84G5Sf77LajW8kTKh8m335e99DHTkafuBLbJJE9fDy/vAeA9TCph3pr4lskl
jkuNSLym93NwPHON10n+uL5cWdCh88iZ+abnu5d+nlsPu6h+Q+xiZ+ILEqQv0/uY3kjItx0eT0IB
Qjys8lJsmbor6irxBg1ZZyxQ79P728vpMbyZ6aTFI3LEHNCBcey1R9vy8OV4+vzlLi408qvXmTc9
X31++EWcxC2N5YMI/eXTaTLxlzs+io4faYHN0iMKk1tEfDH35FkOYyFELvy6zcekOnKnapnRzM8y
vCkZbsrDQxetnFQzY4uTceAI+zWJ1j2fZB9Bc+oQPx+mJ/Dt+Om3yUi/Hm6/PXy6/J4YLuJ6xEjr
5UlS32EyOufDyyQwbyfR0g/cAdl+UcEmzq9KPHqytdKDtKw6t4JOs4ruh9c38fjLmUXHy3T1mX26
XENXj5SiAb1Ec+epeTW/YMzoYytP57b95Y5seAloXwLh7OEcEM7QdffpOJlQaYVhbAvc/HQXF3Nb
447UAJQpSqfwhg7nYyjBSxb85fh8ly2tZV5ABoNvb9c9PqBSZQ8p1ViLQqq9DcTRp+ApyaLaU4uf
uCx+7l9zTOpwWz+P9DkvPun7+W0KG0+hymxbrRC9RMBXskQeTP8a/0OKivL/SvZAyDOMkWQ2QMtu
ptf8HIKBY8ihpfIdcYeDYUe+CipWYi5ui8iPiyVbXmnmjoT/foh2tn2R8pCVC9RT5fP4nn2vQnU8
JDHDfh9y+9ESS2WiqRlF/++cCjafBIgtj1BZXMAY9ygxGHhIPQ3l10M808jDyt0VU9V5/NjJkoaH
uHkFroitN0tVQDmk2SRqURUTue9MSoXVtzD9P9fT70XT3SZNH/Lk6d+LJ9bxu02nb57if7V4vKFN
0Vu45K9i/TgpZPe0x3KM9MO3xvJ8GGaGJUitd3R4u9xYKn5c2dD9+9uW7AfW8bJaJHLZOai7h8nZ
0QFJLUE2t0Xqf+MxZbw6O6llW6dzWVVaqyMFwDZqskCwEYRevDfi0ZScT9FZoRvS5Rm/lsGzqEAz
65KHS8nPg6hNu1jbhoHbRBYUMdwRZq99g1AgfA3VheHSZdXLPiZz1Yhp2DxSRQKIcKaD+rCPIi7t
2WGt3u7haTFdpzMktZj5oUXAI1Qr1la9SPXTpOCul+DynycpkBdUxO2xJPRZ3J2VK7Z5pz1Zclj4
JGWT344vU2QXesQ8H66i22FG4nfo1ImkXin7oJfpQp5fhMG6QQVzbMBi7CqOK5c9Bu79e9EeiisM
LLyy89yPGCZ/CGfoHDvnrJaI1G97qooge2lOjpPs08O/j9dLSP3CTXliOCNvI6ReKvWUQzjxLZPw
sVs+aw/YIF8aCw4yc6tsKOgXcTdE145LSEX8w9ktnATpPbTizBHgZ6B6HfEIYpl3xyRyS/sSrCtA
A/1cavZ+O+LIXnXEG4wzFEctYNVi3Oo4mDSKfjw8VUVBimGpD1lBrvvgVqLDTFAbi4W+vH4iWEtC
To7/n+gciQp2YCF0pp3d7pc3AmkGI508cdnxLnoiNkJ0qtKrt2NoNBia7c5O2/RWwwQvAD30PUP2
Z2gm+Udhe2L4pXlioX4Bqfn/7TiJHgLcBx6C6Sw9T2HYceLh5WORlygb8bE39lwbXsDtLVib6s8Y
cvncih5E6iHrdJxOWX5Vo2MBqqn9kMvz82QfjsdYLDiZwfjPou0ix116tk7ndIoX3VDyonAX1eXI
8JP3c/plcG0CECbrir7lXq21u6jPy98fg+4cs3tAgKCX0+2edrGBm5FP8UsgtHryk58RHetZoq7v
5zPShlpV6Zu5MckMWJYz3ptAU13HXDY9tEBcUZJIHGqWHxMfLfl6kwAB+JN8FWmx23L0omu7A53Q
HXZDS6gd3KnrCUGqJH9n7MKN2YRwhoGrjxqeLG2toRkzRZCCqzmuIZtUMoEQ/8FyOyZjNYeXCOfe
NxMlI9PNdqXXTjsiO9Ux6CduMk+IWLTaItg/4Jn7ViqofHXqv5mYfCWfJ0oUwbvizL9Gagkm7Tz5
2JjKNT2OPUSMpCeS5ZY3VzZS5182RdUTCQ8vx+RvkwC4/KplLUXW6yObzm3arL3pfs9ThGmjf/rl
l/9t/sifQ/wcAbTQcFlapyMwU2S42kG3IVbZ2ox1Kt3VF7E7jeR9+wbKWpvi7olfGKeV2mYi9vl0
3ZOJbcZtmwnznji68c3lzzi9it1sTeqORSkcZq7C34c4VNkl37VNUCA0pIr1wyfZh9AkexNyEvNU
3fPx+BSy2N+lRi3zxLbl1BJxMDcBnYLsbSFw/ENsbTFK9PUx1ENTbkTEBSzFv0Li+X3buSLIjil8
24bjIR8Pz7VyZDGUYCCn3pY/P4TXNiwM5VjpGjo+7kKoFSV1mKhCR6yHRavaceTHotToB3QBYVSY
IgYi40TJCqps0IdFfS6VXGgCNIA9A23gKvjUN/kmcAlLsLzYTaBWKT+CLXgSdnqT/udAFA72rHrD
s9I1y2vXqyDuWTziXgDeZe1FuBwxzM2AzcqkhWj19TgdkvzAePRTe9EJpP6Y6iApw4Tg8DBmro3I
eN6ODJ1m4cLcXrSCLuI/vWyjF4QQF8u5rMdPRcvXqAhtIh7e3MF3jxS4jmGuWQaLNyzrIvJDF/1V
n12lb6en+5eH92i5j68A0uTxl69txqJ2lsHY23QIehiBLGR9184BpTg4C8E2a4ngOSbWkPuUDJqC
w6cwkmhSlfFnp6eXL4fr+Xhrf3a3EKB0IuDE8UShIiDa2gA7nD+nhc6h0wr/Tw+frqmR/NND13mJ
jGsdIQ6XzgixyPzfl8mtfr6EaPT076O0AiupsEsGP7ziz9fD25cZf7pcH+SKJ1qVE/LkubWlU87b
TslkakvKFoJSyYXpy6YfHl+Oh+stRwjf32ITdlHCIw/esNqyzM/IR1o+SpiaHlYYe3Ye2QfJKzyd
vj50Sv4eT8sbFjgl/zj8CKj68PuhnEfgWg3sj08ScQht6T/d3g7nSSrkbTjNjjVXMgnLGHkZw74m
64sguQkIuh+nJR6PD0q+DsV47XwjEVnatxVaUZcK1ZKAjaO1Qyf+eVJpGMQyQ7OZ5J6oB3G47cPx
5Sj2GYsL8TpI362EQstvtC9v1Jilm6nvOzP08uGTMoPoZafDd86Oox4f5N8R5n9qN5J+57u+8yN4
irSyjLTxXL0ceYWRC7/lwvs56iJZUkZeHzOsT1h+sz2phDG1mJG9y6c2cgWWnZJZUA+foHCS6g3V
1x+eVIb8RDxXgdn3pT/uRvnHmqn/jCRn0QKXTcqwUi2pqPRP5/D5L+CR05opVXq5TUc6acoOKIfq
2NzMDLq/X9MAqbkoduN1OjPy1+nb118+CiphWhCrS66TKq3J379AcablRroccF4jgvPLwU6R/stD
52TRLA86JrfTdtzQmelFg+OltdtuwYPZi5L/aD/wGp/Gc5Slq3etktfpXAflkVQqbm+yN5D/qOn7
oXPjw7NAnYpKxPHn0G+duqy0R8WUtt+wXLJrpLgtzq8ju3+J1xAO9CZ/VFkg2LO8wHya8v3TP+zr
Kyyv4tPx/i1m0KZvkp9E06Hwvhsn6wb2YEyrNr/pXMrqlQpytyzi/DAZNYUsYaXTLfsdeDhVQwFb
2YKX3JZt/gisTUhlZVS1GguSrGZJUXU0FPlzrBqGEUgBP4SGeVG9/JA77gtr6nUhX2JsVamv7bG8
7dHyu/PMiwF3p7gXM6ueyXuw4JAUU5VWV/4yMsGuul+mc75crqd/By7TS+LLBTZievFzFfFGPEDe
XcnpZRP523GK24PURMREto6OXUYWwKCAoijHqGTT/+UXOgtCtkFAEIaWzALLfMpDwuVp0FEdeeAz
tfS8vMOhZ20qfH31Swwue5+ubx0ws5XyExs6HjGa7Dy5sfPyr0jfgiiwPb/TeQ7xxq3ajpsmX0tX
motynIdvIu1keF+OxiEoOU7zhmMQa29DyQ+w1+ABEmUDPKzKge02z0E29yRS1GMtTy3RlC95LB8W
bqpfB51K9l/8yOUqB52qmwJLFAaSdiVbFhtEBBUM4qRHBSAMrrW8oDnizUS8KECoATj8fL28n8Mo
6ZfLVVYgA4fN6OoRZIqzNKf/HHq5h6Z0SQJeY33Q6fyb/OVdy/6UhcsswYichE2/HO93uUcJa3oQ
zzUnACZJGwYrS4+q1H4DspAfZM/9Nr+0DrzIgt+1orkpChn8OMiKjKOPXG0cbqmb3O306UUivkQ9
VkF2TNxydgP4GpbHOm6sn//r6elpeq+X52hu5ROwfB1DnWT5wVnupndtyBB9wGBawdpk2pwa0Fsn
DUSibziwCpHp4MJQhKCpPoUndRB6yI45rUG1RsPLlNWvr84/O7aT5zzJuCzf/NLtuKm05QjDDNwJ
UFtKG9yFZw1kfMOUyRGL55ifhMEVHRzn/iKZJFdsVsBl68vkzQ28NY4fmUsOwjBu3PnhUmMg37Xv
WtEAO1TZPfM9ONTkjYefyt+t2AN1Y/tSEpw8X0jU7Dik5t+0jBVb5DfUnUyKZwrNn09HuSlc3Y6F
f5/xbnRDj1GTooGMq10W8oFJkU5aMDiX8nfxCIxLXOSiprlw1+PD71vRTwXnpJPPeSDkhNG0g16+
CMKbILc1Av+Syi9IpHhwRQVRzOx6dNmq0hDrl6Bl3dRbrubM+sfyN/RcsfFjKN+QHlTiAxzvW9hI
Zft6luMAQOHIvQYrXYl8Fs5yMTVL9fS0wPEAPDzNQq/c4W3JX4cVbtnsHOV71BzqtGZ1mtF8nY/f
4oLyCRL9Xvq+zScIEI9B9lPJm88esMjniw++8hXTY1N6GIDnYVi02I9bhu5w37iWjgNGWe2ETqqR
5Rta3p2eT4+Hcz5erHmIQ9Cbpdv/DB0CvMMxgV7aqC1KPeceP0XNg73JKrVjkNkJJKQl+j8HmlL+
Q8gE2ZF3HeP6oOUcyH78yI28aziA8o/7pvc4+68ggeS5+mBCbAanlLfY8nn2h3m6PTzAULR7PM+N
siMyJT/Fpp3IEbcsaRxZN2O9hYfX9zthU8p/vmowmCs5UpgZhSRREMNbPsjLEEwoiN2KOrCoVtmf
d0MrdLfDdF8eqATXQt3nLCKwBTzfzdNcLSGWPcWBo5xOIdoEMC1Vx1e2TGBq5RnNhEIhO69krRgd
DJmM9Ha43Y+fLodragzwegxNVYJ/1v68cA+ZvG3merN5IMUtasjgfyynJK3R584TZqnqy2+m/P27
SFuO5WVd+X1BJdIeCvCbGr6XFJWo+WOhfb8sGTWCzR/m7ND1xku/c5mIbnJx2Tw6IB1HbKDzdDkm
PnYoMjm8hMJHeWZS2MpYlkxjeLJdn5x93wsYQGzfV24mgpGuX28mcezyxg73g3xF9IiHUniZFkvA
cOxLeRNjrrBM7rYRl4kV2rmwME8Fj1zY6U0ocYHc4mw+33k6WNxF8XASN0+Lq7iyDTfE67byOvIq
5YBd7K3bJcGzXe+1Fw8hBxLpYoJmnPmWrvehj7n89S6zduPXJyguNyt5Ob3FZwvUefxW8t1x7HTu
RvU0PYosBdOLjfV50/9XgH80RCgq47IuicbrdUJ0puW9GXKaAd/Vpr4TKToLl2HKoZoxNrLsyc8n
33DsezlijTJQRFxHa5OLYpyZfIZ+kJ98T2S6lGB8vZwCYPz2PRr5OL8iiFRBk+VbJronLO70zBR+
+/6QvicfbUrSJQLqU36Aoc7j6+Emrj6Su4rysPihfopKZXXSl9+piEepJHuDsg6IrCnXqkoJn1PG
9k7+Y94ygbL0Lh8jYT4G+7LOLH815o2tV22bEE0U+c9aFg+i2dWCVJE7ub6HWjrJNVZ5zNIsKeE4
zdx6MgZ2c2YNaT/y/mO2YQF2J1csM5RzdCdgZ2EbudTGKBalPp1uEaJ9eph7l8b/+OXyIvWWiZx4
clFjYX9vHbPsT4yKH3OfC9MyWf9pMg/i8QyeydrcRYRqECW+4zx6Mj+MUDebx0em8t2/Ha6/vb/N
8yt/Fy54JHYlDdaq3SFyCGlUypyzj/kmOcEUjTCxnj1Joy2ft4P3Gg0XMUDJmbR84nCwB+en6+UN
yCLR13G2aVoiOBGZJD8FB6Hpdfw3l3N8JEE9xezDexjtNR3FJ+j5qCKoLjEKTeOP3OY/cjuEXs7/
nlaOf+Pbl+N5VsDin8jVmkl+Y9GRIq5nCnFyvC+rBk9Vapk7mi8m2j5kurQnewiM4m4mO07/NHig
XC33NjNs5Lp+6A1QroY9sflQw3VHKco1gwGkOT4/xwEi8pSiYP25DpjnnL2mzsXhDCZhLEnKjQAl
6jmqoWJzVdW4+DDrKgVjobFS9KMv6cbl6y423ntyU9dUGRQfZ+wYF8FgoIg7duNZ7RFjELz8+J7P
X0OANi34+Nv3aKVTeW2uG3kL5ju0aQWbdiOV0diWrGOVELJ8ePJLs6QB6c2czhm5Sk0i5dfesZVy
06wZSXw4pPz488sltt54CLNkc0B6fJLjNscEB4UU8uvpitqOXcJVztTa0fbKdHJ4ZHkk4RYJo+or
StxkCE9naNn1QGK0NH9q7bx62Xl1JFSLbJ8cSXijxl72ma1hljzjKtxPDPJ3ywIoixiJwGMjU1ca
fz48H4PZzYzOgFgEUkTocPD+8pQj2dSdK/7Np9k5ldVlkaXIzrWOPJ/H91k0sxoKow+ekjKfXJSg
TGXPmTgAIf+eJ69gm3RM14s9N1UWDj6zUgMPLoYp3oPBRU80dbxtX4CSGIIH3+CLp6ca1ND0r0Sh
IVYncpxZ7uQ9eRdR8p6Oj5dcXXq+nGWn2RUpNIU15jrvvADMxXc0cmdi8uvLbc4ubdzMJBfPL6fH
+L01qSZVY4mNpOLlEm8g9noctej8yrba9Qwr8mSzyQP+Dg/JEWAoheA5hM5Bv+x2ZxA02Z4IZ057
6Sg5IrmB8/zrXNtNPN8IwUNT3JMgLQ6y6gRnRn6bhi2Qj0eNk5EHsbuhEWvMKzDEObq2CVAJ9XdB
fzzebvIVcX8iw3lbr/jx/Xa/vMovmNia6AWw4CB6EchlJq5oer99t44t5J9TgCSir3l64GSk7ORM
gKN1JH6O9lKt/zBwVAzB7WKPd0c/+/UQpkgmtAx6qGSV2NMky8VWnCdHeZpFas6tD7OTv4loHLMK
7kt2LrDjgnjMyPjtt9NbAYDlvVmmBvPenO0H7WR3wtcu6+DX8iXfEzEwyQB7hGxaObSzxJPQEZ0i
63w5HhbzLL+/sefgS8YYD6ENY5rPG9VlfMbvd9QpJirMjgjw0iEtIo5zQluEHuWQgwIhSx6z5AuU
rOAsd4lNW5ABDlT51Lr2uQLMmVpbYT/IEWDfjIl9tmi6f82KLjbDXYLnHZ4oubx+LAEtRf0PO2Lv
schz+GKlMte3U4N3spHrPfNIDUEu59Rn6EB4yYz8jciyK2cd2/aqPGTDdUZ3I/BJBibBzhSZi2Fu
qs8NyfKvn//H9P83ka2Rfck8Z+a/f0uXC6aDzFkFCl3MaDaLL0IAe0uPaftiCcCdzsINa0MgWyCj
K2FrBTynJ1kgdDmP8HG5Y3dBDXehhY7HXGmNy5l8g8iam/tIzi7UkAInCIHJ+pYgJ2aIRSS6vRfQ
jTruiMh7ZEKNc2L2fLz+KxGYorxgfUYSUkSfpa0Uitw59XEsndt2lGTEoyLasl+YYtZb1RngrxI7
6Eiujj3mhQorv+FyQqOrQ6cqQwxSdp3hWEH3g0hgePWhN1qejyiLO/UCIiWLZraXoQA4MdaTVWxq
LAwwDvnxdkSfJUbITCoJeiyS+4DJIy6kTiM5LHw1IG9K/MAuAr/JybG9tV0np8isY3CZ8/uyBHIK
Y+yYIpmJWUXBJxx7nlSJrYwZGCiYXfOEki1LyiEXMbi+ykhXFzzK7h8NeboibaFB8+PhdnwYHciq
D0RW+7F6qfNDu0UcKPY+id2LTl9lx4SIW0y4j05yTE63eYLiy/dM09zEYEmWJigHpTO1QlvnFICt
ye9Ky7GYfgSRqWW3M+QeTsf7r+Fjfg0fcXn+NXHp5Ct2zJ0wA4PnQezWtcxd1uq5UUgUkeTVb6px
krYpleyTYLgpipSPjSYnXORd5O3rKYiVj9sOJL8TB6OOsmQ7WbJrsG9IyyT379sUiYWhIw/n4+Px
dpOqQaJnSXJrKsI/HEEDg20jWmZZuiqHRQnYANlrivu5MEtDS24cwRKxH0dDl9jF2NaPNUZ6qYtb
oJYGVEz2QEhSMGUHchZoCkOmJx8RpMklywEJyi4y6lJUalpMcWcug0hdjBsj0h80itHU9oUoCTlo
mvqrQ6S7i2gfMH2eBWtOYAGkx7gDt6AZ5tL7J40YSr+/EeD1MMXLsudomE2061x1J4f5RIhMF/vD
25VXNa0RNrBwvuUKi+hi8FxMUS6q6xH057mOc63UJ7hlAjkH6MIQuKJ0sohO3PNkYm4PaabdBaL1
vSehUtDByqs1FiN7OapY9Ki+er1O5ihZ41G/OU4RWvoFxLOUT5KwQ4KCmxVuSczud7qtZynevAM7
dH4AO6C/si1+AfDxeoIBJzbcgoysWGBy1FyOrg+bmfYr2xxZqjoKQsQesOP6S+QLJD5DpMq6PJJt
Bmtlc0HCuPQsrd2Xt6advoGuV0VFB2090Og3PvPr8SkUVZ7vW9TFgUWE2aMp/vNTAPow58/QvGtw
oZVmmCVJXCR5lTdDUjLh8ZjeQrUqFzNFvWo5SUa6gVs8/ZQ1gNxXrwmWE/bqeg+wWVmuSH4tcib6
TLtZLPXjpK+3OECe5p/iHEO9JxJO9eY/EgcTWmbY9Jyzin63DB5QpKcLg8rTwLmxnxQQ8NaLWPbB
KA4s6E4cjcv5JcQYjyC5QJ+/KuMBmf6W1T+h56ZUD+OTcyUEshQ04RRHXjuzK491uJGEdL6yJKSF
nZ9+spUO94qwILvYydzJ6lRONKsVXcxX6uL18nR6PkWc+jMA7TmHpKd3G5IJs6zK3hdRr0MEZYYF
CFl7hTLH0HEq51zf1k/mZuwR/Zp4K0FUzRwNXFKD9eAov5+XUCZPLpY1KJHT5AhR2G+JJKa1Q5gk
+1CUMamj0MZlQrIn8oExeYucRaALma6vjErwODIlSlZtpEYhNn9Vzq7CmtR9P95NFm/kIDv6jENO
bvGjMk1eViPEBMQkxIqddbjfD49fXmFyhqStXOCjKc+ogamh9I6QgVQsxIJKwhtO2ZhoOw4vd+jT
OkI/HoL1HsY6qTF5xVEtoKwO0W1xHqPKYUfJnAW/RE6ejbKDWKkTOXYhJFkV7piXkmT1LP+cpv4i
lGRp6PN0eY/VisR1SCHeXCO5IzdNXrmPmZ9+FdMEsPomv0gCnfSRd+d3qf7r6fHLBg+J1hoo7mC2
0kowm0K4AXGeh5qL9KNYbld9EHhL+ThjbiB09lNhZmDKimVxMAvVOD8BZM9HHkbanK2cITrZTyFU
aNJVcgUQ7JcewlJKiXw2T/jwGGxD1Mpzyc6fo1DAJBOF/0PuzqgGsV0GlwmSp4c4X8UA/xXQxsvL
i4THPgM6/ejkVCzJOwaOw+w6zy5vqY0nea59PMKeUi6im2rcyuQEQqqs44kvndK9jYhXPleaNwjq
uc+JNWogoDqt2FreM+zj2+UayRah0HnayvWAARzPg/eMAsY7fVp4eK+xikFOJGheoGIR5itDAcpw
P8kq/mUh1SR/B+VXxI/xlYlKs2Dl50LkIvjvfd+ApGQpJwQKM0SCh8klKE+X+OOKoSd/CWGKRBS+
7+Yuq3qwVq4PpPFwcHy4256+ID5YEmJnR/EJbIck8K1aSsmdm5xGI2+mYrp7u34hcmKKeLix3Y4d
+w1DOEens6i8Hl5Cbfn0hSGADYyNWJ+Si2ZkO0m0TvgCNQwiNToS8mUdQdyNmMYchq1yCdn7crxk
ZumirtxgUNxBkEEbHdqRcU5BQE0Ao2Cue+egv4B8R6rJEwtlTiQNYw9QRQJ7uDiUl2QTG4jF6fM5
mNppO6fp1lf3vwuzIGrMxv4H/uOhtyxblshWbLXS5UFXh8fpGO/TPg8Pvz3ICVBSaBYZcSRQmozG
+enwEuZByRM2o0tgOSNziofjKstHRdFMXxM/Tt7NQCgKLnbcXzsX8hOnmPEQszy9VEAFSHmKkbJV
Blxvp9e3l+fT96QIYv0d4cff7tfT26aTQAk60UmYiVzv9032rCfJSxW1ecajii0CRWGOfZMVPEv5
jxMwPLr6fhGTpYwuHsHt4b8PXw+3x+kf7/GVHJaJoWjEfJSivp0bZncPSFTENkT3I1P/eemXDCzR
lG5qkUezR79PocvvopdA/nS84mxZTq+fH27Xx9gliuj6w/lyPj0eXk7/PsC8iaO0vRgP5Fy/tlqP
gCtFgf9I312V4nw6PZ1kK0Pi8pi8Ud5D2vs5FnNcX8MnBfMP4wcK4LnU/Z+csyzCtAwvYl9jzbPd
ERARwNqqpXdhqvWJMVF0ZaKDez5e3m8BnLmePr3fQZrI8cs3TG6y2MpiR9lIIfo0mS6DmsnES+4Z
AcW6dQXP26qAR3a2aalFrDfORIAUhi31MMC/JMKqyQgwmmAHnH7qpEenwtQp5MP58UvoB4lyraSm
XZd0y6fDLkKo63keql95aQH5vBUK/xQ4XF6AaHhKE4yWrc+tbeKp5lFYlHPz+z0OeX0XdEJBvQYT
CxUCByTBq6fPX15kDnDhmscfRv6PJcyXjaKLgg/Hn8dO2nnQUF05dT3eJysvubClSH/Zx9xFd1R+
GHr5Z6p8N6GNZpRgHIdh1HLNW8FCyt/NjSY664deJG2VpNPy5fOYoskP8crAH6ryF7ulKL2ugksT
ClO6QF5rLKcWlGZWXPz2vPzz3PMq9jNSC641g/KJHxK9oy9XIEGaS5CjYz9T060PtRRThUeWFrWl
iXOiTF7OL5dQJJJVM3oWfVmmDDOZYom36ZyveYoAwP5Kn45ljYzUh8Mh1zV9XGwYeHmeIt7b28vp
nmJgyJcrhSy13Lc+9P2M5Nh79hCWOZfxIUzHOcXQ4SHg1zyURWzpO/r2fgs9IL6dGRXwJi/TF6kM
eikzG1KPilxTMcnFLKBSfrKU2aWvCkY0ydanSWHPnSle8xsB27GGH7FhRzN2fWc3dETPztaOjVem
gGpz7JXl8Pa/3yeb/PxdfBq/y8er+Kv1uT3VcRLozVmBqhS1Lyoov/vD29vL9zI4MSRrFs4HgG1K
bXnakimCMyOoBW1fJtmDzRn+ebM+eZleWtQoy4zElEuFEt2TjbllY5IoopWsZ6LILM3cJhzLwUBs
lVvEKJ16Wue/L6Fw7cvphYJlW/rJEEMUQm6VC/O5fBqwQBFvUyrSF0qm+MNc77Coi6xdwwXF+wFH
4Yl6L7WVSWVuMMdKaeZyF/PYjIbSfD08gl2UZzDE4bd5PO3l8+eX2fmKuuZ0n2KYx4fXNHU+ssRO
k4r/DnZY5M4Vvr4od+CorOPaa4R7BDsiHmKZFRCkb/EzZ/rbK1KGmijDMrlU/LIBKPdyi8H7y90G
Fp/1oW75Ci7ScG8hg5ZaD8qCo9VcDeY6S/FTwBOy5FDKGGb+Ai14gQPTDEub7K/TlT5tjLJVpbtk
ccM31BzYih3Y9S6NfGXtCxYbyrbCi881PU73o9PoXjz3KH1b1YI/PHZc1bb8YgfuY+QmaGS+Pdp5
x337Dns+wNy4cgamdHKnxiIqOKTWiZvQLbkUUSZAkOUUF0/FYiR0HJofh86WJSmsc1RcwLyUP+vK
GCDxMMFROK6z/CrIveEDsJo979lcEV8LqofcmTQZSr/Uly/dM+bahxRr7dB3g+PvSuGrHcHJGC4k
GyuBWNJ1zCb3hn5j5rrsjB+GctxOLcmHZoQMVIDjoUOGBQ+/zXSCaxpEuXik8+5gQNlTzyNVwm2E
g9fLZaNXQOGDFoWVHmsI2K5RzSaobVqqWOkNt9CN/O2ptgJB2E5lVLL27garoVXlMZt3u4R9Ux3k
XEMServQdRlSFhItAWdCaEWxbyGsU5mmQs/lcL+8Ik9Kj/wDM73pGFrth+7A4E4GHkO4lVl6u14+
T7/adPqt4sCG2jTTQD32I1e0G/E6uHvnmF+/w3sAi/U9j91ycin9MmmD5e1uHZfl+1JUJiv+CeEZ
iXMKVClZX7zOBfiayxt2DWVTpUK/uI+KR2ChjP79BqQ6d91MTzUoO8FbAG+dLFCa0MefhvN4vN32
VvaUBqklvDNLYPjwHNryv59BPqa0X6sfimiWgCtnR/Zhfp7OZrpRgyehBnagwXNhtMHUez5IDxn+
EvVzVkifLu0Yqgvc2JQYjAhyt6BaqbKiMMyihKfmdqSdQvr4SVkGYkhIFz6IKqcrDP/4p0rpW9x4
Ub1Lf9fjkwSkxW2rsla/9E3JjYEPj9fLJCSh+06sfkhl/1ZcrCcbU8U8h42FXtaTghMxufBz8l2B
n5Dj60+x9c/0h8XzyMTe+egzYL4K7AX8PvzlXMsa/7JZVkhFwk+5qU68SXGJ0ZAlfMFq00G+nm6l
4b24i2Fkx5c9wD//42+/LFBbvJDo4SAmUlfqKhP1YIkU7LRP7aVSsq6Q2OJ3RPQp7WKRzOvLw8v9
Ouev0rOYdOK3UB0ilguEA9LlgLQvGEOy7re/I4G3REgLsrRrS0LX5rihjn3pDCFn0Q/DNQQdFEW9
Lz8eyKCOJCsvl1vIwb4cD88J+hM/LdO8ZpnPIeFkD6+Hx0hhCUn3ZWiKrPC7QrSLa7llT/H5TUom
7gx9kiEaLJ50Tk5773sgL5adYjYyu+4GyIrip6u3tRK4Ks9eQlZx0918DY06/tc7oezL19Szs8nR
S2TKTur2/P5yuErQYVQOXfOWo0qJsycWbf3p+DmM1T7LEqMtf9iujJYR6JRdqfperskQxn0mmYfL
kYeTxFNQTMeNmglYPI2vp9t77MkRtFTyth4DfIuzZuGaLHlROsDXaq6wcNp22osXPNfdLQ85+ZTP
ISpMZRmPLydwtwO5nHBRyjrwXbB8KH5HUaDh0Ie5m2k/+WNGYLl3pchslpGcSfhyeT1CcRgGolZV
mR6RX9y0/6JMpIChK/WdsclySDhYerm5B2/quTy5MU+n5+fjNXkXs309AS9DEctWhjLOB0w3KNto
ohPiLeV+Tq1FZA9Fl2cQRWwmI0/Br7KDLGFc23vD/vQtlJmfH+XIJ2rX8pcD8tQPrQkMZEoQGlIb
nQXHjjR/yHLrGfW4f5ErEbpSBBNXGRaPLe8q4hNB3lOjpylOCGpbvuXBcws/N7Ace29lweu6liVd
e29CSjmKV2XJu5bh8/LVKKbcc6AVwqO32/H96bJcT4hSZSelXIgj7NqYsQqmOzRA2oizulJmNjuz
Sz+MQU3/Fvhtg2HHmOMP1/fjOFj5d33H/db891IKXVZWbmDSNyMuGcTacJW7nrvKSrhx2aQT5zZW
Eyq3tNM/BSpfvPKZvCWu4ovYkAE6ThtrBiPvfy7Um/30Wc6zhpd/NxDzWbCFtpmRcpzRwtCrjm3B
h1zsRcwdGXfwEMip2HV0RQ+Y8oKoF3e9v3zYi+vlZxl+PX3wbflypDuVZ29ilFTEKAvMyF7HQKPz
4J/qyVd/ltWk5sH9PGcq/jwczNbPHfvrc+4radk8EB1YvoG42In4Xyn7pbY5QRabsWGv2POxdBoQ
CsQGGq3YpRVamuIFyza70oZidlwzH36yDk7pTnZcLXtsbK+RmRn/H9koEeeQdaQZndUDeKyey9wC
CMeKgtrx355l0ZVBPzPW4oaWGMivgGj4OFu9NLxPIfTsMwBHbG5hPTuZWdvHdMSfpl/L3jkJ86KS
sHTvmaTxPMndLRQOzsEM1DnDUB0HUQ/vbwmCowiMDGHxgCjXKzQcCKBg+IPIW3Gd613ngZD0Axeu
roYQAsKbjb7c3j8eBtlBLLxgL3xBM7KynM6Ij8mV3Xqi2MsOU/7p9n6NSPafcmPuhJJPRvTxGLmi
Z6QKPA8odV2CnSH9kAF6eb/mupBp/xmfj6jIFEHI73bgYW7yTL3tveyU8Ahq9NWWZu7F5fn5drzL
7onmSO5YQTL03V+lsruujAZMEUvsrNXlxZIa+Y/Jv/7z/FZyxdL8Hy9vxy24x3LhywHj2m2VFygq
LvB9c/JtHVDJnrOmSHR0S3Q2rbQLkzhyKTboMdwZ9PNgyZg+C/U8U7yJ3v9cDj1LIgNXchlzVpGl
sxtGe2i4alZAGnfUYl0gSgyQuCAOqvWbANnz5brlWVnutDsxFDby3RUxDwlwlS1c9PzVKD+ykSmU
wXMbtDErpCvVW4v3YcHpJqsYutEC9N5wE5+xrePvb4c0mHLRALJd9Dzqmm3IkrlQA85cWKZ5VJe+
aUnrx6K5redITjYSWnoWjsiR38g9pDmcCq2Rvs/O4cKwOi2UiMI5uMR2PwC9MVwV55lo769hLOFc
IBmKAuSKna60W5vDrez+5Bk0T8R7AVftx9ZVz6EXiI45AJu5YwkkmXwMEB+PPHJYCBPTI5FBDU/S
AzFF17cQCfA2B/bzuaVROysgK8by0eHcVJ7gYgcVmqjJni938p3kT/VytNW3zqxEW1exfKkrHVgr
ODePbXi/3i7X6P+E0sMEnufcKjQSxMPTOtXk7lM723ivYiKZHaGI204KMRCGguM3PzbsrQ3c8GST
/vl4/zk4U3+Qz2zg+YkMUC4BqnzWA38Xht+U/DvDLaTN1KbYaOt4vx8J1LVhDgjuHWU9P2mtzOjl
BzZyJ82aDwgJPBFFs2CxF8gyOVj1yiMAf+BG2a7f/OP3x8BLDJX+SA4GkkzWhSUzg4AAYbIcaBgJ
h17WcOWLY7+xHNsdnp5+FgvVutLttEI1MnIINkntgIAdKtk59/yQR4ShhUIX7H4OtpyYtcEhnv7H
OPdq/+PhdvzD+ekvv99T25U0UnMLwh27Cu6Zh619nn50CM0knibP7365yhbXO2Yq51qIcwA7vh53
oMjkeajS3MqaMbC0Zc3PcfRM7U6RyWIrZXnomSJU3Uw5GMzg5NwKJY2UsVeM9TAHSf+aXrP856tE
dC/BALJ3obhSmQfArYO125fD0+Xbw/163HR2x1ZWb9PqyBksw+Niw1LjECep9FNG0ib/Uisn+/sU
8lNDmTC6WDQKQ2wcRiVfsy9lnLXOIcC9Qq3MOjWZm/WeLxhILiJq++IRrW9YdmI7Fs1lJ/bl+Hl6
2HPCQQ4zalDDbfMaZCex5wJvzAcYZyQK/gDvzLfwyz2RLGLhVMGFJvF/gHcn8fr+GnI6ueHKhoiZ
vqUFCCKHjeHQk/DWLr+3ttOmBy4z56vMpSnv9/v0CdHbfcAchAoFye7MWnkNss89sC3M2jcHKgjD
9PxxZVA5pCuLCxeqPI+hd2nAc94/7VB8xnEPsU5ZkKS5lhMVuplBWh2LrC477hGpDKy6frSj7lBe
1LS8mzarQv4AkkUIKEW/sKNCbB6+INYGH78cvp7CLNpLtrN7OEVEl4WHM8Ne4d7SGw8M7e8XwJs0
lnvec6XkL/frSU50jzTb3tWpgLYSkzVyX3n/0g3LGCT1CN0S+uzRSpiuyN2S1f3npCWQXcP4KtmZ
Sootu1SH20It3nhMVRKL3PUOZ5BQT6LeJjXKiWx9v8zbOJ03oNGOIxNZ6mw/STpgaPkqWutFvFKW
FJqD1Qu6336Q8rP2rg2WRe50CPevh0ngAmgIwwaSaiBTS9J7e3h6j5OuUh3Czih45OlGV2eYNyCT
ilGRXlHEYmO+5fACMDUSj8XC67kR7kxFSgMe3j/JXCSKXBbP8v7lcErPZPJGCh1d5rKNJEvfdwt1
Lns0L6ESJ06qnrTk8rwh4khg2UhIUnWb4Jf3wLZM7wjez0jtSOHWpq1l/iSYNtGV6S6Lu1Z5Ty/X
HyIxK07E8TRvKKumkSkE2yQKAyZe3/p5CgAo2CwfJvdVjBXUwUdgOM1ZvtkFy8fJ0pJpcflwBpIV
i3VpHAAC6AuHPWf2qhqd8uh3hFarSyXp5vzOqDaKWIbiYsX83fC92QdFz2QYK59Z58qex8nrXgYa
Ji2yAeVx4CO/t7RQPY5nA5QaeFI/30GjIkOGikj6lWCbDUBAdi0UU8q5WLltcqxscgbC21g6UW9C
ACGR+/l4Pl4PWz2po3dBnDIdScw7kQZQD1C0ROBfx1keNfsmZ5k2dCcPbvJzn3YIygpcU5QIYUu2
hZyknj2U+fVa+fWOHFlk/sXsMibHLXR5/BSmY8aOl7/fIdeK83SzH7mYw80kDvE0bGkq3b7WuUwt
hvUzGlGqIGXhKX9jjHzCbsbuMk1KBr193wIan0/TwXw/nkP1bDykYMpuL0vXxf8+vB3Ox1sqHpXh
EkKKCR7k0IkZQ/kN+6FVduS6cTSA30o1mV+MdY5xIqQSsgvPL5dv0+G+nN5uJ8BAq4pZvJieBnGk
5pV1VlKHRlaHpkX0XatDGXCi7zgC96YVhmyFMuVL0jwRKtFTIJILLXO6emeIMzjDXhklJuZLk0MC
x2EtO+xTnIDq71giP/sBdrS9GUCFDhcTNtMikDJnlpYsZ1U4P8yKz/tRJk2R7E9MNRnOpI6fv1xH
ju43mr7HZ1e+JoQ2cxkhC0nkE6RXMiwlW3PxIkhgcKB4tJAK9On6AeyT+9nZz8oY6ybh1vMq28G3
HG5QtTLym9WsldD0DT9HrtX/cTp+kz1F11LUqxKWzSKwwVQlI3ozjtmBAiv+hd5RAqb8ZMbWN00S
b2Uz75rFYqTK+9Pl96wzgtuVaYobVNbq7RoGdkayZpy2mMCw6bijYsJ6kjJICiX16XSbjN/3PIwB
021UK90jVAhsVAdwxb/Ccqkf7ORHQMtTydgeypENCP3b4XqD+GOVAlZiNuj78YbTQQNDZ0diiWZ5
fvmeWbGHpzR/BA0BiaqLvLM0ZVzVKYjNWJawlaI3a+l5h0qDnFOoyF2yLJUTi7136iDR9HZQ3kKK
G9Uf40IWdcaYXoPSzCrn6EWW8FLj/HGm8NiCzlLr8jTCofy9wNe9yZKlmBYyvlVm8dGMVN+1wLE6
HE4vMhGG5GSy5iT8scTXv84r/SqO3ooeNS/RW+bTzljfjsTDQGu/+qXSbEcV8Ew83IpGyPuOA4nV
PNshScQfXl5+lrvDRueD63ij9nl0sudrOHVx8Ud8pxQwT5yEkX2GMDqBXLg4lzgKJM9/5b+LyrL2
ZFx5RGRH8ians/3T5nvTLfKxHSYVMco0j4rSkptbFAYmaM5RFYiONArcG3cMJFB1cWYW1cqIv034
aXF8Ufrz729Ph/vxD1P4Nb2dyXH6QwAG/prw/0nJvE8mDDCEFI8Q8hGmqgxmw2LwnN6N/GWaM0Jq
jIYXhf0Fv76RnnbR2L1yGtBrq/BrTj7vqh9EksrfMav9ysUB2UhE/w0LAAl0YvXlyGIKQOXltX9Z
ZcYDARw3nnZulKIwZPX4tAWhcQdT71cEIMNZ2c1xO48rP9KeE+gr9HGXgzjQqoYge7ODuNRQR7c5
umPcW5ARJGubNTKlcFOGEdtNJQLD9eelXk+2s1U9AelVmsbv4J8rnhXPOe2kc4jG+7Q0AvuCmJoj
yYOZ8L5Np0QkDfCNutZZukAvMaC8X7ViB9ZlR87t97y0Z660zlguoPv7Fm+EVyzI0U6F16MuJ9+u
l/Nn4pLLTg0PcE3uPXb8/fj4p8vr66Tm46/SdUYRf7y1xTq0SczqJWp+y0to3t9SW/88D+b22+nt
4cvp6WmyKNnxkpfNkZWPpWq6THl9P5/OT8HTXY+3jVs9nc+hKOH0VVw5x34+titbeDDeWiu13bCl
zN9r1nYjq/ww4TKOkBPkIPxZW/5sSmDMzIegJiMWFfvxYQDHloqGeSduvZPYLCMxjpedySeda/fi
SRtSXfx8mP5bpA3I7Rj++S70GbSlVCTNeQwwb266MZk1Z+WjmbvexC8qVVj5ntNo6Jjr2A5ybIlY
42pjMa5KD93QgV3Ycq6xW3uXXrh2RigJt0WpJ79nIT5qp52Xf2PKb8YFIE791U//Pv7x+59gYtgW
6vn8jbO9nM7q8Uu681htQF6EOIQ1vuEi3NFiWrrcMqOhyBK+gdH17AOz36Z8Z0fxUEz5oqjRqbld
Zc6zQyELomYClTkop6dFeCbjcr+8xVd3usnYlS2Eknmt/NzcFEsPBgj1nKFYrsg2xtbIPfjiw1Tl
SEiBPFshMJ5pRd/GzRDRI7SANHuYkac3hprZUmgYt1cqU/n2NtW8pY81SGGeDxshk7fL7Vin647v
j7Jmr+RuXBKAgEZoS5gfd1G6oeSJJ1Vb6LiLzTEoYTtEpGOYlytn/OCmlwAU0ThyycnJk0mP2l4j
NdrzCzHV509WcXKlT9FNv8lnQQxdX5qxa9V1Rot/ux/Z851fiR10J7RBtYWksXxpGcqljRN/5bj+
zO5wnuaQlNSZFbrFfzcZL2RVR80U+ewbTgf32/H+5Xp5//wldFC4PaR/9XA/fJb1n+a6bG5Pm6Kg
3LcjhDOxSXgczfj1IN+IG9gp5dTCUlJ2e397u1xl5a6JOPkFSQyHbDv5QqlbV2LvemTGw/3b6fFI
KP6k1/RTPPdgL2QzVl6/sQsYnGePPF5e32JzY9DOPZ52+b4xEgZGutVJAkIq9wM6kiputzhqSRmU
BtMfUAO6ZdmydxMtgBTp2NLsZPE7aZVIhlNwV3Jb2mku9jC/Tu+G0Rj5j881IsvW08mq0TuDHKli
t6IrmLTp5f0ev5g47AHplB1mNbSUw7wMzsPb0vIpCpdeGFOTSjJOy87ZwP2QWfkqNWohk2cLr2oO
gpYxBxksCOh6TPBmD/YvVDPJXoxj+nwZNa273iI7QB4E4dJTh/51Ep6rrHA0N0C5+l85M8h/1Dju
CNtmamEeSnaOk5nhIApbkmKLpu+5pg/QXXRd0kgmWbd3TAPm2wnTAH7ZkqK54UCMCnwZfjWLIaU5
QXdpLi5axNlRXZeoL5WrIas8r8gHhQ6ZOYtvXD+Cd+nYg3Bz6n7yEE7RIGWoOGre9/sxYEv/cbn+
PMV9J2A5h/JhfSxk4w81YWSTBBwekg4NMh+4hBttumxJD8T7L8w766ZoXOyKZ0ul4+zDzPBQ1nfA
8/LM6OW/pyYvVdaRZmSvNMOh2f/NreTjcI3U52hT4FzH1ZZZr7dEZMsLuqHsjS291cOqtrRKmX1K
+SSHSrE1djP9Q4C8ZYeyb0X33jg3KVs5fLItJzg//Zj3zg6G/OpHFtTmbj6zWF6Pn0NycdfL9Wyh
HGzPsAY4O8WBmp4a/rfrhvbvPYepfMsNkZ0Oom00aSQ8uX1954Bv3TPzp+3Kt864W3zWl+vbl4M0
dteWJn3zA565NL033aDluy8eU2wUxvCg5PPkTPXx5UX2nDRTAhnXirUb4bWIszdsKeRavICeHP5j
wkgfvh5e3o/7hnDYQgFf7nNm8nvbj7I7QqQgRmOWSUF5hfKfJe8o4N/zEMIy/INkLQsfDSMT1N0p
dfLZKc3MhKd5vl60aqdzEtrchmQHvEAkmFR3VYVM4fRxHw1b+nolLJmYg84aBZxfjvjOpRfWj4Mf
5EdvWk5b2GeaVI2xS6X5webg2/VuujxkuDQ3XKvQX35sloc7lIzXOucQ/j7KwaayLaed2YvaJ3w+
vNxkMSDoNJlfLEOTcpjILdnMfUmknyCb8qV4LomGqqNVGmIDHB3o2zEE7K592vPl4fZ4vQAFN4wM
H8zUEja508hP2LDQ2/YkYlFmUkkysqma+BQH/mbLUG5GhgAtD1eWLtOdgc6a59fC2hnOaSZ8FUbx
uCCXqStrlRnBX+45RLZ0/rKjNJ3ClvaXC+yf/1rfdVYBN2Ku/FkAaN8Cks87LOJouZYwCyt7sBZ8
reLX3YKhq/F02549iUUi0T0b5+vnmPsKfLbXT6czDoPmVqmzDGczxJTNHoRmcLblqM3hguzgjT1C
dpY5TVsKgefz7FzGPP1fJyeeXJXl0g1USZYp8vqJfzPbGfDFlSWlWiOqrWW+OEnJYpBDtVyJrA7T
TJCoo8PCX0+3U64M2UgBev6w56oHbZGgk6iaNAWULKFsAitQew1PZxaUnKOe63QWiRzXp5LGyKV9
bQ1hsqXlzhKG5bToFIPZDkUxFMwuWYUK/4DZRW1beayM3LzHpqrpRDZtxUDONuIeubmlgC1q+Y44
QJBR1Ww698MwjusfdtMRcb5fSLX5HvR5qFMiHG5Kh1YmCMpnrlvJuWwckwCdQjnc4xeQzyfINcGe
02tPmiZI3vatEehLd2T+l570kByKeo6bZ/s+WWfdKQR/9jzuG8zq/f3++vI/fhefnucn16+9Klmu
yJ6DUem7VuZn27OrEugz1yijNSCfxpFf7zmddrq0x5f3WOj3erhOQeRxK5HP1ZBZ+oa8fbrEEtTH
x2Oe3Jjai09W5/4OYChVPsxHLqFIfZhOaTLjsi9D+Dix9IfiQ//5r7/9dc+gMluaKSxO9Lhkx9wg
H7TjvufMTbodIVWq77gHqFeSmQgbAE/hnopd2ZbbHGEfzpf7lw3ex0AcmN6UKspZ26Twasn1YSVf
7sMRgNFOKhslgC33Q6iGSYzARcN8+r7hSHjuJucC+fPkFoc1DoxAAsJh4o9E32TGrLJvBPACy30j
T1Vu8s4Tg2FJ2iFmxEDYA2QiDEEPC/grY4g9x5yYmZuO5TdxGHVUZkVcg6UbPd1BqF/MogavxXMV
Ypd6rfjMn36NGvXXwy1IsHwpupXAoeNna5YGNrIdx+zzeuliAi44l4XKG+q4SwNTnHIQrivim5NA
7o3vIXnaaKj9OhB6P+9ojGhL0djCBWM5txz1pSUz1SLKwCSQoW4zHn7sKwpdZALwhpOc+yJYN2gL
UrOaITi+Ee7hT6MUzNKdn9B8lsY+MpxK3LNg4dVcMn68fj7+/8AVUqplUOaubOfUFp12tBf9F1Mx
cRyDGQBfrWvxfvJI5EIr3ZvGotl3Uy6rIJIy5YEAQlGTq3XwE9rIXN7S+L88ohs1YLJlxMsMfuR0
gHKddlo8zd7yREAGbbJSL/bky+G2gTEY7q/kJzqHXyCZr9jv5jbK50yCmMzIUzXkfhta78cWSJv6
p/zH5Xr8U0Cq99BQFSdNzdDF2PtJnGTH3jBJy13KZ1mf0yvfvoQy5UBKf4//Pj+j+X+9gexVqLFh
sQOgsZkW+2OT9fT4frtPb2Ob76RaASMHrMQeS7b0loiKsyQFGRYXDys+1VzVc5o7L8lgXOXNLmiQ
mURF9ncUVxg+V9EFNzY0A1nSSBseuOpaWFR2Ut7P225K2X34x6HH8LzsqfB8sTMrFnp84bLrSPK9
xhTCkdKdA6wM8mcJ/BdaZfS9/IZIKEGSU3mzSy9d7JnxJXpFl0hF3Yl2j0WyH7gO8DSREJo1ySZH
VyaHIPjxxQeTN/1kCmp2wbimb4Fmu4NukimN928Z2QTQagaee8sXqLveePn19BWxIgmL0ohlZmyL
vR08r3vKRt/yjZ0PX0+fD5Ad53gsurh5OckXfOq0VhKI7NrKsl+2Fnus6Jlg4sceQK5j1yLJz7kf
WU9TpneJtQT/28r+d5UAGhupjf0Jfm5VTc8R+c/JasjPscKd5rlvXpte9okJBBmFr5sZS4DjQYMX
U9JXauxGQIwksWQwPX7mgnZCHyFbOmBXNU9Upe4OS4ZmZpxr+SS9KO/RV3nyJG9xblauXsSmquew
sSlgERByV/E4kyuc6CPhEAIGvqd0PEJIiqfwmDsYw4P7pOjeXk738A/4SHvbihQyRVP2YYiY23gQ
fk2V3+RVjsSTUamxAqphIulkeUXPNKqxbXSNFgagToa2NBqZIZ3sDib+M2AfauYHWApqkQR/Uq9b
ipUkT2wZjDfzaJOZvn85nh/oq3q7XqbPm7TX6fHh0+UJXGbPrdDAKMZA/3asYMaMqxpEUAjZc2+z
RadAuTGKopbJGMsTSFnCcrlbfIzetHBD5pPPjzQc5RZ64ltO5Bx4yOBhb1sIDr/mD15tFQL5RV+D
IjzulNQm7PAZuc+uFQ5EjC6e4pz+ytczt4ScDjqsv5UkV11rdZqVAWm6craDKv3fKHy4L6rshpaH
OBfiyI5Bx5KWYw9Ml+wsU81va7GfQtP7KSAg2FWvrsgsr90OMqONlh91i1BE1CyXi/8f0ZS9n3Ml
UmwRG/8X8p2Yymn2u1jO8rPTvHZX+9Umf7kHIEuueBprZ2VMZfGT43eJ/3XbedO79gXFRh7p9y4y
QcJZMaJMnIV6vbwFWYnJiPzv5ZAmdikga4asil6YKb3u5Z0My69iv1I1Mz4v2eikvlbBDArc3fi3
x7JKvzh8cZVF2Z7h0N/Yt0WxveSO7nYKia04oD5+gy+/K2MGDu9Pp/DnH+I2bvcDxHzjV3TLOjGN
YlnHnk8Z748WNN2IvBI5VbuoaHKqUxgW49bo2ckHUjZEQpfr8Wnx20LYmxrdgyxE3FE5I9MtdTpx
qTzCN85JkX9v2RdllTLfDZB0V37nlrBp8dEqX/bh0/tnowctFZrFnehlxaiZ+p0rWnlFU/aoS9Hk
5oryVzvV2mN9ceKg6rhEObjAPZzHqgacTaAUx+MuDzF2kVZJMSVe9f0YezKk30Vs/vIcSboBK325
3GLD+svSgbn5RyLFIJ7XkHqULe/kMQxij01Kcne/3wU7G4N3skRpJBFa2+yJbuIm/LJCLDzr6k3c
Tq9vubM/2IddVrGF7p0ZoXPDQ7Kn//V+uv4m70mVr+oWmIyNlwyfuPFh3bJIHPVR+Nn5pcLe2/Gj
+nI0PeHJpb6rt/dPV7HtTtyALj8vncjjWIw8ojLoPjH1FZcoOwivvqfj2ycJi5DzZLhT5usQu0Oe
P9/BmZRrItm4+bKnIDBNpww+gXwqrqxRfJOln1e47PmFPLArw9dlyWnFUU0z0XG1uYCwA0n0TBKz
EgriwjbDXvKWJDl2kZlzGiUpv/rQH+MlcHKvR1kekoswpCHlS25/o1VC/OFYnkM4fdPn9kHUnc6Z
B+hN97QouUt9tpbjCc23Q+fenBOKjY6Su/QmZwL6utJ6vrTXWfs9lKoXiOX1hBluE69jdrff3u/x
B8tsu8l1mPaZ9G78XzcXDS5Mro0wipXIZoBiSZnM/Slxa9a43ljWK2NGAjEjSVfsVvpwfc/0CLxW
v6xFJsM319r4SF8WKgWDC0L9ENnhoX9b0BAR4MHrZSkJ6xGTEOafhhEg8RKmg4+xQp4ahVbLTMR5
tcFurFbVqsjr6nIVtGH64fr4ZTrB40sOLWPn72MYRSB2+I7LlUPUJUFbb5O2lU1nmjIcEdoC7S7i
XyCy6BfgJ/0+vL4o0adnhlct6c6F0ropVpkVFv6MtUvRG5KGzSXz05yvcGnj21ySMy/lbZaXpApD
OQzhIl3Ip2XjcLJTiLQnVVc5FPLiZcOxDjVrktfc4SJrpjhd4G1S2ZOoyY9rYHJhHR+zSVXRXslV
hiklO3fhvd2i0j0+frnETzxDeSWPVIc8yBSAr5rrpfkJ6W5ej/cvlyd5vZ4dmR3QHW/d7cDWmgfA
N42CVEQYD8qRgwprzn747S2M3Th/Tk3zwn+YvINQF/12AhZQxYlvyT8wI29JTda4fT8/zlCBXFGT
FuuXxQKmObq8veIyP+ShcHkIwe3h80UmafWmoml4lp2Nv8i51QPlRpD+jVKDTVeKyIa5tJ+xJdM0
hDiTcKOsyZU8xjCT8TxvkXL579PDKP44l4rEUTPBn1H93BR7UqRvtyPtTG/cFKd1SuxN7krV6JBr
l4dxvRn5UHKSK/w/wdvODfRmtlFsMitX+7oCqw2c90ILc6XZDq5woYcMQs8OWWgMdnsNfxw8tfD7
XB00zPioXxroSdC3KynMIeYClh6XFWd+V9W3K2We8/lnvGlyW0PDS3EPmRw28EY3m+I9iDepy03q
UgjALkKJ25kLlofMqeht4xp7+Rp79rdz1JFucPaon063cJZPIrMmtk4mAhFJa7lgUI+dM1Y+TMUP
U1VPu+vEL58L0+a9D0Pj3JR8buUvB+2V4dL5L6fRiJkcE4lJSr6/coY1NSV9gzC63ZUk88ALwNIz
UPIzMOwZ8IqdjIhHkumS1+qUrEnswG5uBqPZcmUhcCFGszede6WnnVDeYeixpRJs+XSSZqKFOxrK
d5qO+LbBxKXZQikVAyjhUdeMbF9zk+dqXxGUeCPsLVkPjT05skKl8J32xjhZ3/PLNkxgzagH0zlk
MOY+kfMCg1sbDCsbjCLwseqi2yE0stJyit91v3p8yRHOL2nxm/BIQFd6eS0qwW9LkZwYiVJUjEb0
hM2OD5dfu7Xsw3OYEp2uOFpKnNwSJZFLAO/QlnuX14yD7S7XrpQpDLzRITXF6OlO6lszJWa7lSKW
JctbZkfnpCk8YS2fsLNMAIaZYmr9pPhkS8LdGesadlB+0NXLmotF57fpu8GaDjtzxTkcuoV8gaVM
vk7rmebr95yovJrzzEeoGwMGvSH/OPdIXhzNfl0eiozCyN+L6vY8P9kHd9xZGvkLSrm1kKX7Bh/i
zBFYZKwrhGTQm9uVfmrzL3vN5Wxpe8zaLDzIHpjm1tfLijTN1yB9vJLuC+gpVoAkforJFt/wmmUn
eWSPm39vfeCyGCiu+fgytjOD7QZs+4jrXziFeYHpj0+/fX+Db9xxT5l7TfGJe42f+MCfkd/xKGWt
6XgcMXa7BEmOyDQxc6WKhmpw2Q31/FVVzvAVhi9+YJHgoFcCHKBA/B7n6rYhV3mp3EwsHefT6fn5
eI1FLDJ7xxX2zvI2O9nR++Kppye7oD1xQUu3Tu1V53uHItWByXu2p/PvgGvvmR3nRUSm753qN4R0
ZGfAhbQkMtFlGB4UDq6WzKgigTzNDcxmjdO7dSfaotpuBC6GCKkrrSnmveW8zdv1PbYiywnSeOHA
C/P8iEzLoskPl8A2wdPIcWcFQhwoHBW+TkqUudIEf+CFW6UcGKo1q5mrkANvO3gvdRhypZRk4EWE
TS97o0rM5enL8/NVi/fpBtsb08mva+b0z14nl/YYOssWhbxMQsgvh34Dzi5XlQMvv77MwoibzrrS
mmgJUK0IIsjIuitddJdvoYrr/XyNY1IDEyVAi7JYd0wRj3Z1mLI/1Cse0PIeIDHteAtrpAcGasRc
KTFeYolhh52UbZNzPNJk9oXOgSYhE9RuHKVg8WVMYgbzkFya7djSc11gteCVyGa7inbcTjhR9pC1
YRB336+Vibwba9jLcP321QlzkFypL14MSd+IyZwckzmObJrqovLEklKFJN8Sj394+zczubgWTBF1
pcPswMvJm47F4elp+rHso/RcXTsmMaTEBX+RHVtCPCtcWe0P1e/0jmCsk6NU7hxVyOGXq6whFHs2
PLzN0K0sGMoxZTVP33HWmMmTRV9vEcjRVkwybkrSB6TTRAW5KGCFmpFk2sA6gS4Lt+E2tJEAkAHo
kcRlwWmb5zAZPwId0xNglnTqmJXWtPFAdZVjQct83NU019SferI5X49/P34Tu0NEm2dbjseW9gSG
UHPZ6iGGLftDHoSaMZ6Sd0ABBlOb8QjWyM5x8SOdrjGoINOnz+9hAvAGONJXkem4kRqRbbfmnkAG
nhbGANmZ2N8m3nJlZdUavwIplqLynFvq4Old9PJd9Owe+Uncr4dT7Be0EdvantvUuWnpOBrZre97
bnKWBpxTCOm9/CvPjL+ZqZ+5lOZ7Dr7EJuyu9PIZeDVQmbIUlwBqzXPneocLoeRgixxeHPsy7nBI
ZKzC8qwFT5qboYtzuqAj0LWyrdfj57mXzdPpMTAzgSwPPBvBu4S8X6+Xz4d7GKNwlT3YItFBuEfq
wU5W4x/P/9wMXDxKYgvHChJ/nrvo2YjoXlvbyUak4yfh5mJ4b5QCVpwk36yvfVQROJNNoOY+r69t
SCJTXK7hbGVN53nwZRZ2ceKDHL5eTk/BrD0en3B7Alf6g1UoB9VZsv9PIntVJkY3fdW9Uc5QRYfA
KEqDJeIyfWsZLHSyXjeOnVGVdUqBDlDKHVOU3u4SIgBgaoAp7cjsyd/Z8Vzz3HHFTA+yBx4aR3St
hTl9Wf8aA2L5ZP6fLy8vl2+hc8r3h/u3izQZ25WGmYvfuDPYlQ9HeR5hWgGqBHBAEYRY9NUAKzB2
43iQ6/xaDGXdQw2SWygTDK3N04YB2Opa9IY1GUp2G3lQmFGs1zDJ5xCmX5AOHxvJIppHGNrSghzP
kf+8bzF6vBzK+CqHO+yTLtn906oF79V6L47CuKdZGFtljq70ZRj4yFPpaQIFyIPoPYQOLcfyNDsW
nP49yIC8NwqMmtrRysiP/CZJZBxucuz2mLClBrjqrCebo47ZfWN4D6CnWeb//I+/BbLRz2nivfwM
Db9WGs4TYigykAQWUUNtIOkwehC7eaavJ3ecnfwh1mdEbvWGUqhIUxmSjrx7lvxNvXM0iAe41bcd
A2vk3MDgWhkKN4ydH2RCIUWWCsGX+GEsL/NpctzPZ5Ca6UdOMuTKVfQT5GyNthwZaFAxZH1E8KsA
Pg2cZv1wPb5MEv/1uFRwxpTB8TFU++eWCjIM7blvptf7AkJXXJTUNYH5qzHUj4/1/ZynfUo9O1zp
NjXwlkOJEilLC+UgrREpUffL2LWuHESeiB28G9xGqFgxHtbqOT2dl8M1lmE8344yBDJ4ntxxDa64
HPaSpxTueZXvyo4GNluWZ6Z9C7OVEwsU8/P1/mfPQLYnI+dujIPoJwFPj2daMqKSFHSMXZKvlGwd
IAANXD5XXAkAmPcV7cjv0iayy0OoxxGq2RHGyw7UYDmHsHKgUtKP9jhL13a+yPjs3EZkmDvmWEaD
AM+ZA28sPb26K9k19iNIrDOxkTU2ATdMXzmBZxTtjD1XIdycxxYyL8fD+f1Njm4Mp+yafUpNjubU
APin2S0bZbdsZJJf+xbp57KwdhwU519DcqXydRLyX7iVUe8imMsOIC9Z4LDyPJMHBLM95+5b4Xtk
VUJJ1EMNQuwADWSLTJ2uTkRs1pR3QITq2dlzehlRVptgvrWtV9HcWgzgAW+m506Lb6W+OtkkddxA
rxMDsqr0HGcf2DR6hF3ymM3sYQnL/iBxlYxdMT7qSFKWFsNPglMs5CyabOc0N7VKDzuZePJVW66F
u32qEDCAeaKPwza2G0zoKgr9O84iy9DTDF/Lpo3mowrgJARWIKyq3BAl0y4B9K1Y+rTCUCfr9LQj
v1XlRIY9sK4MX9uK4F3FOIQRPeeIb7taNUR9yxklc1OzyUtRgwylUjPe1SS15HrLioJkyq2r2Thm
cH3vNsSMp6z6ps3LXPCUo4vV/MRPk+1fxQEc9hkJ+Y1W5JJB5GbKEjnyZClnjuZOKHCIlCtD3Jdo
oZub12nje/meNafeDit7IHNBKA9sWLnO2RTJRQCqbyXQBHUpn7/jOrKf5+oY04M0HE/e7SmPQvkC
HpE0iwlXy8kWznbVcrlGVynnO2BmXauydyvOkhlHuiqgcS2qjwXKmpcXmR0Fm0DYzNDaDS1ksA5z
xHuW85jpusoPbhzkQ+W08LkJb2pccvtyeLp8i42ENpIE02lwt4XvX7bloLikr1KBrcBE1jkUqRnW
fPf460H+NS/gyebPdWbyBABRw7CCB7ejlgQ5cLzIiqfBOE8F5KIGBqHxY6grfUBKjoP3OzEO+Xz1
2CpRr3UjiWHS7Jl3lM8eVn7APFbkkIaGxl/l2ZtzB5u4evg70ty22PqDtJwZypimz+fLdaP2Nf66
9AZyJStd7WOjiUk38h0MrTVYt2B5Ox3rdWPM3OaUdm+NXxR/HS93o9g09iUrDcViB6Rxbih0eku9
+6awOQ5ji80X73fUY8x3rKsbnSwSXeoot/JORtanLnOVklhuUDjjHy/9/mwpm6p+Lp+DL63jYluX
wGONB/x0eU0dYr6m3ikvx6/HFxP/8fe3w/1L/Kf/65/TP/0cV/w19/b7KfeFi/1rf/2vv//j5z//
5ee//PnXv//jz3/59ad//eXnP/zrHz//+q//+59/+R/z0lUjF8UH2Zt0nPRPnd9fPx2vsY2vuMjY
mhHD9hs3evz78ff7rz/9/f/4w19/+vOvv/zrD//6y69/+flncdm+NcY4LvuX0OsnfPmvx/RPx19n
Uf9LTny0F/UjH9qUF/1TbDb9ejg/Hn/9crj9x/EQRlX+aqRV+mq+eN/aWpqP9fdfpjO4vHw9Xpct
SqsOfDxXTlDGVckqL5fL9GD+HpoLhgzXf/38069TZBTMv3COnW5NkRE+OZH9pM/u2bSCvEFhpTA5
QVxoaM11b57fX34Pcd/tdDn/+vc//O0vv/zzD3+KUvPrZJKkc3StgWkffT+//P0P//zlP//xL/x+
KnHq9v2pP/7jH3/9yx/+DpfuKmlIT/Nf4QmF9PRN/HrFL6nfK0Vh9K20F9PaS7qvcj8ffot8Kkrr
8PKpRcXxA9pt4ANc9eoP3M6Ht9uXy326nlcoAEice807++sxv4vX8PX4tuhUMce32FBy/+fP//j7
//z1z//403/97S9//xdQnp5MHI3DQNK6f7jfr6dP79NKcVPhys/y1nTrqzZl+z9++vmXf/HLgnfE
RzaYH1IFSnwMtjUTZfMbfvnXzz9NBw33bVkLtMbKTLaAZMVhnqJoWf5G1PrPxKas0EBrPtI8Ix1b
Z3y+/Pr3X8SD5VOWchXKP6+XMPV52s+vP52njb3H4uMNfcXnPFExA7b0IBuXgRuXxs18ulxCJi6e
2a/Ph5ebeHKdE30QJD8/YEgMnxA1/MAf2qcTdWvo7qYqF/UMn3tBDwhbG6RPu2ri6U6r+oe//9+1
DocGdhA1zwdfMLQN/GJbzrH0LXDz1fsbsJBPT1GWcd8SvcpUiEZCbSnY+RD/Glt+/5CXpfnsmZYS
3G3HY59u8Q9VA467XYpyjmj+8n/98+e//PLLT//4O7LMg+xLtU/sB86rFzVgw6lgtlR855p7lWnX
2cHbEBE+PNOsX0AwGC+xw1uS1g+6EFpzAXarP5B+8K8wiUdaoxP12I6IbsvR7Vrj/9AJfFCVkWGF
MQxZB2ZFXOV7smzsY+MpxwcEIvbO8ml2HZS7jz2bkX+isfv8RNmB4T47C2nm9f50uN2Bb8knHNNw
vWVJP+C7VxMszT6T8ff/+tsf/7Jh/NVqjlElJz/9WRQPJzqRG5b+dLv/+vR6uz+KctOxWZsb+mpD
Cv1oWNS3IYWbDo5bgTIJtCtzwSNcp1Lr/8v1GP/hy+OvgVIee1J3Q3uIeGzNnDzM1Oe5KK/889SJ
I5XgXo/PsdN+dDbE9Vx6xakVQylMCutNd/IUFn09TMJ5f7+eN1ZKLmnpQL2stDDTnw73Q8I9wz99
Pt7TWI/D+Sn8Z3lpmwx62mQxUPmjA5h7vx4mabrFfwZbTFhH2mKZWlZv8fD2dtzeUvnaaODsvNRh
2kxqQRqPX6M1urKGX55IXiMys59Px6c0AwqsUj6KuHYNiTgfv8UthX5ZixjLh5XIkemwSqoir5vO
KC6HRGJkW8tcrvUSH9yZtnxn7IsPsyPK/gNazbMXUIQiLPDlcEs7jB4LOCz+jDJZLC+SyfXLAwfr
OMOet1s+La8xPZr8T7dP36c3FF4pkA0i8FHCrHAB07Lh3+DV8miK5Rk6ttrjy+V8jMHx+fJ4efse
ymzAWqYcWKCX5TinIRrhP06W5jZpYbQ1x162Z5KWR7RtSeswMAWW2a/l7LMVXXTF8ffH41ssIQIX
MDBR5ZqLfGb8H8ffJ/WFpIwqDFPGUaXV5ocT/jkOkZTXsYMgZfMayTHK3/14uB2nWw01I1+RsLmR
iYetZTdfQ/zKyX9d3ubnrVdhR8/2W0zLvN9JfuNsgvDPh40r8Y5fiRWfWEpugMsl1+FqzRue1PQE
QluF6WM3bCc5OjIQjhi4ZIEjwSlSm4BB52q7vIRw3sfn59Dg7+vmiSvLPi3HN6u7XO4w5L0n8/uM
LtFy4dWS8O5R2tYzxVYOrFwiMwRgXz1xLmy9r8SWi7oR3+BgmKkr+iwojvvpeEs+QfSqwg0qsFan
Bb+gMibLFyKd4Tr+1t3qJsO+lqViQjw9f3SXmmlvR3aY3t/tNon/jm/1Xc+3x6zvY0qJ7NFoii+j
qdSnz5lF7Pl6+IwdDKsUF4muetihTnKPc+167v90snO952kr6SPnTxMtFNPn6C107MOJuWIbZpKM
BJmrNcu8onkU0IbTQXV/X/uQRTWGK9nYDVHXZN7dtFLYSZy7Gf4hlCvJ4qo0u9Fe7/DPDo8hyTFv
F9kT8qqMYOamf8RPwXrFXFHjm0FOnJR9O/37eLxeS0yWygzPx8+HDVtP3LeIDDj63vYqTasGHkR1
K4cyANF7vMnKobGNk1vdSx4qCU6SX7Zpxsan8/utqM/pNNF78MJ7qK4mxGzhn15PT08v6Bqs41an
27zr2/unlAGMwPaOm7aVk+PF8ChlxkCM5ED4MF3QpFi+ni7vt30ukycGd1hYolkCN8IiMiyLFEc0
ooU9+snwO7VS+I2+pfJvRzGg3YrQen7ETrCmG8vQOx8lu7UcUBoXC6Sex8bcCjCAYl+s13PAg3u4
u31uq3rpdYezWqR6H9JhuGkui7W9rA2XdOQoQDHDgp4ofQrAOybvpadurqgq8kMI/3qvsjA9V+gS
ZjSp5W03zBFkKxa1GyQ4GyLda2b8XSc9+cvLDDycY6SKt0iCmvj6VTuSXsYeAmNTeScjs6gfUY2W
wm6KbopdNbne0LkMSA6/VNdtoKbBS9kATwn4o6jOLN76fGIIPyXOWPBHuGJZGxSkgDWHj+rne6vC
yQ3b1HXMNnGbUNuXHRpv5AEht5wkINx4A05J4ciSenAoVNP8OdoNgH/Te9EjN3vDBzzV3RpJcyDD
8KtYcPqPPfuBPwlfQ12H2+3yeDrErW6CGbZ3PN7vRfO/EQVrDmX4OjqZznUy1cuKWyBQ75kYG8mb
2AK1LX9d67i15Z3fL/fDy7aLzr1A223gQBuak4BnhmFUQR1NYc3tGLoHhDDu8jzvGEWLFfbSNwV8
W18anigq+oRFrvdvF7QXy/bi+02j8Pvj8fh0S1dweT5coXcxcO9CtUE09KS4kNjd6LtCEbUEwMyo
3E6YynWGY9tmR9yfeyttvbKhMoZKEpLNx2B4tqccYXgC0wJxJ+i4lOOxXu6Hsg9dejuhpTueCiw6
bm3y0QYNx6f0CjAIZj+JGzbRpnxqrHFcrxT+YSukNZ5nIu3++DtBLZ/jl1/Ry+JWl7wsEotRMb5/
mVbcyiTRCNgtnYFqjfJ8eb8ilcL9c57DozAp8kk8u1EesdaQ7R4g2AqprRl/i5dx/F/vh5d/H68X
FDE4IXn9dHnlyabnVMISCiKAaTH8sHQ7UvgASk3RZQ+ixGZEt1f8CLJGKlY+gibu+BtV0rvbMk0x
3t0IdytIxe5Q2OfL62ESWKSrDcdWx9rBit96Pn7b5fb1gmvaxgwQXlDlK6zgqO1KGBnilcuq4f7l
eoRAOc+H+W25KXDGbrnhL9SwnYaMZLjQUC6K9ul42K3lHC7SYsOeEFl2rjb8PztySZEDhC1XXFeJ
ZidnpCKahn026t/29b528WaoZxuEuH6m366X8+dZJ26A6zy61eMHs2PLOSI3xvM3a+yP/hH0NwYO
6quP6/U9gTEPvkuSOeuLSfbzPyETxK2t7backyRaW1Kq+MP2WgL+9uGI5NLU0EjnXr6dpzPdwYjr
BJYGu5jbcU9QbB3nIq5MyXRS19Px63Gb5DWOwkr8FW6wWRxFSpR0l+dLcApDPyX4FPkr4UDT4oRN
a225YAM/8E6Sg/zqdviH1ePi6eRJFmIeftNprZxMvwbSNALSOp6laeBwFv1cgYx4+rlHPzfSXyf3
/AG9qyp1NWzAgjucN80zhSXnyH3lHfrJs0QW57AyIDYzUDcDJ+JqKZb4Fr6WGXr0yT1n1HSQkoc+
ueJK1zjKrhdsRy6i3LK3wrKtjKLkDlKh+0wMBdIuVdLbNEP3WMIGtF2P44NzqHB4mcwrigYkE7qw
oPaTvnxX0ZB7SVT367qBEzIFH3xBJDYtFgdfSLpFMPZIadhWonrNc5lWvaPcVDdwz9jJFPoEfqPF
dMW7U1tCvwl8O36nXqI8br2eyoHxDQA9zOzaSjF6Ad2mdKwNmRp7TFCXSL5I1zgePGk5JtnB8lJS
smHBkXfzdezgOao97of3Zg88+eMotlMCci7BTFspDM0zIkZIwe9XI5rrbg7RLd7cDoDa0YRSsQK7
8WUEDHN7xQsd6EvbfLJcZzot+odb3E9OM1/xbg9PT3txIq4rDUtKUeFLsnZ5v1+eY2c8lJrqRoEW
XOVFt7I2HABfuy0tnG3L0PiKKe43a9x2JW17Az45+c09OjFOiS/KvArYDi8ve3A2SzRpjLd6/Kwu
zzGA26hw67ml8F1LxW+9gbEKu+wWmrWZ6XdVAlNt+eE7K8Gom9pRrJLFrLEl2eV5C4vqeP0PQVEF
/yZCjMdvm2hGD8K9Gn7YYj1WFHCBb7RHrRAFpXvqvdbyPK21WaAzCA5KeVoouzpWRJB+5dGXF/V4
eTsdIRXPCKjwx1jyEAXkNTa8QIMoz31ldUOVaBL1+16fwnfVAx4FvtCG4XfcH/bdpmtyCVW4uPyq
r3IV/YcTA3vATS/woqsLQrfCrS5gre6FDkhxRZBRtwkdQFae5hzmEqyUBNeO+lAn0BraEWIGMzYD
RS3k+gX66gb90ApsRmrS9tSMjTzVE15FrMyP9fi6WY+/DvoyKiBohzjPLnUniH695qypNipwvqHV
dFmtoLJJU/057y40KpEQw+gw9mWNjlP4G9VaeDumLFUIvmk7Swugv/8iAZBxN25Zwmh6n0KlHNxP
bvWzLGZxyJ5vT4MPVGXBrrW73UeVu6jFoypdiPjNSa0e4u/98vsIsarcT/tOzll14Ets+X0OLOOn
zP/1//zX3/76r9CLNnej6Yy41jzmLq5VZlIuK/xyjI3b5oVkURyc4+Jsy0LTS/7DdDjzIk5eZCjy
bMoQv7DIf1ynq5lXkGUwd71YxDgzy8MK+cdOFpHM1F4OI9tr8mOl5F/nGu7lWjNcTn49jPKfHsuX
k9x8+PEvcVrVvAFwlabnN7DavQZ/33BNQjb/S2zPPB99L/99TY7eLQqN/H0ry3SmGRaZTt+fRo8B
+Z3Hy80fbYrY/WcaYjJvXH7P2SEoMuPX127BtWt27Vlx0mPvwbE79tmmHPusSDQ4tK7nOrsI+x8v
T9/nLwc60StuP3r0+pWs0ubZ44v4WP5wfzned9xDzwXYVbpo3oZ8IEPXsVfkyxP46fz2vjwi+UQ8
sWEkxjicH79cruAk51EClR4tXZDBd89z6Jdr7Fc6C0iQ53rXd2vhlX+sRubR2JXkDwaoLMVkl2jL
eF1/Or687NBaRASj71aez18Pn44v2ybMW27CdPsVGPAK+N1lh3v5kJ8v3+bvkO9hsPwtrrWvsrLh
y91hFrFzav1r+SIqDZQDryyzQO468vqHltwpcHG5hqtI/MrcgdOy5JkRdDHqi9Px5YnoC2Bwqcuh
l8Qa2UEva6ycAVicOLKDWfMqDzSv4Q/HQcXpgeIkYlPwM/oCgf4fBslf+cen/yZOgywDc++65QzL
3//b8X7Y8fp8OQmjmNWnShu4HgNRQkaxa6QrGGB9SKygy2S1sAL1O2VxNFSSCvkrznOwQOn3I3c+
hkoDXhb1JX9+T3xekndrqVEQU/TOcwO8MgMjMAMjt97Ort+CA29BSy9p2+bn6oHitBoYf4DQgR6A
Z/r3D1ERbr8FY7kpNavYQQONUAdlKzcQ+C25XUL5cS8GTyACoxqtZwq5XgQ8RmLUo1kZ4H2AN+nK
xVquIX8K04O3t5JrrIpIu/IokSdmLTctXohkPIhkiHYvVdrsPQC/iDihRrN7+McbPTzghY5VMK3K
p2vw6eTM2z7IKOvATL4pjpighoEtI7gGoRY1/CgkgKbSRVAhaPkahgoJ0GNbISDHsAqKSWhHjSO4
R69bIXm8R6BRR1fJH5F8oEXmqcKzCpyTFyUGAXE0jXs8E/nJir2kQ0dH1XN3quH+At1JkYNuCf5r
+w2QR2clzV3bUC0r0HkO5Bw99koOaBSwxCOPQdsOEQolSFiv+uYzBqZkHLg1XjnF4wB0gOchXTmB
X8IMtG173lsnrbC6CRAU9oqf4dA8Q7SPkSMbdmXLFQBWnOaO9dw1oLwk8HgrTL6BJgFn2BGVE61X
ufu/ns6/bT8FT5+CZkjM9o8tQdMU1wIzEgEkz3EnxpGZauBvjraXMCiGfCLn11TgyxoDMQDAs9Wv
16ICjD2JgiNm1VHcEsTeSvOIQwtOggVOAg8cyGXV0Qc4uoHHDWt1AX6cuy2VH3fiDhzYgWEKq1DH
IGSmmYUkd8a8S1nJ5kx6eSe6HbcCd0dxdyc7GJcYecO9V1ipDDcBZ594uXpsYTc9ENpB8SNXQrIB
6FdT4aREQ5/uezT0QA2VWUcaxFsEppKqS88AzCURB9Kno+bIA3AbQLRAHM3oNqz0xwA07mhbSjO5
mOf37WP0JGcVyT59y3EDycihchrFBArQoEMvhVzbV5hbE5S0kafPCHisJJ9LMJtVvAIksEYwx9rK
g1CrclmJ8uXQmwPQWxWv901TD67eVvCTl64OoLhkE+Ei1igusJzW6haKm6/OgqvjoOPKcpF3B0xX
z/Wv9zJwBlxNx7MYVl4F3GVPUNCZgVKjPyBpXbldvvWGEXBFE5gce/rndY+zrJzkdP7HZZlpg6SI
un4871abNJC8szz7XlvkKvIHC9HooTTWyPkQIJZd5Tp3sigAc+B5Gpwowz+frtM3XK7ft6/EUOVg
Wp64Ak8jdy+ps+mrGBTAMB13UswaEkZGZXQbQYgyIPoyVVpjBaVaYE5cFYAaIsvX12175GhCtXhW
WamNQKlxdUQM8T/nYeV7niIHPUkukkIhIKXvOijE8/MBSLpyEo+ErgDIHIPpJH20CI8DwmP48x2F
0AhYRuJVbTh2QCH1boCviJopQIvpOa7qVxbWgdyKr/KMMqYP/Jyh4hf4losIdFFvpWQn83UQENqT
LKEBmDgw952SuAp1sAmU82AlzkLlMgFrPYx8jQZdCJBcSLYzQktdM3IFYpmbMy0KikRv//nzjqz5
0HHEwslSrYFU81X86hB6INVD84Vn0ARARarneoWkRQAwNZLwhEzzyBp9ABrdsTCZoMqUTYRSWLpi
lqwVIbDBtqssSjvCAX7AQPKKFar/EyNUAteuIogSVcrhOeBia87rMl17CeDS9da2Hn9K0AObPHjp
+/nmgcagtsxwoI4pPwA19QMXdycqcYB0DJx0bEgqyYEoeew2JRA4Ux3PpW5k5wFW5nrJBBWdhQAG
3YrUI8XrcNsR4Rgnon2LzgYuYZUcq1M6JLwBb9FWb9EJ+UiAVxHHuOKbJCt622XPe0JeMhyAZEoB
3EfP0esGagzQR6Va7kRWxz1Qx7ZVfsGCCmD2bCc9QmZ3gQ+jKqr8KqjpwUsaqrCEXN1fT7ddLlQn
Jca38QlLGQ2eMXwqFYQw59FzO9oJqhAYROp82EqPAwveV+TKcnn/Of1iB7W4UoPEeaRRIViAZnWH
BeBJ6hdg/QNX/dz1APCi4e6VsF/wQinzwLQAKQ+ElYQsegMTA+l0z9HB7CJmLw8Ybd1t0KF7gKcP
IvunziqACNiIVJg5ZAPqreLUr4tIAPRhiYaPqtkLDhsSdc7q9RSURewRw99Yi4IM/irFop0QlCAY
Wkn8Z5bwBzTKsUm7yNIGQD+CdpAmzTR7AwDwkfslTshBAJaSNlIegdHfQRq44rutk98eVDwRoxLT
mauvH4GO6Ti7ydu2TQPk4Z6T/wksEDCz122r2CtOPm3hlIC1NPIcUrYrWWhAZEjrJkbmiM3oGLDF
jsMxJABnx4ZyfiKGsHizAByuyg/JW5u8yP95vby/7UHYNJNbv9JywCpaN8JnU4UVAKX2YnD2x3iH
e4o/eGQgBaeIwaD552gpFwhCxIEnw9daSAElkmckloLSNSIFnCtnhxaFZaV7QYxMHMNoL4fiHIH0
4dhz7kydBqyKKIAYVFps7Zl7gLL0vQQ3r9KIAOV1YiFfXQAHYpSeS8EaKgbZbGsqJr1rJvFQOQ3n
E3kNokvg9nU8c+VWl2HAZdhqD3IxBJCH3nPAj3zJ3y5Pe2paeh6lCOkzYNY7jnDWICtxQzVwQ7Xo
FFVBG9hJlYojyomrSFAd01dkKyU4pcDmVGQfI7CtwHfQ6LtnWoqBsSh+d1JmjKtpIBg00c6JU6y+
FHhrNTt0XSQN+Ha0xkUxgVicHXCNJCmmeX36X4+fj+enPb4mJxevi1wG4PeMFUdCQJIRzcJwSyuJ
EXhTxF8kLZUTSRXAqLaKCNMfPkxPEBYFDzzrRf4YgKrGqphar8NPICOeczL9uogJxK6UU2WWwDcz
J8DxdEZCmZnCBOhoN0gADSVDAdF0ehc4hd7m4CCdtfJHgK7y/KXVx0FSlcCODrpVUBZFDtX09lzJ
GelPA6SzH3kZvVAKhNyhsZc01cqpAn6lsxu8QoUgMFWx0/o2RxhYjEqs7ZqEY0BNt+UWi0hBHWeh
SjDOjnbtHCSq8NW2pfHqlwUwW1eVo6wcOgvwuLocYaXLLFBHriJotlEhIMlDxx8R8cP+dthz/CRS
jcOkABIKqAveS/kj4o+iMjJu9/3K7ILi6Dwvp/xYNdsjgOKqqsMEUc10AUDo8baVulznDUBVS99L
1b1/ftmFmZhhkBgoDKoDqLBuFmWunA9AxKkzXzLzHxgXolbICFLJSoGMsq8whzVJD8RYTvcSSY/Z
CGRlqrdJiu7BNYw0GvHrQ6T8FeBJ9hyE86N4FUAiLM8LN3pIIKYesbLGy1EmyKp3FZJHTlChMmGe
G8ocw5whACdvq0J/XzwS5BvyzMA6bdsDfHroWoV465gFseQ5uTkv8RTUBqzSUVKunZpNQO+vYN65
HWapLgBEJ1p/6OWsADAZtopzLPXkwR13nPO04kAfdlIwezu0IiYaKoJrJ09De1FZI++5qquxBJJE
HIMqwDUrjxPEbZZQDCIrwrZ9NUDt0xUzo10SMgChKxohpBJpAyzq8wJLSwIIo5rEcwDfVUwvcukL
2wh4Kp2TgOhthpite8CsEHRgDSxpfqmc2HkMYNkD9bJ5CeoaPAURD61K7Jj81cYNZJH7nq/Sa6EF
BsqrVa0khjbcBqJp1WT9ZeoD0ECmogpTtwCwBnru5hKckz0+oLArCSK8g4obDGK+ocqlCMXMKPg2
VSObZicGAPMNXAsZWpYK4sSRkssG5uaTIiTgzgxNy5F6loBUKokuKuhothMg50Gp2Lz8s0bIUSGq
ablDtdJFQWK3Ue0CmqZYa6VqC2bqkYPDs39Ebll4BZSnp3nwnqkdhvAjmIHQ803fKtpxgEfhxS5k
dboE3KNRsHMMWQTgkGaQ+BjMKQdBQeek/g81Age8p6FqzIhTo6AUx/NiAXqzVC2CnIfmZarEKv/1
px3SWfXzIWXeBPtAXAfX6gIVgw7E6uE8w4YXA96ks2Kapw4OgThaJdFFiR4H+rSvFCPsxIXquYhl
NDzOZ6YcWEY1tBpet50bAArXNYWE/IkiMVvxZbqWYQLtsgcjtbmk+h28AFexhNpdZVEFgK5or7bt
liP1KrY4YSuA0KAbpc7YLXkCKrLnlQjU07r9FKY77DCZppd6RXNIEAglEWsBnAePwhkjNiwmBFuQ
0a4wWWfbJHqwQs/p1F5odg7qEnonJXu42QaWv+OR9tpsK2DrnDYtAGrddBG8TmulbihLxg7keJxu
dUBNfHJgHgYllVWuFRpw1Tse9Bnh/FHAMPJq4/wqM04DEKKu4uIbFqzsaXpuJLbPKkMHmDaulzqH
/te+soax6yT/oKWWQATe85PMLzrHPSi130nVrTxkA6dgjVRuvDwAgKQrzjaimM3eqQdj5aNhQiVI
LjheOA3qjUHSjbBkTMfbUVBWL6gYVGIJOK33QlXwlbGjegG4GlWlHrlIbpYA7FG5bZhEAECcYVAt
eaa4OQDiBj5OQirZRpah1pFWeBcAzbK8ikUseRuBeTB8iV6gr6EhB5WvYUU2BgjI+hF2OKnUFAgL
ek7qs2KrFPRMjZHS2tUiqE2Kq7o0dEJuBbXe52wTI/fwAlks43c9OiBofuD78LTPKsAMHTeiqP8X
0P59NbrFNcMDBL8Ys7cfEsy4cBGV2+8i8XQVEqQFoUCpJy8hetS1Btas5gtIwQEqLOFLEM+Y8D5A
uOUGqSPSzCgHtJW6/5DcFhH4lkPXqkHL7gyqHOTIkZNKIgBVoqIQNogBwA9z9Vwz2rwYZN6qFr54
ogLotzLQ5Efp9pDyB6D8zfewAq1yoYD346pSWyO6UEDBV2A6pakCVTT6za5RFnXxUhJyyZu0AF3Y
cWqBlZqvo24RIlay5BABktwpiXg4F7QBxUMbgPn2HATwbMYBUi8rzw/169E8E6NayCHgW1UvwEpj
QQDnr07Ak16+wHqMrmpQsFabIJnjK81FHy5IING4z7AKwNlPBlnjfmg5DmsnF6CaVknx496KXT9K
AzT2jc0zzrQa3vHiWzR3i9e2e6j6ENvSc9VX0/OJ4QPvf1At2m4K3YAYDK41vzK13fu6hx/Ytygn
SeKB2fJVUwoxA4k84CprrIXBZwD86JpM6bR7gIN5nqMwMFhF3Wnow+ck4//9/XLfwwZUPEpzUkNs
EAWMcn4BqNvRDzDRsiNUpyaLV9QycB74q53o/exzGIwTJ/nN6VeAFvhqcuTQZPgij7GTJhZQlx9g
YHXFnRO8VtAch2pRz5uDoVJuy5WfJLmoZaPfaPgAOlTZilzPKJxg185Jkx9ZWhekg6pSn3Uplwek
hd62Zr/l4AToG8sbjzdmxqECVVU5JWJZDWrqOPBcphdgLXTh2kmM1pbWRMG2ljJpLcMLFvJV8VO7
YAet0KlWcV4yIGjkTC/VBnCED/SKtVqqAufeKkAcBiOPSwI5FG8ksicXBRDv1GQ1OYsC3ObeV+Bi
ewgfAJ29bbH1ch8LwLVTXvKdqeJHStdIxKHlKYKAs6qHWDcpckAH+crlWekSsG9blYG6diGvRrwW
7vitcz6ghsFWpWHr7hnKgLSvFVsczzEuUKJd1QfNNj0NcOVOS8HGbDhAvOUHqZJphXQCX9Fxf4u8
F+pugKyrNzBJs831HrTY+YdjlMACV2FXwxgCrrnmtpCaMQa0AIq85o2i1qV5A+Bqj15qpLt9f1Z1
EmOREWrA61PNlsRJ44NcL/FTq8zkdqsmaysTKbeHR6deMRYsHrkNQj7vpJYK1GggZp2S4p6K74ya
CVeqiFa4A8vbm41WjoC8YZ1Y01mH3IDERAGuasQegEjHQSxM+WkvaWfspYreOmcGLt/w/IYTSAvw
+Q+Sz8g/Bdz+qGGzvflNAdygaochNQBD0VelxUS4HXF2yZ2Yskj2nwD6o8S2JmxeHjBlVbJMbIoB
LrLqCmtZ5zuQKVJGYp5zGQK7114KQ5eQAzSeUrxETAJfEaW0GgJkQb8gsIp3YoPmehVwGL5r9btc
YxgIue+kjt//ta813DCOUjszBkUBXmU1A5KAkaxRLjLOWurUv/3nbSWVDUIi8MqdrnyqXuKmIs/e
S93EmFYD/cg0nxDQcJGBZ9V7SSXuKiEz9VByapKBKuttq1Pt2qEFB9frrakvIBp3plmxudaEANsx
dl+HJ+CU08ILvou9DfNJ9j/sh1LPUMWCFenMDNED8Hc9V3DlkoO+SNZUYaGU+wUYdhUSGGHgMqoh
q6kjpm1PQfbI9lIuaw5qQN/j0UkGaZ9XaRynMgmjc9CUkyqJ7NtigLIgatyqRgMnYCs6ct+MrIH0
+ypIUs0uhKjRtpdawrIDAHJY4fF0UgJoyzoOWqr8mlEV8Nkdj6W8xHQEdZtWSbgKUwAgaW/Ezhg/
7W3sP4odl5j7AKDITh4MSrukgGya6qQIedEg4CaqKkCiR//jdHx5Io04kRDygXxWuk6gyqoRbLoT
lgBZtWrGKr1P7syAx2D4DCvdyLiAWFXtn+YNzLLnky/WLek8iPZ7LbFDmT4AJl0rqZayFDAiOiNv
hrY2qxaYVcdleU1HAskFq/pWo2bSQQS4E1WTZy32wUd8DisSkRbhAeFdN0gdO+vIHGyBTnLjjZ9o
8R4ovXNu11MGFSLG9tIcKO4bodLHTsqwz08AhEQVWuYEhhFqLNy1ZgKs0WKEs4hQx7ZXbSucQGyL
ABwjq1tjgtslW8A/7JwUmzIrCwTKdFIOm7pI4DIqnKAGAHdQXIliMJzdzG0LiBKrYauG5HvBdM1x
4DwV0iuBVHOjROWwMZZEgSDFGc6JNrQ1CABtifRXLW2IzIAalIqPSXlFoPXhSLPSIxwni5rLO7NF
mQCS4ioXYt2MW6EKVepJWzaXePk1SLJV85L8ujsaqgsdmyN/UoYHePHV3Jt21T3Ibva91O1grWbA
rXW8O96ajqVAJO+03UiuAQjM6lEyeCy1jYqz3UbzBEAptKbZJK5l9UEIMGoJV14a6yEqZzUqT0rS
AD4agVENnwDEvQYgSXb4yDhr4AL1ZqPpdg+uY6g6qwgV2giUNqNE7lt8J6BDbJMdlwZngeRE1QCF
PCDusaCxHFUhCmRXAWRyqKaP6V6kNQMPcBCxJe5EAmR+HCTe2d5q876qTWlPlwZPq2ZLrvTaCB5V
x8li+Qg+XZ6+o/YfqqpIM0JaBcByfcVSWjchBvrUjlIMvIg/QBKqciwrx2Egn2BHke2ABqm5Tprz
yNBI8ISq7gQbbYhAgpUWJnF7+Mef94zv7KUE3awCwQVWCREvDA0A2XZV9ahYpzktmqvSSfjDYsyA
8zl6qaposaNA/LpROrj5byNXohukzmgtDQoEeOikA1xcQdQod9ygKo9A5VWTWNbgkwKZPGerSTLy
5FdgP+zWFYJuO9Z4qfcSV38oIyj2LyIRK0rUV6w9JzR0ABwF+oIyZycscfw6/e4Wf/B0ur0d7o9f
/vIVGNKwj2RFhhiblIYh/Ocj+Pm4/JwMamI/l44i/DyB0+mvF540/7kCP1fl5yXN9jgZ3/sxbd2I
P1bJ/qetj4tffjqf7umnFvzdnm07Y+r80Aw4NFN+XnoZl7+MvtjyTbf+sgZ/WbPbzt/MzxtsXBl2
243zduBvk7tWy1fTH2twWT2XM7v6sQU/LkJKGgLQHyvwY89OPDss5bLQcXn+xbZxWQM4sIH9PJNP
yl/24C9XX5wuarYO8ed/OtzwdxdJI41P+ebBDjry7bbxuoCQpjTJIqQZ6eF/GTyRrigFVfCl+LN/
Ha6fj9tf7jZ1GlIOneWvu7428ETUwP9y43UrdHCaiWrz4NADrc59kvRoVl4mu/Ji4i8eL9dj/Ifz
5el4Ot+O1/un4/P0L7Ws5N3ItUaO/p8ur7f79XT+HFrHn+7HV3AllohE8L1zQvj+/W3axPPldHs6
Xk9fj0/P18srOKAcNS5CmQ/omAzu7Xg/PR3u054+vd+P5xtYyLqBGZ58UeFQrsfXy9fj45fTy5OW
zW7fcQuSgbH6VNUATlWx21pONT3xScxPAZ86nh8vgXyMHszQcw3n5cO1srYbqLYrz6Z5uMCmZw9t
OdpMOZmk5fT6ltY6BDf5evw8yc31OxBoQwWvpN/jId+O/+v98BL+ETxlT8SONOSb9vJ4OT+fPr9f
41YeD9OV3d+C73a8H69AK+ZeAosAZgi4fdSy9OQK2fQcSiAZvubx8jpt5DiLwdvldgpbNPIpOWor
Gh/5OF3b4ZZik5t8b5msUz7N1/L4++vL7X44Px1eLucj0v/EXKsy3yd83bTK+/Q6wo7AvWdcZjFd
+YuyJE5r3B6/HF8P86mD+7LatZ7Gcjbn6cYn5fp4vMmfk0fi1p8T38Lt9IR8c6O5CU7e8SRul/Pp
8fAyaYhXpM9N37KjlfhreYHcSIkZhGjJni+TvION50bitecyHf7p/n2lmYCa9USm4tcsxjRtAfx0
sFw9OqDqp2MAQUoe+ZSWGpeAs218OmB8uNdPbIb0aOW4y2nNI5+OvbbD0+XtHm8XuJdEFxFy7yKX
wGDogceMumm8wLvKA+qXv50H0+Yn/pz4GMD+5t46i62ZbzcI2Ol4Q56EV9wnB5fpgbEzlUzk9vzH
3+/fvlxejuEfgHTmkbolgLSNlw0CC8PtUoYgZBs5AhvJA6tsbpvnoeVj7Wm0UKj2lUME7sUTJ4SM
7M4SEY5z0rh37Hk7V4VqRC6n73g+TP/dRWODwMt3ruU3LOprMmRfj9cbSH0OC/G8vqPmwYJz6Xvb
iprDK/2IIdPUkJVkR3U/QHv5+oK7ykv4cnz87fHL5AM9Ti7QeZLfw8vp31EKkc9QWSjg1oMAoyd+
XjQ3lsrOp8l5eb+eFFCmZuSv0WHXBWjGsfLvKl+q3Bc4lF7zIHBsmm0NzLZuxa/VcYB4zRCgJuo5
ot2mLSQFk5/jty9T6JYeFBBi33HTVx7mjT9uoDKNlS65WgNEXfSiC3HqB77IUgSw1Np/O75E3X18
Ato7t7QrGJ6tiYgGuDWK/d35ZprmS9ZweZrCIvHGYwOigZ4jEC6zRZUnglBgr3lYbtkS12NQ2lHo
5TWM4XbMddjnd8Dnt62rFc8G4KWWQJ4ELw2f8nK5/Pb+9nY9Pp9+R6aot03Att5M8ZrAEzIDB7Y8
Eh4PfB+uLrMjCywACvZsz9G6oXlEyDJRQ1sG6rYNrQOGduA6amxpTRB0Ep+MxSrMqUPona0U3IjA
KRT6WP4lTm0FGghm6qrFnPA2gdo12rYg9OYNOQ1QD+6W5f4+bfEFy9CLUsSTSV80C+5ySOjDVIXB
jWyp6c4Cwhmew/Vyje8Dx7vGciWmBiGqA5hBXxmmZtAPxNCTyJIUztSePFBZY1nAlBRr85qM/KwH
miTzC/gxR/7AIA2eO5VCdAr8QYIdkDYMPDpDsM3IYZu+lgoSQABhcJq57ATkoy47CKlIHiNeKl3g
7WVycOIKBvhtNNDXTBYYSg2OcuQpCU9WuN1m1SHbmjxutlyFa1vQHpgH00rH1FC9B1C9b/lK7QgM
oHGap4WMb79tA8L+gT9Np4RECrANikelrm/KhAI+tBpbvrzoaAHviGoav0Ax2aPfgfP2ln9MzgoR
Rxrhg5XbCpIeygJQrxnBIl8IRI+WQ+g7DLcBhtvvjq1BdmDoeERrVFtgwBFVWfCsyMVEFcisjl0L
IxLDNyB6RIhJx0WOPwIb54ihjhFLz+P8JRcU4aYOBfv7xRCcTE+tfs+wZWr1ga3QPK7kgCyNroGu
J9AqIdS0v2UET4pnPaxtq3xgNAiCErsOmLbZAo+netbeNlUT+AhbBIxM/uE+wC5IyVjuTZAkJnUD
gAEcuazqkTlSIBAeuCtJLqIBpyrgA/BsEIFl04Uui4QIC2RjKYqkV0jDynEH4m6qxC7Mw4JQgjJV
+j0pHQCkOGVapLL2MSHpd46vo/aAd8DKeo6HWFE1ABFwFQUEZRmAmht7OctAPNoBIIBdC09ZwQ3g
eKl6Ku7gSrn04D10nOFghAMFb8H5yvVRQliOHgHx7uOknW4DBAQp0q7KIjUy1YjHaQ2j99gNOBKp
y2FsoUE1eQCkJivEzbajJmSMlW4x54TsNwhkK+KAhXoT2HZKVvKLC9cgMYBj9fzl+YoIka0JWsCx
j3HNrAYyY7pvhfUNiQchta5s6YhJASgBYHr0AAvsDdxZ71vocJDPoBh5Dg3k8V1F22tlvxBbRtOo
I35V1/a4AFOk5+6jBvYUhdoVUVc2NcB1c65FgmxvxYCtVFFLv4ESghS7Mi1kWdZuAHAcKz4S9BGA
K+X4lphTSQwpSMfpyqkDFt0DJpvtJFIMTXYCtUDRXEKEaT4iAK24rhUtt5cBaXZ6rjyCZ+4F+J6h
MoWqSTn8TPmGKONThZcdkhfwvl0ximTo+UrboeCd5vodsfH1EqDYpOLu6F4yASBPqKvI3bTxDCD5
pASDtEhth0UonFFdi6G2aJYFPrqhjHZ1qnMPB+zsA9/Fc8qfEXhlADHSFD33GNJwI0jTVKUqSsr3
A2+fapdS602JPIsfBsCinmd58oW3AWCQ39MVPOJbCUaAORmKxCVlsxVuIgeGGDhTXHYp3TgCLjwP
gjkqtyLVgyCiYhA79LCQsuo4/8UNGwl84IJXtSQlMCmI+3R5kxR9vn+BdBGe2/XtpBr4prGKW4GD
5RV4VCJNr6G7QM6dxnul/F52aQbg0vgWWXtlMkHCcag+Sm24aqBiQHWtdJMky0BnuFFysBhKAFhY
FVnDjhIpxgLsULXqF2pjh+pUtJOyZxLChSoNLPNt+g0AD0lNVerkBNYRStOSK4rME93iIIMLosCs
SK9HlFdlWiFkU9gQ2d7oVn3BDHV8OZyfXiYn0QI+WscNkxTKAs+sr4hOAnEB5Ufd0EpuyrE50Nq2
a1VtrErWgKRWtcFuaKWtDUhba87CaOaXAF5KHq4pA+cFPQ3MBiGoEFZcI6AGZ+H6VrVywxED0XQV
pc21YS1HDHH3qxcr+f9Iw9PCCVXXBq00PNgMPRbFQj2mW4F3qqsaAiGoAiiFJuQGVUbstn1twOij
wbxd2OFiTh+ciq4K+n1OyQclFGlQKCdfVaSYdt4OyerA3aQekO4t0IiK3y1hy5PnCxB+ksg3ivE+
qWkAKEBFL0Y+NWRYVGqsA0wkRNNXLRJPW8oAlYDsxuhVRURQSAFqWTx8oE76KjaUeHKAc0yCOlVa
kRACNzKYVtKITE5BLDfwd4vqmVH0P3StxgaEWjH/Y4B3UAUwL5xpliMBBJqG2elstvjkQAl0Y4tF
0DQVqPpGtzj2S4EYqjnU/HKHdv4HsOY67vvbpmOJkqVdK+/Oa8vA4/BDiyWzhnCQPHQtwq5oD4Bz
qn0rFpe9OrCUNQhAJAERsP5Wo2o3ooIg2aZr3e/t7eV0Z8XSSEZcFTwMbRcVZICrXLjg5KJMSc/z
vzmIX94IykxyiM+4ln0DAuZN5ey7hoijeqImpaxOJgK/WHNqrBmapFAAAnfNHG+9AwBa6Gb3oTpq
A9wTwvI3vLbk8DbJ8NOWmrKjbTkHTRvUA562rXjao6BukC2uHoP4sgEgYJv13o01gJ9jhla0JNYB
yk/LVIU/vIXBjPWCp2lMqza7TouhB6ZaercRtIFXZqpUVJtIrxHzq0oFtF8JINtoDg6iau0eVNzZ
qhGTyJYBWVzD13CulWZHFftjlWa3W+wD4KQYXoEv5G9RNwLFM5V6QOQSgAQ7nk8zmucrmxlU1Cyj
ayWPauIlEFrL3TcHM56INEOdsLCmBrJngX6sDhr1HEImV1eM5b4VkgKNYqsyCAEKRsUgSiqQYywR
gIr5scVEfby8xqOAzPiKGJLFYr7Lp+PjyyFlxqFvTwvFB6YVaRoGFEcNA9dHTccHaBGvK3pau6IG
bMH1vFuTR30FAPg08Fy6QU2fAHJEq0F60odESgSBZMVYFZ5JtEh0ODQyt8u8Lzn1B4gCI3cGaop/
BLOym4b0GbeArlWLj4DguhjZNCUWsAyGsdnGb4XMI26Mbwl9O/8NUAJdVWgDwXXAlhOXwBSKTe04
gxwoqd0g4Bzx8lpFm6jnA+e+Vah0AaMAbajntTqITGXBl9EssxiWIfWmRH9NalEERLfqB+e7Vg4F
xGjWtrDtVQoVaIOBgw+I5Q+c8X7wUrM/prMBHjxUKbqBt1oCkmGqfg+ApYGoFVXDoBY/G3G3TNXa
b6x0oUA0QnRgxS9XZPMCMKfqc0Ioxbe9ya3eVEj/sNlfAXHPLUvoIPYAUJS2arvmVCMM3dE9TdPo
a5DJiMBh6yvrrhGTHSXuXOuUa7gFPEFaDN4vmo1UeoI/3o+tCKWKxcHjpSISwxMv9ScBTCJjeMcV
J9LZAD2aRn09+xJJPaNyo6GF8batOmBR6KrNlYi7gK6YJDaJhShCOgfxdz3v7OpaLZzmTBfCbSrS
jWk/GeRvccatUa04DZSf2KpF7VDnpQAk6HjsK+VPgc2mvVTcUuZRg4oownJS+Q07QBAhsR69UUbF
VnDg0TquufquHe4CgER3O9QGOEr64KMrY0dcA4paQXBUxKHyCgBaj04w40J0BEzdOLaYZW3XCpjf
QeyjLFW8gxPvbKs3FqrFBwrFDi29hri2QBpp6/u+Ip2XGl7UU2VgMcsSY8huCvCb6n7PuvlGwdvw
Q5Pf0MzRIrpHNRCgDaaAbeiudUdzZTPwsEae37RGMlrgTRoOyDlUMYJYiLbVY7f0VczgGGJnVGWc
W8Q5cC4WlfrOOg8YLxInmI5h5BJbFERvquoRC/AC4OcMhKpsNAuKG0A38IWpReEtI0o4i4TVji3S
yHLRxcKjAMO0qpRW1hXA2n3fKsRGCheptb41vUXi0qF8cscRpmEPJIMiH92cU7IzOa9tVULoANqM
Eqy8raHZLNcAEZCrZztARigQgG5oMSCIfwnwJSd0jZT42yAc6ir/oZ1bRBXwQ5UC22jjhsqCaVMk
XxWeLEgVOFMrNKaQrTMIQYbmZsR2OeAVDEOLtrcOq4B18nwJq5vpOMBQs0Or0fUqUQmCXhKnGr9L
YwGb0rkW0a2iZqHiYt1iKsi2FnRXsRWp0reEDlBEq5y2FyIccLKaJ0t4QRrtQwF8bm8AwXwREERC
UpIikDANYJA0nwfGd7PtGbuKRNIupQc6SfMAy/FpBaitr5N6FtJ3BjhplhOapLdukLqoOuNvRYeA
qtc1G34KCCZq+FXVhvEBFGBux8CRMg4h7NBbrnetfhcLYo/KPCu4sQdxASqH0a05BW0sGRxEzQMy
GwoL1HnaSkb7lsICMayt6kg88mCAI96NrdrDdh4RtMCuAFm7rXhALRidT7UiB+1Dd52rmm2iNCsa
zsG7Cy3+g5SRB34RCZNNaYXT3hF4xbpiCFZN8WfCKcoWNav92mgTYLAMvHJ/o8MyiFfqirlma1bw
lvzIAzm9PQsGBcp9i/LUKItCDdGGVrC9TmKDa+6rdNNWmxPgA4+qNR2t/cRBvFKRJ7RbV2+Hd3k4
4ThOVRUBEEEACW2S84yomWbWDGheehx2lWMpxh1czmBa1cSVZwRkrCpozBm8NhgDyBsdd1r12PRz
gM9KjchQ53x3+Ju93ZUURdEeaYVlSgs5kotEvamrshRQDoFiB9O1OiquIzvgptRd/YTRBECH9U4s
YVjbc8DxVbrFlW4SrZCJqCohQUWVB2ihqToMSsgwwja0ajko8zsHimYwrWh7OYmvk+M4yQeiVQwV
raIxggD5rvWMFdwTBHwJ5Vj5hW8iBADACx77dpm/VFcG3kzVqz+LKz8a4FaZJn92CQjQsK5OYmU1
GMkIgNatzDD/AFCiz0a+RBqD3HAI6E9nJA0ueC6AG+00Xwy58h60CqqNkwInjNJapKzI8vQFpamA
KLyzrS4tcggNArfOtHAREQZEXeNppzYdZ4iDMmCQN6zItbaVEUdzgG2V7+skCgw4YeNbleptpiQI
/jR3xZxqMiWR0aqqQdqzNYH1NH0rfdh6jOA0nG21VVh77UDD9tWsO6lDBEJVvd3dTdmBSgmiDUxp
qt6+W1BmroZWb3ahjRQAWKs53vOwsMYUQEQ+q/xuwXVHvGnPn82i3daSAogWVZNQg8ZegrM1nK9h
haYXYCOal2BstfoFTCHbVWQlBZA21Jiwwj13tdADIYrnWBCWP6AhOt+qz2zdO6D81JQw1GgALNO7
FuAhVkaixJ9qlVXUihNo3spHbWL0KG9YtUBruchoVp3VrSnnbSgK5MWqfm6ouAwlx4ZR1nWlEBvN
iuTlIUjngjZhAyE4GVXDCzvyF67XrVtp6ydgQqiXrrd6ESImjOMZDLNrAiYa+MujD9J4T6KTIZIl
7z3dTlMBpLnqgepcC8kHQmNVK00mNnJB021VSz21bCzikVFDrWKs1q5UBi5MxVt1zY4CKHYwnVR3
StQS2ABtd1rPLi5kOBAeatOClqrgBQ37IswQU6Zwik0/UK1qM1ZeN5ynRBoE7XhU2n/by+12puUu
tL1UoOoq7C1rhnZSBERlVR8y1omzRCDAPajncCHLjlopeQmdkOgVIMLrTCv+XfXOAduhKI1b9R/e
qxIM9d1d1b9v5YMBZ6MzrXLdutgQdR4YWeNs1yzbBl0DLC84Rpkv0B1j6FSrSccK7QV1DT1PK25y
v9Dl8NDXjth8oE48pt35lTdLn3y7285+6RWmvd1hGXW/UJzV2IaTUAQ6Vo/BbJw50KEdZ1J4Ye4f
CNyqLOO+TuOoTVUVmaBUCGo42LdnIsIRrMBK2GroCnBEDYAkqxkwS9wvhbnAFe1ca8oh7rCB6OKc
PmF7HMoBPLDTrSF67aMCWVqqq0tVW1vFAfkch9bYq1a4jNpyNbsiLGe97vGFRvuZVnVC20CDEK9q
juQQuI0GS3jT6tSwMgHA7fe8fyPtzBf6hQF6mzett952vUByrj0CqB00g9l8Y9PV5okUVJI9oDF0
BXQFyaReJnPTQj0UL/MZ7H2zuB6Yc1vxNi2gRqBxsoYXRWySqBBXbazADNv6JuAR1yVb7Tp9RLIf
/e5Gpz3qMGE/WDuGJih3vPWNB0gRAHqGzklzXGl8CSSmGuK+09dC+pEv6NGgJmBpaSe+YYOSDZVU
PbJzk2huEMTStfJDDR4BKIvWRoJ5pMcFOs7SCKCXWrEh+qYaMGGE2SGwjm9WaQqhGbBGVYs9Nsm6
JGtBgW/XHD21JtGA5Jnvd5t4MJRyUKpVJCH7+aiAfWg14kcyg1RP5cRuldiAfam+NXe8UXGJXPOK
jtrv0kBgwartjm+zxFEvrk4qXqiSp+BhVjLkNnqvA2NcDRjiLeLobgCC43Vr1lFDb4FOiVqc6MJq
u4D2HMb2AIe1Lw8cZ8dvVw8itoxmP3GzCRoGo1C3XRKAY1Q0Etq3p+802VWoc1VlYDRSxcA16FSL
lNl2m1BHW9caudjWpgCgVc32zAV9XksRwp7HVkO5GjcBHKeeAPtGrV7UWomClnTt9lylVpzlMAEC
4FqN2FY0w9NzUj2IbqhbszZrBYrKxzgY0ev2HEoQzBkljeuVDB5IXFAMQdVlQ1SDghjCNzWG4CeB
aMY3x6q1kXAE/JlW1Q6qTQUeaVVzK435QaOevZFEhrptKE2lOArR7BCLOt/W7fX7JoUc5HKtaSXd
fyArbCuf2rQ7caCagqGCiKX2S8DaGsMTY8LEAxCD9VroolbLBWI5jVJjgurpAX/VN7siS6Eg4Aq7
JkmlDTSBHqtV3UZWtHQYDmKO9a3RrQWKjLr55fK4hfdWBbbVmyUeHWiurp3E/GQSAjI1mltBVHqF
KmEMJ9hizwdkX+s5yuKgaeS4d62DFRQ9yDF63aLFNkIj4HLbKkcgdqgD0VCV2Pboe1DWylVjraTv
AWC1qUheBZ4U0ifgLXc8ouEZ2Jksg2rKqY4Ob9LoZvcmcMN01Kqu0uLF5oHcRld5xhuldcB82o4n
lH1b2aN2qMq1jdY6OAOq0fEhNZtVqsB80TaXPWglivK+qkqyNNExkGD3xrcoUZLpAaXzrknjabwe
oK6Nk6ZPNF4ygNicEpp7Q8AFkD/r7kN+e7g5smwj6jJQyiJBLmdost8bsgP0pm5Om5SuHuQ/nJby
F1TPoKrisdVwqB1Ag57uXXOwaZuHD4B53RzgLTSPRclDPmvYtCe2I4ddddLEduZmg5fQD62GcXIb
BfA5ZmxNuZaXAgJj+Ql7qaAGaXNbsd8noZv+T3BT5x+8HL8eX1T8x8fL9Rj/4cvjr4ueD+HS6fx0
/P02af/JrZ1OdXq54d9enp+njXy+ToHl8fo/WjvolqmeqTCgK719q79QVl0Gbk9+dPjP8sKWLayX
hSM6ENgN9+v78fHy9j2clbSM68syJFWal6GI5iRFURTP7y8v0mo+yWJarSR11ucZlg3/9Hp6mqIF
8RtT/FcOb6SbC1nc+/UQUIL4z/KmerapjFnkVZg4Bi0gnhQ5cFUaPUzLFDR7lvNP36eLDNr18Ph4
vN3m3YpLp0i5ISRhjafw89fD9Izv79dz2G/4F+JaCT5NaxUKf/7aWfc/Xw+fE0D3dPx6eHmXlyNX
QHRD6/CW/yCfoObSoVqfOb2p+B9P9+Pr9Aom4Z1O7iau6TTfnxX3h78zAVLLOpma2XgHoph1msmH
YyeVO12GfwxfJz9Hzxaxi8TPN3c6RwRzeU/H3x+Pb9FRiYooS6C4fkekg63PHmhqh5zVEdZC5cFH
d9kKH40Pvx8EJUQrQpnrLH8gURmWib8gY7JkdYLyCVKVTrt+TuIx2Z4fU7fWHUxWZU1h2RMy9sfk
Q8nnV72Dtr0KB7h1q3bo2VKaaW/q3VxeUuvt82S0wmsHJ5krEdKiroxgTovmr2NPX1Ydg+eqo/2p
eaPhH6c3IX+sAeY4IPVpW7KRGtjFVinkjVt9OylZ9MqFkgLLKDFVOJohcmTgXcctle0aL/V6ucBv
dURTEsJceQ2n8/utXODkdIkr6UrnMq1NmrrH/3iebPH9Ii/mFTdPutrWAgLI2+FnnRsfTSsEF2wS
gttkSe6X4ApcnmdfQZQIy01BcVvyL1PYtE9taO6Fals7UtHFXXzPaXevb/fv2KsywtGHHd3ejo+n
59PxCWsIR9SiW5LYla+y6ZgN3DFzvew9Qdm2/JCsb8j2ysO7X+6Hl3Rq4meOI5N3y3RDPKHOygqv
5wpvkLSouIK2TM9V/m95JLIl5GJdDmZHlPR4eZ+u8Ph50jBfZUHwg6Ckwha/HG7LI5afS0fM9UgN
g2BioSgox27Msf1MK12+naePngUUrTT23Iuorm9BPuTb69jtOc08rM1zcd6zN0aUbaY2p00s/pDs
GpjqkrqV2haMlLyk5laTe90xiC12fAplJ4Uif+cohJ78nPbIu+dqyfRSLHA+fosr4RjFE6ebjKsl
2jcpp5fDpIeBR5rbchQfwVCVO2m4r6fL++12+vRyOn9GQmmrB10de/Haodrte652naSYtoIeT6wT
qUrJ3zW5hPdd31SJkm47ru+fEgd8w3Ud2Y1Z4dFFKymLEY9q7NqATzs5Tib85WWHt2oMi9yc3oBW
oLPKQxs97IAyZF1ZxTZDpSvJBcpakpgoy1ColQnfeiW5qLBEgL0ol/n1Pp2en2ddLsuob/nn5cgO
T2G9bQyEIGRVfJqrJk/X2x2rp7HjciUvgS1T5e46+uqOz8+hBujrRohHY2RPH13UHtPFb759o4Vd
VM7J5+M2eOKq4ERt+ikkuNsH5xK4lLD4BKW3FXF4zYM+3600RFwwmpfp+WxLl+F3qpsI2/lyf568
sicUWFnDTaCVPPPtPQ3VDRtJDU4rYZjIcEdW+4/FyHKI7Jm3V8I2KUT+/RVEyNx0GL+GjeaHoeUd
cUku0AlQ0OfL62F69rLmqTIRagsYxkDlyMISggsTSdsfyFstuVwCbPftdP8yKVwsMMQnIDWc1aqf
94CBVnFFx5Ql5TnIqtIL2AAHiHB6pZItMRbMb2HLh/MEsOCmRNSYxcHYqTAV9w6cEP98BAPU3BXy
0po7bIbXPL/BvVjuvWBr6riW6zbyfJ+On09n4BJZgkYR1mG94ALZyOv0AmLXCmXlz/PsGq3ewko3
v4+YBa3EFanoLb77DCckCZRFr+ewi9q4kmAwjk+3rfM0DGewLAibzjNqJBmOdYrbmkFCLD/gnDrf
CYm1WlZwLofj4WaVe0rWK8eHMtql+YtXq5g+qqUrygcZKZZn4QDDLWTVzbEcY9bom5LdU54OsbXb
/+16OX+ezwcZOFNhCm7LwKVoZ8O+Ka6+R4o306ez78XkoeQNrGnDH/28kd8jTn4Memp35vYRbM5U
KUwScyQn7UaPUb5a4uLypKOkHkBA7XkWWg9NfD1y7f59vF5kA88JD64XtMMO1Mm5Kr2l1nLvZLmv
MrKqFdht+v7eVNZ1I4dxeJ5OPWkZGTLkKKRd9VCa/jF1DHm6yxdmK/ZM3/o+KNTe8CXsKKKEe0LB
rucHPm5hjrtQi65C7vt1HLEF72geUprxwy7iJvrfa+AjEqnf6dXm8cjFfIzNKPj99dP0FJ8xek7l
xNJoro6DN1g0DrxrkrXeWIVHcF7vSVBt5ab4Qy/WUYAVo18HHTsSGRI6d8MoJem4vN8vz58CHgFS
oU6Ampej20Y0NA/y+bZi65vwD9My8hu1nEjm/JYTvEVv4yGhaeQFe3kzHT8TW/n1ASfdwBF58tzb
/R74vqxeX32fblrF6fKwTbQgsbPOXcvr8IDDNT2wBbu7Hs6fAcmuEwh7IqnikqsZZdyoF5g9+T4/
kN9xY5XJ1h9kCW2Deh2nje6wCuRZ7JQeDkFqIRzZ3KulQLenEdtHTwOwprgvWWR0TYaY/sokWbJn
4rh/o4cNhp680AioecTmYG7FALRMUlFe9pC4HXaMQbcP8sqtihtSQB01iHEZI7FOBdwTH0jHmQF2
kzRGUYXL8+EKIBErsASrtOyObGHvhMiQP54NuqgdLcjOUPcHupADvwHK0soR214Ogqc4cVfLI48h
0Y68AbER45s8H15ugPPL47Xy7plTcf9yPcprWA7qul20I+wodp1A4pyTlbfb5fF0iHHtZsKywhg6
bJdkmzQI67RDQdmP46xSjoEnjaRlXeD5fbkPMJn2BjPV2esPKgio04cKy3Io5oS4d1cpdpCmkoPo
kZUalNOcqUW7gBhHzATPrWz7oTtzEIMQX0Z+CTglS6sL+lpPEBuK1R8nytiabZE8gkXy8dNWWpBg
id2wwU3SvUDjZBrscgb6i0sSPyOSjYH0Zy3pda5Iv8lhQk3XX51yFJJ9HA1ur1bqMx/zslDIRd6O
L8+yhPO92b5NAIvEDcwAcwILRcAsNwJQ7wTOVK1OJlO0VePgOwlPXeWsMW1Kcbac0XtphrLJsFxP
DdAZejzcjrfjOfTTAWp+dHvSc4uiykp+g3U2CGuu0U15XxxHNOwhxaT55fVw/e39TX5ISniK+1k0
20bSCfyGWvD2JrJpPOooliGWMe7IM3ejgNpxudldBTQaISwvrssgq1nuh7l+ByUkRp6HF2xRdCel
dlPEMS28mfKrlhhk+t6mjnNVrVQ7+bc77+Z4TJXtm3Kqc+7Xw+1wlr0bbgUaBbaplH+LAd5zAL0i
cM/5UBhnuJ5Ddda2JXHTY6vS+MZJoCGGl4zg0FR4/Q6r4ZxET6jYYVtpCiNlOpZTjid8vmxXRFf0
Sv//pJLxWCmuV5XiLV83dE5vLa+XtoSpMr1wr6df/2F2J/7+i+rknw/l53pJXKXrJysIqIxeJmYu
K+QNpBX+nMXpX5OuFWpS4iYUX8JiSCWXTYEzsWU9xwWqDRDAA/bsgGlqr5Efhiv17DNz3Qs/KUFj
x5935ecdTa0IlRdwK7p1aVsnruX1XFnPpvVYW4T//Nff/vqvw6eX4y9pFMBf0mvU7R0GUvOQG9iG
/CzpGLUs9PPlW16kG+VF8vSUuEixcmGR+cBVL/56brodfz0uLMLw6398+u/pQ+YNWHGJuXV8zDIX
RCcs8R/TqW5/QSZ6LMeQbz0uELq+zCs4eQW6Bbdgd2GF/GNlvPxrZfkJ2tUJCiIbTzD3ZVwucfW3
vRZ/bIkExHFAerVxcHnZo05/uvR9jZcX3fvbny4vL0kaO3kTPk8fWL6/W21Cg9PrLPt+79fyZ4D8
lQMgqc9aeCwQHrL5MlQnLXBexFd+hDnLuSxgywJ/nMKaeQH5+EyqxVmEz5Rb+MP58cvlOh+i/BEm
932MSxjwCkfwCvkSVlhCySeR8YC0xMhOoqHXlPwkBvKgSdPo1YmAWzGd4ycytHUCkEtb5DK6sbaW
ai2fpiVKlXh95MdOvk1LRZKf40+hx9G8d/kAc565XGZu3BRuQclqcMwNv5cLNKuH3MknPhABKsCd
ZNUMsGqVOnHrXcifnjP8RZ10fBt/Or68zMvImrE3xCBYplbqVTRYhZoVw6Tgj5en79syODdea2hW
qt16oN24hl/L4QCE2FeeQTmEP77f78tdog+wiouyrc7xslyGrCDn3n6zjs+SFaXZyM9oNCPbvl3Z
Rge+naqggW08/9jKyscq/pedWkswsOlDx86M/Jorcw+UuZM0CL85YJWoU1XGs8RDd/LjHeldWSax
tUsqn18/jlz/J1t0iLoffPZAnNHIN1ndOPDibOXFEWf6P4+H0FNuh83wneRQ/WEKYeYFgDtDNbBm
Zmt2BoE7R2/dsc9fPClgMX25OVMmCsebm2J3sn9gQQbfNLtRanQHDI/jXpxfvTbwXnTXurj4N20P
JFWzuyIOD38jwHWn+l2xwINeN/DbtOYLOHJc4JHpSiF24lV14Ko67t+sHgu4MDMO/IVq/sy3PaR+
4PqlETQYA0Iublfc0Pz7IHCYJ0XPkupV07Qiv3/k8rOSWRQ2k8irOvxfji/E25Zlp++85LBT5wI8
eNPxuEMIm4F3QRSO9kxlLlYdOKnkA0gTGRa7AnU92q2gE3x7ZsyWX3tJ2QMBcG7DvwBP2HaVY9RA
HABeoQw/OmKcLdAbdYxX/uhPr4fPxx3f3BspMmNyC7AWP/KHn725S3RtwJ8eyO9I4TsTtg6Iy8DC
AhJUUFUNXgvx6SrLzL8ceGVUaerl8D5NrxV9dyWqtvFMgKAPXEuto1gFQAFbK2ktGRrklTnPZIaA
E//5855n1kkADVX14Ct6z/FB+bEDg+N6jvIoAZJwAJIYmdXWfYW27ZAg8iXR8BNXB1jL0QySsvnj
jhswmp9fTh3nFwsC+VH8YHZzIBBwI8dGu7bCAkZm4B45uXtuaEEUT++N4xH/+Ovpdt+OpbypvKVO
cDVBYFBd4TzLKmp8BTS+50pzDWI5YKO4lSHK/s9luJQcT1QQGMaDQILCctVdA0sU0QGipKvtpAP8
FM8fpUeGptIuf/3A3i7YgPL8BlfOEjD4tjL4a3dhAD/23Gg3kgRAClxX/VqAI4Cv7R0Pc/IZ5nge
RJN9hcIJIC54/lT+iclNtw5s1lB8O6PZi90R1Q2aO9aW2Zs9Jo+nRJyMYQKV0asKRSkX9+fT1x1q
33GHy0qq0wHV2XOHM09UCPw75PIQp0Vz1JIkpICltYOUUfyJCQ6w955fgV0BpwBasNpJzmb+8QgC
m37/5Q9A3Vl+8h3MxQCYgIa5I5OCJbk5AiPgJd1dbhKBUs62Ehkt/Bh5ERzLde1IGRlfzbVIOoPD
5P4CNTD0A3fcyxX89XT+bUdKTlco7jrABEmkTm8IsAfRqeXgCAnsf3m8nt72+DwkdNCFVpB1vgan
1kG3YfvL+4F/uZewFQ/01iDZapqBAybPVVFuA9wA8jaqlsf55XD7jzxSEYXJittM05Q6cHFKFFse
6QBcVPEMnlljMyDdk6mNLV+HhQ3A7BCHp0pcLX8fZBBH3wJXyK97oPprUGiNCgJX13VVpNoDQgZg
1PQVNrbOfIHjp7Bgt463SwYHgJNDJQFr2MGAC6Cecr80Xa2jPiBCuT91+QZPoiUNoiXOOyC7Xh9/
D46/52yilQwM4OM9DxMILk2NFXB+DGdkkfdLdg9MruVJNOo8Ud0H7FbH3fZstDNeAOgHHVddevVs
RwDwea6yyZvf9WaM5dCK6WG4CsgrtsI3VySKETy+vsplORqvAKs5VHlD4mscPx/PO4IOT0NM7uhV
KBmIFd0oKR7md4PQhyTt47Rj007sANtdKT/fSAwA/T2IjIuf9sacvoq7nIAUA8Syzg7oBmQKOG2u
Sg803wKw305xQuXaiAEt6nQnwa3MfoMrpMEXh3ypDgSP2RhJh3H/FWAWFe5DbAFn5aGUgZN4qYsP
CC5RVQ68RwoJeYTVfZgBajagZCiZp7il0aqCyxgJsUL3TJpaoSj4ENNhILAEgx0IBn1LzeW4BPxx
z8FsmR6BEHHyMDXPxrSuAuBTNcEHLoQMh+Z3qteoJEgPqb6VXIpxMUpoOZ4PWv3JEfzJnsO4NfGA
eKfARBMHkxSE1BrKgJzA6KTHyUFR4CU634LXEvcDOEmVe06cJP6XB/CXqywSijJAIrd3EgtlUW8d
CHUGieX5H6fjy9Mvx13c68pQrDRsD1KjdpQ87ZZeAjB15XETr+d/f7/cj3vAEif5XjWhBygXX7nd
bbuLMl09J5D5Bm8RIE4DR/nnoTcFtUCpQiMBLpzzCAw2oQ1XaWYWtwCRHCv6YHsF5P/W2XYtWSiU
KKqiUCtSKJFM1gkjK/IwwSI0ATg0CYWgOskQ/FNzHIVdCFBUBMOsyKTsQgBDaVSSL8p9cSBXo5NI
M5QoBvxhU6Wgi5L6r33548Fzar34OoC1sV4i7NEqFUQC4JzDtdVGAHodnq70tAeIiK0Sp17O/4KY
wlRUS93ERYEwajEVse06266K6634DcBm9vQSLbvEvx3vO/zP3By2sFhk7wn4nqoq+ZOya4gn3fP0
qm1TKtCXjJITSZwXkJhyVXTVt141MhZmkGoveYiJ+GCKe4AsOQ2M5cCre4zkAgKE2ImZdQ7ygzfd
VYAZ5fGBPz1SOo1hCZ6/XfbgVMa0ahuS3wz+rB4lHcqsEQjIx0FCCGn0B2AVzRXZOtbqgQZxncRY
XfKwoJrDV6V5A70swB/qvCQn61ABvNaaNtr2rIAC9V1F5Bg5srgvXKj4r7llSRIdcAjaSylJ5oag
fAQPOGu6OvELQVarQuWcVKEJNA7JTulSa5zyIuDtWM59JR4p9z/A/VWFYHqEwRbgY5lBKvjlLEpg
ySsox8uEMgDB9FZLOP/KLQHJatNtVL6ALVhaOu2ZW0UjPgs8irHKmlhBpgAMUFE0jJAvAs+SetiW
3cd/Tj/Z8a49d2vI86KaGZRjaCcVas5eGYh7lehKEI4L0M3OtQLXVGkHaqacDEG93f/n9fL+tuNZ
+oroIRO8QZjoXAtOe7o8Qp4Cx7EMJCghql5FtmrUjoEXpG0rV5NTlSAiGweJZVGfWw/OjeeJjVCO
AcLbfpSQJ+JLIWKy3WAYgYdvRiPxC1meB5DUfMW0EDJliNtFc80a8PLB++s4R63O/FLCHaL39pgn
fNnD2nNVzwFFIwLwAodKBzc6cAAp6niROGIcAvBQ8x4qZsV4GgDhjOohTjJemWRwB0Z8ULMqACxp
bSTe5V8Pn447CLdeKSk3sfDlQal8b1oE9ZY+B8GR71r0o9T4ARBfSIqwsuH/PEzu9Y4mPoOWqpT2
Mm6tkswof8nAjCsxb91yMoFNqfsurHsioci4Mqp18wiCvYIgvxOPY/EqgUekeOEM8Yg4HwTcaJUk
Q2UXoHeD5iCwXSUFAImM4vGevScK2QHQU5udSDpqslU3cxCLrZG/QOAm07HwlRhqBHdxgTRyAAli
DVcRM2yTVoF6QigJDZj1K1DxWkmAGQ/cwH1WHK9WQRKAX/rKyV87O4BRMvJoj7xppiERoYSjfQ1S
JjBOpnJzBgFzBVaeJhF4jzOuX8EhdIOEoe+LFEz1INcMPwWCVacGKR310156medJQr+uWAcpkGEU
+9AAUu9YOdnZKmWnDqi/QcRoFyMEjtpXLe3WuVzg29vRtIh8qdAU9NSwukWSST8DAJupWhn4tvMA
iNM0ZzoGs9PMjKBIiCfpyPvmoQjAUqps5bpl0Ah4h72Tus8w7xPx9jsp/80TEsB7rGBKInF/O57f
dyygh41a9QEg3FXzHCe0PQMI/TBIGPlPeztBet9qcJCBcuBBk2xI7J6z7uIIuMtmkFytbV/VjDxm
tEKVNfALvJaObUeHLxp6Dq0K4xH4BL2SmP4L3wUQbZXfl9wHj2asdr9muhoA66tOKpBmRw+CZl91
4AS5bUAXNk7yDuZnB2hQbpQqlbhfBiDg6tGQBAlTXkBxdKOU49/VgtRYJ7IzK/8YxCq2KvV28mWA
slvNGexGrp8BQUd1Hs5KZHwgna6qvbRiygwsUpHkCJV8cblBlr2vDHs5i7/+tEcqOL/UEi8E7HlU
WiIoLCcPdFJFGaJ2lGkVsO/RSJ/N+z0gBvsoNdqpMQQAY3RVKcT6IMCTGjuphSkrxAQvYeDa3fdt
c4xYFr2Cxo3igiBzWiUfGwIBsp9O660+VQA+sCOnBK45lR6klqze8KcQ3WDgj88IXXRRIariHA8t
JVsRItnk8KXsFggJKpq+1pApD5IsFXvMCtAm+IIqybImfg3Ar/cVSZpk3DUCZHtuRNZYBYinXG09
JP2DmsP5Vvl4Ur3g2pSIEDEfHkRyo5Gqb2tLDhwi1zx1SXpADG55HLx+vaAXqqVsO7mQGWW3vNhI
ltsigJmNo5SU4Bl+4CQ7fqnALwId2PpaorQglKivRyeBcMwkARdv4M3EiEX88wshHqKOFNxJNFJX
FGAXq97kDYUCYkU3SN2BuVFFTfw074cxNFveowq/XkqV8TMAL5QqisJ7SYkqADBpvUEkRt7o2EuF
mcsjAB/dNdsSxGIn1M7CS8TfxfUAaITmXMe+XaiEWpAPTioF3S5ltp1v9YDmZaioZ141WqFdkAKo
Nf2ope5tzJwAWR+c1Arob4c9BBndS5202TcAlTNWWRfiAQDvbVSVB7D2OoGmtAMvgPWNkSRIx/EQ
1rUhJSA5/eAlOJMdG6DXjVaqmqjDaNC8qC4yozA28L6q3ufU7N6/vxz39N4Sx0/UXgx4u26rbxvK
hQ+c6mlY00aQreh40tXIaV9UwV3FTIYMoABt7kbbSQkmHm+AtHWFqK1TTD2gg7mqBzxmqYKow3jo
qZDwHdiOTiwc2lY7lmCTAV7265IboD6skTBBnisExlZVdBZN5Q/ovY5rLu3Fdw+OXzmJTsTyAAj3
EocwMG4eCGQGtXcQCcIkldi6lbFrQQDQKdECXvbwQIyXoNU5BAIPytjWIWQpQEUiHa/WaDXAQNBn
dfZqjVoC7K1qDS8gX6Dhbj8qqZC2oUdAJD+4Kqmnm8WHwAerYlAnNOxGgZsSqQ8VFo06kgwSClaT
aAD1341SM1v2FoA/PY5SU7wW6Rh0EKjdQghPIQ6w9q1QKucbgaVUzVA4eZXAuitOApHqvlBf33pO
ihNr1QGuQjq8VLMHuKFH1HXTKmmiBg6gsjW8TsJP0PBirGaCresEAH3FqkFs2g+KPkcjtsvgRwUa
cvWc3ln788QbBTrNjlLXiPnbQSSpeYaQosCgwGWsCWfr5DIAz3u9JzuLSnyGzfxJB+67HyQUltV9
o54znM9MfNl/Xo97+BxGKg+gQA+wHnqQKBnbtst2YwvwS/IOHEA6VGej3TcwWlTgHOCKASfC82Y9
CPYEz8bwUzC45Q+IZQ0Hcj3taQhUluNxtO/FSARYqc61YNNMYQO/G3jlpIZN9RAbuh6UJNfbAKPj
rNSXsQ4twE6UksgyrU8CNRuaKxcj93xBGkJJ1ZD1JwG/SonOTN2KB2HCTq48ANatHqviaYAAgGBC
tgtGYh0bo9h06CUVs+3b22r01NrvAHCs7apTEsJK4En3XhoXzFYAN1VPyWuDygi87/kwFC/AA4hd
oHhyWsOmdGChwYhFN+w8QDOKfmjxZJJvAuxU1WNwDdAivtLQtdCRJjgA7kFX4PbQzm2jxlM8jMhO
HSnPAOyS0UvjXWh5BqqXEgcU0AUA70yrFp089/IDOrzn/bUb5b7AresGCJBWBh0YAGtFcBrkhEbH
x7bR0p6fdtw4hcTdGpmv7BewGrVv2IsmGcTRjndkWKO1KB08GIngwhnPKDtecbZXhZOgAttWbOfG
bC2gRO3Ip+v6RrUgaugxSgOK5+gX/GnbSyVNS3YIwGOejzdZpzR78Kdd9afXzR8BLN0biQ6x0pqA
DVbNWCWuA2dEdKCbRTWynTo7wGRoI/WdnE8O+B11+w/HlP3n6+Htyx4yEx+N4gHHFRxhZXSNMGIB
lTp3nVTuyisUkf1w0nSwurwPhFVVUdH6IfUA1nAe0hMrLwaEJsZsFIcpYIntYKU0OUWJAS5qjAR0
8AYvoKmK7aVzZH4YABt6J02EZW00Ed5hW94MU8gAL6pK/KyUfAQS6a3k0bBzBPLoHQ+IBO8cJFF7
yqBzzCzRWihUxTNK4zv46wZJo5H3jRKGNgJd2fdewi12kLT6ZrPmjFcAd2TopQIo+pBASYoR6T7c
JUGV9KPEXeRvEfjFtqo4NAL4BcJML2ZQFxcBkA+82FdkX7200VXeq038Qa2uOnGFlmoGwULVOJJe
KSO7gSRux4Gn/KazOKI5aF2LeZwiBICp1MUwNDcEIBXlWzTPP7y9vRzvpM8bKA+2GwXWPdC+rtlO
K9LrUCRXVYgAdwboGmNbY9jbXe6Qb6UkwH8FGANhqRpLroNTBQ7EDmLmmyU9AOe4mjfcr4sRQYbM
KT7xj0Q1rNMfMIBdBU+twgtQq2G1lsA5rjzBLdpOnABCOYfAkRmqMUJrfi/w5bzYTHzX8CFTMQbW
2CZq2Tw2EZlUrAH4co5/sBEm5KKmns2h4C0wAZEllGS9d3WpNFWPZPIZFI8CNkdXaILATwdpqwqL
zIRfgscBPIm20ePdj6jfh5g+nK/b4EeDaqOxKvUTOKPAbx0MZHxWpBkQ0sntKmcNAgCKitmBmmEB
4rLuJC/+z6fr9CGX6/c9tQa+1Q4s2X8AMzgeABAxpHKMRkH1rWbhRApRZzzdGvkq4YsgJNZV+wuB
PQ7M+sjf85oCqQDGY4dhawwgQKqc2aD9jyBx7sc9rHc0/27kgkPanPzrdN8zeX0gJd2m2cwCFO/Z
KoCk7X7pAD9Q91nN8CROAEeHUD+Mao4dal0MdHrvt8fpIbqUE1sfr5xCkOmpXPpW4xxE41DSSDRS
BIEAAbGSnDl1qJKb2ybKBQEY+Vi15zREAQJDPhLusSnoQybVgcCp2qWxbdowCJutlrDlXdJm7CiR
dWu2BkAxaNmOYz44a8eAer9p6e3MHizwwaseS/U37IiX+w4CuzsmJQwDbM68ozFzr1vNpnJuEU19
5sV1jalIgC3kOiWNj2UdRcDZ+Q7qmx3UKT+0BsAmrwNw9Srvm3YwIl4HEDoZ81kSYiAZ2GvJ/2T4
MwDB+17iZtD4AzxebVvz6ZK2AgenePcWI795IHadlqJmVrKEGtialonJShMo226QOJo1uRQwLd1W
CyIF2o45JWYOOEQHfMW6exbBzECV2mi3OiKOIHvUN0mxa7AYIL1VF23a44UA1oD8YqyUUuVV2QBx
qGye1AcacCR9lU6UWWwg8FCdZPVmjxVcRYXbG6FVCar36cXumgw3AncxipO3eWIaML0JnyLwRdmE
CwD9Gr2rVQhSfopHvGDCEaobtZXDt54bDsh1lSJ1azIH+LGpdMh6OAuIFa04zJAFPKhO2ewx/AB5
7cdempCyPB7guHYazovbpnv39ey7NakEAF+mmpkujLJAnITeSO+v5tOiSWtysoeaUVSwZ3EnMvIO
gPdJC2FtqzG/BxBylf4LNxF+ffw6/e4Wf3E6n+5/+Sq/aL14M6l3UhnQ8HS6vR3uj1/Sr4346+QV
pF+Pi0Llv1byr335dfFF+K9H8deK7LwMQy/frOVv7sovSx/0x0l27sfNPavWX6W/Badl+PcO6+9V
8q4TXFduyjdOS/51V/06idr8ZuOv/3S4gS/XKWuwfHku2S3nbeXz1uWXhTTCv7uTv9ux28pBXvm7
8nlrxf9u47zBrrvyvaTXZ/m7soyokd1zzjBQGXHyX3Vb8gV2XL2I+qTkv6qLZJJJffykZB2iVOvv
8l/Lf1t1XK5aOqSXf11ki4Rz9LzAm9D8Lyf5iL/61+H6+bjxIkxHdt63v1vJ0qmI7rSCdA7yr8uN
kaYt/G8DCfX8xqa3HP7PtMLn4+X1eL9+j7/68z/+9s/L6Xx/6ORTUM7wh5KxkOm3P0/eLP6p7fhP
VbJhz5fZhL3fjg/372+Xh7Cp0+PtQXBNwjHM7fdzCVVQUelUbsfr6Rn9rlt+F9ybMWm2x/fr7fT1
CH6X4drogqsFf/96eDk9Pdzuh/PT4fr0EL4F/W2zrBEVfPrbr5fzZbrJR/jXh7JrHYLU9K2H8+1h
64Mz/hh+GhqwjOnJPR/O98PtO/pdv/wupDCHbIKOz4fpv4d+58tB2aVv9/v59Hh5Oj48fjlcD4/3
4zWe1cPj9XD7gk5MkVtOrzY9+e9v90v8SfrHh+t0A5fXh+k+3o+3h5fT6+l+E90pPbSKBfJKnx/l
35WAIvRiGZMO+Ha5/na8JhG+vX+6vxzjP75Ovzy9vRwf3i63+9+Ot9sUNTyk/y5gJvE/kK75MH3R
4/36cHp9u1zvD78dvz98ux7ewj+AhM2yUjjD3KLo+Pj0hS7zNMnO1yNciBSshieXX1ljS8dzPEBQ
ZbEsZAss8fbpt6dn3djTl9fDI9wY6YYTlftkW5atfX58/dDWincdVIkfl4XyItfDN7gXApSy055/
/9/ffosbeZs+bbJVIKnCz0hL67x/ejk9ArC/LDMuuAn5nrwOiB3ZPnKa9Xo7fESYFeHrBe5hT6T5
+dNH7odAOUG75O1Mx/L5eD5epwPFHzPyXxcJXn5+/H3Zy3Q0AN4r11yyz4238HTc+CCyJbeAC2Gh
D5wvqX01pWwwvpvWh00yDMDaspRbclzxwz49fkjvEPAxvCqnpZU271y3nkIQQSLD6R3ADRHqNDnq
KMq3G93Q7fT5DGS5PKlo1Uw57J06YuDdm+gZ89fwft4+5SKItrSSvn05aOcfnk6fj7c7+BT+HnKV
13H3h5AielMmaTWueM+HGP42x/lDnNKbH0LKdk3h1YVT0Hb7FAYuqEk5hW//iL3uud53tZC+/fZ4
G7B8kgdTqp6nj1Dbn8ClIFvUycaXvx+u4WtwEMF1jrzs2q0ke/N1EIqbLV32j2s9tGl3ih4Kfkfv
JQW7Q7RIHscOS1lU4+FvnI8iOKotGHR5L9t3TCDI0ArDiYZw+70M7KMypB0+6nI4vn1oKUIMjQ8A
m0VkPQhUHtwNt3gLt3DY0+moh6/qV/ehM/fc6+wkido+fMK4C+Ll5SPbIVRkSGyMAsd5sWC6m1+6
5Qoo0h2vj6C/JBybToXjr9AvH7rLTSINzuKwxMEZ6dA33eGev5hi6n779sEDd5Ub4MXb23IoSDLF
lEaQ601tb8mw15zPOSrMj5gOYrz8sspKeUO967kN65UUAG0rS881VFGWu98Z5eeEA1ZWSfJze/vt
hI94aLkoDRdj800o7v3126ppww8kFmpY0I3GkW/tjPREsmVCOtIkWwKuuqbvPbkSZtj2h2hz0YKt
Nj5sj+l1PGWd1vr8uPUmSL49EClGU1naTbkhlRZhD9lsfPnt6bmBMHxCEBEp/DEDCz9qvbN10YS4
G0zGzP+XwjQUf5I2L6bkY8kr3TyggTp7Ecbum3FVwimwvag0M0SY4FkTYnJEG9zaE4HSVr4phMQZ
7fjyQbRiaHp5/JrQLgjzx5T+uoLobYJbhPpmit4SwTJ4vLSEOuTXVM5dVHsD5WutvTC/Yqf80r7p
PtyV8v3yxj9wV6SS1Y5sR3sVBSmssbYZ9GyFKoTdYAo3Y3VDgJfAv2Fshl0bfnJfQVsMHn/YULhq
0ZcxIZGsgKVQOAfVt9Yq+YJgvvPFNle6f3/bsR7JI/SLpQVw/+aCJYMzm0e8QzkPMHLkTdGthWs7
vHy+XE/3L68wm+CZtcuOP8kgLNbm7eVwOt+Pv98fXo7nz/d2wiQkBnOCQuV0iemoj0vV2OIRbpnz
IBkZuQ+rxvJVtc+Jekh4lLjZnOyImy25/h1h40NyaeSFx7JfUnecvUdBaeWjfVACl21cnOT5dPXI
fQJp4YDlSEtmokVcM3ZOGrxqw3F7Yq8x6tWySbvkqRua7eF8OU+L3kM6LtCYxC1mnDmuWLoaivfE
cdmtu+pHtnjb7Zx3vH1FSll+9775AoSrH7W4bkZcZ2Gt737tDz68hMIM8buVZ+sZz2Q0RP7zOq+H
l+fL9fX49PAWOsAd78frTZTQ8vUxbhqKT8Ze/45rV9khWq59bOFne5zF2K6CyJBfGEmraKd1QTHy
FBfO2FPaZcwQm03/ekMxaTOwd+429N3sbDwcX9/uk0INHox4Q/PU+UXr9VuAxpYgDVyQ7H7l7JSW
dShRI2Ww0nz7P3awRg/EkPjwQjnYtfE+wdJ9kS9TOmpXgEGlRsByjrzOUrsuIOsPb0DBaXo/mhrP
1TNiOlPJT4nvjX5qgyOwZS46wx4mBbOqU0t5FdlKcONoDAoHY+iBtjVa4dSa6AgGp+LwYdXSP+lC
8y1+RM9qraVbrbe0D0AL6xC3xZQS2+10VtQq5blGrvewMiezNvmQOSmr2tKMdK1bflAd+CIyLoIs
tol919ZfttLUmRiWWxaM/9bLMCO/4q71zvbvbSTvQy3EOXJgH5M/ou8MNc57fGfwjOc+yrP7WOPt
P+KU6LFntsRgmHrrXnRl8Jp5PQgAjKUxyOLPDT8IsES/o3xfSKKMQyOz8AEX1hbdEuBr4sJWa+0V
ZM0kT1cex48oBj0OrZgA21vwOJzjd6rQcjvjFjdwy9Z9xNUA99OX44zBhhE4Wjtvh26z3I6c8t40
6IrpQDtK2NguzDjeNV/RWJQ429pe9e5MJ8TQ1AFGCPu4lDvENX0INHwxVD+Ulh3LvMTqWqg7U/ls
b8DSKWLaSUHGrq/ecP+7cp6xZ6gd9ceNNAoEfJHPWNHmOy26iDtYHvEgKmesyMDp/HT8/fj09Ck/
8rBceOOQOBlltLixtswlXV1XiVSh066Gyml3LcLhhzSmIigKST+zkKKSqMPL5wcYWRgGdWgHPe6c
cXh4fL/dL68bQKIi/qT2Elltv03rh1Z49tFs2ljG1883k7X6j7GIo/GiO4vOif4RFnF0THjMovtN
2FEi1YxLUmtR4+k7fyBUsdQgmOUqQZ7u4fz+8rIpIDxuNA36wnbEo8YWVkm3VsIoqF/HvrVQU7/K
mpS8+TGSytMT/eEnr6mnGm2UMky2PhqRKMVxePfDKcYoC5qfmd5SSPI1Wi6rek73G/loitki9SwN
Om3WV6d/T0eORVL35XjCtwlK5mPwNP00w1IJbeXwcHh6OoWOQIeXh6fD/fBwP3ye9aOR0WWtmLdh
Rign+2GxmdWxwHhKqGzYabqVsa2geF/WM4pHxw1BvwkrBvdUxsKIL65CIDz9z2EvUilDbEQ6+y42
TCWg8o+G7MaxT7cd9FErMd0FLRMXwypOYfih29Z9pSL8PuwSuZMkl6iLDpNZ8Bs6cahsrv9Qqk8O
SG1lULoWS+Zj6B7Py+kRhbivp/Pp9f1VDG17bnwVqmmYAojr5+PD7fAie1VW8WdJXEnqGORzA9V1
sbKxLOa6woSpmTQf0OwEESFp7Y+SQMelWrsEYj0sdAnXEf7KVunWuJAL4gl6XozTxuBA/slXCFe/
05AhXE/xp2zVRx4K2CzNv3U0L7qdfoIpfMvt1rDyDBcYA2ZfOs1BoFGQxY0boeqA8yqYfYbOm+H4
r9mhS3dpfWJXorfiN8pxmFDLdYTjUrZQxSBUIXwsAu7YITZSTVQ6ZMoEzeWUOUnAzG3YEN0bbpO4
k/cjkLcisIzqAeDzMSyGJOt8YKH73AwKBXM7433dgv0nF17LLnyRuzEy6n6k0m9cal4b2m5Bg2TY
pxxzJGINu48ZKR+iNOwYCabjhvnfU98bpctwH9A1+BmV77sBVBF/uqj1vXkgRM4aOI/GkeiQa87w
XvckwruRIJULN7uSl/nlbkNKnltynV/CjyQztOHJjGFXCV5MuxK2UemBu8oxAOXT73HlGqYeXJ2p
MgrDNhYKseuepaMWpEd4ClvpBOXGliO8h1kC3BtNNjlEW2X3iBdIJXc8Iu/27hIpFk0y/GOM8zl5
48fdsJFjH9Zu8hG2Yr+hyvABVbVoPyRGxMgaJTq1H+NS0YdraSp4f+oDXZfvyev2sbfJ1h+oNKJM
eyT3ZeLfGsWsykYwqJ0RaKl7gIWdyVRDQ86C8a0ixJXeBT5Sz31zM+5ImwOGpjUcmvK46HAzUen4
cmYP/UM2V2NFy8WB55YS9fxxzmQSbp13gmi64wpeCg33fSfN7RV22vEHESjlJR4YpmLKBtvwuLL7
CNCKpK8bW0ArQ9O3whDd8Xxe6z1sSm1lrO1GMLgpaLaltakvMV8ozs+MrdQY9NMh7tuV1+RtLO3Q
u1i/yD8lfC/TbZeK/kio3jvG2iIV2j8KKg/EjtjIhup2EOhhxoDz1IzCIUryK7Dl57nkrElL3ckH
05ldKyNDJPtD50f2RvopNHo77FZYlf4b9xCjgDq1H0kafMx78pzIpED/oC3VZVWL1bM/TSYnxnTL
CseU5w+6Hdp0/IbsRqHzJh9xJ6Npd0lDR21e2Cyo4dl5P0636M/gfu6Hz3+Nwim7b9q04sK63cQH
1RlBXvplQqxcXf+D6daKRGL8BliPzAbFIRwSJ2HL8iZ5GJ89ijV0/aEDpgVCXcVCkmEdBI0T2kTk
cCthRZk90HGjqISi/90amCMqBRJrBppybGlbLNx9UZUcRXFOainW2cjsyKlqpVqJSoFCg5DEsVmn
UsU7m+RT25TZiqHysbS5aVlAqUAFCKrruaB2Ila3l3jaE/S5TGdcM2i26+M0vcaOGhEANMhuJiFD
RpIcqRESlNIOfa+4f2zGXa6I7H0YRmbS5qNVpQgOpKjq2EwRcQUPki6671oKfvvNokSOcix+dx/j
pgPU0rRAceGxIKtGFFUVqexvnjbHJM3aYZHqK+d6LM8fqI8KjKxEe98qKVmhsh9QDWOFTFqhEBcj
7zwvKRbI/yBmTigLQxCcYXCwlHDL8HZVulj9SNOmcenXulAV7Aa4Bb1pTaACAkjV9RC3ySa94CoI
niHVQ7NJzceyxCQUiT1n3Id1IEgD9UOrhnUHiwSsWVHOC89WKOPeWWtuHGW2psbfe5D2b6fARjoe
nk7nzw//Pl4vgdeYlMn5eJbTdj2tsIoZ/1F4n7dp5ZdjiqTld8rLJBsM651Qvho819/9Rt55s3Zn
8EIaC13YzrIbwudwXewg6femySHtRA9WKuP8QZhMESWgWjBPhUpv5jB9M+bf7DkAyqdpf4kKdlsT
OyImjKqnVavHwM4mGKAykZae95QyXls1SFmwrTLnXRQ8zFbiBeiNQIE1pgF34XUrgvwhHpCtioj1
dm4FVElWrSPsRqngpsHuWjK3T0yQ31L1z2giFx8iPumaNczaof0oEEjDN1YvsNf6wv4ZHZcht0G8
3yzidRKCV7uooktaARojrMLekh3dt6pHqtU2odOxhcOtSBawsQyJddPcC/0jTfnHpbVvRSZoNmTd
6PjhW+WNYgYlthxHCpM4crGppflIfn/D4zCu2uwgoIxfDrcvD2lyrPxKjcRlAh7nrlQFLWMpw5tq
3f4hXInQDu24mmvywQTIqMUyhEaD762aBs+dbEdptx+vO1UMpCKKqKYu73X8lKqSMuNmbTQEHrsd
rXuIVdsstfCmteCebpfRsNpWoy8Zji48dGQSfbOcXHJOYL6hco6HH2kXPi79pxfjbz7Q1A/1D6l8
lFxDKTv7xJDESkDAPtkpn5RnvqnIEWKsXEuRSyjdxqumuX9N+zJsd0CDVAhLOYXR71U/MmZnXDrg
Vg40O7fNeFOrlqMGbdWO7nGuetEbFNRNDaEom62XAb8PR0hD1c0wrRsl7SNK21C+TGnqJuC4cqWE
q0hnagNJA/XouuPecknT/WhMTi+1lff78ILEogd+3CANGPsYQaSZ9cC0YtSnjkfmuv84pCvD2MQ0
KB0QGaXVuBlwojZ4vGZJjzs8WcgE6nm1wrjFttmZu/Q87WHch1h9APDoeHWbGbHi2YdvqbpVnpTZ
30Ek1q6qnjGoG9Y+Z9u6NoUTdyqBhlTzY/RAD23x0ruq81m/g5eLiPMVr9k2ElSbzWccZ61s1wpg
ApAhaHgXh752OQG3PeErWg/P0M419vCxfj3KKKlig8Z1200YtW5xFbbnU8Rv6nm6uIcR1sYXDa7V
/G1P2RhKjpBGKzaqN9qFiD3sHU3l1MDjNtN/pLJLthFVhoFicx/rEKvrRtPdR+pON4qpVYsxSgT4
45m2YiHiPCmz3/uWBhpEVUlRsKiYtEyQhsVxTTX+gwxZzUv39E6jhe9EOYfqtn6ou0pFubZmq2ge
gfaVb2G2+t5tGZqxkzAd0JkcVAiQaDJZG9xTGNrTvrXUB4cQJS+RtY2VeaE7Mwp0/gDPKMhtw8CH
ViC61AV4F1BMkidDMCZjx9IdP/TUlB1apABxHF/48svjHRtJ1eqjvDc0Bf1nK9qz38Xrh7h0VXyd
B4RHO/7BUFB/hGu5p8+H71oNwRqDMOSr5Yw8zUdR/kid8SA1rm1b9G1/auR+mVO7oUp4rc0ypHbr
DUgMVq0eimI+FvVDMa0GpGCC46531rVIBqvKgl0tbzRJZAVoyXuY095GsKt2Ix+fWRytoBZGVmwj
vMB/5K6ZtXJDFRmXsk3/e3vqbxR6Tos3H2l3isMuitHHVJY3++MCAIkT3y7OvDHDgMgdGbCC/A4v
crWLmd3KMvWtTm7bjQfAh1YzUozdlfeXxYTQTYyq+NX1gmTDe2AT0kklzrv0G23ItgJKIxULBz/q
R4yF6qr7GVr3s20jbLMp6UbHEYjhjS3d1Ei3b5hoAnGThln7sECYaatSsaOchN6ReSBlvQT1bqo7
yF8RD00sdUffaHl3LO1QegDtq+pybboPTbWP+LjlX/YRdQzzWpR2H/majR6hO0EPTahhJH+0o5kH
YvgQ8q4bSWNs2f/aHN1VNW5ZTZP/eD0d6Yxug5r6CHWEEmvlsMq15li1G6yB6J22hd9sbQuHMZgK
O+rlDSFAxkqVWoActkOf9FaAm/egekgax65VeYXbtcAowDL1XA1LjJYxZhHggMMyIjM8kNxFqzVv
UZ7fXCaGzqBTXOMync/tdJ/EM/3q/jL/vw/X48vhPomJfLUtdDz88vQcHtTD4dPt8vIOkLCRE+ut
tMDDZbq755fLNxnk5cTxblnp+fT79MLn3z/cHq+Xl5fjkxxBNwHteSH5lls4UvhZ9Zenc5YfHFcA
uj6NzftQzTqFaYHVOW6fg2bm2tn1B53Ok8idng6hBFeO55oz1aZlluNItQf3SYpvWR0/HW+Px/PT
4QyUUzWec6zPCt6W5giOlaRFti+82kSvDlp2OFg3QzvIVyQj8GzzgW4X1ng+vQQDFn9w+xaU3NN0
R2Gxl8Pb7eHL/K+ay+qUAtSuT2DNcqK3SX2+HCclGmcJh4u6ff38kP6WtFIK4dNKMXKe5299ezhP
8eh0vo3Nsf+NuEe1rGzK5KfL2+HxdP/+8PjlcJ52eTnn/UXDfpqEaJLUSU0ezo/T37jI2x7KtqOb
kxtJTdt+OXw/Xj9yll1ZqhAyPk3+6NPD6+UptBC+v1/lh6NnjR+XUKUYvH2xcXviXnRZKOcwosc8
i1vS/tOhpeN7CmU/s1EI/YTFtUMbr7j0aNig7vQAsyAujzz92+ZCdiYa9j7LYU60vAWhezw8fjnm
G7hfj+ISiYgUl4g9Q1WuoSHfMhuVlymsfZWqmuxyZD7f5DxH9jzJ1AOxlxvflF5SXCXgldlmT0rz
dDuFQSxZ4vOmbl8EcbIzDS+uRGY6XY9Ruh8Oz2FfL5dQYJW16qeD4MnauSYwLVZsbvpdVn9UFx9f
juiofPlI0hU4r/Y5eCaPX04vT1vXTw58XFaZvObJRd1/4K6sEugxQ7r/T8dphSMVaXbw4jmZcuix
QWwemn05n4+P9w/sKpVwpF2Ny66KGGwI0cCufu7Rk2Xm9O/jw6TZxLDCzu3Xl+vO4If8GZPxDW/t
Sfycsh5pY0XXmQQni+Fh+/sSRzhtzy4lTOSyptBsEr+tVQyXwlxmdLq9Td8SqqKns3r/hA+avLHC
i3+8BrL+6+X9Nvn8X5HKKK8qhNiZMZeV9Ntx6wGk2C+dql30X76RRUMvOjsa4rfQ/mQ677fjdfKW
7lFXhu2KX+hakiDpoy+nJ/msysfGdBXV+7vNh51nLOczj+15uvaxbZ2e5dYjPbH8PSv9L65ShCg6
dUx97L5JUxQiKRJIenW5yI03X/RYKDlwIz3ex8vb9+DipBcmLkG+pS/l0MfX6TvmM4XC4gZmArM3
KKsNLZ4Hkbp+sV3yQkZcyHPFM9BTmf6rky4UT8Nz89IjyRdPhFi6IvTpD4sS7jv+9X0t3/tskSsf
EDk3Q/Lh3qb/1vE63aiZbPbl82ehLNwvJzCa5Jb06Rb+/XC5Ph2v8b9/Pn6OseXDvxNdr7lSP6va
oevTjQxqBSM8zMdawjjRf7RlWz70Hvx/sGsa9d7aOEAfVRcfdUhHN/2J+/H3e3hFaaAH/H32K8MC
kb6ncqf4fIkP0auf0ZN8naEPx/y/f3w5vb1JUX+3WMAY/Jv4YLLpCX7T9HkPc3jz5V0onO8WjzUR
nkK4kJmTs4TcJgnJ64hLOLKPCBKp9j7Ol/nbxKVMWaqP/WjdLCUv76/nFBqQa7y+TDf5+XQ+xP+Q
3FrpKSjPbY9eOfnnspi4CPcXZlTicj/sXmFkD3s+q3DXO1cY/r+lXet24ziOfiKfI0rU7QHmMfqH
YiuJphw7Y9mVTp2z774iCAKgLJBK95+d2uoSTIIkrh+ALbkYfNTDTygJi4zn+EkdfPsBe1eq1KbY
e/i6+RcPPu1N1UamjK2bak0U74UL0N6n43BO0Ooje7F68vFI6wNFdUV1tM1nMrnvWa5D5T3C7ab7
3SF2fnobu63bqPE8wWbWUNaS0n8br65426U7PgWZYV4Eg34NxJ1qKJz6uEjP8Ie7LIunF+N5dvqc
Ijvg9wzyU/7V8X08/nLy2rEXfAynLr+ut1+a1EbvDcS+hV5TXqqerseH82cPL8Px19vt+rjAWV/1
EAdrzkgszss1DVL/Pp2Dqbu8r+PjNmuBnYLsGO/I+xfGfHi5/k1az8UhX18PL87cW0z+90UEr/lC
x3GY5gPIel3X+ogpbKRtYFyCF52Pz9NybF4mL6J9vn8vqhtDafjftK1Y1joet4NO8nCZPiC4FS1Y
uRoFRUpgpibAr9x7ZLPZBx/PV8ihqefEalr0KaP4kz+n6+P4jpaz85udkFWPqeO98SQbXNBlnlwQ
TzfBC3KUvRKEFI5njlyEO8OUQC7IL/WwI+hJ36XIHObP4aIeGHqppJjLtpO3z50WBnzlLfMXG2yv
V9d/yHfchODDsDwffknqY6zobBpXvNm0fYApna5fGCn0Yc3TbfjSTrkM028psOpORYTC4IPwDJNq
rmUDwDfdQY/x6/wt5VrWz2qFB1vL6ModghYu7JwM59uAUPMkuOJKCAHns6VCcB0LVttTz6Rgrb2M
969xvKQTEzZMT6GdWIpWUopnPlyfXXtVQ7Ym4jCCR0TuyL0/zyeVRBfresNBYSd9x+wh93FIxyt5
lplS1KnMbeLQ61N8ihRKLlDaRIsJRSjj/x7T8g/hEeWkgQ2FxetI8NO9DcLgpvWYsKGKmhaECb7o
9cD3+gnzWjzeopAucXYn4gU616pduX7uWxC1cE9oZ8kkjg1d9tdhPO0xqFGLtokfZRGZ955JsMv0
7WkEjyH8hs/KqxFhgqSlTMMPAfo1+hc+Uwg4m4i1Ybwn3xwMJF8W5UFnBQ9y+YMez2hZ1oDVGuT4
bbr8Ssf6OsEKHqcQfhhcccdUx49Pb/Iln6XIrRiHifBsvd5GZKinljkdIR987gBtMT6YeTM2styj
98lpvuvpW8dbMNwCTC/EC6ZogQL+vC239U21pMHzEKT9/OntW7VQy8RgHDXGhRgLVlRY6pqeji0x
RAJa2VU16uWAlzklRX0TYALeXC8ooe59FLeNr2mx2NAoZQG+DgflA05sA3sH/q9tF0RYPM62R1UH
5sDj5XNhy5msdHVHHdujIOv69tlVDVfB3wSItKj2LXNItEHFAFiIMYVE9Q/WaZkltgcTwjMF9u1z
rx+Pxad9PQ+Lc6uSqcV2fbBRiMxgf4doVHUK5NANTbhL7C0JIF+KEEYANHoyykUK9AXioIfb4mE8
5sUuQGUMl/bve9JPENE7aF3UNxsUyexZrtppWez6F1R7nYibAsZmFS6ut0qNuweaCOY3lGeBM67o
dS0+/DTAChbd4yyQ28HFpIeb07EqqTjlj/rs9+IOXeFfw58WffJ6Ho/qsRpqcdtCuqSD0n1B6hCx
T6Phcc9AwtSOhqn7QhDxPbbSLwCWYphO52ITpsOAkKcDcgB17GG+Pm4Ke4BWxdvqKTDk6RCrUTnd
xiG9roLX5WI7BtXtsiENfWNC8zX/FUy0NdCT1Y92cThD7wrfHpcjSObTdAMuuQzMh9abFYS8UDtg
kbTd2lXxnnpwf1TrE6ixzvCg5DYUvcFyHMoosxyBZ2TANX7uF4IX4HXSl9ExEcZcR0R2BYocqVZs
SGbMvCuY3EvDn7Jt5oMvO7kprA0fR6yffz5lDpkgGomheHXD9QD4cGoPvTBKKGnpJCeYIUAldlLS
5CybFK13asl5g9sWrnGwBXYkc/oATcNGuy63WtQUzUPLYsLAlRPSN71D32o0Bprki0x/LMs4rOnp
sPItBG1wV1ymGAx0HY4ft3JoQpoFTn32y0Ag1nDOuU8dPSoIelbc78LH85SwTBfuL9Q9t6RfMJIE
v6z+nuHf42ngFzBc/VUBDMny67fpb41IxzQgcV8gNt+9WTY95/RKeibC7ab++CM8a8X8HeNkm7hS
SzEpZWz3csBDSRkBXZAr/gcAdI0Ivnk8v3o/mejPpWqfcTxc4KN91nm8P2Xk9gDl4OxgbRV2CmhD
mm9YlKWnORyP4zn4APDXkisqXUN0BeopTcu7wlBdqpItiKwxEEw1LaYhvIYGqwrS19NZS5U2BHpz
zKzBj/wr9hq9ooAP13958AalLoh7uopc7VRt0l+O5/N98NZJKrfbh317MQH57LZrt2n6R6sW5wmh
B5XcdptKUDuq4dwHbePdMHj+Pb59qSOeKEMa5HO56Z/OvtSh8NEwH+GPbC5VD3n0QREZmmtobeI0
1OWsVmN7ZTXo4l4PqkTow6szNHC7UvYWEGKpY5D10f5IMrSSV1d2NQf1Vm9TS7tVPSsiGoln1auG
l0Wt5xHnB8EvVJIvENJwqctXDOvJbLb29EWWifUVZpRCzDJKIyfDHraLyVVbYDGkfn19XST14kE6
/f3tEE/L/6rrLFneO9e8LbcoS1hNDNvbA6xBCAQFUzBotCjL54qOZGijZHFqpOW8Xs2/iHKYSrAD
/g/axw/ODoaKmMCOl+vfCZS/DdYXAS/qENt1tQeH6/F4fsyA2gQxDcapSqmMMh1NipJKo4pC1l3B
YRymAJd+uE061KxsI2QDknlaysv5oYZ6Sw71Gk6KPS4/Z3Af56RKfS0Z/toYH4wIi/O4mOqY0k1i
/0oONztDqhWZpDOYI/mtxBiPEMYJ4Iw4zAzS0cUEL/iU1vEj/V06vYeTTqt4AlqQci/n6/HXjI6F
A4V8pgyxysaWGGaJnJWFzxDlKC3xdr3qBhhWb1ereSQ+zrvQuz7ui+t1P5yuitMD+2MrrhWHicKB
kwC6ddkQBbDfntA/7sODiigFEi1bvh3VcTmIXuZwLNugFXvZGwyV4jOZQwaWlNExoRdyH0ArvY05
DIYj0fDC5LBHTNCsUyv6SgRjaoJ0buxPL9ADNjEZSA/2m/pLqgjKCsMAKlcstGi3xZgfv1ypru7B
iAsOKVHEJkhs7bw8wkWDJZ5J3QjmGW544g/xdv04XG/T2yLzllW7ag10VpKcbIQTZMkl3eCkcCoz
EQdYqjhnbqDwVPijS4Qq+h5jkn5BpwfYriH5hsBRzz79qAVBn87qIqzNnstbCl4xwju+LvqOyujm
V1EMOYRiAPH6rR8Wb8L9cdve4mjV9s1d9EdilUW0xQA10WxoEFJVLG2bkGMXlQgeypTyH+HHxSOh
Qr+00NIvYBXd63rHvdZpmegyBjQwqjqnTXK+IvBJyADIlaA43y30Kn7+7pjaYre00m90HeuJDTAn
Oganxw2NYrffdEINFtvxbg3BYlwJ8o6HVvexbWGyr/80jp9ZEWBWIkAXdqTnk6FMIMochIH0zdah
7Pb94EzaONxV6LU9Pz3tlV1UR/c4Sh+dE/fQiEvTAfC+SarfPU/MNlvyPnjPb5ergy+hXXr6vgwf
09Fltv/oVSSOarxf1LnivaG3m8pYmICxZLmETXcWXfvHhXVCk4E9F7viFbkdh5hbapv6MRTRC6vL
jDjIvI5SSBeuJkej+WO4/e8xLg9v+kjZEmxNudSd+Uf6SeediY6hahK82w/XcJS7WDPv8D4SqDO4
zUyxZj0tZcsqgKMGLhy1NhaGqJJnTwkWlXYi5CsoACiy38xNGgtlHJgPjeehZ/348QIQQQ3aB9/H
RqKtfirpMsvjU4DyCUz9h+qP/a+24X06cV83G6UTqVIOY6h1DNmO/S6Vpt+wMnoMlELDwh66qRnR
xiaJ77SNKa1ruPg+O6zr6S46wK6PYgC7tF1Vx0swP3DBdDijMdTopooHLyU4rnMpDk8IoxgtW/3U
V0Z/QmbpNMyWjYaoA1gEvLIdNlldP9lkIXoXgNYHyCmq+T0OxopC060UoUpBJLVKGr3gE5kEy30K
uG53i1B/pKwETMyyoecKRjmye3LTh10Y6G2MiqmEfhpmNfRdWxFUhz83GzlZDM5D6gfKGN5uw+f7
dAzonDdXuglPVN8Mlwa1jv9tI5O/FM2T6SzUVk6E/J6O4wGYqZZN8ImUEKYo5UboKAQGAmIMKjlR
yeQRN10e/ki/ggbZcDw+Ph5nX92TLG1tKJYsfrH5K8InLG7nYrw8JUoTcDsj8Ha1eLan7whO/Qvk
nEqES3Msu2sCmfsyOlMUwoAajVIACWGiRi/1Bp2J+rmNcI0VdRdxJn7C2yyoXNAjhUg1eFbioaV6
exUUjC6rqPYU5oq7XMtdrx8SxUg8gxdjR1cHX9ajegUlpUJNlaX75wxDWHkoHU+BIkuuOjOs8+X+
QfR+Dvd3lYRAlQIKvDVxeUowVqF3TUJuFpSk8H3IaVOJDlkFpc7KAHcuVEbo9mdBaQm/DXIMMDuW
rvYuBbS0ocDJLqxbQeWzJab+MATPwImU4ixIsMEaCuFSxo8Y06nqGvgMXfig2b4G6v5FdR6U5rSY
kdmniZ4uSkofVWt91EoxHurtgi6i5OYuFVGLqkdgJWKvHi9I6PV6fMyHW0JK10IveC+EU+2Aq3F5
5sNwvw/Hd6h0MiouJm4H1q1K2p80zPQzSD3rdWNgJpspYk76k3tOv6PyUpnIhBtnBTW17InlcNHB
hFJXJqwvngAaLonILrvGXHw5IUb5ddF7t7Wr3m0Vgv5dRmZRVwds4CEbJvqKKa4LJV2bbBKHhUrW
4IAfg5Y0eytOpMLCJQqLfybXXK/m7oKGzW22LlIJrpLqLK0PCZhVMSEfVEJUl9RlzmLap+q3hb6H
liX5VTO/yvIpWfaTjmwllXdZ9LtXlRPE2n/DflvG68X84PvoUH6vr+ClLOL7Mew4CnFV3B+LmInD
446IeV+hfLlmKdZl3HmyYScOL7bqUpRUkWAxrICazC3DYVYXd/T8vSjD+1MlYboda0nF0hazO42X
NZy9yzKKOziKPsJOkbDFDqnBCwAz/s5A0UoCcdrgem7Gn6MWIirTeG/Q3snfBy60Pzy/LfUAahO9
KmqMBL2mWIC4ApVSfQLMqw5gyKunGcwhvlgqJRtdB5RjiCDKHRkW6VoTGVRwE4MqcZhiGcXBmg6V
0UXUxhMtZvo8nFriGtZd3Ai02JJ9P3xxTRFJ4xL13fv1cT6BueMI3FxiMFQpuqZ+6Nz733KXFt56
+BfOh16vyv1d8rTaKtpcuWKPNBky0eKSHH+vLd2Fwg6gT7E39cULQcxdXUgQv4zvw+/p+iCY5uRt
Q67YdE6Q0MXqdbe8bQDMm3XYUuhvVyW0GKFDXDSWlBOWRXRVP+s5hJ3zQqm7Xeoa9pGSwotM54wc
TkQlS6oethiHr8ufmFkl9RQIz7My//J8VP7xRfIFBTH/EAvwUy3XxlrOyGL53M6bPn6w9aqVwXTB
gbTZu9GyiIMwSIttcTynfDH24w7YMFVjklGpMlDILChBs2VUjrSYRuO8Q7XYmGfWbMk+lWd8W6AH
Yrdp7eU1St3ENz+urHpbWLZrK02scdMmLCkG3WiMjSaLBVJxaSHXSDmY4p9k37aOsFs+IMDvMxjp
w+m/w5FgwXOWGlfGGE4cP1krp0ywrOOe/A12OPN3VtaEJ5IpHSVDTBM151+t5JLuR9LxtIJmAzlF
ZLx9kN1SyawWM3tWtBye4/oKGLYgtEPnX/3mdzwHAGPU2BFO8gv2e/tYzH2yYhIbr8XGGXpE90rW
zeXuBFeKlcCCJ1pPlXg5irW4s9A6POqxGWUndJeuIxjaqgLsY5oXN+L47jKm2B6Qpe7+VZbMQevi
NLbvRd0hUKYE/C6CVlzpwr0PVyDuSa6r1wMnEnXxHcECV5V/ye1zm6/c7juxe8Bp9Hqhg0rEbl1C
DcEQWse4t6NS5Kvj60xzbzCF++h4qkQTtTkM7CduaZ9XgktFZHVk24h2hCs22EzDFnrBR7Sn6ZLk
kWki0bvNdaSR449hmWe4pZq4Yv/kZVW8b+NCEwajl6KOLDQl/2eSumI15oJYz2VqgbxADKu0qvjG
dfERc7ZBJdBHmgz9dlWTBT9sMQdm/eKZLnr6ZacK0AGzc5+6HLGiHpYjCys5t1tyWFH82oH70Jsi
9/CX6w2g1uTbF4rIkjuzVkO711mzcKq6HjvebjFxVndaR3xDa+lpARg8TuEiOh4RE79aKlO73adF
8yd8tY4qNRyJHtrPFHkLZcddK3llzhZomh/ZPSrVUrCfYoAfy7+YXHLl1/jtK533H2hlREk7gGZ7
0SO4OmUvbhOJY8zcb0iN+T4df32ry7ApgcG7yWmHipdjLQ2z2HriQYqdEmLMitteUzR5i1qCholt
8mozrJU7pVoIf6huXr/j/S9YiGYYGIod6TRzSqVjYjuq0k4s6ah3hG012L0dG5dzSyws4IqCcsLE
V0WDjeVzJRuArlpr3UZQkZSRFN0/vUcII+fUtFq7ziti2Rx0qs+2AWgoTAkZv6KEtssYNkn2Ljq8
THqmjkm6jkF9IVOd2CQWlhcKP4pECr4kHMcqkP71Pt3HeaEwLsr4BCnk0OFRJSTiAxWVWGCtY/5z
Y6KQX8v5/Fe3ikxPgzK0Iw+ZRnT9+XdBVu3kiWnjMF2xRYsQsu62qpRs3O613+itledNH3EW00sf
w/wr4Hv38DeO2LZW468zhnNVMGWoI6e4d7PBonzpSUlIEooq2iSvNblVEqTDmqiL/G38PC/728+n
sozTLzYW6z5algo3lARr8TSgdrZdhTuFe+CL63IWX0mArVUscesEXxOJs3q1tD7qowm1tXtuUxmF
JnGK+capqQSEtLAkLVYEcqVPJWHJgvhCw2m+uk5n2HDDjxr6wRg9kWT3PSDK1FupTjteSxPn7Use
TIHKaQfLi4hjGN+I+5PLpSW0aElINliRb/tXR42049FDDL5dgSolmlJVo6LxI8IOQmU/TR1xLhWc
80L/4tpoO+DwrFcw40g6mevCQZS+cZ/zxaezfh79KrRe/bVCK6cG8rjvWfxVPLuXbkg01ya1jraP
L0YbzfHw6zmeh4/PxFb4KcKkg1pshdsYLjfVc1YlwysB9LQRBReum0tqF52EpQAds6om99dmVYWQ
ZnEX2xPVWoRiPXJyYaEDISkFyRzs1H4Y5u/L8SDD0ilVXEdqFMPenqDTyHk+87WFvibFuh9o+t4W
kQ6owyCSy7wwZrpErZ1VxhYRlAbPKr5zYj2567fKBNsdJ6+uTNhdHCEVtKYP9WA6PhgLJ9O2YgBe
pq9BSQ2ZLRZzWjk+z8GiAH4hBIRKR2jGgpN2r6/L1XKdu/eQ6CNTuHliw3ByTxvgKUk7thO2fR9d
Vuy8+ud6TSit3sZbMeKuT8kZcKWPuUgJ2TPC9jxCR0bSHeMphW8sucGpzGAyrgW06IvvPU3OblLJ
N6RNA+AR7VepkWNF9wb5h/E0U6tx38jL3wt3FGqVhWiRJM0JNy/1ebaf81KhH+7L437XdWot2k1D
r27jJcHX+PLm/z38KVlN2FJoGMIFLGPDp8kWuC2FmGCSGrtc/uvFntGb/bSUT/KBCs6Iwre7QNwt
ZWUK3IiNf/+yyDAMoE3QNWZUGqq0FIMPq6lMDKXOgZwawlPCgZR03aM+rDviBYap1AWjyAgC6xTf
4KeEsAl2ccHQaZid8HbxnYyrTM1WPXq/pXGTOsWjK4t4UwsIuBbAIRbQs9ykhmZlsjpE4NrtM85W
Wxv/B4/4/j6ro+a4dsRyLl7/Ad9zWGWlmPxjqFuMTm1R066odlDLcowsDoGcU47keHF1L3qZAdes
uBB9gyMCKJDni5ces3NmTtNxuOsPjicnigbBMiKYvuBtaPxXtNHY+vkOgU63k5MfUiviePpdaUN1
NQgAqBLGZxfC5R5crn1c81pAaWN0L1QduHRbwCanEp9tKE53lPyARTSC/HfrQWPg5yfKS9rQ7RLo
1SBYwsaY1ylnsQ3tGv3eIIJlMWbk2tDmN9QyXw2oGC5LfgCQCgbPYN8OmLesUbK8FWCyiaaFheZG
3BQjdmcz3Qcr2X2w5EJJitbcb4+PT9HUJSEYGgI19nFxWLK6kMDUp0w8vKE6KwgGl4UL9ocQvdu9
N4kuG7nuy/OPq/pDFFyCQdx1Ea5fFIzStAGwYyBmLGtPUrUimy0kp+uMZZDzdAwYsNv10/3KqILA
qpWF2m0mUbCReCYAWAlgYAUtEzchagh4hACDSkqUCAAKvkAnaXCN66c/A8I9tJ4SJSUPCIKJc8qc
jziLmXvu/1eFJcsV7MllZf4h+Sm/YAjw9xQyzjmILaXTixZzbeZpQjrVJ6YqdlvK1RSeF9B0V3bW
Fi89uRkrxDzhSvw+YEsQ4lXbPLcE3IB1FOSkRtZZagGGDwJCb1EAPulptIRlC1ZqKM0SEUpPSP1e
6CmA9zeiMz2cwXNHkhQrxHJ4CjWw8fp6iAZEqSTYdodUTZG4H0A4EYpsKdfvN9iKDW4SdCIyeVbC
xPATAns5Bj3/6sTmChBvidWoixBnBpCZUBI0LmbbjjUY4Y/0YvYOAQJAjKg3RrCA0fOLP7f43S67
KF5vtjddS4gHL0uAOyXfGR9dzwCHWoKW+WNp8VgSHX2n50l9qtLr4trFdlXLi2NdOGbvi4R8ODuF
+LIUxVgN/vWihyqc00MAexM12UXQrVgPCkPvtyZHkIVwZpj6iwchg/5y0FzKyLMUuVuNftwkppKo
o7a/MsgT7c1XJJan9Pb6Pp6wllhQDo9kKXoV5sWt5mx7uz5KmNwftzCydtGw4/09MQtuNfKylOXv
6U68HW/SvQOEWWHwZ18BuqU4sD87kVPB1i376Yi+zX4kTrVmunwuKhnRc9mQXyeIwASVxc9bbNBM
GZSlEDldzDoa9bB/c52k06P9pGTyqIXHOsN3uV4ScMgYzFjpeUJ1VExH3fARyVfr2cb3abwNt+M7
9JjKFx1EGHrRYn9NVt+fgKbWgHy3RaOSSUxe6GgKQWBVq5IBOaiCkxi31Xsoq3/U3ozyPW7hsxBy
k/9BuycsxHwTHJ+RCfOC/OfqCEa+Yp0PkZOCmKk36Y5yn4bKdcE/hGFgfRi4OIsxV7tjiVakXSHO
24Txs/fFh8HxQ2E4kv+7yNHEeQn6DEc5/wp8zWiA1RZJdD9dcHjxSMchMQ5KDJTCkoudxHWSYrwV
mJltbr361nm2EzaBanKrS/fwpaYwnqZspZfc8e9Rn+Zl5GQw0bUjQdDlldTGNYaaFyEPfeeRHE29
fyA1cUF6NeigHD1Usg47tQjBN/e/Y2I2qOnXU0yzv+DKx/UVi6Ftfih6/pjSQ8uMmFoGOe8eG7nI
RgkoUHxfBic1VSFCj77vfeaskrgImjv2vMAgrfKjD1sxbrDl/rsSa5BtfUg2VGWi/nUo7PKLQHhA
hUnSAIdZf551QA2BMKq4twQ6jM+hih0MKsRoSO596DO2+c/Rcq1CW/BuzV+RjypVInxIohpMEIHY
uCrlyMSsTDRhHjfhM9DZjfAsSXdn+loJ/ojLqZISx92Ieffr4xZYLJU1XRXtDINjrifm+fvwRFJd
UlvGZFqBmBErAg9ZdfYNtYapTNTqNLk1dWfi5vDgDMpYe0h09tRq8TANj2JUVpQcTdoJWtywRplx
eSDwlsoqPjkXhW60W5CbbG4Ip0Ers4lHpnKqjB4qQq8wLiif2h552DaRFKo0poeskkqHx6e6tHbz
XGm/U8z3bbQ79G62FnR8d2DNq9q2mFrJ0OaeuL2LRV0XvTh0u59XlBwGQFCfChs/oy8CXWN8o/Lp
skfI89V25lX7vKXMKvpo0C5WtHCGb/c5NcwVyDQ0GlcumTEsBA0LSmPtpQXbK7+kPtYdjUz6Ua8N
Smln23CK/mY9NJOoRV8b/Zk3AZvQY4PBqpQoJGhui9bQwhjwqxK1gT2XtIS2z23U5f7lOz2tped6
n+1xD3JdKgUxoY5FPMaPGGs3R5Dy1JIsD6pzvgyivKr8LJWeS0vDduQ0Of0ryxPthC4PwG+0Rt/H
6e397tHxLsuqLoHHGxq+snL5iaRvz3VyfXRDyn3bFzP+GBAhsmzhXqmcMDGBSKClAzw9V6rivQoz
Y/Ay5YLyPRdsY/PxSAQldi2Oj2FXeAOHS7LdaM8VwPj7DWL5qENzCJqIEkq9J2uDMarQVBGKgcO0
8Ajm66NCmKSePt+vl7F98oRCUsBN/Ej2D4WXZy3M0IDiLggt+oTGeD++wyfv43CCS+DQuY8jirzj
eZhnvYhF5I1hbhTCk2A2G9ZF/GfQe70sBLqt4iVY1eHrevsF3VWGOUVBFC31YEYY7m86XaZ74lOz
ieB9ZsS0OLO32/CdIBV3KAxRYNjHeLu5uN44zyo2y9MoY15YbTmhXdglQauJ1lPK9Txu58Py2Bwu
64+ec/FkRMOwAureXAHj//0/UEsDBBQAAgAIANgpdUv5WSiG6UABAPhLHQAZABwAd3B0d2tfcHJv
Y2Vzc19sb2cub3V0LnR4dFVUCQADyCYUWtYkFFp1eAsAAQT1AQAABBQAAADsPelz2sie3/1X6MPa
k8xEoPuq9U75nEm9TJKKM2+2arMv1ZIa0FhIRIdtXu0fv90SYMACdHS3BMYzSbCQ+neffej65vLP
36xHaPMTHySDMBrzCYyT2Pot9IIhl4RcGkNuEkYJp5iSoZxcV3tAPXn/8fZT4f0wgBFI8EMBfOSu
Ljgv4Pr/DP10DOP+NUhA/+avu/5f0P6Hl8z+uUw93+1/gT4EMeS9ySgMYOyNUzRyGPV9MA3TJBue
j2Cc+knc//44Sb47MEriLZg/YwI4SVAMzvYS7svdBTeJvAeQQO4eTk96vd4vv/yC/2H6g2E+Rt6C
T0soYWb/RJFjfQcgKL0JHP90wuOfk808/DPGCDphMPCGKWZmGHCDKBzTlGg/nMAgjv2eMxieXI2g
c88lI5CgvyAXwR8peoobg8QZwTi7FnvDACRpBE/u5p+48P7kCo3lDTwHc/UaJsDzY+uEm/3cwcgD
PvcxHdswsjhdMUXJ4N4IT7YGFePt4r5/At9zvWS6uIB/PoYJdwkRl6CFPj9wksiJsiVoliwiPRN1
7rc/vr544GKQwIizECrO9gfuUvtv6CTWyghOOB6HwUcwhtzazzn3UmyLR/9bFcwHmYNPCeIokl28
Ours60sQew53hb5OIuAFSOzcyTqYqwvr65c/b4oenyHM/QOp7nsXBpjrmKkvxpCuLEG1bgXryrR0
yTJuLVGxxGvr8tq6uLTkW+tGsC4NSzIs9cK6Rtd1S0T3a5auFsG9SJNRiExouhsy0nfPtUjBxz/X
XoSlYfWvPp5vEcD8J870zRIuLe3GUoyTInowFX/GYAiL2L+kzFjLi56/wVJ2obt1oK8f7jhkotgA
HpA+Yh5ivjmZaa/YjBdjR2RDzskvooFTdKe/UYO5N7LAuWAavz05+QvJBVlhmqALCbCRE+AevWTE
iZmzQxAjDyLXjb7D2ge5PyfoPuielA0roxA5AYwYAfe/xUPvuaP3Qwf4mFU9BO3o7JedvTl39uZ+
OfuFSOn4+NuLD3fNnPyNbpmSJd1YFwJ2qRdX1o1pqTfIh1qCYgkX1sW1datbmmTdypaIvlItybQu
ryzjsnUnX9UrX3tDL0GatVDFd0j6AfcFTlLXy+znXfb8TeAgq4DRGGFPyXNvEdmFj5QR4ec9QC6L
WQWEfLyzFpr1Lvv18fGxt3bpKeD5wPhbc2NV9h8f76MfowfJAEW3+Q+Q13zg9l6OKhVcE5+vdTYG
8T5IA+SHImuUJJN3WS1kGYYgoI9Y7xRRFyo+Kj4/Ku589DGOZ09mBdjiUc0s8ejiSWEJqGaUwnf+
sKko8jPCUv7sOHS/T6ZohDh07mHSixMQuMBHEaCHlPUuu5hrrHUVQSzT/EYuDCwsrHccwuenn+Z/
3pIYVWo86KUXuBsx3Bg/vyBdQzUySLC9Wdy/+m96P7/9jwbAmxNyd+9NOHvKDVBETHEIg1EURm8U
Aw134booHscc8BEL3Smu01GNXwPIBy9G/osMv771JtMaPCunW1UlVxFzFGLj6k9l9FaFFEy/9R7D
6B5G33p/x6xQzcCOkrHfAsaPyCrCx0bg6z06R7rm03XRRqYZppGDkm58wwhEKKeOI4g9MWYgOzIK
EfnWc+K4JXJmtUdVE31+jJyPkRi6mGX8mXiaFYAvzJdoSN27EFnP3bYWWF+Ikr0TX0ahDV++Ar9d
X9iMBzHWDWzMDHxmwwD46+f/jCfQ+a//+Vf/f39520/C0I+b++2Wg04N70tGbbb7Y6bxs7kJNohF
tS2nkQyJ+A9SIqzlA5qbX83QQcQNfJv1i5vgX1tz6qGcPxWlQQCjfpp1l759H4PAG6D763vwBvpX
l4krlFR9uIGyEuIdGQ1sxAS2Sk+UewV0b5qlu0tAlM104b4hF+ed6jB4nrXIup7NHhcaPI5bmFtm
DG++cnM7k1wnDBL4lPS9MRhC20vGYNJ3shLwPb5ymV3hY+/fCGJmiZsHvg1TVK+MUJ7vI4xuPR/+
nn/e/IgkCFxDfLg3H1FR8ZYTdlBcmJ2giESUns2Q8nxsK7wSjMimzKggnQ/dd0DwAOL8C9JwmujH
dp5yb7AtWP3+qgk10Kqt+lRSa+fCYozdRnGiRJyOcIp1py2hbDL0tvDZIIquaMXfh6wU3bCFlqS9
dewlKwHRECa87aeQd8OkNwmGLcT4rfgcuXfk3pF7R+5R5V780C3uIXz2h3t8EPIeXmsUxJ7TNVa+
QK5zfH0xdmdK7e7V2IwS/ZJibVTsV83HmaWzB1jdN6zYOoIGsVLilVWMr65ULElwNkbcn/XB6WWQ
L+EwJXProG4EHrMh+Q4E4M3IvIIgvJl4yoH42HVnFZdriphGkGiKCsXufxND2NsY1oToV94xObLu
yLoj646sO7KuFOtsCNDIs394EE8Dh8/Ww/N+OBwyWelSDgV6OX+jnLkLaeju1KocixssKiibCRNA
ZLPq/EjDBLDW12eg3Vt+NUtJ08TzjyawQWrMlb4q6DUh0oBVoN3PBM+GmkRw4HvDEYpW01+dsXuO
ItiZ554rCjShrhq8qhsqr+iqwpu6A3gNigNoDBTX1dTNkD9/uqsIGvh++HgVRvG5eIbRmKQE0FjV
x8/TZBQGd07kTZKKqlzp0Q2OhSjraakmU8HVJkJTVVnrot6/Qq3Zf1PfH70X66RPeMcrsH10F/o0
Zp1HFUA/nPXsrXWed/KY6kLiZtALdAX9CaCT8HHk8LNRbR9voHZ7cWozU9kSaBzUFFV5sulNTrVt
Qk2JLwocs9Q+gq4X4bHDScJ7AQ4acQKSND6XBf0MY4VP/DqfYblyTleO6Wwc3B/CYNEQyVNCJQQq
gsIxp4Shdu4cckFhFtbb9zsb8XklDmgj/aVnB3d3Rxq2X3CrF1OEDGIQZvgdSiumVmuCmBBpu/eG
WG2RPmOUttcs8zGxs55//r7Ja5/KF6fSLfpflPSegP4T0RWMO7qUA0AfchDowwLI4uJKaXQq3y6K
o1P5WjyVNFQgoU+oREKfPfzRNURXlQY2L6iIMMW0Fd42XIEHpu1CW1AHhqhRiXSIdO7QGUdDD2UG
HYAytJ3tp0jOHKSyybnY/QbGKxACY/sozPiiOPvrmU6c1dr87PAyhqlnCUQoz9HWz6eop3rdTtja
zNhLqA3FeTCC8MlkmaTZ0SS9bIrLp89f33/6eFc3mggr7XAgi4ruKDyQXYNXoAR4w4E6LziqYkiS
6ww0nVJHQ+BYE8JKQE2miVpLvJvOb7WV+JJrLXWkpb0Rn9fWWup0k7vDrawOtuzryZRew6sRGnRa
S41nNfalQyKpsgkNQ+Z1F0ULxXUhDyRJ54EiOpouuOoAisfWUk3G0dBDmdJKnrZSz8Yrebqdam4c
NE4dB8fm1nsXy4gc2OGJB5MRtJ9ElFAeFqtoCCJCtpVSGz6F3kVpXBqW/CudcFODkuCKJi+4usIr
AoS8oeoCL7q2bSomMDTHoBZAWBPCSkDE5ilalQ5TKoiKpmSy5QBnBPk4CSMwhLPfEMr8PZzikZJJ
jA+RrxTqL4Lp7+j2ytG+Aiplgz0+UtpzIJ+fvx6vgVj15/wI+hN0E7WSuCYyuVbEK2qBj8Wuwbb9
avm0SXIHFjQyIr/amLQYUhWLNlhUtbxrrT/RtC5tqz9QTQ73EE6A7z0g5PDLm/kAPHjDrKvCrDDd
gULZKDXX2TjGf/j8gClewdzzHH4YAdeDQcJPQBQz2dBdBZHjHo8GlWEVRjOY5CaGzt7NHu0w5NJr
kRkuFabeJdrDXk8TMTZrrpCEXL+t0liNV4eL0wlmPypcAvcyj95hkAZ+CFzeG0RgzG75WklUWmFT
6byq1U4GbcRZ9ZUOqzu+lnaF4/7V3d1nFH6/pP4u62rmsUpa1FZZENh7Ut/ZkSCgIPMtEEGJHDfv
E76wq+zQJ5Q5JdMJnNvUfJ2ZrAgDU1N4DWiQVwxd5E0VmLytO84ACLYq2C4VZ1Bygs0Jw3tvlwoe
bmrfTjVQoHxs8v7agCspUglDem66kzYmwl5F2ftzzDq8Jn/v18gvKX27q9MrI0JlbrcuFs1nuMtC
3poex3AxEPI7AXIC5/ipq+zS2QQko/NT6ZZ6tIb4xS8w5sHE63vIF0YDgLBjVoNV5QdDddnNoBKh
h+RMvOs6CjA1l5cB1HlFVQwemILOO4YMTFFzRUHZjyUFZQihL2hymx7blAtTKggJRT6ELu8Wv7BV
7b7Ax8jLXlAdwR8puoTfsj1aRgMBeH/94TOIYhhhPJJw+Vs0pOf6Ut/37Plnyg3h54cRsBpJZ1WM
D7yvXFdxCqCvyIMd2GKBUoJfTwXJSJcFf5dzjQFMnFH+Nw/ivImZr+yhn5DtgH08arux4e/gMNX1
wk1g79AS2ut3ikHSpncvcpBi1jQSZht+5sAcDGN76ZI/q15ek7LuVlxofd85y/15EEVgaqeDAYz4
lV40Uzsshc1xVRZRiynFc2YK3RybGktua6S2f+Xr3GktAq6R8B63AxRx75XtCqifSs8Nz/GRtrHy
+i+BltX2UhOo863Ira5GaCM4kOYOw3WCTHaPUHYQ2WO5huMuzPMAB/Gyo5azlpc+g0FyUhfoNiWg
Abh+qlFery6CaZ79UE5+Wg2KQxiOYRJN+9ef/vgDJJH3xA+iEN0ZZj7UzRNUBvPTVRA5pop1daNM
s+oQE8XO0L1vu5uqmCWDRVLE0Dlum61gGcWROgzidIwBsXlT1U7oFXdqVj7Sss1VJ7QRZ7Q2b0/m
EuqVNHtcYrw0ploJ5OfQQ7W3IMhlN72QqVUqYk+haKmIAeF0eZXtx4UDRLOMVeZSLcFrgi25hWNx
ZkO5txaUSU0W+l7nhKEaKlD3UKKqXCm5xaU2iw7z7OaSzCW4MXR/NtscyJmL1QVKfjNITaV6zb2g
QifU4k6i6iLck5OahaKTmm1BGgi2LfJQNlD9ZQ9sHsiaxosSEA3ZNHVoS6/9iOvajCOuhDKbV62U
oe1sP0VC9e1ppN8U8wrkwDzU7vcEQvVgublLmY/Fu16cpJENXV5k3SfdgEHFXmk4GMROBGHAOyB4
ADHOB67wUounhEePDn3yZLU2UVKJ5CqVIp0VHzXV9dj9Kdnb22BADNdi1MGgVmuipQmuAjw6bwwt
9FnKOaTOvhYrRzr/opuLxQkweL1sXiOakYRZcrxVQsu5S6n1nEuqdZJwWR/XgVX923CiPB9FvK93
4CtT2249st2Au8MkGaxYao7H1qpkcSH/vYenopModZAg6Lu9ytjs48QXQ53fwzPnaCYZ3ckEd+k1
VU9GCRsymVsjXCqkUHLtQ0y7152oQnEHG0yVvNn+1SLNNfrYW6ubDcmt54Uypd5aB3YfbcapHddw
XJHRaDX+C8eVRCCIBzD6Gr7H73659JIxmLRQBGzG43Wn/7V3WsycFBxPkmlLvaxn2N07laRqivEK
TqGvYJMsi4WmWJAt6mpic5xaI7OzsvppqBQdSbcS4mdvyz4VLgl7T4s7AjY/iSB+kUR/DF0P8CBJ
Is9OEwZHyWwDTHmSZQ2DpUPkf6Qggr1JMPw1Q+s78P3joR/VzHCbXCvtQSknHurYNPKHtcHvTmGj
aOecyK6Y+iMNE9DlnU47KK84BT2XJJ94Yy8Y9iO81TGKy+7uLM3IEmgR8J/bqHl9J4psfpHUTnEd
O6DEE76FhbaQ8JWDvT8L5bbZOfOXAL/mV+jV3ztGwgft0IayOe+L5583TyU83s3oJR6Md2oIoZf8
kePL9qG65Kobv5KxGdM6W3cU5X3xJAxiyIcTgHx8qTNOy2ZJ9Nwupf7XsjLT1RAytl2bf5tqgE26
UON0g0pOkGp43omQC5DY/o7D4NcYjBH1kTf0Al48E3qmbpiipCiGKpmKLppsi40aCLJgJLkqt27J
WqY87GDBwjp32++zJ8rXJpu8FsOlus1QqJ/1NoKfwaYjUQb2Ry0xKuOHnSiM42VHLIiCrGqCKemS
qhmyJhhnE28Cz0cQuDB6c+Gg52Me71iJQp+/wJu1+U/Z4+9+ftt6WCFLDtUgtI/6WhZMc2uuIPMg
9X0kaZRAyKohqZKoSYqmmBXk/H+zu75mQFa/xaO3r9cMaOxK6vro+a4DIheRq8iqLhmqIpqqYiiS
TojcDvgpFkR2RaBh4E95/MbKKdZg2VRMUTYQwZJpmBIhagspfVurf5Cfc8LjDZm0Z7oarVHbgC7R
CrcLQuyKGo89FwlqwQNJMRVRkWTNFEXNlEyVEBPgExhPfNhDqfS3Yo58W76nfVfWUb6wUJsSiw6C
MNm+LoTg4pjdaFBdgHB8F1/ZfHjdZ9P0Uyir0ExTF0xT1FVV08mb47uvUQqrO/bdj72AwawDU0lA
7fjZQ5JrZzLVZASjWfcgRjwWBUlUFF0xRFmRZZlYbl5IbQ/j/O3dU9VUltTs2Tx05KofoLuB30ue
ktYVv8NSYZlk4He8tLHktgBujRpjp5p1KIKuK5wqIkx0RddEU1NQsU5d33a70KctrrdzBrtn/GNh
1BvM4dFLRvwY8QMMYQ/EXvkds/H7uH4nYQcSHTJNB2AIMIi9xHuASLc0TVc0RVAEVHeKgkxKt37/
+vUzIvjDp6uLD79/uvtKIQjXmt5olfyWDSNMk5K2sTwXuXzMd/G5xQtqCs4tXqNp7QDjhWBO5dvF
ecErKxtOJQ35P9OUVdNQNM1E/xkqUaMmUnpXOoa6hq7LgsR1XCit94u88fD7MAzd7zjhormQoiwy
8cNwBy77tceoIJGlVtcT2QdUFeFKfcEVdesKQnOVY4RPhWDToRyo2Kmd1Y8z1NKV0pi2mFkMQWS3
mW0vw6etZHWjr9gw+q6uysnCrynIuGspaqIoSoquoos4dT2Vr3cnr6fSVfkp/IpvjWmYp3SRU0fj
6qwHf7FcbV3YRNbeURJUna29+yfbRnGPpHwr7l/emmvFmTssU240nF3YisUAEVq65ClFVjL1YStU
uel4jDfb/JrJEyWkzr0P37go03nb3tT/upS7Uye1GmPxasc8soqygJcxqaaKF9+ZlSPrqX61uYmG
7tixdrSSMFeNhZIoFUHhait6F4rINQ/AROP3K8NkrP1dmdpfof/sJfUVAvFWujuyXpwtuSRTkyQC
zj2lGF7JlawhQsmVtOoL5qvQM38gG4ooSaqqGLIsq7qiEHcIh1q0M2dj55zq0naGF/QTczU/d8it
MiK4omNdPxQJFbgwcIHtw5sHGCSzAyyprxwqj0ZZ+tqy7OddD5ltK4aqGpqh6JphyJpiEDftrVOg
B+o9u8XjzrnWlY0368wh5moYLDpt5G/b5ELXndTywvB8aYOiC5KgmWhoWTEUlbgJLS3gPlWvdtlU
fkudPUv75cj2Tw5Und1+vMigfK5Cx72v7epYVxlirm1VVYo9Hf6iU1sL94JLjY6f7sCmNTa20Rmn
rGsySh5MUTNEyRAMnapTlq6yFeWNUtKygxTAfSVx9jWJtHP1yZprXpcFDdf8bjfztm1NrAins1Hw
8Fjd+XbQ8samWYovmZppiigVEWRR19h2K7LNTnla//QqW0d7K4/utZnW9+ytMZJuj2XOOCa7n5s1
ojrNp4bzBdk6uVanCgox2L+wIMuqqoiGoRuKKOpKG16oZIr5VCpRfS3h49Dk1vkws8ZwBt6zTGLa
6d31B8TLrjv21e3WmYeQDEnVNB1VXoIiKoIpE/cReO/1gqDFDuzDTuQ7yOjOuc4Xe/9fcIiYxXf0
9IPusOKwXuZdKglv5qWRheVfZ95gcQPyAfNbkF2fSurzberqjZK6dCv65TpzR+guFVuwim+f/fPs
mvJv83wo+2ruotR89DU3tXI1nv3+7K6y0W7HqZ94Ex/yRXtb82eQ8xJUQxckTZNMVZYEXZDbc9uv
nfPs57j3ak6vLVufKVGuQpkCrajPs/IsqU6R4qyqzYrSlFCZPTTV7jKOxasJWR0cs4MB3dKbbtDP
MmGO+0OHmoMthsXIsc5GsyFwMnHPccgv8JMIDnxvOMoUwBm750OYnHnuuS1IA8G2RR7Khs4r9sDm
gaxpvCgB0ZBNU4e2REVB17lGA/EdmjUDibUp++sZ1rP2DoDnpxGFl49sNZSzBm6C3jnCVTFuza+3
m7qKNFPX5YMBFrmrKOiarhqmopq6YMj6DIO87ZGNVKr1gZ9pda/VUW5N5MYijpZymVE4zumdnV+R
hJmnyH/bMTW4DAx/DQJvnIkz7i8+8uPQhf7S73jvJPrecVLE+PzSBEYItxD9k0w78TYWdkm8SD6J
X9feTbo719yyekvL22xILpqqbY3jq4nqcAn4bOvF/VK1TtaZIqk6a5VxxWx7zUelMeFYZ945tZXY
swJS9+llnVSp28cpmo0KRzT8HIuyEsn9bCweYK2C7iLXV0RDE/+fvT9vchtJ8kXR/+dT6B4z1e2+
VlASK8kxk9VTqdRT9bqrpVuqPjXP7JjJQDKYiRaTYAOgpGybD/8CJDOTC5bY3MMB4sxpVSqVyfDw
iPDl59toFPjhKHK9Sahl6u++aI5S735SKuIyOH7D3ai9G92v+Gywyssf2F8s4Wny2yJZ5cIt0yXF
8KPUdVZJXoDwoWHeOmQHeRPt51t4yXc2S9blnWfLJX+A+c3+v/w+3m/SMvEjXdMaz6qo2g35tERC
tsCeZIXkrZG7Cn7ly3Z5+1Yo+vpn23cSEQrTlIy7vzbKjBYk5kTmk7Gin4g+UzMEZIFBOE5THdI7
La2pHXj06mipBouBwOU0cxKolBo2Z64NG+6IRofym0yJ1Ec9SkZGvf/w+y/v//6xPi/k+NY+fv1p
35n/tT8afyef3bRf4gw6rkg/4W9gd9ve8hPij6BEh+f3C/7VZss/JkrKL6NxzEbj8cKJmBs6wSJy
ndk0DJyZN/L9qbf0GFuA6dgr4F0XnCL04MWFLKyUhEPLyavhPpTW+fD+4++DZJa+teMXfWccllj2
NQyHqoTSp82/dr8rk0v5tsvkUpEtf9fNk/puzm9y8doFuepmA7lngvW7S7FqrY2tkLU1XLjjC0cO
wrKUnmD9VgsgBc3qarjXYoIUf8I2VJBNMEBKNuIAnEYjDNLZR5MNkwoeWzFH7yDT6OlqX9GUPPir
+5I5qWj+H/sqO329f0lCrxIHBfbb3Sp32F2LCbbP7GGZlfVzZ3LtS7zaMr7q+mnKLKg9a4xKyQ6C
LZxGKtGtXd3a6+iYHPhnfh2J0uLvgJRU1DfpUYxSQ9w1Lw4NGrImb1ArFsFfaZk5xK1jlremdYKi
IhWUwEuclk+ypFxs7rwCpToq3t9NmA/cSTAe+9F4Go6jyI8i6zhaK4Wk+HmC8ZXkep43CbzICzip
oetOgy6VWBndDdo5acng9AvLVvFmU4INjz+ZE7fA62nWtccr7sRhJPSY7yCMpuEkCiPXG8nA1f9D
fv41wh5JSa2jebSuO5mG/jgYTaNpNBpHpjZNQJqh7LInnpShOimJ0zmZ0cmPhD89/ubGoTsOoolr
6HxkI7zYrhpyIKQbxwP6pKj4fvU6XCNc1EWaUdAERcqlcwBOR24F7ngUjrzAjabT0BuHgaFnczQJ
6/9Uv6H/Q2syJ1G+kLLJznjkTn3fD3wvnEwmURQAsGg/VOF/1Ea1/U+nZuL1mLek7vD5jJFxMPZd
1/fHE251hx6k1bCbMPJ/yE4EI8sZ0vfHdcMwLOdWTiN/7IXTCJxP7S+Q9LSfrjOwG5hhkcXrvPxg
tnAWSV7E6zkjDhnWkgyAGF7MW5n6o0nZGtgbTSbmsBeiY2es7h7+/SB3lq/qOu24u2qriRtOvChy
R2M34F/0qqG++LZJ6e9qsr9TPiv42VAthA55MoCqBy5ppkFtPn8ki/NSqu5+Y0iRtwbNqV0PKjCu
xuW2Nj3xJMi/H2TrTcajKCjtlDAMpuF19wwG5ZTN4Eat7CP6QpSGPZ6nsJyfWJfycUB2RX2Mbpku
sXtrkVsmHoWjIJp6/EvXeDsFqeSTbokuZCbS9EIOaT3nLDBWaUsjeQl3u9Slx2PSz34qdMD/DLmY
DL2RO/Wn5juy9NX0QWcjTQlylEJ2wQRj74qSoYG0YUnUWcsA/ZLkyawsRnggjtGfEUpd0j5niO2E
xDQMx+E0Gk+jMPTHAIbGFbUeI8pjmjL6JFPxnEPWegVhC26bXKAuqY7Tf/Yojh9E/P8Fo7E78aLQ
9Y0/pKM8nZfh27aXtf8RlZS9bomzDh5En/L7+94jyGqY68x6o54RrUSu5WCLDM3KivQsV/RCQhnT
paeSqVq1lv9AKpO7G2zqnEEyCidRMI2mU+5nR5PQB+gdfMxH7+0u207LGxD9kIp1r8S4ua5Dpekc
nompyyOBkFPft/OwKf9fch2yOqGPzCYPyh0ngO+b0ocTl+vmMPQm7iiYIjel3+WE772qb1cJ4HX2
PGyl4ifrgmXLuBQxb3bfjWcrdnAUmLNOnVmWft1lr9hql6dGIUCiffUt++7yjsHif493imzxVUf4
1D3dEk19N+Te3mgc+WVbABuyTNBi/SZk916LEurdwRENTZ3Jm3O2I8gbESuXdEljn5hJqlm0oZY/
WkEFa5ndJ0V6e7SG3yLX41bAaOR6Za874zKxLNl72tBT4d5LklOg1Sb9mom7qNnX+kNQr+zCdbTN
EsDtAAnHAdCpXj5wXpN8cfeMKU+iVdl0WKGX+vi8t293mbNI51yC2ZjeXkUHqfehxTcz87J306Ef
fyw8/cFy1PXTj+6mVO8HSz+Olj4Mlz4bL/04YPrwT89jtqsHbZ+P2j4btl09bvuoInr/O6W76HvB
1A+DSRRMXM8NQW7clV1Wc3PZ+3vPbGHQg5Qd+AbDN+3Hfni/+9e7e7snL/f53R692qo3e/piT96r
wGvF0gnmhCRZvvWuZU8LE0hdHRLbJxlppRVVhYqgNh7Wd+o3FXHKcDPBdqWLXfPVhTRfjzsyPNmv
/tifRFNvMhlPSkDBO/zDDtXbfZAQslf+jtXC4uHYNI6tAy9OxBZyzdtC57yv4fwj30W5Tv+p9I7f
dG1W15TRdsq8StZdc48sDIYNo3Vo90JUs1eP78l3l7fEVnsuupN4IFko4FJhBvc7Nu1Vcy/4YWft
Uk9DHQQ1iRwcmEMnwP1nOXH5qNniyZ8JvMnUc8fe1J/60Sga+1oOze6L5kyT3U9KRZYG73a4HPWX
w37c76kQvZxjDT48WpyMDspZAt5vxVuoewkK3vDL9hfwVij8NOAYvTnJK0NILo6l+lCGjnDXw35a
wxVl2PddBfP63keOOoP0smYv7CD+3Zt52Yl+ZT/OfUaLbpS7cJJ1UiRxkWa/P2yYM89z+D0KU0Gq
Agoa2jo7WSvzbkg1aJNO/7hlxRMr264xDpwmc6a0wUqZnSjl7lweXq9ev7DMM2DJ8M8uEQD+6Sx/
lW9ncOGiLs2dMnMC4uZSxSlQuiOHr15t1rc/zOL559usPBiHv8DbstDJHY+jSTkNNhiPypCRJZtT
lkw8DvfC5qiRvIPtgRhtk2Q/doBS5XaIP2v+3n5I7ktulmPOR+5oPJpOgpEXTMaTsW2Z00gcuiwX
stD4vxTZds4XIeKqnhFk2l9lK3bP1gUBn/WYEnqdO4Zm3gbcn7O7TCBdQ50sJI9RhjZJ2fJu1+x7
DwreLNgqfiAh8mrIghMJ1+kTdk8QKh6vVYfzWKmB5v2Zo6RXkATkrtE0VI1EJKSntCiEszhUyFKA
VZL7WyfP5uUkqHIa6DQcuRH/ahoFFECfeurQHpes07MfQ0LDATuixVhFbNX55KzYwXGeO/bHbhRF
rhv4rkfoBtVQaOUWCVK+SebFNtv3nYoif1RCnaMgiIKIAl/rqcPlqZ7JbKHIhl749ELZ7LI6+HfN
CzH6Yc4jkWnbAhCmReH55l9un8Io/M1OvLHre940GLkBBVhDdOc2vPqT1yFTFWXshChrrWS92RbP
ETpusY2nQTj2R8EkDHwaJkEziVS5+8/8h3yXeVoO3J56U9f3A07XaDxyPd82XxuJo24RDLg6ES/3
RLSShQgUqMRFWcQJPGbhjMXzXZr6I6n7bzibjC1Xye3dLnF9fr94fct9qWTxOhrHbDQeL5yIuaET
LCLXmU3DwJl5I9+fekuPsQVIYr1CIHeVrD87efGwYvkd27mCIzcKx17kj8No6nnhZAoqQSF423Jr
DkuWmfK7P57Xek7cXmbp/T57+zF5O901idr/zWg+lORpkIV3lnyd/I4GvHNEi3l4p/zUH5JdSWGZ
xB9Fk4gfwDgaj8fT0LOODraQZ+X+iDy5fLsreIC/QLLE9CdtwUrjFcoxmGNBQSlBQJosQKxFlBbZ
aql09k/+0kqvaDyZTsPpZOqFI991x2M6eN82i2HgPpXysnqG4cezTTC0V4UMskpFuDYZpHeCsaFT
3Cp3Sl7wC7VMWxNokJ3zMw5inuA5DVV8skKPlkY1f8klxB+7n+2qZv1gPA7Gk3HgTtxoMvaty+U6
wtCk8of3Hxsc6uPq+sevP+VFXGzz1/5o/F11xb3rjV9x7/OVW9HHe7/EWaF9hd/+0v/Lrtj5Lb8q
L/2fygGZ3JPnX222/GOipPwyXsyXs0XsOYuJHzgBCxdOHM0WjuvHQeSHozAOpkBNCMYv+s4448+5
4bG9//D7L+///lEO2Hna5Wv3uxLk4fsrQR6RvX3XzSP5bs6vbPHahcP/FOP+ffcpu5MKeGwjk4X6
pYgcZIOUbKBjGNq8OArx6y/JgqVl5Nr1onEw8d1wEo2m44lLIbheSxwRO3F4g+D6ubw5wyFYFIS+
6XAXW1AKeB2o0evzRDTV006v+Vbhu2TF/E60qQ5m8OBwFwgUBekAxvsO2WSaFoGyFi+YI7IB6Urv
55egkPqpcS+GqvLuDbmovjsAZaIAVcD9zDA8elAEVAb92SOokJDo4SCV3z5LeqrwlDTDcCd1wJyv
vZMVlu9U6INsDiBIo6yHlxDxNJMF1BzZHePKlMWA83sSuN5kMvH9YBRZj/DWUmb/rsB22ehAgiL9
wslkQSORT58Ok660CDVSOiYt7lhGoOPZMx3m+62fWg3rxU80+zudUEbPPx86BZu2G5/vPF27TJZG
WB9KkBp562z1eKpErMUTeswX4/wz/2E/7aTshFOO7xyPxqMR/zOIxgRKf2tpw7w/narGxdMF3YF/
jtUpWchFnkgsaFOYMmHdxL6wdeHkRcbi+zJEf/j77gf4Y59E41EYBaNxFE59NwhBkgmCUfACimDr
0qmLU2rOdB2cXCZdUSfDhd/Y14xfm/Xti4z9a8u/9WITF3fHRPKFf/npbx/iLN/NM3tRpMf/yj+S
L+fdrJLZ49cyprrmrx/tlKRmqt4e8hFX0HXCNxvvzlo5KxbeZIQfrXp1maxW9LCHJ6qubUpaNRd6
lgVG/vUpnIIdp0L7hlTKnnRNaSLkCTXAaKzMlD0LYpH4HLmha5ghY+jkyhMJ9SjQhGMpiRM2dNTt
i05WnSuGZLgZJQ/KdtAYfib2LCn1EjuhBt6IeJveb7YFW3wsu8CRtCMuKcSZ4kMgBNGbiK70xael
ts30xzJr40j1yeol6FApG4ahqXaNHckTsWZQqNwcife5ibc5DXV6RMrggpNXgs+H1dlBY6J7QNbi
glTpGKsJ//fddz8WcVbQM6Yr6AM2pfuuaztgJVUcOkGNrEwlvpEjS6q0vqaSY/1MCTAM8cTRnLDM
HKIYVuwhoUS6nmVjCu4a24ASz2kcHIhuZwCfCT1SEQsl2ixaCTmMhcCNj4LRMROeyTFvK3COslWy
ZtSqTeroIluB1v+cK2BL5PmWU1PMspShmDCCRPUqQlEnFCgnpiuYTv3MaqdsoCldLPh0eFNkQVUP
KNGnYgHN4vnn30jZZCcUDcBFX42Sk2OmZpcoEIdimojTJfbyfkrn27IrNp287AaKBlmA2WCWby5e
ACD6pERSw22z+uq16YIUlUDEtVxCrddvua3s4COInjIlQ0CWKkCDSZAUnZHh1kaM6c46tzLiy5jl
9eTocQLyItvOizSjYH/V0iUJlJ+w9mhSfJxl3JzdLpcs+5Kwr846PTpg3OHWMlRRzuHvZxGUrMWQ
l+kt5e2lMG6i9TV1LV1Sb0PwhrwmXcr3jJ5vqjR6WG6kcs+rLk3MuJbRLdijic3TpjFKGowY3ZnS
xggbmgx21Ds9lfSUPFQVygC9VAlyjM33C1wWeaN47IxivkowC2MnDkaMfxUxbxZxJ3A+pT+lUGQX
cEIr0rW+/8oelll8z/apZKXk3aR5Yjeo2EjTEErAkAyNR3AFmdHq+1e54r+xePF+vXrg62weHJtw
khk1p849VSHRzMGe5Ud2oOMDlmRqPnf7Bp95alEEngahiiqeBILeQpXm2OFdmr5zny7Y6ubp+w7b
rZXfxPMi+bJrOI1ve0mSBsEHbvnuOpWV/xSvn3+eCC8aybuSRqwtr4NUO3BDIRljw2J7ahWbU7fm
J1ECEgtkJZvRslc/3t6suHgm+fPhvJz28Arc/ZFU1Z0IUprck2H1Z5I0rRcnLD4vbikxfT90YQG8
mI1mKr5/CUYkklhVp1TFwdhmWTmziJAHWEFU99o3NUk0KbS1x8KJtiVQcQ3t2wDKRBm5pQLP0IKw
lGKIOh71uM5TxwtqgFk1gUPksj/VRyJvlBCe343wiGq0wXrYrkYe7htmwyPaZhxLFIe5WjKCoRTG
zktG3yJCIwrspFbAegT87jYFA6ZbA+QUTkgcKT9lGImb1QW/76gZ+7532uD40QOyGoQxjJ9VfStI
OlravMHw2VWJ7Dl03NdMrJr3Q87H0CETx1dToFDB2C2nE5BNtqklDjQFa3duJDOwzigbkKSeGj21
956c4Y1qSqixpSu52fj2Ixo/ccGlMylJDq1Rog8bsJAhUsnPekIU3hKsNashbhhaRCgjr+UCb+7i
nOX8FxZOXraDzjXQnTr5uYofJG1nZB+i5h4Tl+909oPokKpsTc+bqH4hBpAu2ecytGTqddZO7bkT
g1M16QR2CZWIG6yRDvsx1fKZnDujQya2V6NAq5L/sMnSstXk7sE6j6n4fN3sdtfjzBmNXELejii1
MAWfGfvCMroYdAN5oCh0ntxvVuw58O7wU7rNbIyg0iL0OotiRV9UV4pllarfOge84vjkRu6G/Tow
jG2AONrAb3OIq9GNqzXocmK+qDalGI69KpGdVfhalpCV1qIKabXX4L/bTKnVuCU23HsT5GK7+boP
0bxJ4ZmPPuWMX9A75hR8Gf7l4cqmS2A3mhYw4QHHLMSZbBAMKKPuTpHF67z85cefePw7WxCBAuTI
7DMQoH97etblpxPpT4ZOB9XkNnmjbNdLKvRP68A97lA7Z1H12rURNxDbtN23DmMTluA2j3AxEIJf
Tqt3ZPfxPjmzlMCjB6cezDDBY7Up888gxTre5GHGGby3ruv2NhGq5/HWawy++ON3ckJZEhdkUU5b
7EBFagfc9qbbTyxgZJBmVD9WmdwT9n526p/x4jBY0ikd5vh02jmsZFGl6irqOpVSSobcUn2H7EKP
EU80UaQXB1swykwQ/1uOQhsJ450qeVCV6bA1BCBUKfgN282Cf1V6wly37zu/sEOqNRnfpo1GQLfm
9x1qLxMKbjpYtmIodg0kinaFtVfIPuvRnVMJkyteQJL9stpePh33CJBSGjRazmrtiEAiPSynN2Zb
gxijaM0fCXR7RqU2z9DcMzR2AdB0fLuEhpOXA8n5J1sfqw5NONwkdWXEsSYldZ6x/RezOE/mNkBH
ccL6gzsSUjTi7EeW5oYIU7t8uEOOlMnqV9KqMhtIlaliP1T1aTaiSzxWm4g0Icd8Dpd0EW2A1m1X
RJj7NBSEJF06N2+7Tv61ZU7GVvsfv0s29J5HHZGDNYV4G+sOAcMZxSB1RybMCbVsbx7P75iTF2kW
37LD3/61TYv4Vbx+AH3+5J76oAKRnzXRJwx0658go0dJscnSDcuKB0IPoZnGQeXhXcXmk6BhKmrQ
qHk78yLO9j4b7VdUR+egZXDvZ905UFI+mtQq3dSy7egsnn92MpwUHnW6hheDdxMvuU9D30jSJXHz
npLoHhPWrb+FaoqGVwD9Cqr5bvP+K1Akcc+e8roPJtyzFjr82GKLNn3dJKWDrwL9UuTOw+YLMkip
+n2l9n4GfWLjlVB7C0Zv/FO1H6n4fz1Vw+2Hvv31vLf5BhSpOr5zj4QdNMhNVmqVpEjiIs1+f9hw
H36XTVcuuF0hvAEFejow7exiV0+fyfdXFiLyHbL8Vb6dXWdRqMKpIyBeYFSp3ApkWoXpPHwg8JBR
MRKo8oifIAU+nZBBiVfnn/3tflUSl7F/bfkvE1A6FQT1KuVShQFkZ4IYUrZIOkSJs4ofTq97KqoK
lGW1rpggdjmeWLuIi5gTl65/+HaXOXH+sJ5/N3o1Df3xxPPCIHJ9152Els5djLguMPZAejiaRP7I
C0bj0TjyJi4JvtbQRlmYvfqaZp9ZJmUN/LH7ldy4QXBMy1UZAscb72G1hdntS34otmtQS4b9O9LV
Z/HP3IzDCAoJ2bTBTDDqXOksWTG/s/16nqggyCBYL8C6lWz08T2bSbsD5TaSG0bTkT/xgih0/XEw
nVg34Gopo8nIYzue2+/ueDL1wmkYlNY8KSfjnDi67Hz0igLPDabRZBpGnj+aBpRci3PaSGnYw1f8
035I7kvTcN8zIud0++HIm/rRaDodjcZje36wFI0klM6afSt+TjcfsrRI5+nKCmxbRYOWgyYa6NNr
nm3PGJTkZw+jkxq+YdVtA80HMEqDzKlToMusWyJNn6wuLO2JiTcZB+FoOgoj37Nv7FySZJtvl59n
F+VroKbvOF/D1q8D6dNigPTH4nvhtYRQuCvdfSAD5ofCKnBb1JJdBAMScB8xKGOmYeBH/ih0oykB
4+OcJCL3asOy3ZCtdVn//a1g6xxn7oocKf0ctkLW8a05Cch5qHL3wfSwU0qWmOq2kbUcGJkN1w+P
SgX57k5GbhBw4T4J3LHvBxZS/I7pCd0ppyTwp4Hvu5HnmvxsL/Im0WQ84g71eDwxHBTC08jnJ0bx
rTYdKXV6z68J5ecbBhN/MvLciR9OosCbWn69JVIVcd74vh+OR+PA7GdPA357QtcbhWEQeN18vecc
Iv94zy4YdXrPbwnlx1u6VW7oT4Ipl4uT6dTkZ498zwsnfjQNx5OxF4YdfS4X26B+/87PlPL98zx/
Op5wUeRxxz50fQLnfU4S6ec7Hvnh1J+4oedNJr5vNgzFhZgX+GMv4JaIGwbdfL4X2yD/fM/OlPL9
m3hjNyjzybiyc8fTMYHzPieJMvumAZcz3jQKvWgSjgyzT8GtCydj1/W5kTV1+QUcG5Umk7JYxPOi
cTgqFWnYTWlyfmLUhckF26kTfH4HKT9f1+eqZTJxp6No7Hsjn0KmxgVNtL2PUtlNfC6xx9FoRCHY
dE4SaeCUkxpMR/yNT0uax5Ft4DQMpuPA831/GkXTwKg1OppEEz+IxuMwjIJgOnWNC55zZvY27KLH
d/Jo0dklJPKAaz/WbuJaO1F9z19r58B1pLGZ4IPqp+On5LTRQ+gedf4NDZlumBxTykFBfWREb9iJ
mz8NufXP/783mYahH1o2rLlhGoVuMPW4Yzx1J67ZqObYGwdloMDzx97E6yowc3ZiyFdM0bi+ONdO
kH12Yci/5nDijbh7N/Wno2gUebbzi/xg7PsTzqLI50wcG425hpHnue50FHqh63leR2M25wfWiVdx
zvpOEH1+F8m/Zd+NAp+z1+PC0o9czyie602n3jgcT7wJZ4rvdTU575RDnbiH56wnfw8nbuROvWjC
5dRkPLKe9RYGnIbJ1PfH0TgyHLkLwmgS+NPJeMLl8dTt5qs4P69uqJTTU+0EzefXhfxLjnyP+w6u
G40no4ATTSFD84wk8jx0Q3c0nrrhZOJyUyI0m4g0HZX9dUbTgDsdozCamv3sSTDx+DMbhT53Ibvc
pULvwDohW85vQkeIPrli5N+yx32BsReV6cuBy/kdUsjJPKeJPuYwdqelxeG7Pn9iAYXMuHOS6GsV
3526Y98b+9MwdMMoNCr53cgLvGAcuNMwGje1lFMByCZuELqRH7qTyfia1Mr5iXVDQp9dhY6AsKd3
jFYM6ulbLMvSzE5VfBUNQzl83sOhT1UnbWfQkzolOHFnafoku05u1rc/zPONE69W6Ve2+I6bbn4w
9aa+7464bhiPPc92Y0wBEsnw9Vngz/mnOgu2TtjCKtS4o+ORdZtkw17fsXjBsj+9mfMfzJ236brI
0pXzpvwR532W3Cbr7/+fP1u3TY74R+pVa3PW9l09+rzkdp1mbGFX2R8TMWj7Xmv746O2rO7lSUHW
98IEKmjT5P72SJuGfjQZTUdTzx15QURD3zdTaJ2tzx+Yl16Zs5tQbVWMntMxSNI+S9Lz07YrTNWo
wZWnUjQK05fsR9O7Fp5+LRlEeeTR4JGHzqNu1gjUXq9rKK7R2Px11UVAMuok79rz3XDqe2NvPPVH
09Bw0odKOH40isbetGxQVzYXMJo/EQXjKIom02gU+RNvPLG81/Go7GvCze+JH44n/rijdbEXV4ic
wdN4wUhTe35jSRN7fp+pCj3OzcCfhNzpdcv8GQoZCeckUWWd63n8rYfTIJiMQ9ePXAqh9nOaDDDP
A1G2I5/LSf5/UTSejIPx2GhD3YAzYMRfHv/v2B1PDGtyPHVywSSc41TM8T1nOtW7Nw7csEyj5dp6
6vshhVS2c5Kosi4Ko3BSpspPwvE4iCj0NjoniSzrSnUW+YE39kdjP/AosO6MJLKsm7jupBz1URYC
RSQe7DlJZGUdlyYjTsjUHbtlExzLbh63hLlmiPyyB09p5VEQvWccoqxiz9lH9dZ5YSmMo7FbNhSn
8WDPSaLKOn/KSeSUuNG0NKYoOGTnJJH1KQLfn044kSN/7PlBQMGCPyOJ7K0rzaco8KdTl5Pskhjw
dUYS2VtX1iiPR9yAcr0gCMcUYIALmui6YuNwyp8H18CTaTgm0evzjCQCrDtHLhW6A8KkglDtCDjk
goDkgoi2rbOafiFNJGzGipFWicf82n/g8ypWY7sVxNBi2Gm3h1HZzcbnrnvI5bvZIVCRN/Ld8XRa
VqJy38z2vKvRaOKGE28ynY7GI6+j7TnOmUpPfjXxnDa154+BnJzrZwJLhcA0HdEt437+yC0RrWDs
U8CZz0mizcBxNAnCyHVH7risXA7Njk/yvSCaBmNv7LluZF0uK3Whcb0wdCcB98v5Foy7X2fcx7wr
iOOnTq8B5iaVmw+dHDu9J8yPji2TteFKyIBbHZLr05Zu0XjKb91oVA7qnfLHRsHMOyOJNgM9L5qW
44im48mYm6Yjo80myzSAstx4NPHCaOIFfvcUxKH9RBhwszIox4OQmN54dmb0Be7FTegAyecnb+sh
z+P5HXPyIs3iW3b4W8bu0y98qa/JHKGITogCUchU0meeBD7nchCMIy/0AhJu/ClJtOV74Lsed1Om
Za5x4I4oxK7PSUJnYF9A+9Pk97HHrY7xdFKOQ/Yj6+McvLJnkz8pLaBRMJkQatOuGE8QEoIIGL1B
OjRPlL4Ov3gVNHT488deHt8hympeqSsZbdz+mfgj15uUk0ptyxQ3cr1RGIWjiT8OTPcjb7Z5RE+M
6Nu9OMkOPN2zw6ZtZvmuH46CyPVHIy5v3KnRaJw3CYJpOI1Gvhv60aijMxvOd0H/Cl4caidhQoWn
txt9NB6Vjfn96dh++Spx2FJRwJ1zmcztKpycZUm8Sv4dF0m6tpKZdUkBvZQss3Ff7EYQlAazXp62
hiOFSgFOTpgkdceUlf8cr5P73a/mN09fOvfpgq2O/l48bDi58WKR7P5aZkFsspT/p3iAlwDGqOxn
4qYkex454qySXHmR8gfm6f09v3DEOu8YuyyUJtZriVQcjmg+2vNb2YU9nTwCEgSbOIDdX6GT0HSJ
6zq3F0k+z1jBnn+HnBqtIbE/OlTTsu+rRqw5d4TgBSah6BJdhVqN15usC5Zt0lVM315vIXUQOFoC
B8VTQBZRLTfmWi13HbbYE4yAVNt1OnQ2NhjydljuLeYp/4xvxQ3/4Fs2S4r7eHPDFXdcsF/K7/y4
+46zyOKvu78DalM1WkipS2W9oLZ3uF7Ku1/eC8Cbebz+Euf7fwDR9zWbB3Eu8HUbwNG2PZk2xQVJ
UvWlwb73VVTMc6DHXrMY9p53n8ZVTlxwpbAux6DAbPdynWGnSDtNb78Y3mn0omadYadQOy3pffPh
l91/f9tNfPv4sJ6/Uuj88sfuV3LxC92+dD/MqfZ99mkMhYndNn8G1H7bVkU/347cYJGEpsdPWD59
AqDvVrMYnDTpf4JQDUthcoFUFjs5+LukTORO+Ie+KlfIEe5a5ZJd1F/5yXlMg8Bv3mN3dZf5neYs
+1KWHewFY3729zOinDu22vCfAm07o0MRFJcefz3fbsrzOPoY50AekqIXIAD1TdB78QIcEj/vZLF6
XBpeHp8tpiWJRSHK518+Wl3Nbmj8td/Y1ywpkvXti4z9a8u/9YI7kHfHn/QHm/3y098+xFm+v8VF
evyv/CM5gd7NKpk9fk3AQtEPCMvuy5BNdHbVwDr/1Fwvk+RVrFXNVOBF5exEmcXqhAT/Ek0g8S8x
toSJ4VQv2y/8pnqPfcRuVHda//vQplzViqjn2YHb2mKrYVsVmsrbDE+1tZuEHSxtHto1FvQsfLr6
VGFfz7jnzYcsveW8zT+xL2xdfJptZ7MVyz/N4/WcrWL+NYJvI03OgHyaQb0F2Q2ZrQ1D1Mn1mq3S
2c2P/A/nv3/+zcnYl/Qzxq2uXXa4vfrXpZa5sJ6Z2rIXQZzdX5x5us6LbDsvUqzgUfW6V30fa56s
+NkYDERVHw8C/iIfxlIgtUFAGr2R8ugmdInHOfpc7rmPoljvOpxxB3pZfRUgte6lLP7jsZFKvHCW
568JE+uSoqZfEJjU1vuIjBlmgPTHQuNoEoRQuCvdfSAy8MOzCE3Wj/NvMAVey/r9EnEtm+2jUNPe
ssAHQQuuxqXRGFC+9rKc0cnZvKyCe/oGksNav/bVPNJ+tBm3pbvqLxAGqKlBQY0wyFdltlv6hWXL
VfoVFcWsWFr0ET5+WGlBJOtbp2xO+cSTn1jBsvtkXf7Du/U8LX8CYWNytEAjEkbfI3m1XHGVsJx2
2aWvVb4Kn6rcO4I9ZoO0NAlBfLFrTto+x9mcXXjNOdDpxEWRJbMt/xxbwleUNFk+CMOu/Y1ymMwu
l8Znn28whs1leF2IFQebXU6CiwoGjOsFR6CUgLzfropks2I7UI6CxK4g6Kp7rYG/hAqGU7j/smSd
XLJtttpJU4d/USIhOefyLP3GFmCjii7uuRAJV+0NtouFEuXIdtfhUzwr9wp3bHqXWeiwYY0HgyTI
n8mQiQYkECu5bcH3lafjQhjuBLpzy69ovHLSLLktL+nJkIiyuhZHMIvT0q/wgNzeNa3MozvDsgwl
N1GcDoKa16AuMnnGg1WtIiWfb5o1Y1qemgs5ub86iIL5bMH+Sd+zDZoTseV/3uRvsix++HG7XDIK
4raapn6LXukDHuSrikSrvloUZK0CZQqP6if+r//47W9kHvkxPYM3iHXLjrlu1yuUpEfhhv3OvhVk
rvsTMcNdx7rrTyyncNHFiJG+WA95EReMyC0/Ima45dBX6ojZVIwYUZIkL1a+XdGQ40+EDLcb9nY/
MZrGzRYjZ0fKL+sF+8YWP/14M1+lOSvjKtvNbcY/aM3Ygi0A77HQ0kRv7tkGDgk/HU9fkn0fQgcI
+SIMElB1lnDLnt//bZan2S7VdpUecgHA31zFmj2b003xfZp4bBUnh/TKlFdWfF6y6z1OSHubPWyK
tFSWt6z4jZ9Jev+/49WW5a/itdwgzjfrh5/5j0vNZ2tfvR+ov9BWgVtTtNJA6MkL0ArHav3JmCbO
+vltL9iqnMp7aDjo8D+3DMXYrF1Y9FG2sgKjQFuGiGGSr5wlYEBH114y3BZFErpdjWJNBa+2aB9U
Y0/7Cpjdt+inifOAm3N7UWte0lq9DJ27+CK1+ti2HYqhprr/BcuSL+zTLCnyT5/ZQ37D5ou73V/F
7I0zKb3Ll1KtZBS1VswYbJWkCtg01ccpxkcjtqB1O9CUDUiqDkPn17qHCElYcJXvhExLTB06YbSR
qNbVtHHlt9snm8+cvQfcTUpsbXgedMi8E1Olvb3qoNvvhkEPZ8yiPHMRMlCvQiOzrUg++IvRK4En
suEj02DXAWGR5Ju4mN858bzgH+8sV/EtChLesrySD9TAIttPGvWQTz4SZfxl04pDFk0XAvst7xHU
STGxtLYDq0FER9IX0aaBdWBQrBmdLD0u09rQWGWyEYfBKdOoPWBP71BPfvv4L3DT6BqXhNnls6hc
Jhk7TTo8tNNi3+Zss6t/x7AgBcmgl4AAbnR0phxV+jAhzRCjJOiaIyaIabHMi40dj+Bx3S7mIeYn
ZzYNAl9go90FIc1vd5j2e2aMAN2oZ0myb1OTz9NNWSxw+K7zMb5n72f/ZPMCRVcLESEvEGwPNMYU
B73IhaRpKps/RmN2gNDDgYlfmyTiTBzcJXmRZglfDkX6nC3Xn5RkA2d7xhuyKcIydDYaoICJUWfX
LlnMnFmyjrMH5zN7cBasiOd3+wo9DQNaLq/KzANq2EkPq4mqmd3bVAKj2+2beGy4+TIKr4cZf6qc
0URptA6k5d6jBImrlu3+O4WSvC3h7gFOUI5tKGXJ2Ha4QbbX9fiNUvrPmRzNys0UWbLBaP/QtDZw
toicSu75yCgjGvjk9KCRCKC11c0ecQou3335/U/nyYtIEZnatXvWhgUzqdWa2VR7mAolaoo5uJok
GHBj1SioSOJMbvm/HP6DX0ZXu3wPgZbavfa3bEN9x+2fg5PjXL2ylfPu0K2Wr1I5+RQLR2tjtzsZ
fvgo1ASVxvX7mKjSuOH+JqxobpvmCwXe9Inv82nv+5TFKZ/m6foLN3QOuWgIoEH94lc96dGkb1vP
YgTXXnHxiovCf2qvinKsq3m6olL5GlvPy68/Ldjuvzcxyz/NZ3N8H0SAkB56IwK77q1fArf3ruOr
xlv4ScrjU7lCsKOKJJH64LPMatKyDcWMa6UB782ecBaYB9VrwZx5f/SOtC9d83mfvrB5kWa51St+
RAQV3ljjByIPTt7SobF5vPgSr+fM4YZ2kay3zInzh/UcyVxupWEIA3ehaYDISaKFZQ1RomyX6K0v
KEKLjIg7eErItbiDp7u+LndQdu8yn2jPJjmmwfK96OQ7MGOeFhkB8/SECCq86aZ5KseDJjX6VO/u
pNkCdOy6LBXGMN7b+T0NpX5GSD+UuuyxAs8MolgTYuEUTVnZ0icI6HEYpkVHAJ+95KsyVKX3LvOJ
1qyTExos34vuGKonXDNzE+wbqqdEUOFNJw1VSR40Sf9k/SVeJQs7AOrR4v232o42a7oGt0sTxU2Z
UKLsBLScpE608VFneWzflzoj4grA0bMdX429Kb1v0U+zokxP1rd4Dzp357XtJ/5Zdu3KUwIo8MPe
E8DZf4M+tGJDIkTdh1b9kFYUeogbKStcctHae/4UkK/A6fBeWxMVXW9V3SXvycSVbDpLnJeoT4E5
MaRMS7tW3pUuPea9oRYGClIi+nKb+GZHDnUVMmorehM8uB7OdTHZI0+yvNIY0wdjr03K4hpf8qua
0mzmSjxoJsCjPSn68RsarHj+1CKjYmucUHJd2vpk6/1tTGCMAd3NtSTDoi5LQklWNGneD1lyH2cP
f2UPNBCTZnqMZGM+8bHMC6Ah+08pGcqiuokQNd9dW0iNCapM2fkatPTH2jl97Fdo7cgyoLsJe2RY
1GFrxygrdp9ahsHTmG0IKP8KUq7G86vY+5UJQyUOdC/FhA5v7KebWOLFLVuzLC4Yt7xulnGy2vI7
/enNu4/O2x/f4qdSilLTw5xK0a2b9+pbmuR1Pqwvl+Np5ByUEQ319oEidKMIOTFCkN+EyTBu10ex
khZxLbmTyHBIbifOqkbK5VPcFsnq5o6tNgzL6jtbEetaiEkhe/LPKiuS+/JVfGLfyv/csPmn/Tf4
GvgGnhgtJvKpnt+Q7XhFX+ekCh1lf+emQm6fQD68/QHx7RyWnf9UJ1x//01FEuLWa1bLFYmOwKKC
m17QjEaQTJwKpVsnoCFUVSp5iUbQIzk9nCtT3HJTYTults2duChPzSspQniAAu14xyQtL+0/oO6K
SWm3tOvghMbW+wZOyLGiytxasBUrLNdm1tMwFEZ3sVam/jzxEF1dGnS9RsX127RmGXcmgyLWEtN7
0K1251eCumnsX/ZTUbSzEB0E7kln34ayeZJkbL6Tn0n5r85n9pDF61vkou0mKpRyBpo4Zv3C4546
VRi+A8i9OWOl4X5j479AtGBRIQHO/NfbXwkl+p1Rc02Jfmdbvz4IVpoB0h9rNwHuhBAKd6W7D8SQ
IWfVflM22zqOnEoeY5+RU0lWdKQZEUWjGNIsQ4TzVBcGM4zFLFFvUeZTsG8Fd9fiWzZLivt4czPP
GH8Uv5Tf+XH3ncdO4E6c3UKW3ymTQzQQ0AmIXpnpMO4WDDkCuj+d/ZN/lRdpxqzjSHW0iN7ze7ZI
4ps3wav09oth+qMXFytYOMreb3BoJgtqH9Q9MIm8TVsYnBLpoAaHEkUS/vlf/yAEhJ0Sc0042OnO
rw8Gk92/7KfaBcGO6SBwTzr7Nkjl27VF9vKH+3tWZInV2jOjIJbcQQjrNThHQP10ZCoTpDYK7E2j
A4dEMh9ajtNQDQvyC+pFvpLOyWg8YgupHI3U2ODc4OcSdo1tAOhKywN7td3rdWnqEWs2Naj6ZCJS
zwanGi+cJayZcB0FYloeeGgUUlRZyn2zoB1MoYrv3v70MxFM8ZyUa0EUz/d9XXii/O4btNKu5eRJ
uStqn1xxYsw10Dvmnz3c9JQKzNtQ7mSHnWWr8n+f9jHHvcla/n22SmeA5y+8/DVKs2uquJbdd5d6
YIvLNVK6y0zZzLPx9RmgU5sBHFhTRQtLMNMZAZhyy8wmkbBnCVHS6Nl+NtDZrwP96U1KJxMtc4DM
yco+MNYlN+ksp88CPdF6jojrAg6f7TS3Ez65c8H+7X5VrpKxf235DyEa/hULkzL5O5OuKMBYyNuo
u/xu6V0SbH4zW23ZNPo2jV5t1rcw3K1aCXRrVa91s29B+Rm7k/HpugYaDDyNLKEDINVRo7TbnHHO
sU+Pudq7OS2pk29nxYo563Tt7H/AOfwA/1bhxF+4XRrPVuwV/zksRpghtD8CuIOtHDR8Vklj4VQM
gCWum7NuJAg2ZsiprKmFDpp5wr0NhlhlT3dwxjr1pwIs7yEVZ39OzinHuRWUs/WcIaLOguQMjw0G
IzJ0szrRoQqVPVXa5+BjOPuTRBli0Li4eev57IE9P64966jYzoJk9nGSqwm+DJlh3coMq3j6ePlh
yovr2vqyC4sneXx8QydZ7JSWvke5qEovctknp9fi6pLpZLcv+aFWU8yOybDHpM77koOoMS5qrizT
TWPjeXK7/vSFZcny4YbNF3ksZlAYr5fFGDYHniYkfA41nmLTWeiMOM3YNmcLmGQ5XLnRvDuZwnM9
ML3ppPqLkevtWuyzUIRvw+rWzn8IcFoDJR7lByYWIbSmVQmrCnbAclP0HevKI/6XeZFiWYNNy9vm
hC2RjLHzqhv8DNPh2TDPa151liIFYFtS3j2fHHZSruzKupJdcD1B/OjnX9+8JQJen5NyLbWB5/u+
LnBWfvdyn2kPmj2lwvr96OiLUDUftptFbHsybT0N1zY/RPZEa03Lu/t4DqmvKI0uadq3DMYGC7jK
Hm2HhFPTAQyjCbvS1b1eCuMY7Lrrm3NVFCnpC1gu/4SFPsqqLiAqyciJbG2jwx4QebY6LhsqcqCr
mhzargdspkktr/mchXbeOcKBd7wYpvnsr6p6Q5cV3W7Vapthx2+wLBTZfJ7n9n3VT799fOO8f/Pu
AzgpFSbnp3jxJV7P2afd0EEPFX6pWFvZa247WppYtdrdsJK+U8XUq3BKDG68Qwhv1b0zKG3RTbVL
AsheBOyEpA4UcnVvHkOFbkMGk5Qp0ITTkHcOJco6CqlcyjkT8dpzFtKxhwjqOHtAVAUFKBeob8aO
FhaZmc8EfFzwl5/+dsOFbMbWhZOxeHUPC+hVL2fKRbMi3TocoVe5pK3q2afYGRoUZvC1YAbjwXmV
U+1lrwYd8V4tqICtToVFjTpnXc9htlh8USER0EpazK6t7xj6wonK5YVP1gXLljGnAt70OFtLo7Dz
dMehRZA7pFm60Gxw5YJBkt/Y1ywpkvXti0MnlxebuLg73sf+ZD/EWb533Yr0+F/5RyaLlXezSmaP
X8vIRv7zyLoQsBhbHwRE7G5a/WBNdzQ9I03ptuDVzMg8KQGBYMaiOnkidk/TSoRHdl/Qyje0aHoo
rV396CA4btTEC3s3ALhFolxPZFZ238+X8XCBX/H/2bOobKsfBLY/D32oYr1B2dGjN6yLQJefZTkO
keuHIeT40aoFIouOX6RcVAYcW4DF6nP9OBJ20kM30x2gLdXIUv5AZNFCjqSgMTa/j/N5lmwKZ8Z/
PVnf3tzFuZOs86L8SHi8TISAYbaXtv8owmaw3EwjBIhprLFFbTmW1JY1bHkyHp39yFQrb7CSCHkw
G1Cp9TMBEE4vjC3pwrH1YNEYthSVtFEGpj0qBQS2BpEnQkyST5q1iLDs3GRpkRYPGzhRDqrQJgpZ
J2o8gbPwOp9EYuSNVjLd3muVJ6cjp9/Rzqo62nViXb9PLFk2E4VueQuWJV/Yp1lS5J8+s4e8bGp5
t/sKv12eGC3a8N+uInbfuxO1nr+VBn1XbcVu4/mDw6/NahbPPzskXDchonrYBVHsOvc2xgi6ffj8
rXbyKeF4ANaR0LMFy7aRPgusOwlmHOvzW8yJmlpEJKfkEjexRH3fGtS0GjM9Hsanv3XRy4MSpW5c
H/H6t4rGp1+yb8xWkaLtmJCcBGFLEBDIQu5zvZeYqrYAYkytwzdTBRiF3BgTks/2mrMbGhQHNu6t
SoqYjW/RvYD1LlRTCeoPYrMtHP7TX+NsAYBC9jwhQYKtkK3ehC6lBT1qXY1CFYtcQRW+yJ22A1LJ
kSEQA9k18bUbhjkjwUSF9F6j5tyRYpaagZ5ToB9bystqZP7R5fRvzr48SdciY5tpB7t7m8Auf47a
SlJLZZzfV1yNqba6SVNBioLuo8VnMveKwGIzOx9SzCSlG7aPrURH58ZzwN9+yrMq4HcvqDF86zam
b8bGZPnz1Kb85qf3v757muHE31FZmVPkr+L1g5Sv8Gb98DP/cQ28ZBh0bLl48vymWbXPfKv2qcTq
ht5Zb/I1TDCDlKVq6pS7EkMxd1Im3wiBOycoOwLrdkKAbCcg5bAbJHOQtpc80QWZnxpe2wWaK8jQ
Ou2ORcBhTl6rStYcsT1prMJ9pb38639DlnOthGYviKSsYz0hSE8lsO6pBT1pWGjsxvU8qlChYFGs
TEAYkrRzgtCUjFz8RvWOdW7akX3O2G3Sh7N/QU0WWvfcQxzPPduWt9Dh1D83ZQBD/A0I2kZ66fWJ
oz3TsgPWmMxrASuOBTDWQ5v5ogbpADF4Gh+5FWk4pH9gnySkriB4ZwWfK9jgO9O7xggESPDMTBMz
E9y49niDCI8GfN4cp+DWF+ezOMqN8Ag7dqlJ5UJdV3u7Mx1CwFq3mgkFWmAmAPXkYPFk4BB0LhmB
JqiV9fqJgLhddoB+Gj7FVQWYcn2El3OzSNbbQ6UscolgxeJouO6M3cVfkjTrAKR7QWrXc3VQbnvP
3cSLS9HHAWMoF8XsUfShQEO796dplhJ5RbYBDzlqh7p1CN+zwmbB8TuVFzbh+Msu3suMCqt6hXb9
QAvFA7TfyB60SZp1D9p82W4HwwlKpyPh3/r2/NtOxCWqKe7KY+y3lCKDp3Ugd8x2kKZC6mAHaJRJ
MGsk+7oDfwkAAB33qcGjJNu8SO8ffxK4JUf7jQtsAugBTj5PDcev2cavYQnJmtEKWq80DVPl1My/
Hdp3cZghadl+C+zbb4Et+02wava/f/3bz3yF38pGd3lx8xf+zz/FRezEmw1bLwCbLAgsDOvvV7x1
ujhhM7HDnGP1JyxwD2FCBboLX5NBKAUxtcvG0KanEWrPt+hRRrrGWX94//FSjTzTvt2s0njxavMg
yqQPD8Vduv64ox2ywKV+yxAQswUpYZ4ttOTLlbX81LJCQ1vmb2jf9BcjQVSMaZkRbjAYEtYgVfJy
lhbfzy706V+dr0lx9zZjC8ZfWrzK4TOQ1cjpB6Crtndg5FaeqL75qCbOQeN+498XUTH0/CXQHL52
pR/BuZaKXJAJagnuT1S61Vo1C7aKH7hR88N9/todjUZwPhoBEvo7jEB+Z+AW4NnlB2veAwuSyOxi
KL2W9Msi+65hZMstjsSiQu0fNLYJoY5hRwTTuq5jjQr5YRCNFmOBHqHgic5YzH/v8B9nFufJ3Jmt
0hlgULZxSeAo4+na8/T+Pl2/yrez9t/c/+zNtkhWnberOuGPNl4TmGip+pKCOmXSrNCeCD+7bObp
hVWdExnVCfmwamTOybsHvH/gx7jH9Q+//3zb998o/c75/eL1rgPOd3myeD2dzKZLN/KdwJvyP6bj
yJlOornjTT1/5E4mi2g8+67gP/juflM8/MhJKP/27TUpv7WfBQY2e7xWPF5bhasT+27TRCKiBv/y
uiMzPt7Hq9Uz5S6IzIAi/m9xdsueiffxKfiVLZLt/TMJHgj/dMV1677jQmrb3z7dJ+vXo8OXcSPn
NWiHfLHn917xxbq+uBkDyH4Yawjt0agyfzQaRdrWvU20SqKyCEuGKp5FKHAWWkg0isnZV69c7Cba
ALxsmq1GAO8v8SpZWJMhT6uL+u0dNgU6q0sHl5my8Ht6QujiT3JlwwJQbPVG7P/X+JuFiMPjqkRL
m9QjFjivCRy+pRN0eLwpuHEHuVUNYtxyC2vC3EKLtZswR+3ebXVJPieBVAgE45QkXUtvHviz0A2d
OF6MnaD8ajqdM8f1lvEocoNpOFvu/fz4G0o0QtQmFCX8wiYkm2KFFrk5aeN4y9Ysiwv2V/Zws4yT
1ZZ/6KffPr5xPnz8qFIoTdHUhL9TIE9ZswIdwMA+l67IVrba8kZNbWkScOSx+v2LwtCPZHvGigqN
3vQ7kt96z2q+IRgg/bEo/ZDFCKFwV7r7QETqA0XFsG/f05DtWvvMrNIVuLljqw3DGilxtiLqkbZ+
qL0Xjs2KAUEmlHR1/pStZT8ZJASFBOseO2YUiph3WA+rb5dLLtx3m8FG9M+XFlWKolcysK/sg/4U
JQkd4ZU2xcSqVbnGKK8B3dTe9rIHxkhAxRiRIEQnxiEleowH3dRWNxjklJe85KNW8lsStcbCMJ5N
ZvPYmYTexAnmc26Njb2R402WE48x1/c8n3JOkzr9cAcgiVWLbuFQUbEj5ePuMyGjiFCb2CeZX2zC
7dQm9gnCF5vw8Sk55I1fkOIZDadoX1G4x2axhERU7Yf2va0QLqte++Vr3o22chP0l6e7n+aqAcgt
1Yk1zR2FUjUpQDUJV9DRHcJ3Cqn4TqF9IDc0UBxx9HGRfbUQQZRJDC4FGYAQu4PLlfVHO39JFORk
ZDehLNKonjh6ERaqKCpWJ9vCSet9EqtzsJPEahLmtFBSoby6IRTSwJa1wV3x8G6X8F3zNST2zUwI
K3M8cd1RFE2deRwsnCCeL51pHAb8r9F4PIuDkbeYyKZBSPrVoiTskoyRYFtMQ1n9COAfx9BXgWRp
8ZlQsGen2kcTIMoeNCWS/rNsKYOo1RoLtmLFoQUFcs3jxdIyEwCE++UTmFVBgjhkIIN2oq91g8c2
knLx9qBCfcZ0iRzFAKpUkYA+2HTy4ghjQrEWVQQHm1JJuAUY8yRaK4Y4AUyqfE354yFGpeo/AGt8
xLM/qoRf+TOLuIgBAW60e9tSo9WIuJ/wQXFGFv44OyKT4DQrQI+tCN+ev+V3bDyaIjCEU8VAvclW
Z9tmnQgqvCCPwrIaMQiF1QyF0sRXHsADK5Et056+D1F0BOLh+7Y9fB+lYkjyBYpiCaM4WITzReBE
LB45wTSMnenIHTmzpR/PRovFfBZ5lBPB1OmHYb5kMECU/H3S/l/4Oj9xMgjVlAhvYJdZfroBt1Mb
2CVen27A79QG9snwpzvwqAzA0HoIGk85CDQ9s8CeZxbAFYxoPWuN43BDdzAtO5Fge3ERcfIEFJeF
sfwCs11jBlsMwBBuO8PQnvwOYdur9HOGMiW5F9oWQKEdwRsOcq/zcs+e2CPXVOoah81rvH7bQs+O
zBMTeUINND+WPTT/+vaj63xxP4UoCTCadJkuDCAm8c0klF/cG9AZIVpCq/MqjrjhqPncZKVb682T
SZcG7JuuuGNdCWa1l3odSdYYOVSod6ZpqcQLBwvVGrfh7AxW0VocUfxL95bvdlt9Q0zoV4N9daaI
3Xw7yYSqQyQGFMkiimRjBulQoiuuxJBHJ2gRYF6F++rNvi4/LLAtFYNBKnZZKl6hY0NVKgY2hVJg
WyQHEF0L9LLMdDKCRq5Ojpa9Fr81BAwCfhDwnZHWVAV8aFvGhjY1TGjS7LUtFGVkYu8yMhUfP+Dd
6iyWbFsiDClRnUyJSooSgk3Wt7hy8GTZ/iRDXUcK6MnhYWdCKSyuqyXElxxknG0ZNzDfDvNtNvST
CBCefXg849LAiZf8gTsZm7PkC6A/ILZ2f+ohrHfbquEwSlstlbWb389XtlrtHiRbvPoG1ZRJdHVo
Lgxi3J4Yxywg19hFKACMD9fIvilW+RH4s1POVxbVs5Ddayy10uot5G6gvYytoSFq6xvuboU/JEZq
5U7MSZHakeyQzCiMA382d6ZhEDvBPBg5kyDwHe5NTZk/Dlk4X9apWmOT8wRpUG/xTXaWiPrWYZ9E
g9Gds/XCikf7uHDPsN1a/4j7ROURZweYgn1h68JJswVg+Y1BD/XxtExHvtrxf6FxGnCwANTG2x3q
xgsDtROxmIzcnBEbo4yupzuHXoxEegSDsVCJmekT0Kt32fJp08BFcs/SbSEoWTtsAwFZMEf8648U
JIXJH3EYHZMXXVtUW8L0Nzj4obNVvP68ewg/bJINe11kyfzziv1p4f7ZQsqGVBebc5e6YSvQpzik
jxBLH7HXTkeZBMP2Ua8NlN7gK80HCdrlRlAiK/Q7GZoq1jyzOxZzJzw//Ncpx6KWrnnxsGHmQ1Z0
ZLHBzhCaItlOgwzd9QVvDz081KZ20beW5MYWHX76lhVOeRucZL1MJScPaUQnYJ+34AWk1Fasw4aB
mRCw1mEpRiuNrln1kiDXl7OFCJhjgtZYTSD4hDmHV7HZFt/xNzH1ZpNwPnYdf+pNnWAyDpxJNGLO
xPWn88mIRdF4ij3cQpNc7YvjD7MTiJiQpKdnqVGMZfOqQ5LbDVdfTCiialr2XSxtusx/wDZgsI0B
FKUUuL14RnixU8WldWWx3LLN/Qfz7ZzzIGf5pzfvPjpvf3xrt7V4Izn0cIC20/F1cnRUWkI28g/B
uGhgA3RAGF8aAZyC4utAb1vaQAk2t3rpoBCz83AKF9SsSdOK3CcUGQc2l3w7NosvHSHoH9ppVFBe
QQNwc3uv/FSLGhSdG23PM7AHgwSEA/FDn2lhAR/Y0SuBPe8/GLKSOlv1tdhmyfrWWXCh0yz5hESY
+Y6xxnO1zzYsk5EqtHuCnn5nTHaRA0NM/JZZeVDKhCKMF48SO06nSIBJeyA0i43//hskNk6gkZEa
I2TUB0irJAQZRWIOZOMp0NO2+ne5+yCoQUTTWDRC4t70CoajIXvkT4nm28TVM3ZuPY0b02blRPbg
uohctxJErSsCtQ7Jk3q7UgtagDlSUUcmHcjRDOJ7SSwLGSeSe659jxPJcWMAq+mV0B4/sbE9xT9G
6/AxDMYC1A1jpfbaJ3bsocDksVP1QjDh0aSqGeNrZVBqhYI3VXwf4i4wcZcqXuPHYKSp6GtrfC1+
DEYNbaNmAtMUStBC/q+3v6LUPwhxQSawora/q4JuzvZ+hYUIZjhAqtCNbHccMPtxYgfPmdjOIZgY
ja8cPQXLtTMnlCA+cIWpNVqt9PXMCpHBNX3TUleX1a+z9/6htZLcaJOf9sDCobXB0Nqgaxmfrfjb
Ko0XoBOgTduNHQxd2rF0zeCzR/dDUvadvOC8KD8Nf/Lb6br9GUhDC1g+uiT4eLLo4j2HkaXY0CA7
7LU0riGgH+Beu3ACDkCrT4uEnLrXifCz5tmZmCyospyhAZESS0viMPNlMJ/G3tTxph5zgul44Uy9
6ciZT8azcDb2onAR7HAYvvjHHRWt4wx1Z+qI+j2ipGPOA0KeQCPtK6rzDFKoDpXwLc6EnZbsWosb
9DmlCJDBy//6B3SEFksa67zOKAz9yFwQ4pSpVxUWPt36FUaFZRkg/bGWA2zHhFC4K919IFcXkJLb
upg29G2DA1LNOHseY5M74CYYKd2wNUzqGtUaMiEY/JEtnWv+qm31+mCzwTvqa6N4Wr5NTwugryVN
319oiMktsz9zBYRa8Fk9iEJQfijNcjpjU99dOgt3WWYuzMbOzGO+4y6m/sTzgngULmF6RLXqma4M
JNOKGT5qVIhYPsxt0H4vEXJkVIjF4uYPIBEV8Yp1/CW55YoJLWHgZEFzfsWnd29/+hm84ZaYYg9s
+2wBQD3IOX+vBvU73/iVYX6Gtt+LMhDIEL3R4PmJkAWMmouvo54cYSgXRJJUrSiv5LMCiBoTSXvd
WSUKSplQxFf7V6SrPbUTShRePyTIEtiOKAeKzYVEXi6WZgXEoQSb0aMoPxlhImPgYmg32pauDGev
zKpXbs0HaGoebuLTFUz+ksX3bKcGmhUpNJaEMSCwZfMgr1ctEq2Z8yvK7W7nygGF3CWesAHbqu4y
GkL9Wg0KYw9TMl+N+dE4cv2ls/CiiRPMJ74zcWeeM2Gev1x44dKd7eJIr/+eluXbzoG1f3/zv3/5
rze/v2tNJbaUNwCSBdzZ5AZZbSgajxS9PBfxyMgIEBsCzdMVf80SKhIjyGTl7YMKVomLIOMvwF9w
00YM2NFuV6v6w3VBbjfUXv7BL8syWfPrUrshr1Mb+ngfr1b7LPHq7fhwGtBgfN0wRgAuuEGP88dV
Oqs+zMCOcBd5NVAy3pJUg9iOZm6SPRGizAzXt7ilhmcEsqFhnF0HKutC26GI0GbCafvisC9yu1yy
7OPuM6tfZtg94+uxbV31htrcWCq+YatdtV3nbF2A5DXZvnNg6k2CqTKuaddMLZFnon4GoQupW+dp
lt9w8tOvj/3DBUY+DwMlRNyt58svGsGtOgqZh2MS5ROkXgKiimwnjUYQjRchAGDMxot08D3k1Mrd
c3s2PH/YJBv2msvdTg+JUxYF1cIHMrVKZ8W6szO41tD9swPebmTb241seruR/rSq7aZs9wenmMXW
FtXJ8zx3iuS+/GX3Zr6dJXNubf87Ydnjd5fb9bxI0nXupNtisy0Aa37UaIGrKWnuC/ntflXetGz/
Dw77UlaUpdlCOTdbyr/g32eH494vnRu/cfQdDLWzUTLdnx6WBbfBxNp6bpckBQ03VPS1ionrsW3/
Z6wsa8vvH1LJYMXFgCw8maxK+kXwyteerQ1qpF0V87TYCG0hTg2Xd3XRXc9qAQzuf+osq+SEKixY
b0jvTYXd14itluBkOX1nVuQYBDQsVX96bNufHtv0p8caoFDXDRwIg/zsXSA6IzIrX1pEyzIEl9vG
FASoELblS82TZsltsobzQc4WMes7TWz7ThOMpn3YERAFF89o6sX+ma6SvChrNnI6s6NkHyIxZW+U
fFNeoy4d1gxSXO9J9KHAWJkW7uqp2iDnpus0glXyEAV5ge6hw9FFr1etzeHOamSY94YmfQmRk/KG
TmQ4ukckvrq4P5I/rAvQcYyyVJj1PKYwyFrTIaXxgq0XAnmYO7mcsUWScWqdbc6yZL1MKcRWJb2r
qWymoxj75Prn1PESOGYvVrz+8Y1YlzEDEXscr1CthRjy7QVyeY6EFWiEA48WdCpUXg3wQ+5pZqiY
qEXP9pCjwPi54v4ajJ/a3zToDrgYvcxxg/HGp3C+kooaAVKTtfanfRxiahOHmAJnZKDz3M6qxm96
c1LrYWrFq80DbJmTAAHQZoUsZ8FDeXnBNhai1/J8wJfKcnwSdRgabtI+jxu3vuJs5WuaY3F8uwTz
IjJ2nxbMAUqPsDQDtHpnygNTjLY0lTsj1aAtdvr6VeSht0pMiPM0gzzpkW4KEYRioDxA0GRyo4Q8
tIvTjEhjC614u4TwPRkRlvA9yfURauyU6BJ/dmZnmpHX1VYKE1ASuixlUl3YfKBoldJaiiiNzFr7
Tk+2wAm86peeW6zmwUQaeKrtKpvH9d/99tv736rW/z2L52wWzz+/+NM9/+wXGZvz9/KCL7V6sYrz
4s//+R8vdmf54n/d/O90tb3nBJbNz27e/fGx1Cx/TYqbv8UP3K79vfy8m+S+5Btb3Hz15zeX690U
abrKb75uipxlX9jzF4drk/OX+r++f7FK1uyFF/rfv0jWLz59Kqn59IkT8uJF9uXF6xc5Wy1flUb1
nw5q/ntOd77hBjb7s1lyBQTLI7lutKP2Pk7WO0oPP8HJPRD5apYuHnC4+bjiM3W+P96Rd6DhxZ6H
n8q/PjI0i79+Stale5KxePGnP9sidTLZUVoSsaP0TwdSt8tPmzRPSkfq+wP5S07f0zf//Of/eMOt
maz8+l2Wpdl/vnizLLgoKj+Ju2EvZrsGii8ef/7Fn0Z/frFIFuv/u+CnVszvXpQfd/TPrvfn/6h/
ueFTn0EYZPrI8HS9dgxk533Gq+R27fhPY6sXSTnffrYt93PDf3HOnoZM53d8qfLVOaORax4rrscs
j0tiRSpajx1y/U0Cl2xK7PiZEvLCefdndiyaJ97uje6Z9Inv49PhHe+F9OFNk5EonjGJ8iPjFDA9
kTKc93Wd95CDZgQnqhajiJn1CgRYyw87V5bPH7b7zn25hU2c5bs+ShBjULsS8tA3KcCSabFIU7kr
9si+hFm50xvP4px/IhfTBXu/c38/lu6vw77N2aZcEzo8r0EQcLIyIs4kaAILlb0MWZPnII/crULD
viDIkrpDMoEUZZzR4C5NOLMebBWePmlDBQak9WumHAOFhE6FCztoNNsyMD2MojYsAglZwJ5aPna8
C+XvPjFLV075WY+J5zleUmoLEaTyUw8R6jKn6+aWFU55gs4uP79t3H3n2xpICP6WE8VMFjJCSsOB
Y9CBeulIbbo2SPZUH1Nmf5RDa0pKSiH5+kCZ641fjfj/uZWUHYnqUxq5tZ7Mnd0oEKj0D3/kvaCw
Obybq6fbfLpei69TBiJx3s0nJHje3+2++LRPkXpdZFtG9XoDbXeQWoPUEj/EiwFpjwKgeNiwxzFp
XDl+lyxeL6czNvXdpbNwl7ETzGdjZ+Yx33EXU3/ieUE8CpfIqYT02ol2SPxRuOjq4lpOBZq+5y1j
/w7z1Q7/dU4Wg54gbw9W8EH3dt0q1xaWJXCmVJSmnYOpmadcJV8225188WZ+GEwWscNG8dIJZsuZ
M4lC11mMYt9djCZ+6E3h9Cgha6u9Ysm6kdQwMVvzhLU1SKSUB7BgK0YqD0CIIFHnU6Ce6+df37wV
6yKo1pyv21ZVJ70lyxpZ4dJJzJ/TUd4BXVApAA6FE+vKcX4B4Crc8WPyeNsH8dh7V2xoOKVKSEFj
pRgZJMZkfpc+WSqaBEoMSJOBKhmadfiRZeCc/dPePnAOFnV5ds42W9nKAFAiFDh1zGySzzV2EoID
YoJu5uwE1HOhAkoGCZYJKtLHBK1fWxfymqyZ5EAd6CQuA50UKyWVaS8NC5Bc41lL5mntSToXEGPw
26+ZAG1Cq41z0SSeKYwrNJM41XTtyIRmzqmil8/chRRjIxeOsLEdatWwFlm8zuNdu9AqfGWFGbZq
o0W1a7aa9qEOYshgF5pXLKIb84joxTwUEHAr5WearS5tV7JQigrog/Btss8I0P3bxzfOh48fxUL1
hkMeWhvED8CBb0I094GEO02y8Yx9B1WtigW9zNcydNT1yd5GLBRjaS8VMlymI4UVFyXqZpwlEtS8
htHvLqc7qF1g4gCtZu1WR7EmovZEV9O1ZK+9oj6wmL9yQQk2tzofTr7gIKGIMnT0VGHvErIof1jP
SQB6j4SYy763+OTRT/zcoFuwZbxdFc6TaXjzz21eJMsHJynYfe6s2G08f4BpOV5rsUoS1Z/WZajA
oP0+aQKvHKdbmjFCYC1sIVr6mOIgvvEhctvkvksKVkxAxCRpQ0mp+gOqhO0/zVdpzjzkKsyjVc0H
rtfpelf/5+Txkq2SvGAL557xQ13QsXVFaFQNYF++tz2Mt39twMNmJCy/ZqpIteLugCaxXrh19KaR
qrNEV9QqUUHP3oYIzopyqv9jdvVEMo3kbnOUgtr22mT20N/R5sn7D7//8v7vH2UNzs22gDWEr3e6
TnlxDJwKgbvVyTlBsnYlTtcrGKog4/9GKf7wj9/JSahdayU9urDeqOeru/JWPHlsR974JjVdVsgZ
MKb4JZMJpcuJ/lTj4IAFRJx3K81MZJc2BBv0a1qOMkqB1YLjCuG1rsEcEP6BNWPfo5I8qcFvYnY/
/JgpXK7i+XgeZLJ0B7Gu9ibHg/+oxtNWz1F8qU3Glvxm3xXOPJ7f8Wu9/sJv+mLXTtWZPQhVAjf5
jefDOz0KQ2gVvC5xPqlNR21nGnyg2CcZKPb1fU24gR5kHUci9aI1dxlGdZunwIAXKr+6gUA2cBtF
6mmuvXHjxLUODYPdNL1n15ksgTCmtSFih7xag06eTyCxVoO2HjqgJl+JsPo0wA1yQq1t6EbOj69I
P7N1OXJj98XrgPlu7E8DZzwJmRNEYcwJ80NnFMT+bOIH8cSdW8rIVqaXzHmopps0rE7g5GT8Xp9a
BBho9In1k6ZnWMncEJyYt/BsGRX4kPabVQVF+3c/+ymTBxk0vN/rONv+5iNdb2p2NzOxKi2Z7idu
G9stJAbvU0wfCAgjS0Hn0tcD43O/2jQQUM4yQKxaKltY02sCGO4g4x8GcOehyxNl3h+1bnT4wfLb
cJNvypXYF7ZeifT6kfWyA8G7YpSdotuEnl6nnnQLCCYPibFAfoSR9ELEiKp0kil28EGRQDuxIkFi
rzCKpsCZnkXRZDig5VDLhbTCaRizaBw4EzdmTuAGI2fqxqGzdL3xaBZHwWw5pjePQgq+wiPSmoMl
P8KoJ2PFDXpEBh5KR+wLW1cQBxsKrGJDgfX81MBuFMqkQqEVheqUBACL11g9X6u7InO2w/vt/xn/
96/vfv/5/U89PGPrOyPm7SpbXBHJeiu5eZKCNk2I3rCmkgLz3WvOb1KR3LN0W1AMAx2RBo2Z204J
6FJbVhrx0ohk27SIcEw80pnJAzl+QiGQ5rBvGy4o2eLVt7uCQlrSlRfJhupdQ6SPW61e3RjeElrH
W0JCWYMWIqBHZgFwYINwxTBe3Ao7YCx6vHiBNVWKcAKfUs+hH5FOqS1LFtz5cTCfelPHnXihE4T+
1Im90dwJpkvPj7zFOJ77pAoEBei1dwCG0LXH5Wicks1NWX5LggZKZBxNMADD07pE0uwUtHptMcry
xZyxmH/m0U4fh4MXDxtW7mR+v3jN9fF3yeK1N/PDYLKIHTaKl04wW86cSRS6zmIU++5iNPFDbwp7
7qaprWP+YZ19qVF++K9zsphgA4Yzny1nq+UF4rD7pswcpw/vP4oyY7M9MCMO4oUfOEE8HTvBfBQ7
k4AxZ7QYLads6fuB4dwh/NET+vnlPUm02UkzkBui/Vx8BZhD5snIIBxAGENkNaclstTyW54O5Ffe
7UCFMUBe5jGhFYCYjIMY26DhaIMxumTs37H1WOxYpfZskeT8nx/2EPfuq4MqyZ85iDTtUooU1Tov
sbvhIeYQyFA0DPbEC0UBWAxj61GZMRGbZdyH6JDOS5aXXFDTRToyUhfICvCI1OCbvTuCr3BSkhvf
s4J7ktbNl3Ni+jMHC1qon3POtDOBYxvgKB4pXkHaAlKEaBiOPjlT1lcy4EW9g+csHDoeyylNwEb8
oORrbhxOGqYximR05/Qx1x5Qn2u8+ADwLepxSKfJqczeib55RK+fxLDEfpZu91hyB4CSW09yWDMc
teix78IG5HRxQKVEX+VkVexRj45p7CGA+SE5Dyjs2aBv+qBrSDQIGYLmNkXkbn5E9OZfXW0lIYsg
Ivo2I3KWSiQpLUSVMEHMzFPDzB5Xuc2ShePexLN8k+blf9LVtmAO/0tSlvCVl3nBlsk64d/Mk3+z
HCnHQZ0uw60D3JHjjkYjtl7Yj/yc0YJURt9wEWeM/xJz4iU3wQUuhrlu/4frcfAVb+Z3bP7Z4aSl
28Ip7oYZoKJiVf2ZYaghaOpUb7gKGNp6Yy0xYwgNV4lW060wu5+SJcMgHBRI+sgkXtLuR0ohECfr
Q9UA/6r8lxkn9jMdI0iUUEW78FFclX99xb+Pst/zRQ1IRlE29SXTzj5LemfR4dk0Rk7GigFi7k4p
mGZEnPNmsgD88zOmb+IMrxRBm7xBLzUwh2YaRJ99cGtCXubkKYh2JXrxrBnphyQv2D1SasYzoF12
f9twBhZPrGWcqXfJasG5aUWjCJJ0PVpEkCEgF56mgWU0ANLOXkwm6NFmPhDC7jfFwzq+ZxQiISfE
iO5VrleLufYkGJ1lEFpljEy2fwmXiyBgy8CZzcKRE0xHY2cSLRbOIpj78SzwF5MghpsEAUKuNoPd
aTRULMtnozRpCzi8lh5CfyITrSYDGyTGYLxAgSTpK2bCAKlQ718z/i3u6NynC0tJGJKkXZtNLswY
cxaZa98Oc/tVgUw/tAslr10qUtq1WjQisLzM+3D239n9NCH3qZ4sg9XGT2qRCm5QTQ+WvrYNHMjT
2PUmSl3zYqQtIEhBWC8irPoVimSRbbOhy2ZLhuypoDCmLq0rxsGa7YU1S8SWtWrJGquIfbSbPBrm
m2cguLFgK3bCLA+2C0izmC2HuzmLUvAncy5z4/UtAwZ4ZLiikeyusF9SwtewmKrmL3B+ZffEv6L0
VeCuQfGreraCn+ZjW0bVFACgAx4xdMDD8oGH0RAIr9DHdliNU2BKGvo6NTKCGlxwjis8wiVCn2EL
MnDWafEpY9t8LzmsCutzYgaXtmsubeuREhApaiQBSHkpQkQNgnl6v9lyWeHkxcOK2TVOKmgxLL6a
RdbQRVBDGMs60XqlB3K3CDZv3yAtksqf2/Px/PNtVp4uiWSZWqKuN02mliWDt9VhO4WIbWLVHjFm
gzy6MJJ9doCtkUaq9OySIovXeTwvJYSH7UWdrz04TV0TRucniC+H1CjQF0FS62qaLXQSmdqpMyaN
fIvSyEdo9tY70UIlLHV+jhYkAjoILrW2rtVBJH4kRp4xeRRYlEdBv6yjjg760nmVgXXrKLAkCwNQ
6ygrVjTRpmPCBsSpki0GhHJoUSiHhvMzKvXZMsnywlmxgi4OUUlin7PKzu/AkE9mXFmFlpRVqJND
dvQ5FsXSAKR1HEizbilaensYdiJhJK2SQmzzgrJr30yrkp+/5DcvzR6cfTzpp8OldNJN/K8t/0+W
3CZrrKIAYVqG4VzaYleY12hy2AxF0j2srHaEAqGWVsetqRfNokUwddgy5hS7cehM3AlzloHn++Nl
6MeLJaGOWyLkajPY8w2I6Izxd8HVQb6dz8uHb1dIV1FjtsvB3lx45ObJCHcipkw9bVoKC8ZHsDTD
T8DkWa7Yt511k6xXyZqR6KFmGSCQeHTAbotxSjQvhnaSK/bGazb9CDqXUxzBx0nWLquRXNt0SLRw
/7YFn+U3zNJaQh5FYhMPptTrWe3+JadnT4FYk0MBECm0S5vFmRHQgxLM86lSzaUbtnZYlqWZs8n4
X7IiYeg+Rj0RPQyutW/6mqNs2garIlshrHidE9YTCrRyRZrpAwD+z2xTYlB/I3UUE2hMGdL9rfS0
axULZxoB7QzDmBbeoyVz1RB9wAa/Rk7aiVKTCRt2dBKnzOYJzOyGuQH9hjBMm3pGg6oYFEhbcrfx
JidkWJ6QA2lHrlOI+ISeIdcipR4B653/QWs+jdYJGJC1Jq2xkysoG5NpPzN6GTAGNLmWakGx78RP
lYZ/AWM9KNxteKNWnKiricA9ycYrbW4CYEhdSmJKUsC04Sq5W8NgreTqalYiLUT0gqRrr5u7YAhY
MwLb9ougCQiW7dfXPCq424ZnccqTJHeRyOJUKM+fRsRXLZFsKKsE4y+QNaObKChm9lMNbV7SBpEk
ntxvVsk8KfY/TMe8q6YL3MbrHhLUgTIs4oZz9VWzb8/o0IVqehhnoFFLVYG6Wrvw0/x+g9X48nxJ
UuM+r6Z1uJod83Ro2AlzJhYGWVLTANhleVG1Tk6Ig4uhemBVXhp2qidZYdQo53zYMX+XkYR4LmQQ
WssUxAm5GDUhUeDDVo2p35NVJmjSfsHMxao84WqxvlvqJ2JXtYISLKYIek4U7HwF9uN5S6aIA/RE
xEnsKFj7JIfhJDAN1FRiozLXZRMvFuVUdxCzt1F7AnYv1mGATOylcWtDUySTbzyw5eiqNQvuTcD/
/Hl0XYfA7v06oHZEa0bqCOwYrPK3pE7U4GO+QP2iz7wTmsFPz0hdpwrcA5OwCocCnHLoSsfPSBuW
2/Xndfp17XCW8u8BA8xd6jB8Jn9sGHUI/YSVVjN5v7Rw8tOuWp7AZGBMA9i4KqzYLnAklEx5DoIP
0XZTCQDMnYFHtXiJ4jUBUmjUtdCicxizRw8grRDiSDpeeWUjdpTs6tKWxtekuEvW+x99Ci8UWczF
G51sCQEiIT1dmMpzLfdWphTbbAoDTkZBp8xOXL8dtNKUhP3akaJf0aPANMcFJCX5IlpDNqAuK+z4
AMaohjeydUkVddl9ZOy8YvVhwlnH8MeKM7TiL/hWUFBZGtoM8jz5dxkFu5AA1jyENoIE3uv7D7//
8v7vH1/c/Pevf/uZs/a3fc3g0THEu+LBnfrP0pXDWcl1/yZjy1Vye1c485hrAKdI7hlXAOVkmyL9
zNavAz8O5lNv6rgTL3SC0J86sTeaO8F06fmRtxjHcx9sBo/NTdXd0DNSKgmIV6v0ay0Zbdf3wz9+
79cx2tqQvSPsU55Nm3AyO1PN2syvjnQSVhr9hjKZbNSXcmAId07rEcE5QWbIgvQo9aWPgEkZWHXJ
pFJwlXWXRFxcFjMCTJrSYb0Wq1T62ujxbUjnauYPuSAnYmUhOMIB77YHVkONgTXIJNCo+Gm/u9XW
GRdnLMv4F+v0+euvd2ztLNKv69uM/9CrckM5UB2NFpo3T+/v+ZbK+EYulhdkggnC0ndPHTesnfIa
OMl6mb7Kt7Nu5jZgWsda6hjSPkYg7OxO26ek6v7iU4X6ouizoF3kmU0G58/iLr1N1/Hq2L/aB8Aw
AHE6j0KPPYq+27O04l/xy7gDNp8RzmU0X7jhbO64Y485wSxYOHEQuY4fzsexv/CXk9gDg2yB6MU/
YzMhBCKnYmMz+EemHy4gclzYGxmOajiq7hQ85ye7nwaBb8SR625zDWsMATc/xW91XsRZM1LdbD5a
46EAEmQ8yIADjj8eiXa3kUtuwGW5+2C9AS35rHockIpmtLnH1t5Y8yrQkfb6Ze2x5cP7j1WpAMk6
LwMnzn7B0jLZf/V6txzLvitzAzbbXW7AhLnB1OfXxZtGoROwMHCmi+nSCaJp6C/YbLqchnAJFxpl
GOoP0VpFnHbVCk7rgF6OaO0bBo/09O3Jto6UzfjCfS1xAOhHc81aqJVAirg88ouR1KBwUwzHoulE
0mBvqWE6NGMEoulR1WmdQgL9kOdpzZYzXxchz1gZHwecyzQQnZ7EVMUfqda5juOJ543ChRNPRzMn
GE1cZ8bCieP6i+Uy9mMuQscgr8eAKWeNdjNPSoR8e0/KkLkttknNUHLbM9o8WIoZtxOGKSiEPxMu
M1yKBOAWXyYS9sCVTT2yXE5J9CjA6yTz6VRSX6uYK2NgAfsPNPLdrjC/TUm6iigBiorJhE4Czf4e
ZtRJqPN5muVOHi/ZKsm5z/g0VfdgN8KM2rLokJjF+J60gARmq/ZQDaKCYkSbQ9sk1+u5y2TyZcJn
CtDs/O4b6fwuDa156H1QhIkayiTbbgdcIz1MR68j87ghvDYBeWjbC9MlUbJuD74KxbS3ZOwMJZlE
rY6ROp+bcQ/sXn1Pa8J1/GpjGJAfHqiXr7RTbP0C4TVKFM7V7g6uS1xjSwpgM7GHy1vJreR1zsTQ
Ck0DwOSOkVWGSdJlC1WNXxREeI906qYmmHD5cgS0K5EeKk8GASKC5SOnD4qt2YEKAFiRYCADYenN
x4vIjR0/GEdO4E+WzmQ8cZ2px/yIzRahu/AgAW299Y3lp1lIcBHZuWB8Feke9KxHOLq/iwMMXeo2
YloNZVv4IIMkgT2HXFS4IYcBfL1Lit16l6s1ARaaAQe1mBBa5rRBFhJ4HQrRD6RJVroXB7aXqC8/
PavWDA8s4J2BXnwXNKpnYVSYpUCi4uwnlAI7iRFhIvJqwdbJ/mXaQymeaQDO7KVdMWxtoLIGPBJY
KXA0sTLMmnYCIKYq/m30/dG0v59lRwd9PUHioX0YQTI6DHkpeAgHptDKxH4iCvPWUcD6hgNUfK+1
uiy04N2EMjZeS7ggzZLbZL3PyJ1nKWfS/juALrAORSZHmpTyfxknq9IXcPJyPCeza8DXEASemetT
xDt8qfPu5VRRLfCG1gAdxUMy73uEEDaudf8xtOY/hjp9cVRusnbFqHpovVEz0cqQ73FdHn7IVnGE
DJCbWWMldNBvR9oJNaxFZduA+YvqUs1wMqMBQkByUzXFvo3wUs9y2kxcUfTIl2wBnR4+tAyZy/y5
E84XvhOweOZMluOlsxzNXG+2nEWj0IdNA9QiQLvlr34aDFqGBfg5W9cDFCweU1mNFPmtWPOUbkqc
JedcLJyD8IMDdjVqs+roxL5CzSBsZAH4jUxPdS65cZ5qdT6G3R4eKkIdqVSHfnrdZqGqyBpUFVlI
dYiAGwH7mC1GdKkDfqtDKwkc/EJELNvuJWGORiCbVpvAXqX/a3NDZdbetoBvE6hJFzxPPd/8nFMM
xhqgzf7ztQj5mB+yVIuK3bI1y+JjDi0TtlqU435hh0H3GWkxyn7JXCJVhs5mMZstnPJBOcEiYk4c
u64TzZfueLKYhROPUW2Fb412U3e5nXwrdxnpaOr2ZgZE2ZSGUL7d/9M6JQSgtFGmXds1tgCCjWFh
n15Xkvc3V46ak9z29DqYrmFtS0BOp9Z+zEOFY2vA6Bi5GdD4usANrXu2t5AIB/qezTj7Ub52TgdQ
QHxAEX8PjNdM7Dj8NSnuiIcO5ejUtoMnFuzgiUIVUMc89x57v2ZRHKlxoH2e50U/iA505pBlEeYF
ru3wIAS1kNajGVI74JOT7hmrLsmgPLcJqN9txNmbWHClJ717tUJ2iO2abVFFNPi0dm7SkDdMU/uS
AbbFX7kweic4VGIocoWtqqNRQwdbSmLy9grJBv7Rq+T2riDR/a+KGvDOIQFg+nEz+jUFna2KXThp
6gBkUIBm1sp8EmzZJ8oUg2g0WUwW45njhcuJE0wnnjOZuiNn6buLaDkbj9gUsKWaFrxpjXQz6KwI
+Ur5O4byi8DoG/JTrnLeEAj4WqH7rUOssjQRmo40tY8fmT1RGCbIxjMOg4UPXRLcw99pzMZuoO3a
xp9K3z1FvAa+s6guYahc1G4WY2GwAPlZBA3Pms5QAlUiBbCB51s4zxi/iEXCnck4f1jPbaEVzRSR
yusGstmaOQAcwSWciAFqlGowHU7fahAlrdribXG3V02lv7st86LS9B854IRDcyTaeWfdRGWkKo7x
LwVhwCgYuS/McA/9vhI+9A5zVQ+aDylmhIcGM8IrOUvOtJS1LFtiEnl8z6yn25wToZ2/7o4sJLDv
F1Wf0ifpT2F2SjJEJHDDJNqpE4RGLEP4HnKuB4IHStEXklfTysDZEInTyOHqKA4o0aKZeJRQ0mCw
mAkmRYqBjHvziWRSO7CfACjPcNwkKC2ZCJ6DJM89lE6zFPUw/Yxaw2kCewcGsXGCzILG8gAEFiUM
PxnAGzl7ltF06kziYOEE02DuxEE8dqYj5kZB7LNxNO4Y/KXwnG0AvQKMx5DqA7gKcLtMZGZqPUwj
5WHg9OMZ2cqIMukO5KEaoCZ66w/8p5JRcUGOPjDsNu+qI9AJOABiB6xsOTaB0+908nPDxbeX/axN
lKDXj0MFhF8pR1FPUmtNbB8Yh7V573SjZ+XAPaASRIvOo4m44hNnpLXBFbt8VVbX8474V1wuFOln
ti63s/vidTBfjJfBwnXG81HgBGzuObPlNHTm48idLMdh7I5cqu3NR5Ox60azmTNZTDwnWPgTZxrE
geMF4WQcLpZxFM6IojPWSDfkBIrQL1OLa/7SWjJAwG8FhhxpT4Etu5Ru8yK9P+zLSdfPvCMgXcQS
eQ3uwoLd0V//VTGoZDpO4toIW7gQAatmGYvymInViaHNTTYTQXNhO9XbyGV5svDpVrRJkthTPaOM
YkcUofUIFFGnBaibw9M9G4nW3jAyBwlN6xmeThFOJ4GmkwPTrxtLvw4oHal01Sqk1h/sRwGOG7PF
eD7jhuqEjUJut05dZzJ3A2fB3MlsvhiNRt4EDoe1MRcCvKG8QSvRwOGhSgJKmbKeDQTIw07P9Qy0
bRB0ca2JCqOAMLk3YwR+sHo2aDuwZtXUauciS7iN0DCTqdjkFou2hclDKIkuATniBdGXJIK3s45I
57JGsLms2f4HHgXDKv3KsnmcM4EEUJ1ohF2bTokbMvF4axEBidrWZvTQAmDZ1U5w+ckpToPAN6cU
gPvCKTp//ZrrZ80N7lFegLU3QBFHb9IinZoAb3lLgBCy8n7MAxbWBsAj4yTXF6dQvmRyMQvpjpsC
FIq351bQymroRmV4xZreUWp1KsR4u7cO6Q6ZeutoeWj9OGJxqWfXqbE0kEuwnYw13hioPIg9bzKa
z0NnySazEuMNnGm0nDmzMFzEU89z/XEEGWbWW9/Y47cQoRbZee39wph5BUegDgaX7we6gsz9O7FV
k/IvDj+sN6uVw7g85AzM4vVtW4WhLsj4vEGYyu1q4K15t8AtSPHnvnYgZ0GLoarRhbH5kMeV/4oZ
gKD5eRoNEpZTrcUHc9nBm55lJBpSonECFrAFWQYpIzoabLESPh1LT8hFQoVlT0zzRV/PODtdjptD
dQ4LUhp1106rHaabwVjgGW6YTovMHmYOms3GqBK6dEozpanT8GiPUK17Suk8x3RJzoXpGNZFHbAy
0UFlHgaMU+JM5jPXCaL5wpmNItdh7jyI5948XoYeaLmM1vpdxjFFdm4VxxQjUKGk99j3+St7yGVQ
QhDgrpoIovODepg5ZgUMOVZjlDxaebrQXD9h0nruAgvzwZhf+bRiF5zgI2Jt3j+8VgwWYxowaa7m
wfdqFQuPZQg9HCi8W2HTZpFlBQIoADtEBIg6WE66EmqMUwmVrL/EK75sXsTFNnf8kUsHyKimDaBy
8AwvIlY02EgdvY5H3QQaqKMFVptJkS99pFwXUy3FKHSbMkGhjWiDRNknptepwEb8cbcVRuj9dlUk
nN/ZgxNnWfzwmT1s4uKu2Q4gzljDAGQDiwQUsAGX/ZQFpRKapwv22gfqiC3d60Go8QSn9gUoLzp6
4RQZDYx8y8El2NgHspGg6ec3yA+E+ktIGlRgF1VKTDiRwWhE1sE90AbeAmZCEe+YEHVne9R7A6/T
BnpQCdmJO7zUjrc3UNiURbNfhLzeRjRVeWGv6UqVtp8lt3DKF6Fxi6gAhXNy+MEDDdkevQClmoLM
ErqckqUDIE22lSMEMCMiQZtSyLSg0OcLtcIQE25DCBmzg26dIH38Zpil5WfAFNHieRudSBcUEtYo
SRqSy5qpN9HoCQIEGons3ZyuE66uQW5nAtiprztFPwSnsUnSZiDxfhzPg1k8GjvjOHadIFxOnNif
Rc58OV2G8dyNXcaIDhS2RrqZLAsR8q3WZMAR2K0+JEPyR7X1STj5Q4pCfOArpJZUQZwXcJhOCJR6
EIImCYRgSQLiN1M5QkY6X3mCk698v+V/rNNi9yNxsub/TT8njE5Mt4HAnuXq2jWA+2rNdMFERjGd
Gh4SJftJm0wEw0GVRv17OJ1O5sHS851oOprxezjxnHJApbOYLPzRaLScTpcwMsKAF2eNdjMiQIR8
q16yGIHX28hL69WKWs6Hz9zZx+VXn9bxPXu9TFMatYe15JFgsio+SbXATGkcnQFnre4QaJfR11Pd
KQlA4jjAKCYqJ0AL6CxGhWQn8jUfQ8bm2yxPvjBnGfONLx5Pw5a330QPeNb2lCLqM+1nA/VrC1w0
XWx7zrY+VcatdGWSeuKl6O1fVMHP4pwrlgVbJ4T6254RZYN/3YRiqMMZw9UcnvbAv4F/g2qpz4Hc
rvN4yZxtthKq9DeUCU/jFFVYIzOCY3hlg5Qa+DfwD8MBFYf1dpn/c76i8LCsXgn9bhyqSrSn7mDV
+yqCgtkWpq/g4ud150GntkKJwh40z6i07PRjGvkmXefM+ZoUd84sXTw4+cN6bi+kUUsOfESDdELr
1GCjVRv9v7VbHyhef/DCeHmhYrqAXZ4zlEI9tQ8eKIDRpaRbmDCWGschozjYd0DZ8OtBxAz69DHk
l3S6VLxapV+f90wqleuSNgvPCIKRup0DjA1qM9n/FPWeS/v/JO6SXs/6xXQyn40DZxJ4kRNEQeDE
y/HUmUfT2FuO/bHnhbDDDbUI6PRwQYGd4959pOMk7pHTccZl/PDG9i1wW2pdtiM9XXsw1NEAFCwK
yaB5p7ZTEKXpIe59YMUUsMYUYbdp619qcKsAR+6yZrUj/fUk8koLBi043R21KBRQhMH+GCsMZ5oQ
EEJsgFSrfpKjVfHyK/ZEoYCxEcFEyMMhA6Sg533zR5nm/PUcSKDhiFcQpeGTp7N/8sP8WKQZcz7G
9+z97u+AEXA5GrpVywfaef1RzK+S2/U91yc3u288/dVJ7jerhOVOnvybOfO7cnJzqWBajlLfYRm8
nWus0GyRSCRCycp0wWM36iwzIA1kygGMObUNQh5t6Jw2DZqogur6vfTyZZ9As9G/ifllKL4VP2yS
DXu9/8w/vY3nd8x5u1/++3XqzMtv/Pl/Dv/8Zk/e4d+dX+Nvzptb9v2o7gfe7DyJ97vO69//P08/
9d/OMk2///HNb0/f+bYj+fvf3338ve6z3u127/y83/z335y/pOmf/wfFuuwb06xdRlWXH3ouji5Z
KONIzhTZI8ySFw+rR4UFYYU3rc2v+fyzwxmVbgunuOumKaoJDQEmQeNnQpowlpTMsprbbJ9OWSPK
GgeVr6yMcSssB6yxRwAdyvkjmqXc0nSSZcaNygPguR8Q46y3q5Vx3MrMUCHcMio4eE7sAFTuJV4U
guAMHQX66gBGfmzZAxcTc7YpJQg/mhK5RsU460mgl5CEmlNPpkJJ2a0Ve/+WEDGTxEHAYgboM4CL
eYglfyqUXU/jaVP3AU9aisahz3cGeOUMQKX1+spsxUIlVwhenS4HtMyD+bq3QxNHV1zeBBial+D9
Ez75dm+0Or8/bNj3BftW3PAlk3UzFvo2Ywv+S0m8yr8vsi1r/ul33wqWcf9X4EcPIGt50/9MEknu
CvME5Y+cUCNl4YOBr5rwby8gWEtom9cRvNLTxSuBcV8DfMRCED3R2LEquOridNkSsuSwYExxREq6
PEnzHATcQGyYUx/aVGU30Q5hlkFc2ZEXevLHJ4ub+OQLvQhXblLHVilCluQw3mupHdPZPUHsjgxw
Rg1ntZ9tNPisxh0Yvzu+lk/cbfU74v77A1D7lA07oLSqnLME0epd/YCsuxTolAS3mRP7fuS7ROtS
Rn9NVot5nC1slVPK0KcOMtS67EU8WzHAPHBNoIlyF+Rz6oCAp4oTIpWkZclWC3TCWDAZXabMcjs1
xFajcFeQwB+AdMJGZpxlrycALC4wp6bpez0yfISHyLRZiYKrqlLZxcEw1EMCuGGtCguMTmGCOnFk
3zUxMBwPxTAHYhyQicpj/HN/QwXamqRPx0z6FQ/P5npvHC0YNCQLg4bwMCgx1LOPLdGHWC9J/DDs
SIAy7E5MOiQekw4he1tZAZtRZCB61MfDLkaEgYrU2+hJckq7g57FnSOBEFebfii1fS3pGpG1oyMz
HcZNOmQd9iUtXMwhMdbY25ZGlDEzMDSJG2pwWhg0CD8k4YdSi028t6XFBJqOYh3A7m/UHSQh6gg4
E5FtdhkpdnPcgfyrhP87l4hxViTr231P4tJVifHg4nY6ZLW9Gh/HZL2asZTNU9G3JmPrXXnVrBQ6
qO0HL1aGHqyijK+IWr+97lRoN8dQ+bTgB0vICy0ckM4UHQbgKU1SOgvLmdg3ns190QHN2WTpfZIz
wLYDihMZdzx9nvOWv/7+wVlxF+4bJzlZF9+/9Ebff8+/t/vbd/t2e68rz4zwSIAOFi3gTgG1ZFWP
O5zDjzs41dwzxVZ6jbJQoi3khZGLPOIKdX3wZ0XC3R/jDgiTO0FVJN07DP1V7BqGDQ3BiGCFGb4Y
hogJDal7JWTcqJ7rCF1deM/4AS74Pr//8I/fv+ccs3MtcLeBdDaclK6fC94WUL33bpW+dSbAeyKk
6dWjiZNnAAufkEXpJ1o5/Ot0/XCfbnPnPl2wcsb8/rgw8/YbSehPrr7NJpONLMbEr9UJ6X27kYnF
TA16qQ9glS3iwR6fXJI4+AXrcOOOiW7+WbLOy9De00hkbvIuk1XBsk8lRvJ6nqafE0YcPppgDCD1
1Xqzq2ELeseFpJbOPm4RF7GzzRI0E+p4QaItwDuR/dbAVpSwuvCCBtyGKXAnPgVHzkYrPhWmAbfh
q2bHkHreyqI+eImWnI+pGogy1JqL2APsS8n4pyAbUfdg2pEQ6bTXbsxUfebo2TVTzV4W9wNIt871
1dTngCM22KdnNwwROJRZWd/Oc0dULdADZYpo/56LLMvSbJdsila8WrVwP1pMC2yUVAdpiGdpZLtD
X6Whr5KMCATKVBOYUWDTShfZPID1i2HYi2xND1aRmW5AxB8QvuyVgnmVxnhx/NMlicJVV5S7Q7iT
tChxeh5gAIRw1+dR7wyhnKI3HEjLPaFdolRIQwzlNuSNufqejKg1SrURn1nP6VF9oEMLQgs3R6S/
stXKKX+aLV59Q+8KdbY60OY7Um2oWG1K/MUIiWQ7NWDSBBiugRNd32CPByRXnlK1rjD00Wv8we1M
lyMRUptdObZe0A1ZmjgJFGTDhQVt2k5P0Up/diCeuOWORt/4//hPMLZ+tVnfdrThtJ0UjbZzArsg
hu1kEXIJmMoK19m+mAKz74UPTRnPIdrH1TPQx1UebyGdGxGocaP2bu0qN53tBgRvtprVKLxlvZxQ
cCBYNlFST+B5ZAE7D6MZYJdz5FXsgfO3YAW8kyLiw/uPTbq2yJL55xXbVb3nr8Pv5pzLxesJSKVL
3+saD0+uO6nF19X7EtUP9rqDnHi0G1oJv6pmeWkhOeBp3a6gEvT8SQ+jUryb8UZN+wGt0k923T5H
HiU4oPdufLJuia9Z4nfhBS6TLOfcZUXBsnJUC3CxpzQCEdrFiCrZo5EVKLtxLcRlk6VcweQ5svI+
XrZnE3RJD7nsYL8XI/6cWVV7fHu7EGcRpteSV+8T94/8PleJSnHfpsPv6zblOULi9iBc8N2Ccf6+
dsMRHBw3uJyqB6m3SkDWQA+gDXQiwdNmssDDpiHpsGlIuKTckhkQdKRpYYeyGjvWVlDkClAxm4KO
mE2CdKpFMQ1EVseD/QQkJ/VWCcnaT+GgMU84oRwOR4tkX4nGtKyRQuIwStgRjan4qvQ0k6RTVfYr
BAnF9EJDhma7P1TwHNx7jSg6rZGZIc42xjcjlphHZC2nCCNj1cZ01r56083X2UZ1rI2ZglfRCmxA
oCw7U1F3sKeoI5Z0RNwjiWxY+r2wsCNzffNOrWvAoI0BA2rcQpWmeQ24eZxYX+Uh6uTCqRwPSu5d
NMTvqrnfpw61OPzocF5dh9HSjkxxV71Fg42iyjnJVcgOc3UnxvOMVtwlb0ed6adBK2v9seWMquMD
QDFz5C0qXJtjMuQMXXvO0KQ7uM2kIzbHZLA5cDknucqUrM0xHbzhE07Y0UyQGqVbk0isaqZpdzRT
Rwb2uVODuPPBmKZSLVFJDkrGgkd2RJk3wsm2GZOuFRkPWHP1vRj8viHzVfA22DQEvFE3tKs3wvBe
PLIjWDx3kK8nnEBqtNfBrhTX02jP686IAilSbegB17j34qknpNRYm8SLCoSI12ug3MxrosMIcRpC
n3AC2k4g2/nZ8wY74YQTxFHOwU7AsBOId7n1utMw2MORr2RbWHq+AdSv1kIQhfpkrQPiybtK3AEy
pPQwbhWLihSe198mk93RkKDmscSEFCoqpyNdAD3ivSL16bNJmQHVTbbtnhcMTtsJJ0gValyhn2dV
THWke5nXnYZwnmpbrmaD3ENPSGimxHw5gU8i78ZHTLch21rNCweI++Q+KDa52XU9dPZSHbvZzcXa
PZuvYEC/WzK7QqSY+lAmosN9+WdAxQDpSH89vZMQFRMXXY+G/lG1GgKxnZPi2lWnCbiuinVsL4NY
kCQc25Zs8zsvgvJfaBUQ+FjJ4v0JqfQ60GHJGOlIizKPeIsyffpsUtZ/lEAi0mdAhY3JKtex/ijK
jMWLh7yIC+bkD+u5k27YGnksZR0J/YZQWsxIn0y7l6seYUm896rUe+rC0Ex02lVepXZjHmDrZUzW
ehl3J7DYkU513thkdUsaFzC1KHIu9TEZhqybA7/KCVh7s9GKgXNBBQ48RLZbnjfpWbCMkPK/uGuQ
CssoLZIDhV28OcJqCNklNv5pR7nXLIeQr7ztcWXXhAeiWAYTpVBPxRWFKQkRRvAt2ard6XAoRaoN
h0SAPkQfDjVUg53NSzECbzCYfSSVIK+7gYX1gueiy0n7VGTCppX04LhDZBt5ekMjz1NO0G81ds3A
NLDV0J1Gnl5HGnl606HFNC7nWmzRgEzaWoCnf32yjU/9kelstWQNNzS60XH34TBu+W3LBMwaN0QP
KB5S8fo3lNQfdcby8Ik3YfU70oTVH/Vr3HH3YCBlTMbXBINglzQBA/lyMNBgtMs+aklTmV7RSWAB
RvPJdpT25TJH6p5dAGdCNy45wH+PJ0guKqOgW4eBCD35FXnfF0NPmLAvAlvhtADfdAsws4mxnUHi
ndh9tyPOoAqdChJB0UwbDHvfxSj88sm2Qvc9IwYuvn0Ll00WkvHFwiGGf3JLgWP4HfEAhm76nc/l
tWExwbf3bxLVuKY5LqgqvppNS7Q74xN8b8gtQeJcu6vxONbWbpJnFTG2xg5IHomPl65xy9oKgfrU
rL/qTiiJN6UD1UxEeTyqnnWm6HvNwOOxoRgXcosZs9mElu29x+nTbfYKGcppQySkhi/RTiIjYZX7
lOrZQv3hUZY8BuJTZVSlyeDR+Op93EtF5qMC048L4iTNkJ3U4wdAue+Ppj6RysNGqogWAw+9tVtM
Xx/TvMdNOBVasL8tPxuf63U7O4Ges9OF/LEeOCRYxnRHZotJ0WnD6A8Gox+Yc9VKLsA2+gO4ZJSI
TDJKhFgPQHbAmh9iGPeIaeH9q9dseKJYZn1gB7UPCKH2ROas92SYLJiJEoLAz6IAyirJRZoEWzXi
OjKUDegkqbgkodk0+pOLZyuPBN3OJ4vMnByH0lOz56qEWq5KiO2qhNpJJ8DZ1H3DpvWtydCONRli
Y9OhUm8CyedKdryhr+dft/ju9PoMRFjhsu4Y45HFRpVD9Qg1k7cjAxh94gMYhV9VtVKKsA20SANL
HiIHfmSuAOLRKyGSbVJNDr388d6B14bN3AgTiY7s+A7RFaeZVL9TXb/m8PHlwkWWzLalSY1UlqVA
EIwXMybjvIx1mybwNzLGtizGQ71RF/XF2I4IH2OqqbGx6ST321WRzNOV/ZLVC0r0xMUEW1xMVByR
XmnyixOEUuI20DkVyuRvsJ4L0PUcUBXLAvAu2A1jTLDjCRM7inOi3A5E7mroqRNsbULT9uwvVqH/
XrGfq53XaiLmWKM8PZESaUkzhKh20OCPSpGxErP05OWb1UrmOMUk+gSoNQyyNW5eWzxyW+9yALkC
EsCeoqbv2yj7a4FqHq8tvhqTW1nfOBBaT0M1kPWIPb2+yw0iJk2X9kGrYyJgQPwJvVSkCcTIk5r7
41O70D7gWU8NWcCHW9kR41eEJ4at3koGwd5jshLaB5bQnnk/YEr8ZgvyRKNflByDQG92QO1CB0D3
mEheUyU1IPrIHVExOdwRwj0mK6EDlLMmZ2eek2TwRXOvcRXP+XrWHYgLSvQjyPnXuJjfOWm2S2MG
T2EVIEADSLrgD9DrD6k9+hDwrbtknrgL+bKJKOx6koa3LsgoqEdPVuWHGCrfpafyTceg/soecpQR
kHXrGhRteREXz5Ubtg2XSmqGJp5dylg4vqeYmQuG1lUP/Yitri69I2rqRK5W+g82e5s9bIr0zYdf
bm7ZmmX8qXOe8Ys252eQs/zTbx/ffPz4xvnw17cfXeeL+yl89TXNPrNMauN/7H4lF9+7LmEygNt/
//q3n/mt+o39a8v/4fgGZsn884rbOg8/7KZZvQ6+WzAuGl+74ajuJp59GPtSntEmS2+z8v0opdQ0
61GPjEb3elSurnv/4ErV8btBw/NCZwUoXunRZI+XCgYdEe+5maxBrvwzl3xJ3CZY3dyx1YarXpx3
crYiCS5Ufr5FsWGRL2oWJVnoJMKATjx60AlcplURz1YEEIdTMq660u6UFUBPfEztZY8BH7RP5h37
YM+XiEVXQ8/woNHiHmOyynuMobx9esrbB1feHo1H78En8kyoXerJIN9Oj9/0gw7IvOMA4XoDSi/p
10xWkUz0R7PK73944pc8Mf7W6SnvADHbekrtoU2NGywEsjKLhaEuRH9lDx5264jHNWGM55DMsyM4
WqrncxbNpH883k+s2lu59Uymmgit3PySfQvSw+BM7jqlQdZunMI54pRykouFufrHFilNz14LUSeP
D8MJTUtz35o0R58/LrRmszQPLGiQYGid21HLLLD2tgJkmzCAa2WGWjgrQZBJa4Z9K5x0vXog4Kxf
kAJjyZAZLe1GZpCJ0IJmCGE1w1AmAiylQ2QpHVqwuEJNiyuy8K4iaJ9dvEGAktyW+nBrE7nb5LL+
Lq5MTHWg76pCGwpl60V9JcNiPgJqyu1GhrcIvDkjOizS1CdjC/pkGH7TVQ9+bM2DHyO/qzFE5SSZ
oVnu2LjPnsE46+qq1TZykMlABnpWhKFsgokFXTBB8NmHKIlp6Tix4DlPrOmeCYgugE61rN1O8ytX
VSjStjeIONGbk1YjxKnE1TPcvsIu2VlorosaZR/AFDjZakGRIHsSyg767s+/x/csR7XLTpfVelpk
3ggekkDiaZ0eIcpdV1nSwIuWWFbaqMnv0u1q4azTwplnrOwUktxvVsk8Kbgqjuefc+SZ32ZoVbQY
dv9ZsGWy3q1+s8ycLf/S+ZoUd86G8VNcF/Etw2OHDEGgVpJHzTjSKoN8LNop/wpfLFSzaFulkNkX
oaSc0w1bv91meZrh1mCcrUsPRa852vkdm392uD+TbvkB3PVmtqeazrZwkZW1rk1ahS8TNYlBP2pl
0go7E0qmYR8cH8G8GS7DFlN2uMyaOlZmEX9mznbj5Jt4zmgawtUkwtq/FhAzJcpgLWKsLgI2bVYl
VmhEAoFt5OrHomkatxQY2sBkLZq1XYoN1h0mZE4V3s21Y73rEGrLEFYVC3j2b++C+zCGuW/BArVR
Symzurxxmfw7Wd9SsnZPCbp6zO+UHZrWiyVcT6PYosYVsO6LwLsc1EZ5S3ZaHZKcialLq5rLgqpW
TlIoP+Kv7MFWKOR0aYja3GedQq3ZSB1l8nnAepbzFWbT2rOiDLz40zeDlqphdGlVAatCAKrhqtng
sg4MpgNL48HQPtn0Vd/YJNKTO+3bU7/+0Hqho7mCl8eIZnqqLGtaEamhRM+i+/DlepWs2WMxBCY8
JESJITjheIHDoTvLFfuWlM2ZV2x9W9zZ2L0qhabErvkmaOqaJcAdSH3JB/BaxwCj4qPlmj2agOVv
lHZbOYQuv+aiQiNxNK3HjBKSRKBQ8eZZ38AAY5I27AJ7FlZgx6YMzECa9lwq3ThQg1H47H5+uytI
mKknFJFPahcRo7vv8e2VH8ecOGOxiG089CuAFkfKuJ/uoVvpuKW4dZOCGLAVbkAW4QtQC9SNuys9
nzVi38huEhSIqYsWSSVC5KUp9pk9ZPH6lhsn6/lqu0Crvq9ctz8JJJZ9okruIjhE8uuasT3m6Wp7
v86dLP1KEJMVoBXG9fHIIPPww2pRx6lJEDRgt2RSWCpFFZy+s2SzVMqXrsCxxraCboVp0Fp7L0nZ
Q2YtBDHDoL/AtzLmIMxACHtS7NS8xU4jfitukvv4ls2S4j7e3Oy7DPxSfufH3XfKPDD2/gvLlqv0
K07trMizXsf3j+lq5feh7UllZmnEnrXYoJRI8HiBPnHHIM0yNi+Q/czThYHMbXKRBo94pIGMe90g
CJUfKKR0hiFKw9chi02HfW2eqr9eh/H3YQyPcdvuVEMSg+VrrRFEUFOFQdpmvrFTIXUe9oEGtQ3U
En+fLtjqqYn5rlgGF3qtIUDJWE9n/+T3LS/SjDnxYuFstmUhy5xtdio1zRYsw0q8FSVlKD3uSI6K
6IGiQRtmCVKW90bIUPX1Oce440AvcHZGF4zX7pMJkvnwQbKImnsWmSzZQY52ke6z3+2MobOXT8wb
MUedPbokLElb9dRtlAAU+lWH88qjW33h/sKXeLVlhDJM5MgF0p+CqHeX7O/rgbhUTRXZwAKekJZ7
E9TxCojdAGoig+Rq2JRkgxGROQV2qhwP7LcOPJ3TYVJFHxq/xtsiPYwosKyEawjSxtzmKxZnFBC3
ekJIzbDtef2GEUyp/igRIigGCFGXuW1jyKHARMWNouukMZhvcPjLjHPsM6VGMdV0gShjGq5zLUGw
6plAHzYhykAR1zFZY3Rs7i4IvzRiGXLN9OlLhAP77zfb4tH7eZp5vVylcfldW220VCkkmkHV2R5A
queA5+uDUNjsefAFWcEo+EANlJBygq6n9fD5nTwJEIDIUVlLYxbnyVzL7VBxOBpuqpVsClV6rPvK
2oxUubCmyzkuriKolTuhZtxOAGza3TVwNlm6YVnxsPcn+KfNWUkNCf9WjEIAr293zYj5exU0GbLo
zx+wJa9GlCJtQHovEHf/TMckqycHVtKR9ecnkP58q2Sx9fi1SR2s+E6Vq8gIAuTQhhlyDJqwiqTI
KtpD2tk6LeLy32ho/yqiDKv/Y1jdKn7XRBCoMpxS04FTC6rPI6/xPDN5CbeseLNaOWzNf2POnhpC
YJt/dWRoKXLsGt3ezM7WUFJ1B4mstgHIUDdplIjR0BF0XNcmwgAQizP7gBh20UgdrEon699Obfq3
Xnf8W8/AvLVLkfRX9pATUf3VpAwpiR0sAW46UER3WZ8MEDNAgSBhRZPfcdLK0ydQzXRJiyFPfZlk
eeGsWFFwiWnVRa+kBMVjoep+gJajXN4o29VJkhQpm0neiJjddiBI2wzZDdtwSqbmd6BWmAwFuEao
T9729I0HmHFHb1pop2uECdoVmCpGSsV7kHnfQHa0WctQaY+IbSquOZpooSqX8GROAxMtJW1YDEgE
0CCDG2EqzDNIJM8bUUXyzilDNqK6g+T5BjNV6A8tgla7J69ebWAllp2nOVmxA2PyelMIZNEIoTxW
j/Y8PYBBesfS619blj1IZsoqGBMAiScguEk9O3SLHtp4A2pfudTMKndohdvVOFj9E7ESftIlxwj0
okiEprFFbJSktRmSbb5JQN57CoiKw2sc2WjBmuvWHEScAYiApr08qSpWnd1+OgIkQYS+kCfSGSEN
1vImi2y6NpHNoDvIZtCdqVxX2AsYUklDTHIyqta6N9oIdKZRlc7zyWhfuHwTMjNRzA5DEVNjHjW9
6g1qoi/V3Bp33n7AQIkgiyrByEQQefMuJG+AhoBp5j49L9WH81K7MjIFZlYK/eB2l7UTgqrpyoCN
now1oTAgxPPI4keeTfwo7A5+FIL0dTsozZIACsVix3Qo7jDhry2ZJ3uwPq/A73ectRfz1KBPu6Ao
YyVg4sSzUolYKCe6WJ98qFJMhvkimU6qBpD51IuLY1CoYSkl1X2Ss54NgZM5b/gZcIZOsD5J5fgU
Ma6RkircxMl6Z40R7Dd7QRuIXqbjXVcShKqpLfDCBKGg4LVP1rr3Ea3747dIZuqKKI0QcsMjIi48
dCnhERcOCLnaATVREKBKAI+wpeCBWQoeNUvBs2cpeF2xFEx3LzvY5SzL0iy36OYfEQAr6chaPwFu
NSsyVEIaE5CWVD769KLLZ4KgFuEMY0K11JKchcVHpKmQv7W6RYXqN0hRsD/OJ13dpllS3N2fdIJd
Zow5+SaeM2e7Tgo8oS5NFahaC6lps1D6rv33r3/7mb+Z39i/tvwfjl95lsw/r9irzcMPc76N4rU7
qnteZ5/BvpSUZSxePORFXLD5Xdkl0lml8WKvZdtPo/ITi+Se8WMuPwFYBPvmyqIPMgDQ/kHWA21H
gynofKB67cpDQ5CjFqxkdfL6U9KNWZXQ9nwgY1VaazdrC/6C4odSV9znrzmVI+FJmh8eirt0/XGe
JZtC7JQrd7HdlOqlFBK3nKjcmWdpnvMbfZusm/WFcVHYQgmsPULWzQ77Kjv2LEnv78tcMlY45Wvj
imuZvsq3sy7XOKtcbnThZYSehtNDI+b9h99/ef/3jw0Sds49VO6tzlb8CW0e6j/pw/uPTYI6Y4sk
4w9xb9cv2Gt/NP6u3F35UF8fdut641cj/n9u5W7ladIQ+Rq/Wh6wLF/RDpyz/YW9ozK7TdcdKd/H
Ll9rMz6MEtyH9YYUNE6/brbbLF+kbrdZ2sauJkDBP1+klNScajLn98sCnIaiE0/J3ide8j6EuInb
ZowakoS4r1kYOTm5TdJH0h/FbuiU6/gucgUFATGbsgvuYljc1cgAcmEXrZBBKHAHUkC4r2KnpoB3
fE2KuzKFZBVvcrZwiiyef0auYdEns3+NvY3ciRb5sv84KAUuIOCeCNDngufJCbRlkpX22e4Tc6dc
/ene7ccYAF5/JVKGEIYB0SrGakRo0ABBRryUwEQU+dGsJpUUpGCYikYmjPmIgZojAuMUyfqrita/
WpBFJAXkPn89+u4xD2T0Xc6XSZYP++f02gXTdYbosys4tEwxohE9QXoVr2DFQaxTSrZENTWm0sJ3
f7GYFf68/jALFtIqqb5FMN1cQKhRFM9wuSHkM+s7Y+SLywgw4wok1VuQbuC0d1kq5N8YvhwQsYXz
8tO5iZ5tFyLdbMw4AnCuk7iJvm99+zRuO6c1JEl9C5jZvoEpL0r8aqrar/yfF3ERO7NVOkND9C9W
Bcw1rLP/Pczp170xMI0fAHzfm7a7h2PFSq1qFbnvW9iggvXuZGKfhEBRUnNlwAqGL6uf1+1l3LVi
nz2OKCrtVsn4sgALqhBmqoFGlYFmqX+QFFlYrVRCwq1UQiOWNP+CxXNM1LdqZRsWdcciAN5QJQit
XY5vJK6dLbxy44u6ZQW+oXVYtD8t9OncxwNrca+iyKJm9BcufnhuZBzoOxudYbEPeBNBmHBgaMLS
ajBqSVjWtqwOvxvGhm/EtryLc3x9dFi0P/aRcQl/4BBYfNGsEhShtvFC5DasolzOKhKT2f924m9J
vhfdYk3BZfEGQZdIQ531p2GP3pkZDLMJcdp4cmTFhRl8AJNiOmfYjWukljZucnQMj5HvYtXbUNXT
dXEDRSWNrqD7ZSISEFeWRNUQnAZc3Cr5NGXd/r4FgQmT+3nEHWT+mroF6SESI2Q4249MNjHKuIVd
ez/Mo4FtzDbT+UDv0bn+FM8aBRohYo9BECZwYLArhubWZfOTblkRr1Z8+U26ztkdi/nFz/ke088J
wwMtW6kYPGpjFmMrr1HCbHpUNNcsHD4N0oMUJcAaN6o/sWyXvrX9rJ+JGF418Kt+ZrXFRy1IhJaV
5pHyF6TCBwbFmMJVpSn5ZO+t3rUBD0GYmYAm7hyRSd5tJ85C6kHQMYA9MNLyoPKh2bUEBhMA3gSw
q/vNGPLOLM6T+Sv+h/CJvcl/yZWmPVyqMuPLCmvRo33jXAEhXsDfB2VtLoiLqityn3RZtSKjwM0f
36DV82xRbPNyM2W3g8X+Z/eJGCCpqzUq7fR2O/M4Z5wFOVvnSZF8ASz2M8QjjTluYru3YN2F3TDq
wiFRyLj1I3AhsUwhXVJ6CHBCsKTiY/eYqcP3yBVTxjA9HAFSDHRw2y3n7E/CTg+3CwoGMQYjNSou
EGJqkQGCujRjDRuHrW5BBlMBIfOYoYZqkJoNLrdrHIWo/NqrLhE4TzTcQe3qChEftwOuuiynMNKd
sH11/FQ2XSJt+LQdi1iEpiIWZyKSZVma7YKDNu36MyoG4xfQ4jzjtSX3XYYKsTuUs+wL/8/C7k0+
o2Joxg14k894bdi2Kr9sR77hXojM7tDMqGOmQBcg+5Zy8uVp057a0Qf0Ufk1ckNnu0id4OY+zj7z
Tyi9tbS4K1uI7P+FrXbWJFIBi46VFiEYk3Ls0nBw9BlhzErdzYaJV86cy9WYvzrcNBshYoaKT0hN
X8lyS6arAjFXIP3NMOXyg7dlPKtw0g1bcwFj21GtocZQz9RKW8sCUKFAF7QxGFjvllpH0yD4AQV/
zXuzJPlVqDFuWXUMuIz05ISwtQvIlv5rb61npnlUik7CY0Lvmv8Yv5//LsNt+z2hmQfNJACD2Ge0
PIcpf9gkG/Y63846jYJb10XNh4uigDRICEbBC8FrAk9Ms/jaxFnOnGch9sP9gzPf5kV6f/jm6zu2
WqUvvdHXNFstXgLNImyXs/KEIrFWwXr3sLVkO/M4v074B3vKyjzTSPDW4UZXXukI4/BMUUmfqfz4
+f9HfBdmae2abtntAG7UrTLQgBAJM8tDpIOvTb3j7uc6j+c7z/RjfM/e7/6NIoakXDemsnftQKWS
FAB8VkByC/USa1kJ047ohjNCO+d0TLvidEztOB06EOG4G0jmGE2Enj0WqNvXiN5xBqSZaPKT2c3C
32CIPIxnhiFckUeWnf3/Lvhe1UR3xr+dtvBYP51TroDJSGwRuuoIGQA2dcq2oWL1cqwGHwCxAEqb
CmNFeaqUGIDxCNvko64AYPTdx664i5Q9RPoMJMs9wpEmnc6dd0kpvhO+pQ6XnlbyQSOMdMYU6My7
kCBqaqDVz1Bc1XCncNIbJNY0juV0LItubDaLbodVYLJAgABF1CThXMyW8Rx0+G/zmoDZ376I0jQk
35LFSq+E2rRU/I19zZJycvSLQyeNF5u4uDte/A82++Wnv30ozaOsFDxFevyv/CP5nrybVTJ7/Lqb
mW1nLJfdl47ZIty8wowKO7mDgnrk7DUitnMytzLamtV3B2BtPfuOcOmv2gz7Z9bdLNL7V5zvMLu6
XAfpbHWsm0k3jLCJlLavwyI/xYuFB5ej3rqsru245CxzNlm6YVmRgFpdMhTInwpacIVk4ZaZK6Ye
G3i6jjbCIyYWB1tW2VIjWijqYxaKpl9YxsX2hh1+GKZ3uaYNUUukCdXi21EtvqXe5JOOATkTtdeA
3OlMQVX2tSys9dLj6xAft4+p2JIyFptN5LGRFMNI3iqNC8DpGU0HFqBNyhDavInE9qdt4ZsQtkwr
E9QOKqbLKiawo2ICfBUToOedT7thMk6NhPyS9R2XGIXzJV5traA2FQSY8HdCO/5OKKOIzqDWchp9
XsRZsWuR8dRtAyd2Wbc4kOljCcgXpQhYOZpCG2EwQLNmh6ccqr5CLJX4HJ1WyYdrGoQ2geIQeUZQ
nYBGiS7rLW5YlliAE6cdgxOnZvPCTm00mzBNEyUmzMao2WysspzK7mhOvCznyMSz8kmbNjyhbNVI
0FatMxmrNn7VhlOHtXeEr70jm9o7MhpvLX2IsnqCf6PItgtmIbwoQxU6UOp1Cij1zKuVsXGlYNhi
cEcWBpw+ccbONILDnqHLRYx6qrQbNVdZBCj+ifTCJ1cpn6ebUha4J3/L7+JF+tWJ85zfMH5t1lzC
7q/SjC3L4uHdeggCTZu8IdTT5VDP2E6oZ4xvEY6VCnWP3n5edrDefXdf0YrW8rmFBgAQ/dywowWo
N1J31ZMRzJqqPtIYupb7jVABZMYqkSbevHfhm+kFlazL0TrFcfX/MlnxPX4qx+q+/m9nmaYaDstE
RnSiDSfX4gbmbWllLT6G7Y66hWGf0yvLMR2rGXloyO7KLbY7ibFzXxz2hbMJPlXPHI90YeTq3aN0
cqBa+tPR6p2JTVh3YsdXmog5LkPDETHtWy0M8IAkhfWbzZOD3rM3C+qZAAw+iDmK93F2y+220lN8
1P4k4iZNdKFHTvxORU5885GTqZ08zqlGHufl29lkKX+FOf8GLiLVQIQFB8Ttht/hWsPMgaH2Aafv
QTRgatEUOpUgiLmPZkgx5eFM7TgZU9igZrZdodR/qNOljZn2wQyXuPj6Ni+d1hFCBJqwN/dJIfgG
535dUxanPTPTSiFu0AXnKKCci0E8dVXk1tm0R2TH0gHZ0MZNnb1UGm6raStegK8gNqToeZp0pzsW
dnRxw4478xaTRQYI1LFS7hm3qBfOLL3d5rhWyvnKRqxF15K16CIU2/RaOovcEDyYRWplGbdpuyoS
LuRoBFbOiRmKxbpZLLaXPpj+naiCNG8AuwTzGzUJBnBtjdsH8zhnnICcrfOkSL4wK6ZCFREW4mZe
NwxnD1imdyC5G84mqbqK6OaJNBHijke5vrPcrnejGOPVzusQaRzTKAo9UqX4enww1SnRFW32/tO7
v737/Z3daIoEDWjXuW/RJVVm/PzuzU92uSFMAQY73n/4/Zf3f/9olyMyRGAw5cP7j5ZfjDAFKOz4
h21u/ON3WsJ0SNwnFOuxOnfDtTR4w/Wg8DYyFbm1RKHH6cMuxOlDoxgGAQRDCb9ofDOWhom4PmzU
g0AbHrmx2FeU7VF7obHTPjQJgbsrAu/iv//x91/evv/t73atUCkq4I8GL8SEjWB+44yep9na6HHj
mMBq0IhRw1BsnI4Uj8kLPAMMMeuTtK85v0ve/vWdZZEmQwSSRFOGm8kkI7UTJ6DyPrz5/e3PllEX
YRLgr8YmLmyzQ5wEeHbwC/dgWXKIUgDPjLfvbTNDmAJ4ZiTrn979t11uiJMAz4779IvlWKAwBcj6
tRl7+1KOE+RkODtHj0QaXg1JRoChQKB9vjmgDtBSAYOwAs1+x8bYZQDgLMM9821mB9o8XpwUJAjj
jaKPwXN9SAQSL4A3TH2ilSboa6QzaYIJgVX4JLCIVh8LS/S0QeHFJaEBgRxBHIxCJkmvTa1xvm9S
zrDiYVOapIWTP6znVhRsLSVGLMUQZSKGsAksGKwXs/FEh4DasPUxx1xeawFZ7ctBF71qlJj1O6Iu
JH1E9ArS+jnh1LxVF1pKHLM6fVRgdeOGe8cK+X1zeMfuj5ytF7iG2MmyRqyuyFLiVoRQri5nr9PC
Dq0VqukwTcaHN2HTnDwHbEdafHER81yt93GVoFimq3IyRfGtoAoWyexdY4zAMyMAj5V+1SrZZq0w
RpjVIbKuham5boTtvnWqA3lk2ujj/rI1y+94bQt9B4Ju2PkByhTXa5vBcXkDsQ094bVb3Q87To9G
P1cgow7CdJI7JXF3g9yg3QaqDI33pNuE2Wj35aq7lLEly7DntR4tOnStMW2ZU+uIa976x7f9zVj+
/MudgRUn61K8zTgBny0kJgqTNAQpTdlVRwIPGz4TXbqlX0fLnNfDKra6iYhRB8E24z5Vx2I9BhsQ
lsasxVkKlctrx37mKxZnngU/6HnhwUE3K1ErLwqejy6/vK6rRasuUX8eMrJDoZBs3eYVgjaXtuYF
GbHWn+Uebu9gQFqFwQKFNt9Qbprg1pq1cfmVBSPgcVlTXZrqnCxLfaqkSUNKHzFgjYbd791DxK4P
rSSanDw/bE9ZfHEBy9u3ZfL7utPsdoEFS3l3l2vLO2DoGb69QbrM2V++teQQweXFfY5k/SXJk9mK
OfkqLUSnYJg1EX1Qc1aVDVcND8va4wi2nkFNeCGGEU0AxbVVzwLYyPfoBXc8M10ndpIpsGXmBLpm
zjZblfDZtuB8idefuSG85nIO19ypp8FC0lnYschDiIX72QDHsTUg2eTlDgZ761+1PYs4QM6ZkF3U
nO0Cwn1AFhDLQjQ4c/fUZSATRGoiy1A+4eHhlHqM//aD3eZjdcSYMQBt2X8mzL/Z4+SUjJ//IZYI
EnLQstYRPEcVBpnspCa0deg0BjxMEN/JVxQRMBoTghhrpn1PbGZQ49OW8WXD5gUdeoAt2gx66xGt
TqFm/Y0mPYmHnJqhxPiZG7KpMfr52vDF1LaNXq6vdbnEnbMs5S7ZXbJguTO/S1aLbP/pNv3FOpL0
/SdOeWElNfhpYaMeFD52frE8ZRCYdg8yu4PbRD1Cn4QV0R9bxbKBgm2gP8k9O0C8ieUxFtZ6nIoq
5XmzyOB31cKwl9q4md2xwG0EgrkrdxZGNd6VEM2ma2fH6FJJUZA1sqXmsTbLPvPJuHB2ua8Kruvx
d+jDAGNq2bGwqPXUUyiB+4PN3mYPmyJ98+GXm7Lt2Bf2aZYU+afP7CG/ufu8WL76mmafW9vT6Bsb
drNR/9htMrdRnfYkjkynHttPUhfbGrTNKE6A3GuwWfcnxlktP4Nu3ZyPVDeHmeImd/VIxec1L7np
nRv0ocbdcPXG2k1BdqIyvd3mFhydx2VF6Re/L1D3XIYC7Fu/TRz/ZpZ+c/Lk36XMhIvgNSsnwJKF
tq2qzV6r3UR/GrtcWwuZE/EC4x7KiAJkB1Vo4+LYxi6N9zFbrOxMzdWU9fF09USZ0yafvnChkGa5
RXVyRAL4RRxy/Ijm+D0pJBtxrcBGEFGwrEPg6lu0BLGebJ0eYOt5uuAiE9+yP14ZuP43oFf/GwyA
v3E/12CwilSsypTNd/zibFQEyq8PdzvMeYEaKXzP7D1speyZ+/Knv4B18JUhAux0xYnwopeeH4Z+
OH7p/0iAKSf0wPKnAcXAzDRpXb4/GkzTrVRUPj12ZpQNe3n9oHtctmN1Ntwn9bagpTRbZvFtqYnx
/YbjlYfhCOattGP+4mKSwitrOV50A9eBUuC6/pVnLC7Y7p9bClw6MlnVWA2V/BUXZrK2J5Dx72QJ
NzfxHOeJlCEpZV+D5Ig/sQj+3I1z2dz9+OGOrTavLXlFZ1TASnoBKrhftkzTWZxZ58cTJbA8GUYx
U/JazpQApimvtLRpH0aGiBZ8wbeCavhKVTDtbucyXq1mXAGQiISfEKObD/bP+Euc78Tnobub4+H7
gjVEDMOWzLuFNazG9RBViBC2331nm8dlS7osub0rnPhr/GCjL0ArQd2bqmwsuJvbn9SZI0zm7ICp
Ztw7Aoxq9MCsrBEFtq09LbJM279axMBdZeOGFgEzSyVnp8LothvJ9PVK4MXtbTJddxuoGkqPEUxm
AgZz11pho2xXRLsEzoKt2OEvDvvC1cGnNFuwzK6P0EiWactbMHTWqEt2M2DgIAMM6182TNeqXy95
0osBul0On2vaoo3P0rbVboA407a7OkmmrfdpN4p6p8P0NyCr7VIY45pskus3xyWTdYKXonW5LMbe
6x280IpbGQJ5k3nxsKJRUflMickcpdBh95vi4TN72MTFnV2r+pIWXRTn5Gb7+BDO5fqGnQPPPizv
DUgGhk70LetEH98m7Fhzz2l3pjLiNOTGtY86XknepAY1O7UZsQt9e26qKkMgIAZJWtqsVruxmBA6
FrOzWWkFYipIMmplhpatzFDGyhS58REd2D1ShdoHJEZR6oeWrc7QWFVSjjRQUokU7fqELiNOIaHc
e1DbIZKH2LubW+aNuppSZvOlmTadI2pRMEWCjN9LjQCysvi7/EUd32FsxWUYw3gKFFwD875AZNkX
iJQzBg/S5+arOxp9uuN/vMq/3ML1oTpZM3Mdt3m5+t8tSf2k8wFfxT4AUROJSNUxqI8G7daNFdy6
alFVeYptw7jrhJzu+o/PxsL6d5b3D7r0UESm421Flj36yKhH79uPf/pDtKcHqYNjao7SmEaK4Fge
s+glSBVhh7+9UbfC3+f0GoM0f4i/pJwW/qhW8ZxZujunRGDepPaIFqnwmtIdEBFEE+cLv52LXR9u
u1Goc0pMQgZ2AYN+hdTakKyhd6hhG+r8Ydg2odToEb4x0P1OwGw6Kb5cu8Ns11026yzTCX/7Q/hb
pzRYboovyN6ly4V1ol8G3BO3G16Ua9xwnu4zFtfxPbNrN58RYjyGyIWJw0UuiCfUaEJnbJFkO2Hm
7GcDOWmW3CZr+GmLsjwxUTbdtFtg56F31dDULPizJ2rbgFcix7S1LEPEEJqStISahAmu1a1MSYvT
OLGSpmOs7fWeKWWL5ZKPpenyes+eb3ePHOKsW7Isk5rtLNUI2h95LwzTaed2NDpFyXqVrNl+LAGJ
jovVBGnfKRPXx5APQ++GXGSRGE9Dak9cUUvcmAgmboioXHdk11PZr0+qpNmUvtOQmbjuesein67x
6Gdefpxzx+IFy/LykJbJqmDZp9IQfb07FoCx8qLzFpbb1QrF85IyFGxEauwPZhG7KpblA+xImt19
tLxDBH94r5fsFT/LrG/aDRdYWxUaI5VBUUeWbpYBEjIpvHwvrav67RoyjF2BkXIdqVoW3y/8nFCD
x6jmWlOJzDYTpt98fGK34cXEsJXeUyxD4dpbjuhcYSCIBIigby0btxNdCpErbSrg1zeNgHjdAGo8
QviMNtBiDIowPJgTCJLQlzZQUIIZ3FTIOcy2NBrSntBiMmHJ9Syj/56JrP6DDZUn95sVs+ZvPy8P
nJrT4l2s4od0W+z/lb+O8r8k2sOIekd19Ot7RG2d76GgieebYRq37Yhhb61JcNtdELhT9D0M42Y9
+JxlM+8F1qonMWza9TRyGuB6yQjYZoczRHnY5xuWz6iYSnThkNk87AMw7q91LBHAMwwxdrHAo+LS
GXINfMuugQ9WuVC6UuQCkZdEablFORcjmzjP+f1YOGv+iPL4ntkJSbaRctVjpntQyeD6JEwli13z
XZ9Qba/+DZZ30GnNNtdAGqQlsFnMoE1UojtlWgS1ueB2A9RTuAYqbsA/e842pfVKoZl/NT2q9sUX
lvGXwu6Te1Y8bHYZDDORvh4GLX+flpwR5pBKt01j7KLcN89W8/VG03zHTq4hcn6WO/s8B6p2plqJ
2NfRUMLvFUf1Qyxvxqau1BuWbGwNWnReO6QNCLTvZrApL+JiW+YJaH/ADwcl9Lq4S/L8Lt2uFuu0
uI8/s3iRLMu8g/WccdW0SFnevcSKp20iPWOz/IYlWsK7+rezu7RObK/GtpIS7XCyO7LhtrgjLWzw
/LgX/FOc8oIh5k0006A4tVfLPO5Y3MPHmn5qs7yj+ZaQm7EBOaTg8Obh2qHQs8BlT1tAeZaf+7pg
34qX3l/4RyTrl/6Pc05vzoqX/k9JnjqTSTh13O8etexL/+19fvvSf/dy4r+MwvLPcLL7esz/iX/K
/l9tmydgG8N+qZLWOZkIXhtppnT1IcPXydicJV+4Qtjx2OEfM+f8vkuWxT+T3J4aFyYPupkraRQG
WG4KH4IdZMMMeSo2vwUTT44k7eyVaoVQfvSJPvjH739xJs+q4EIDkFJn0tQTuJhtSyXrXUtop/yG
U37HnsiuJMWAYyzV7t2gYxSQDj/r70x5WFvT8QyDveHUceUDs6N65UmRtID3lu865aLzYcWcFYs/
k7DM6+jCUrj73uO543qh96y5/vIXuLZMkhR/u18du4bf+Lca3VpjyryOM3hX3IJJU81t5Ffd9rGr
NF7s3hEIMiyetxI68bZIkzX/Xqk47VlKFwyRUcWqW1WEwlv8jhkZD2h2RfD1xQW6JjRXYfMDoEsH
0DV1d0FQu94NKoDNJqlQM5byeZQpAcx3kqXJuJuvhJxcuvhuf4EQ9Qz9NnaJGiJ/sNnb7GFTpG8+
/HLD7ZjkC/s0S4p8N+Rtdyc/sfnibve9V+VlzAEtLkViTMWkdlUCx1jptlg6E3t2ej09SrBmx/MG
XMlMLiUwhVYctpXA/lQbUnJv6t8dZsmSIaqMgFsfy6CR8//95eOzlf7OL23ySbT7wnv54/TxOxPa
QTeprdg4K0rQQH6y9WkQ+Ko62jjwQy8GPsMd8wuNjGCevfR7+na/ImSXHagxY3M/cxDq9MXXx78J
g6WipWcON5GUnSJCk3BoQaCPfbODvkyKJyf94Igv+F85xRkr5ncwA9Tg8AbR7ZgO8ZhJrnGtVs27
LkrW2iXqXWGD+m/LBUrU2397z59hfMv4X35mq1X60hv9kWarxct3f3n549uXE/cAgz/91P7vh98n
DvhDbh1fYkm68nRABfI19BQbD1Hqa0khwmC3qWVfhioLuRzbdc52Wh2hSKLK6njEcOd3bP750fEt
7rqf9GjGulIqipY9ZMjifUw2CF8ti8RKhaPKv5KJjZ0RYyjt6j5ZJ/fb+9J0Zs7R3Cer46bbiBqi
I3BefousspMWrkOUkeBCVTpTx4qShLZg7YBqDcMFW7GC2ZgAcrSymXYPOVstnafvSQBTpNtvCeJZ
LZs3ZwNpgNpnKlZarGyy9JYTlzvsC99jWaeXb1L+MpxFXMTO7b+TDVpsQ4wUfaDPs4LveVQDcYov
FSt+J33Be5e3qus2i+b2IMDfhvGfI3WHjP1Ir6x1GGoBEw1wT3R7oiHc3SMmJrfEycaXYfRLgptT
K41nc1oQmxpooymnUswigrMmgCC8Frva9NQwUFRWZy/tKcpq2ckeLBuBMVMjHDUCNJl6fvUjZu/j
W/bqNln+sEk27HX5if9TZMn884r9KQhHo9F/Ltz/zLw/gws5CTTz2TL5dldQg1pPiNMePLC3gnxr
OI6PgON4IjiOgJ1z93mxhIo7AIcqzkiXMba1XzaeJNLFvLye9bTp6EgpXWfZt+YsY4+REl3V4MRo
FV+hnwCUHZvbA5wtgUCSLcPaU65mPOBW8zifxwt2qD3BicMLEmEgXGA3L9jrfk9yNeTszCzTtuMD
a3Z8QLQ5L0IIR/oQr7AZooBAFxR2kNiISVJ0/BBfofWpOILgkfBeBTzX8mF9+sIFTZrZKs47IwFL
TOjDRJ7hkYEtdxXYZx7i3cIPxlxCg7QfGki2zLRQ0SFKqIR4sCEWDMMWASiAYCti2/FSCvM+sN8B
P91HM/LMEybiJ4XWPLTQTGahbwUh8HWKK0SPOLA2wa2FJK32YxY6j6k3HfNhXejBjoQxqEJrEZfQ
WmGu6PqafhzlXARPKRehXO6WpfesyB74cj+9//XXuMiSbwigeuOy/SlfG8zgdp1K0MQMOmCfBxLI
59Fre6Rvkd7f719d+bPOtkhWEG0BhoBzzYk3CkC4oLL6siKeTWTNp4oQstdCel5JqAQuC4sDwJtE
ew6IlQ2aszQq3DnAvIJeti0y7B1Flr2jSD5ls/USWSoUi8jN3bGc1NfnJLuQXpJd2AHnIDTTeroe
cPApNr+Rx6ZrdLxnB/2Qy3pvEZNja7b4GMEWj+jZ4hFG/gW4N9+LRgT8jPaZQsHNMp1v83IoEf/Z
B2fNzwYX3TTuYHl2EAIPBatTX9yCUyl+06DTcY2G1K4QiI507hftBBoID2xs2ZkdQ6S3EQILxnKh
zEtHfdyi3+z4clEHHKcIpJuBJeXUdDmge+p2QZN3ZhqKuKUB6fILJkAYEC4G9moHgFBOw7jI3Mpc
x0VOFntcUj5ZbAxbhTOm5+yPTUFNPng8ptLEgAOHWvdqZCDP8y4QABd8fL5LZYa2TDUZoXOhUMrm
h8laAAqyYyqPLfQms3dC/S7DFbl/lqxx3yao55NzBXqXlA4FUFjGf6z09gFOLw8oBlQDjGKfCZAF
3OCuWBihLMcNlXLx1n1qeyuxs6M5zm2Ex08XNxQkF5isChgol54nOszrkbAwTi8Msm0lsfjgnfYg
gjihWsoy6UDQZUI4pfoq8pp1DXLJoagGrXJb41hlVhdBAbAsUmEStI3FXfsu/tX69tXXNPvMMqmd
/bH7lVwpTUJU7EzpWf9T3XqeNv53saOjhNlVvenu9kFE2Lo6OEC5ID7Qj8Qeu9LeCBCkEDzOHlTn
WvRZ2uGSwxkL3BULAQThO4IhN7CdqylV52raAedqKqkHLsYCfQLpW6Q7UK2dXOk0loMAIBV1FX73
2lDowhoMuoCvF3JH5Gx9dzT0a0UuC6p8TGv2dX8lRRNBDKIXC9A+rSBQz8Ia2LKQK2EXOGwZmVMP
nHjWIBsPq+JwCDEQtOzcEVGzWJ8wKyTpxwq6WU6nDjmdSlPkCKvE4npQUkgxMyfUycw5WuZRWHGf
6Rv/H/8JxtavNutb7P3WEiIoCGRZp+Ev3bLCs+AsPS5rAMy0OmTqfHlgz8/FRm73nnmyTFpDXroe
pAsIWLbb0uf7JOXJ9tzkNOKDPgoUZG/OwLLqTqzQ4kMFqrgZdi4FrBQTSBExxMr60h3OdenHX1yX
njPsGqmc8+znLCmOK23SDr4dy95HiIF49GIgnpFcs1/WSeF84Z+/iAvmLJNv2w1wTYm80yn6WFrt
7rrNIrgBJnau7726VpxW1x7g0oFAHmn4E7mjryrbaYFkp68WNn2EZq+zR61sy0/1e9vljNDmrD50
VF/J60NLCehd2HISPQVH1mTmm42xM3WGrA0ESYkWAQfVt+Ya+8Y84qDZI9Zx/wDYA+WgB4IOuq5H
rNvD/kOa8M/DHuB3uqqil6Ri8nWkbXJ/Iwr9zZq5kiwyH8Si6kwIQaYFlim3MrATdQ1serOAe0Y4
eVPW5qmexLK3JVbVw3ojiqlykSnc2W7WlGska6oCTORrf/MopP5dEGIc1YxA+xS7Ab0AW2DMDQyN
B0ZbfAnIcGXrRvVaMJxuwUyZiW8/3O4bEUFm3bxh+jSSodyBmehuQC/XJsAoPOnR6KfriOG06h9K
/rgptze04/aGsJ5nk+a341x6sFZuSM/KDQ25eJ4Vzw6ljHfIXCZlTYW6aTXNGTXWLbGwF9kGMqd0
Kov/3228gInCtfqvUbOj3p5HoJZCgJCZ0cBiI0OFHpmnj6214VAWGtArU4cyvLYZeGgD1roRlb22
pOBehmlNGesn0gtUarY9K9zZQ+L7Nu5/Rnb8z8hm2DWSa5pkO+08Uk07lzTsIno+bESvP7MZtd4D
L9C8Z9GBWdhSNKI6z5GuW+ahJkeeLGoiFDu2U6M6NtN9xrObR+Ehdp/5wrIi4TfeWWUIKblGyLvq
fqRDMiuxkNEYM3ZzIqdtGexjaG8Bbt9gO7aL03Sh4ymu+VqlNyibstL0diSMJL0vPVx4LILCtiBO
gLafFax8rDSwSZhBBrN8w28hhRzfUzKMA0hjZdfwN8519Lq5k0VNuIZ2PEPw5kWnks6j7Uh5PUPy
KIRLTh4KlkMgvmgL5uCLaM4/2Oxt9rAp0jcffuGErFkWF+yv7GFH/qeY5c58Nn9V0g45f1uWCpTo
cI+8akDXUT7UU3dT5TWRCJoD4j2CTlAxBWOIebgnT2/BsuQL+zRLivzTZ/awZ9WnzezzYul9Yveb
4mH/J65AUKCKnh40VY9SmUB1J56bZ8FX9+jNQ+1vlqc060nBJNotidS7EflgTZwNVSlymfjXpHj7
8eO+exCg9G2WEfkJV6dB4Evbb0oljlX7R0sT1LzXxHoOicgj1GM2wl4zJa+htUrXcHDhTfnRVbIC
Mb4lvfyl0bstktXNHVttWJaDcblpRRwpoAmEk05pH6vB6rX8zbdzfi9zhnQf6pZGvBjdTDhEn3TW
CpW/Wa1Ew2j4MWibrulV9yGTZgWprO2xbNY2ijAx5EMpQF7dcfLVut/VSzXFvqXnRtphqr2MIfHH
7ldy5WBsAwnQnq1t99H0DSf3xKWdhKPD7+6xw+66+QYdLs+XvXuNYyS3E2HxOTSAnXbT4X0Lxb5U
J4B2PgL8qIZNKWD0aK7QBihEdOU4rWmlBdLpIzWykFKhnSC9tIx09dPTaChZ+zitWTcds+P+mVNu
UtnzUdUWoKSAZuGqOpEUoILAyECc0H4XW42BlEei5i4pbYGSPXgJ42drgrcpmlAM5UzMRHCeAyFF
RiGp9oSKrjR3V9R4pHrCT+jBPKYsz7B7qS6tJt6ZDEQpBVBa09j56XdcGFtBlsZy1HNVzc/pX1v+
LeeOxYsy9QGsmKlutaEJ67XGXMOOmeMhtVb30uT1d6ZDle2erAuWLWNOsrVsYZkU7DGaC620duey
CASMfiVs8OxaAeuvndp8Bs5/2CQb9jrfzq62mqSOIbWXvsbuAH1o5tc0vVqn0yd0n7YAZBVJB4Ag
c5bhoLlIOlQClTYteXydipKc6QyUEGZEu2VDRDwt3JqABE9DVzCBjOBIMo/gN/Y1SwpunL44KLYX
m7i4OyaEb/SXn/72Ic7yfWC2SI//lX9kslh5N6tk9vi1ZHXxPOa31pmnq7S8rVOhDPK9Is436Tpn
YojKGXeVyH7+df7zdDo17Gj771//9jO/G7/tD/Fmk6W3WXmHv5SCYc75VGTbUjER601Vd5CyKQWN
t0ngw8yorJNrAfBYn5aUOm21JvjVLwRSDR/9/iPsdPQ5UFpAZGUk40MisCMaarYBRFlbszOQcJ9+
BS5OKvcGoEd9GLHCu4PBRz3tJBohxBZqDRE0zFl6cRsQqC4Od2k1mr6uw2hug8Cw5HGZQYYlFzVf
Z618yaVMfEhOmiMEtv0ufC3wRGWCU7V/YKEKtHp1Un1gAFDg6yh3VN2wAYNqDDQGtt6ecX3AJRuZ
KuXQ1BIODEcZO1ONsp4q1gFf5UY19fShgKEaCQIk0h7T+5u3Hz8CXviGiKX9eoZI3cc/5V1H2p2R
civgtHFL0Zo9YKFWZmMDBq7fr95VZLDkYa7nyJyFoFujtIyT1TbbhUtsFilVkAFjo9lG5LVBOQyE
dgwocCVsNGuQigQZyELjyJ7qTiBjTC8HRv+NiZ6EZtaLmftlKpNAouMBRqaOXvRySrH+eKoRSdXM
fVFoZ1FhNUdY1YBVy5qrbA5H37zQ/kC7MzKM4+nTK00OUhJkHawDqrCrpXG8pxDeIi5iJ86y+GG2
XS73sCA8uj0hPctTfUcyMl7mRAj2E92t9/z6nt7kK66xwBCEvYHGX8Iyi+/Zb9sVI3GRSCFrkilR
NSzFyPtSI94aXltz2aEUFWzFmZISkW2gt0rXt+SmzZ0RRVW0auR+GkFPGvURkYwwK0DNhajsUAIE
xvGbgmEU+NyLGTxKktl2gr+F4Xr14e1xP41CWEB30jEAetKFjp2yTG2700qNvU4sbM8FSnqpFWpP
8gy94PhoZSRZLIBqHg5A9CQv1fLhJs9T7lCsi1ebhx8OX77+ma1WqSiPPzwUd+n64zxLNoVyNlY7
OeDmRpfSNVraw/Nrl/el/2Lj5TcyPeiJW9Jpf4+WZS4AIAGAHCJMMFSvfvqsZqt0BtggsZ69xmDR
xx0oxoRUVPiUdhuSaWfLDQwMaDiDcgArw6eASbt9nwQmfUr0tbmBnADpFGwyYNCjEIZDJSCRTE3q
Tc+cspHG20v8o8726MV4WKXN0Rm6Z3CE1pPVr9DsD3Hcn4zOg53uJsawS9Ai3RarZM24qnKhXCRz
lHdz1Lgy0G57ZLml9JzKewljOZnG3mwi+9MuIOXTjoUfph0buD6VaLLQHaBY3Ji3MevS2uBKJVyk
IfZkv2J5rDaBrfHyLNiS/wqDQ0RFV5cGsP9eOgGbeA6UAXkJ6V4uiIfAuiPSCOyBvP6MASKDMx29
EMSqQTUahrOthy0uhQdK/pjkslfWXvXD+49NVtq/V8mMm2i0vEY1S9SWS3NQDFRbp4qSJ3ZR9IWr
OwpHHXH+RFjXCFw8G7Pf7gqQ7Mi9CCwl39+SvMAq36zbolKDoRPioQcXYxqZskQZcXZu/51sLHk6
j0t3pFkU6QG9ros9C1Dc4Dp5sGBqT3ktY8yXkUX1iMbEGpYy6VLrNpJtQoXEHUqrHYWlWwy63WeI
W/7SNrnY8prbbzEmLVSrgNXXdAQowHC4XNoOl9utEJcIvacW+8fiYYUGSZ8uJqOTjzuP7JqsbzNW
siRLOEf+HRdJugbWzaIUGLH8H9ugWbL+j5cfQHIDZvbpxQe2syUW63zf1F52CW6ULyjhO49ESVMT
WOUB99qXx30EAUKz0w7Ur0qXo4zH+slamFGeCGMPU3kk6Pn7UfkgzZchnTixU2cf7xgr0EzU59W0
S36LLJl/5qp4lzq1XRevo+8WjDsDr90Q5DO/yzmrkyXfxPq2uHvtgmACGr8qgnXZT12aqKUuXSHu
BuvOemomjwpaYx8K8VDHhlmBJ7zeuCRWsnLOlBNKSo7Mms+q1PmSsK83b8sS+g9pnpQmqUBVirYG
b1p2ADI0b0MTcwEhDeVlTdncPu1cVl+hocZ/seLHkupkffsbN3PADeuq9aCbODZ6P4LOulKzyvyu
JE2khSbpWmA9p0+4AFGXu/0cTwM/NKPqSdLrqGon0bYVPFHOlFMz/aTPykrmm4vWhFpbW9IurBSe
eHdkH/30/tfyaghkjpJyCH3wu1zHIDMZYVPM1kK9cUJEeKotR2ScmvPLAe7OSC14ZEj/yhZJXP6W
V2oehACYyqMOwP2JczZoxDHUN9iHQbp4fd/O7Xa8dvRkp9a3iUA4I0pr5c40/j+XEiTdm0eN8PPv
v/7tx3Tx4HycZ+lq9SZj8ad/bZPsc36fLpjlCgLs919lwAkwiOBcECO+uvxFttlCzEwbQVtdwKTu
afeGa7d2af4re7jy+VzahiFZ8CPoWDZ7YKjz+OOdFtUP2o2HSAP71locGRKtFKPzwiYKEqChS0kT
+u3jl6b7OAXlgEX+BuB1jTTK5yQOAYC4HaKDqLzXB4UqNimLC7XteEgENN0z9lE1t/NUrkc3YINe
IZIptF4W522HuverQUEVsgEEgDRg9IZEu0XIstAk4B7K5zjt7aAdcvL/bln2UBKNl4JYsy5wDqK9
oZBA5X1kQpfdabht018PpWKZ8/R+sy3KyrVSskA2rcfZWicRqxAn3l0jD5G8Ya3VGy+rbrV/sv7C
T2jhPH6jeNhYaG5cR8Xg7ugaTTXXBjJZUGXJRuwFERRpXBoc/vEo9hP0DJm+JZLh7HDYUhMku2bz
ALnpXe3RFxkAxQDrVjthf0rdPPj8Pllth9v8TY8KYzfeIEKqVjN9UFp8L3t9FRf8jsy4AnPu00Wy
5PSWFV85eEqhGAXa/QCW6WrBslfFtwLLxLtYGOWmWtEDBJLSNNySajmJ7ZopUHFl49zoz3AwoxqI
F8lEHUtmiYbeB7rOtJCKBvWt9SloBGL+me9bd+HCP4+rKjiZH+fl9Dtnk3xjq5/YhquOw3fm6SrN
dt9Bi7lI0IIzCStbwQeczJBHtDdGpXm+YPNVnO2eG7SL0Im01bZXjevWyq0qd7Y2O0ZM6HTE1Kjy
atwcTCcFc+6ShHwHd5pM0dLlCWaauDbwQKVeYg/InV/qwL5FkvNfeXDWqdCw+e54v0cmEV3vV5pI
y96vKL323cpm80NnQsvzBG3QWCFyXxojnDMxL1JaWAnyRvhUQcxkA3eKxkfYaTUMO/TIxNm7vjjS
sv/y9rkT1NtVwtcvu4gIps4hbMibGBfvCFRPfTmgSeQohtQpmN4YldIcv1GGPBnDabd71SIPC9y1
1ybCFDQLNeKkRiD+zr6VlMTFNqcNWcuPrhDcsXTKSnJf3u0MZHradbSBq+QjpOMieBUs5KVJkSDZ
OneVrm/3RfhCfYnhmgq0EqWdYHXHYr5qDjkOVZQA8AtQB+fby9ieKGVsd2qs6zCyRUA7iyrRxwOI
+ZKMrV/x73YE0PSAW5hY6w2OegFETG7vitLpW9HM/C5epF+1iyXFofEz2wykar5OIT5smLPgu9/d
Nr75r2n2mWU42UQid9JU8vzZoaIA9zLnemaxVwhtmOUU7gV4kZhPsUjMp4c5YnQWrvQghrIEUBTO
o4DCeTQza7qcL9gkVHGhGFVCSOPeNuScAWPepw0F+8bbego1RW4GgNoucsc6gJptsix/ldsRt3aG
o4qgJ5uXKzD+5x7WOwxnZxh1rLXrovW/7UZXWpPmo+XmXGSMky61jVA/yAsr9dk6zWEQK1LYp28h
mbOLO9KNUpwFV6bgkB8CG03hkrVKDstZETY+KL0TI7wTFYAqU7kqr/yQTGcW2Kk6LDxER3p1TWyU
clN39Q5n7bEEwHZUklEN5c5AuvoowE2h4992tuv4S5ys4tmKYYWszHDJQEJd8/6l0+v2ampXYHJc
X5KzAs+Lrl2d4KyxzgQblK6PWkbBkbIhVKUIxADcsxdhN/HGEl0DZGy6yAEVF7lrfbZFuWfWM65V
XMB5JUZWpwByBcq9nM6QgXqpDiUdtEjqo87ql89uz1/Xy0uf2stLn9LNS4eDJJteOYr7HQK538fK
Zpmui2U8Z2VqoTPn2y6y7T5eTdrnDlUQUsFNK/Txe/7SSe5vn7sb5ngjk9pJAM/tDCjmdgbSe28F
5Lx+9P63MGFJkLUoGdytcgDL29CgoglNfAqmcT8iXRw6UaN2Rq2kgCikQRovHPAWVQuBbjvGdn3d
q2lpomdCCsMIMV1F5atgo06yy6n6lWoJNUdfnoJGFwYpnHexpF7I88DIBeOP+dXm4Yf7/DX/af7z
YrxkX0oGFsk945JAjH+1w56T8h/gzKP2dWVds1N4BmKefPOhHdos8FM7NBB7/dJ/+9L/y7f71Utv
xIVonqTrl/5PL72x+2rE/+TfZev9Xd9/+yvfe/o1d1wv9Mp/9//y0n/HP+Rb+R8WvYynL6fL8kO9
v5Tf+q6cmvM63mxWh86I5fdbfTDy9L/0f5xzKZKzgn/q8Uf2amPbYulMgFVQR7oitr9i1C7tGraR
6MS/CiNnf8WcfN/yO+H3NCv1CqAaI/9e8EyY7srEgUcN4hXHApVjzP/FVynp50won/Z+o/esiPk3
qo9YgBcF+1bwb/RyWIkCYAjaIJrgmeNYTKi7aDGPTIbNIqTZseq3tSW01WQ6GHFHrVwHcOFtx+DV
wfGffeYD8ifWtqsjwgpHW6u6CO3cLLJk/pk/5x07t5yZ0Xc7HOe1G45kG4kv4iJ2Nll6m5UXQ+4m
g6tpJQ58l2/YPFk+rNj6trh77ZLjSBeeC45Vq6nn2pE9GFzZ1LpVUhZoTc0sDspVaIG57DgZAKc9
mQKwhI1C8impNFeQyHCTuQvSStJAkoFkwo90cWPH8hAi9Bgy5qWxn1MQdSynINLL6irNJcGMrosA
bumBl30W3qwX77MFRFktQBLZxYZVk34rd4+irK8rveLiwFBTK+RWbw7Ppxu2frvN8jQTeGgdjpVr
3zbDIyA6GpRTvPiC149qwfxexN7HScv0AWQzvrt4v8bTCkbBi4pDEUHpK7Uj1XmzSvT2FfRC0rd6
zDcVwBpfa6abdEJVV0L1Q6Ie6eA5kVQ5bZEhDSyhb7X/SUcKvpnGBKdOh/gVWHUEBrIVKx/EX7L0
/kOarAuZeUdXkx9o6jYaCah3Oj1BC3MRSe8w2wjYHcEFEzHsz7/85eQk+ccla23NTi7hURAWMZuz
WsVakx//jq+w/xN+HZkVDJlqrfpHBrs3kpsgcVmgUkEkSCBalyKb3oBtDUsJRBx0xZhUIEhuN6i0
wE5pIt/95eWPP7788S9PX4BqBZRF3nrSH3+MLHKWf8i4xMyKBye/4xK3lCJSmF8HCgENXOZvFCrl
BK4vPcFQdUFBqcTWhrYPQ+w5oyRemNDC30SKXOEa85jHFSq3SBHJwz3/ymcjffjiScMhgUhWswD/
hqJ07Y+C91/RKybFZSis9fLOfzlxX/4oZRjazysdA2UUNOgZNP1sPQl23LsJeGOclpEt+Jr561qn
GegZ9q3KjHBejc6xAoTZZa0Y2Ul1gioZqqC7XiHRDSH2OZFczGOET2tTXNtUosqEdsv1iWpz9Aqx
5uH0RK9dWXQXde+eyw3UblWnq/ZnnucpYHQx9YZ/rxSxtOqUTBWqPJ4mpM1oZm2xAxK9lcRun0lc
Srzx3lmI1SVxxa3Uj8CDq6qUCUT0PyXrL1xvLgTqw6jabkSK3mtVNa3x3zrE2oQnJlSmD7Ylm7jW
2gBggIqTjhWry9ArKS4Rm9A1mi3AbqWBtWGNO5BPN2/odY1eTViNcrujUKndkRjuB9ixSBKBlO5L
g3BDO+LQyyX3m3973c9sP1aUlpOW5UkxnLgtTIApoHMKOXaz1oHwaaO/U7WBmy3bpSFWlfHJ+20R
z5JVUjzQgiiFKabO/44ggt2JsrW8Rxshbh/M+DEB1NqattjPYbDkHD8rIxzapHJ38KEpbdRzipGU
1QkiDVy8dpDvr+xBpF0eyCi9i/U1R+q5iAhM49KaqQrbbIWfqfC4KKlEBdMB/MdNYvikEBMeDXqH
JkbXwTUnrLY8hcfX3bB8Hrfm+3TAXuvM9G9xIW8Idg5EDhe8ZYkIcoI0v8nQCViBPY6eq6wNIB0K
iUS7KhlN3xLSPOARksBeRw/xG6gf7Yp0EkaXaWpecT91ea1ZDMyOqc2xz9giyfgJlVn25aKlb/E6
uY9v2avbZIk4yJYQTAOPM0LXCPY3bW33y7v7md/MVlvmxBmLX23Wt7Z35Y+8FzpPjZoi0cErjvQ4
JSPDFk508LE6gw1K0asGpYreEIsQJDwXGvwES9WoutaEgOGg84Cr5D4sh9t3Cgk9PW4gWWbxPYPP
bYBap8o9PloL9ggR12yChj0EGLBySU0U+tv9ypnFeTI3HhkwhWC64njgLSvepvebbcEWH8uAirPh
L3KRdmKa1slByE/Satq6bBG4kQODg5ytNS0agv7ahmHTNYUPtAKtLo8Tnjx2C2Wm4utLoI79mWlr
CrtShzYFY9zWAkcqN6J3E2RdFx7st40VuPLuzIlhnSclDiYajDH0YFAq2OhfnrYDUXcdDhz7ylYr
p/zpku3ofW/PVodVgQJdjM6HotxAtWmUaa1URRQsp+iXQlGoTT96hjbAQNHlTfmEHhy6VQmNyNhP
e9/gLimj2CXFdDp+NDxI7so4xddkPzwex6/3MKw4oQOVh0fOTlevf131IYhq09r8Ce6XemAo3JkU
4JomXUHmn7buUq9g7Yh+G0ATqYKlfmJTmkDT2YO3hLGcCAh4fEtm07qN7Q0iYeJcsjVH3UKjq05m
QtDutSRFHgXwxdN5xkNRbb3NgJX1IbqkjoGij84gzv3sQB2GMgY5BjSnjRVqPJrfhoI+IWoJmzHg
T8EuM5IiL8R9fFmpR68+ej+G6VUfyvfFvklKVghM5davhjldSbEgRsWqoN3PxvVRppDhBaGNeHan
l0Ur24tLzSR2HpswkFK5Z6AfJYUqfQwi+OHpUag38M+fu7bscyBz5ZpYsavceGAwCLGtBvgWXP8G
3LPmpPuXWuF3oEGIFJEU8ARft5cItwd9Cy1EHpclCvXj2RLXCPULP+RKZQSLRZpeUifWcGpMoKez
SizfpbjakQp+XvRCGfcRLq0xNbCgU5XlK7xrD8YS7tIEEOErDHs4+sNeRIBpEMTUN5Yj+DTp0H/7
7aX/jv/npvzvft6hNHQEmZFjCs4JpJx4tTxI86inD4rSmsKSfZh5rVV3E8kgMXbhwBsMjSkPghgb
alQod0cO81pFyzXPVdJek4iWewrA/2oFSdDNW4w9ySN2w77O/vq3bZfRkyhcab7QOIbvpVM6T1dp
JhDPkoysYVR2dWhC8qlBBtlZRWIlI0Jmlt5uc70H4CE8AJOj1hveD9Tc81rOIwAxRuh86f34DdzN
ljrWrqaKmr0/+3MhZx50LBgVdCEYFXQsGBUgabCDmcw/Olm/9H9sk1RIdZnyJHdAFRzT3Skmd4O9
X5IFSznJ35z4K//de9aFu1xDNAK7m5CzwE4UO5CJYhvnfMcuSncEXldkXTfE3FG3AtpcPSK0Q3c1
78hdzTHuajP6sB9v6szjvDWjEi7N74IIZDh/ZyDBuegGPAkrRSgKTLSVVSOU57rDFneQ124WmQBk
jD2OGn9miZmLSQYdB8mNCKxNwpZbvOGKYwnUI3uBi4RssURMFQgkYTzrFtWeQ90yV0uzpbxQXfDL
a8nuAMt33dk51fmXW/XAg0QNiG4GaCeGyvQgTfXCVMaJ1F1cR7xkKcjETkVumk39lSOiv90w9PLB
JqJJVWATu0il/RjK+agwJTseKMXaln6G40R3soGVmGdIuz9S2IU4d2gkHQ4ue7et6Hudrp1FOt/u
tlgq/BwuFiXBA5mE6db8wAh/snk9a433FYnk+4rU2Tf7z8zStJAbdHzp4IcUujmIQdpnm1YbVFvD
AdluLzmXLb9tuaqbcxGWs4LfIWeXY4nQ/6V5begOKJp4sa4Yj0i0WcY3HqXFF1rhTGRmhDna3u3N
JlAIXnS+wQCpdoCmgDmMXnMKN7uvsq9Ve+O24gv7MtDiyKp4dGuT+/I/j5bFK/6P2NDdmZWHO+UC
hA6wa2a7mwBGAysAhFrmZDvfC0wPqmx2NWAL1jTWtuG1NohQolw2Y/h3B0WNugBTRlLtalTUdkdv
ugiId2x1N8JamkEEOBQYEOE8Y45GDESVU7LNNU7g53S5LC+MYH5hswHAL+6KYY6bpeesHzHo6Mt9
OgG/P9mDs0ryMpBesGwZzxlMvEMMNwecENwc8ji7czbapeoCg2evHrjV1qUXE4kPmhN6sBZxRhlW
Vu1L+J0hzMqTfXSmgi2RVrDlYHDYiLVULQ3cV1Z0TGtZK1DOZ/3uONsM0CqBHTpbuRvMF6uBZgm/
cHODgyvZtU81LPNzCZ/pM5EIp2vIVNLK5NXmlhfF95sDz/jfiQHJXRtaKV9zRrruyCwI/2xwYUya
hwB5BXdAa8arTH9e0+KEsINxCjvFzm3G2FonOKUZGhK8WyBhoahjg8CiHoStTUWOI2ArtM1hQTE7
H54Nu6evHhrNFdPBKumt1+DbR4IGYW1tQWXG+yDiF9TdIixfwZBrc76ZBwm73apPVkV4Z3jvjfhX
/9fL8Me3P735/Q3/L//OMk1ncVb+U/jTyTaJH4fUXrBOSDkgNBUJ3hjiWR3DFM+/G0iZ9PaRwXCd
a2OmdOLLra2ePI9LK+Pf67Kr8YZrcVEIvCEE8ZX/fvoVMMBnFH6v2blkEFuQDYbi1Li1Yjmbb7Ok
eHC4NMiTBct2PRpe5duZbonQmFqJkDDTTUWtxrIJE3Jno1hDly53eeHO07defUNMaejEmGRpx6lK
HEDgh3XB2JozBZzVZAXE7O/4NIsDA03lPbRIK0rjgoWMBGJgaZfJbrNsLbR6MbC0bI6VzgPBCn+J
cMVa7ItiIJVWMxnFAMO4Y8GhMX713hi68aRJw7IWCkrub1/9c3OL3Lz2sCqCmFQN+5orblAJ/qho
8nbYqIhnYNnq6ogcMLox3/IXe+88cuPm7e7v7/Z//Y3dJnmRPdgC8p5PBKWKYqoMaohzUbGZbc7W
Cyeez9mmcFbx+nYb3zK4vkSCi6vjqxYSi5UyipsU3MTOjJKJDOfJJFxdy5oIw+sqANlXqjN9LfTJ
JZR3dOW/oo4TCGs72jVcdXoN1GsxwzuDYJ6FDKomS88CtGVkcQU8UilvrlEHKMZpAYAx6AM18ZSN
9gkjZTB0NG93Ape3q7esUAjxxHsUGuZuHuibgAKTkhzQHtzChWX5ec4dixcs22VkLZNVwbJPJQL0
+uy9W8oWkyMSXJ4NzDTIzL3O3mV5n6Z35wINMvThi8aFTWTpWQL2DCFhxgGYVvBlagNzk02Kat0A
HHpkq7OiEt7rjaDA/jMf76fH9qLzjMUFOzh7JBosG/FpGsUUpBurvrCJdDKNOwfdPFxLcIvfXpKN
eloVDz7CANz/shvNRk1DdnC+osaaA6RADFKY2px/OrWDZ0zlisuqMvwtd4KT7Yl17nEky4y7izje
zdFagLqh15vTM//P7JXnDzv7F+eOrTYlqECoPWQtEHLQN5sHUqaVuGkI24lCDXVSuSnQrDAWhNUm
oP0qQtlLZ7ByPk83bNcosexWXf4tWd/C5eXV+5Ee0KLmHr1h9BXypMWgTU8p20/o8vQH9YJANt0R
HLQJgC15trAlmYXb+S1s2tZqLna/KR6ckqanKUaQlqE0HdDqqx473xZ3/BOS+S4b3pnFeTJ35mWl
Jy6E30SGgmdzl5RXqJxjgOMAnK3XkQuridEC59xrtyQk+gwp169jzwQ0ECmQrUbo4nzNdhlJejKX
zEUwgkIrcwq77UO77YNbjiiwJq2STRiC2z0wX6iYwKB6NxfuO7NVwON8MutZaezUeMRa3Zfy4mHF
nJHrih4uPZPFeOzilCdES7S6n1bi23L9ffFQTSsiBedhSAFjqmPDniQgZ8jhIT6G7r4mi+IOIztS
kAKtNMMqc4vfXi5nyuqNOLvNBebfNWp5l1TTNw0mmMpQ3HNEFWf4+fdf/3bQALt2CEW2Le8/IiTW
RAHlst1G0ReQSFa0NLajVcQgVc0ZokPgoOmFSubp/X26vtkWySq/+nLw/r02Db0jeOlP7481Oszk
XTTpGNT+bCjswWCMtRYUKLmifZIxeqC6+8paaebesEVGPV0NYLhD/fgE9onfMbXRxIJtZeW5BiE+
0WRgSNAnEMVeRO1EA/2D7+NifvdrSS+1nv7Ch6nYL+J051IfYtcOa0l/4yu4uz+hUvDIh8ktudin
F0oeYj18ya9DvHC+ZlwK7jsTzPlObpkAGqmzCR0JDaeag5H7QuK6Y79E85bfY0PRcPQtHB2aim7W
t5IAYrxIN1w6OpwJq1k8/yzYWq2VppIoIar6aKtzvZ5+4cp8lX51cpaVCv7f+ya1OlOqBMV1bUBE
UGjIqDdlywdMhpiwJITfmv0NmikMqRQCJnqGul5zuEeK9WcipXMa6gyRbpAQwHXmvdGQ5mINEgaZ
WFTPk4nqWbTQiV+KIWWkET1okCGQCSOqyyK7g4jpz8TjTe2iylbLAJnVjaHEHpTcMTZzsU585qzI
9j+07xjnxOVPZre7jECR5Jxul553QzSLWNdqcxZMVnBrkKUbttRY2uBLUcj/ezYT3ywWf0vygq1Z
JgOZVILUHq3WaAK0auPo5+yTjdzUOHdpVp70Jkv5WygeyouRlh8z30fIwZM09UmTGzHyCOl8PJhh
4E1SalYc8qfs9S/rvnFqUKRrolU+XK206UCgJi/MBrHOpTmJnCxNDhGBo9RY237LgVOzTRbM9bzz
H1ylGKaF32AdwA8ZUVgXPHuGquRXDA2KJkVR6IZhsopMljM6UxRtvvz2GMCUQBxiaiwOYeIVDSOu
CbZsMgqN+11rouBbQNMl1iQn8frfaEyVMSeG1e/sW+Hcp4tk+ShFOYF7RBACU9NDegWiIGSOXZLL
wIkhFG9hAxQtnaivdaWgeS+x1S51pWtUHQEg4EbRrW5nBlYgBLPjvRkah96hmsK0U9GXKw5rQKfj
IBAGjXkJolyDJOhinVS7kgQubaeIsZh32wOraX+C59gLhN5AmaZHAHz1wMBX3aDFv7ZJxqWgXAkk
TJSggRRVAzYuiiyZbYvHDxQu1jOps1qIMN11zn7TehlnrFHShXB7aV9XLZ+sEYhC8hzVyDHSAcJX
TkigEoy5uixvc6nJzXJOro1Jw+1CqLIF2RlkQroGgVq5SlJoxXGWVrrN2bsv15rBRHeYguRwrsrT
RAJiPahGHQC8MusmgYbWjZwKvbT2/lY0GoM1QjsziLXX1YNTwv7CKUONuImE8lPlBl8bILGe7RYI
yJ2jyDdtQ24JoRbLmafr9c7tf3ISckQ0rG51GaNRBj/Eitar02QEKossQWWRYjnwmt3yi/yF/Rpn
t8k6x5kAUrWoQfiVa+8NK8pZKev4nuXOJs7zr9xeNj9HlE4NJTYmJgNGN55HX6YkispXnPYEeqtD
QmRKlJ0g6kf9epy3Hz/+xOarONv/tZyV5CT35VHFKFmvcrRoeeNwXe0tdIGvhpUx21bXa6I+VM2Y
cICkedO7PqjGJgmLXHfocmZR3AQGW4rA2gubnpCrh2JFdKc3GMMnI/FkFx0AG9BjpF/uZyKQ1Gh3
d1OSQ8aS1NkFgBsbIEa1AYKcTYvRGgGCIriMZk3fy6jU7FKZFU5kh+qxE5AcMG1vGiH4Z7olQgEK
ysVMk3nLl+UcRt1PFP0QZ/wjPx0++lP5oxbqIJuhVbH41Mll6IrdU4VvNx+MqbHLxtqzCz7CCuCL
7Tm84frnEFx5Cr+IthRtitdI3WOpJ97RriI1+GPbMcjcuH6/0PbrRqP7kbp+MK9uATIR7N8jCmPd
9LPZu2ySoVlx2kGCZnUOnohkYnmKkop+FMVMEKB/GrV/8GCbnW0rKxa/F5qB3D54K8MorthmPTdy
o1P2juVTs9C4gfipGMLqtW4wmZtxEiznFJT7Gu3LAlYIDcvOVhTwA4e3bzoje+CVqei5b/7ZdOW6
mwql+Tp5ycP7kolh/J5u/saWxS/lbtPVKp6t2N7fhaxK1nFCu4qg4IXO5I4Yb2J3la5XqN05+XvZ
Wn++exj8OmwZodbgyrvunrCXPqFBspuX7CfIwqFBlpOut5vbLF6wNWOLfZgFoUKqYXXZlkKPXtaX
eMU/ssutdWoDiEdb05bFMrB2s1oglUhrLXHXUABDl9VmC8iMhwC63rjKdP1Zq/6jVHMHWnGmxwlz
NXmW6BDVimgxDlUaxOtNs1xpsAZyRS7tzh1iFfUIVf36J47iXdaZUzgBAOkF5U4WuDitGy/h0ZzK
d/bTL+si/d/8r05+Fy/Sr0L5joAZ7oZSV+v3Bv+I9B86zFvDostkDYA6OUag8w7MZlEsv+1Y/zHt
m0A/R9Kqa10vL8EBFMWlK/2tRZLbbUfVQIDRzkD8NVzMTV2nzjyDxCVNUEbUAutsu237HYIarrz9
Nj3axOmiJaoEtBm092la3OG0OatfWrUs9wJCuk3yInu4WbBlsmaY3QPbCaHXelhPxhH13aCcmSZd
ZMWd0ScI1itVpq8jTQRJmdnPohTdzBZcmk5bhQukkH81WzEutJcsY+s56+TcQH3rSYwvpO1uWjpJ
tymgIpATQM2fUDB6MKfh6JJDCKDS051khqSauMc06s+1vK8rhAylInWVegY3OilPwpWMI9aDHUwX
6lelTXxiWZZm5pnbUzOvhYUdaZBG/eZXKXr+aYuk1PHxChdaP1tYMtv3jsvSkhbnpO8gkHNmosNw
C9FdHwGGjzu0iAy8LsZdb/luNGVR9ASk8Gpuiju3q3S2lxQryD4LktsAQC3P5CJesozMwqbarN0l
ZUsL7mWuCIRFzq6Zjo93tq+rTswz4xY16E7Q3E3VdZuLwY7f2ubhhyK+fT16FQXBeDQdeZNoNI2i
sW+pUE2INijBQpVt/iggzzbTVdJnO1rEBXv9+5Z9/9IbeS7/4+/pl/LLkTvm/3H9/3SD/3RH/Mv/
+vV3qiAS7FOR4RAhzWwMej/TeuRGKBnBf0WTZo8R+H33LifmKmWe7BUIYpGZzLEMQ+ClIzlnZqM5
9WZG4BoLfEhnYoO1jkM+NGndT0EPnAcBK0UQ+tWv9LU5H7crSDi2bVVJ7HE3GSy/Y6xwknXBsiV/
JHk5qRZ+lGHz0pLVEbNVvP4socWEf77m7hbl3Xkc7pvlrDAOOCPrFZl9SqEJ5/zGfKc0qKhEVe6T
eZYWcf45d+I9q/nnbkUGGZiEj9qo6FlKLXgcgEI9N9okwgrtA+cmmUX2RUk2B8KLrtjB+aRCfmqp
8fecu4m52c7Y+hX/Lmiu4smiM/BFddHZZnuI/Lxy+QhNpW1hIUQlT0f/2tHLGgZSGc+X7x7uKZiJ
0FgkAOEgZhgH8eH9xxaYoXx3kD0MhSkwIy+CgRcDLwZeqPLCBK4b0s21F+7xP9wJOaTSazlz4/zE
6GhN5whEUVtvuN9dk/816d2HJpFFcp+sbwWSFOmw08iY4SKL1/mBB4uZ8zG+Z+938SbUHPvLQ1Ae
4tu8IZwXaz8jkOCwXqKCHsRx9uCzGzWWHnTSwIshkVkDpapSWDhdm6RXptKMRDSA1Ky+gfMSKQZM
TYYwNZirHxrUPdkjvbdXezn/BCfNkttk/SrfznBSeOqXppc80KoY8iI7CBFSpfzNfBa7phJ7Vy1R
3jfXb/caTbpKp2tKZb8dd1v6I1kUdz+z5PauePXtrkDq1He2qtaDAWzd1XgLGwPq1kqsNF6MDaNP
TLCKxet0tq0LcgN24UbMcqnV0vvE44/l5HK+0znb7L+bHXpbE408SCe7wyV6POsYiCcInR4iSH07
DNd2j6QLEhCskAa91XV/q9mmoDOnjB56ANkQWuIUDKMZsuevelidDE2abK8qI0dwkMFjER+o1r59
TdaO64We8+1+ZW9I6xkVKDobHC+yV2prtx2XIcSj4naUpJoWMUeuTFF8XTr7h8+5w62dwlmlcXnF
tq18MguxtRldaNMIjRFloygVYydUGtSpWCDCDw5aHtuP40lJAUG3FNcCCK++R6PEE7iGwPGJeehq
gMx/3LH139PieTC2cdSZWqNqOVbQaEotDQScobDGwfHgsX1D1UrN2HC7CB56uqkE5zT5aiTcYfFs
LwIPrvFLb/Kd7MmzeKKK8EilkFTrkryIi9iJsyx+mG2XS4AJ5Y0h56rV+9NlgMDIIq1LYzTyU3XU
km116hzMZbJO+HsW6lvW60Q8I3yXC1id8F4i4UIihrmJk3XBzS74RkQ6RMm1WqrTKkXGGEYIWZyE
6y3iqX45sihAycOjOu2bNftaxNktw0QAmmkgpXBhocgTaUUvtapTkwn0eQyH6Eue84XZVAr2derM
svRrXn69EyDfUDGRJhJ0RpKfS7VyyWaj/0hn/JvNspigS/dEl5ovd6by1FNo65grZxx8Tlapamsi
ELm0SDJWKo6HkStyBWgMZT9iaLza3MUgHO3I8JSz5/J4weBfCx0EDpjqDjiXOvemUgLAH8TZvX16
x/ArWwN+IJPomv0Aunnw2u371fdtumO9OiVWc3ybrFFcquUx0K7RbtZMhcBuH81a7PaMSnS0YJnr
eXq/WbGCwUU+BBcfkLbLcw3BkOTnOhiYXIuKl7xLOSifM1vnIDM9DWDZJ2yRyrsQ3LByUWZJ4L+2
SfY5d77kXKCv93/BxmTqSOhZc/TaZzpbpTMBvEgOyryCMaL1cp98M2cNXFh8o+242uPNgy6MNgxL
K7DABPJRJXs7YO1Kkz2kool5QHV6CzwfzQgh1zqkWt1NepSWyF6i0LKtM8cOPsQPhy9f/8xWq9Te
KMxKcmBYY6q94l62fomzpEz1ctbxPZMzlaFbJMI6k8+8DoV9lwpmDbmIutq9gqmQNpDscs0WJ8sP
WQUWsmJP1ha9h3VWKD62JRn1VkMrPKEZf5dGSJE+IkwrYhlAVK0UQobNycNAtm4U1ta83NIQXO1N
V+3jtim7o2aH/zyPnMmds2mIyfrZf/uaJXt/dwXjuNHuLGCuPm8vS/ObN0WRkWgjUBum1rslxFoc
NSk1vIxGqMZYgDF5ZaRQQp62PxKY20Qikn0kz5HKzsTX7HNw8kzxuyEoG+xysvMb0J2CYkGk4t1c
v/uvz/M7hESd0T7tLunmRyMYEBPGcgT1DFhcxWhjqAMgf+yIejJi19ArwNvLGHRQN2DdiLmBaMd0
PX0PJ5m5wuHp7nhqEhY70Pgb0QNCSf03SFTzC4AiqDHa8CmelWeEHuV4XlchrXGX+PLPfJ/7Un7H
uWXFfJVw9pTFNrmzYuvb4g4nwVGGGO3y0/IHyy9E6k4VzZD8YT2/y9J1us1XD/2ATi+3JBMcEDoM
evFuU3mkWmlCpHKMNPtzKQajBNPl+1kGaQJNlRGw3bXnjAU/njWrjU7Mgqu3GEhvP378WPaa+4nN
V3EWF+01H7sP/IPN3mYPmyJ98+GXm1u2ZvxX2V/Zw25nn5Zxstry3X568+6j8/bHt6/KnUFWQWjH
Lozd/CeSlDkEOe7G1E02JKNthFTVkzqOjRDknA7hpW3YBwJuWJ2U6UgUFACCvDSUMUu8gahsQUrK
n7QYWj0sr/n4PF/Cff6arBfpVyefZ4ytnbtdj0snub/fFrvmliheswAN/eiuJi9++lC0I8iu/IRf
0yDw1S0UHXtTFpKm0aep0yPOFe8/Irpqmj4ISFpdhtQqlu360Rh2ihRokLMOmgfpsckyRWe8gtR2
CY40lpILuIK+1qE86nT5d+m6LkOBj0oahnIpI4CJgFUJnvypS8MlTrMtktUNkA1RjQydrWjjDfey
fggKBKpRT8h4kAoVg1QzC46AFoqCkdSMTT/KERzZV7MyGRlIoMYL+/WZjyxUGmE6KGJexMU2L1sd
lB0SX+eMP4fFp3TD1p+4QZATDhfKs8JuhYQAptpyGOYU2xQqa8CH6zghgsSKDhQ2HDvWvYoEkidr
r0pIrF+hr1XafIRA3SWrxd/ThcW4gXy5t+BuzBR+L+PVKp/F88/8RvD78Xmdfl0//iziKBtJonRS
FflnJPy2zdIF/yPOkzkMgNjv3mXCjNVOzdBFWOzhKhbiZaTu13V1PlGLkJxIdBVNpxPVg4g7WsnS
pZO90qq57KWs6JGGyWJh5UIpCwoppCouMDCD0QpUmQOZ5a8GXNaAOCN62laj5jDcgRF7RkwGRuwZ
4Q+MaMVe7DKiGd34Wo4gh07MJHIh27GeKm6YAWhyxk2GuCiyZLblv+RwtjnzUs1kbG0NoGkl6nqH
3tTcrrGyG/bT+18/7qDaX+MN4oE3EADeANaHm+JjAJuWrccZsghk8bMqaYoM4UmTcK0DKzRRiVZN
YiNbRI8oIYD8qZnSLL3d5riNyJvpgJNo5PDGKymS6EgICwBfvzBdKJVHyBFHqTgGj3J47FLxisDA
l5fSGC9LVoMOAd/YvOci4KZuc668n1I/2QIjsaGdC+bqchr3J6rHZVJEf/8NvC+FMjnAdktXAptD
1F3ItcMckmdleXXBQRy1A/D31NmBAiNKauOhU33veg+33QbXI0iUN9HBvH9PP7P135JcJN3byvb8
yAIQf8oVcCA+oDjMPuhsAxbNAq0Tc1c+rrjd3GbxgvPwpsxQceYrzj/o3HgZEq68jYDk6baJLHa/
KR5s9MbYGVMZu+VCKntw0qWTfuX7fhKhyA0yKlli2ANv2Sz0vdbxatFK+a1VZYK3DhB/t9hdgY1F
WsxNPtSJrwBjr0/Socu9Fa1tEjLWcGr04gSEtQlAiVyYIQwouCVB3LW0WJC08XqZNISuGSTub6N/
Ag26GRah6nvR1nHXO5sRV9dCinLU6wOJ67d4Z5aDMDrUffiH7QTqf1B4QT+/e/OTXT4IUwDLiBaZ
sPsQp7xVGGCMPB2WXlEb6G6DVZWLm2p6ccsKrg/ihROXvertpZ5e0gEfz6BcWBAoFRYs0vubO375
0yzhrwbwllYsRDTlhnSKLI3GEz9hmUDyQsBOxqMkHS3Rraev+Bp8wS1znqEeG9G2Nnoo585ZT9KH
2AIiEt+/zL4KTUQK+rTlXlogweBRGIfHhXlgwIGsMni7krEG7r2q6ng6JF2v8utkiam44YMTTDRN
Dw7uq0WrFAJgH4NAKHwtVSX39Vm2jOfM2XcTzmmNMK8nEXLCqswZSY7X+cLvPr+vc86OW8a+HKyB
fvRcENgofPNVs2enDJ2FFPOUQ6gyvP96+yulMrxTchRRavwSIgTrkuTsYePhMhw7EqdOrF4DtkpR
NDcKur2lIg96nrEEPrfGzByZakMA8roYW155YIzCosJ4+eP8KO76IDUQ0CPq+sqiTs0Pfad0zfln
zyF9XP26i6FkzxRP7ZwoxzYDvLNN7SWFDlg6YAW3lfwp4comBCDSBh+hi6DovtcuvD5RnWATyBGi
4UrKOCRu+xU0ORa6Gb1PVRZ/H+p4IuXkxVApebE+ev9OyNGigGXRi7fL6QuxM+hGd7VksaLT7MyA
7P+Nfc2S8oW9yPa//2ITF3fHO+Zq65ef/vZhZ1OW6q1Ij/+VfyRniXezSmaPX4N5RfGMH9bNHn6J
1w/AM2LV92gSHYVMIpBd6JSjb9YPP/PfgAoX07AqKnh7IgEAz7D61placDCXLmCAKvEioJSuoDhM
3PSkXa1Qd8rt+3p+WuWHvOKPEWZHl+uYevAdQUXOE0/Krz7l/Lc+7TyDZtgcov3/kB+pWgH0ztrk
T4289nfSk1SbL6uZueymMtaFd6f/hqtkrZDRjFNCAXk58e+zkmJrNH4glGiVmbFmxdc0++ywLEuz
fa68s/vc/FW+neFGSdtp6WLsW8zca987zfaC4EkzHagTxpc3ADfIRHJShf4FTQxSXk87D0p25Vo5
Xx7Z/veFPZo/dr+Sy8XYG9bth1Bt2SSpPBsxVP7tHjd4t0hE5u8CWDCi7IPpjNLABUNdRP7txN+S
fB/y2se4XHtVBnXEyHQJqTlA8dv7Zv2wly5GhAv2Y+2CLPpnrnaUUFvT9z0kNqZtY8rl5fV3EKWg
CwXtzV35r1RCULKpjNBIWpX+NFqr9tc/hErV4ABO6R3SHlepuiuVwr6Ts9ODSgFBQnVWKInIawGZ
UDEmihiJEgNKE2ierlbscEd//v3Xv719+rsT52XyXJE6K7a+Le52JX3FXZZ+zYEb96nT1I/7XquD
GzeGnX5lIRVOM5mqrxCq2n1RzUcytppcVpLasj0rHzwxcijlaFRqqNThBGy4FGd71eSs0njB/0Ug
8wKog2GpTd6s53dp9g6qNrYD7QjV9WufjCpATiAWn4pLhGZPoumtilpVlSK6Mb9NwBetfrICJCkH
M6TBbYRSlzrWAilpTR7Alr1Sri0FV9AdyCEw6+c3CSbK9Z0GPX1lFqAXm4pff7u1piJQw37yxzq+
B5o5DFKVYuCuyLFlmKpAOkkcLCRTbZZ1eRqp0b0iBlnMUgcR+1Cg8Fobb+h6rWfSGa7Y0xANkg5p
XsRZgZzJ3UzIVes/NGP3id14TZ11CDFg3AqgIioQpsaoBkAExRNIuEA0l8UOGSb14vxgpTIZ1Pgu
k5bZIPYP6e5s8dxyJVkvkvYEN8BwcQtNOkMKL6+OQFVpL32M/uo3ZC0qec1o1YOeCy47mYIGqUBc
H88NQ6zaNSkRSAmS5ob83+5X5cEccnBO3qxadrhCWVWf0pelS8QgfRETtXnqjnWLNQPdZt8KZdhH
pvauUUlskxKGh7i8e/vTz1QmuJzR0uN0T9ESMlNQgxn9iQMvNFo47zfl12LYCCKuIPbGieSOil4+
QTzj8kjAql49+21n24jSyqaSLoM1kGbUWgKrdYcUYZwyvEALWHqmiJRaUlwJyDe+FAWq6Bs/A85w
/syS22SNOCixc3njZzYTmP4RPCbI4ZzN4kunwzdqlbU5w4h+f0FkhFJS/oDilKq04KGFKtK6fzOe
ZAQonSI8yEK6oZGZEYjs2WKkAieqU2SgmE9CUfercEBGwHQpRjJP7+/T9c1uFCzniZOsl+muOh3W
xSE1V8Mwun1hTmOP2TJAgnqVsaqEQC38aLj1KIzGqPWQllhYosD2KQijofmzIjaPYu2osJG5Vr03
uPpR6yWVYhLpaU3wq3du8vG/50UJQ9/HGwowqjg9opdmma7KyErxzSzaH4yCF2efDy83ZAMLPqUe
n/5QD2bYgxR/LDj+oyF6OhCSV9FyZgIZEL0tnyTxvkHYzZvF4l351d+SvChNvMN+nHQ9Z8C6QJQC
mSiBBFuhB9UPU4PojeFRfLFWAhOmKIQNCMhLvg72l6wWIPIWeKkUF+t0wYhY4OL0oAhLRTsQC0/o
55QXA3aqqCKHs0wRKDCCkEpNrAGCrYSlF8w1QyFdBAgYStXgIA7QyUzqWgyzKsIQVaLe0ibO8+SL
ZZftmAidetqMzRn/HGdbLN0It8XDxdJg6ck+xfRkX793X2Ok6OMbQuUjJ8QQtXCtDEpGIROo5GNb
bLaFWMnHk1hbcTmW3/z0/tff089sXUo155eC35v28WTY7XolBHD3x88KyWdonW6K4yd6tO3CQSZG
G+Sq7FPsYo2eVmLEiYbpg26xAzC0PRdgzj5H+z+zB2eerr+wLN91N/s2Z3s5AGekguczi99RbGWn
f+y1pZx5ERfb/NXm4Yc5d9FeczK/Kx427HXBvhUvvb/wz0rWL/0f53dlbnbx0v/pH7//xZl8d6gA
ff3yXfRyNHr5l0n557uw/HP0pvzzbfTSH738cVr++XZS/rn7viqZe3kskc8g3/nWLIvcCIBHZjJ7
Gt+uRozR2qWCU/Aad6qdS093Go7+fuaFSxoTJBp7AT0aDTEDfOsMB/yPPJC3u0/eOSEifu3QTY1U
mtCFL0QunK9IIUiKhjFugaRnKFLX8Ja1gVbwSgakSgJZHSeLbweUsmSDnmXJmhmGfoiVgRBX41XO
U+4VxLfM4T/vxEWRJbNtITaMvdpsWCTcdCicWXq7zXfzWAHH3A3a9xSpPZetxJosqVJa4dE+v5T2
OpVG71cLuG56PDgNPgzsTeIZa+9Jog+X+s46mmpZw/O+D/A2u+2hdEZWTsElKpkkpBlIebxDJZRS
ElLKidfLNJ3FGSctns0X3+0QFn/kgiB//HNfGKMQ5fHIEXog6N+PNHpwmHyz//mRlUlmYikOnMwX
JvYKfR5wZciX3FLMTGth2T33Yov0P/P0nvFP//+wb/H9ZsVepdkt7IVRPGEBclHe4JE5vDOEnXm8
nrPVj9sZbPJN+7ow1+T8ZflAl8I38ex9gmK4YKv/dD0/CKPxZDoiycYaEgeD0CYsUPPKkdLHVFZH
zhjtW6kqLbdQOdpwab9YMKRMhk8kN2QhFKZKIUQoTJKWdjArWS+TdVIwAVjafG1FHQ0yY+cqPOqk
zAoTaJ+kGKaBK9TQtWBbeQE6MjBQKhYZJvlKmoAXrwUzL1yJhgGalEMET9+sitPM1UWRbedFmuUC
c05MopkStJv118+3rO2vP93xx1u/y0rbJaNBYaYyBWs///rmLZXiuTNaBFjfjg43sx9LakmSt4lv
2et4xd/AmjPqu0dqv7tPvr0eWYLZFSilzN0FW8bbVUGet9V0Dve2D/e2lzZrF16kcQTu3GoAUVp2
5YFBtFSKW4McGvTnoD+heNuE+ew7sSbLpHU2dFdvPwBQds40IP9xeIPCb7AZCf+9rPsVy3qByya5
IALy1gx6cdCLg168numcZ6ganGsyPNfhuQ5qpnf3tjpQciDgQ7b7Lls48ZJz0Vkk+SYu5neQDoPd
t9CjSCKOTunUPEHZZIUQM5lY5M1R9hys9HY6d8ihUzN1STABayteY8CAKwlF26/ePdIyGMPOMOI3
SV16heO5sgCMJPYE3Paw381GpB/lMMoJuydId/I3TT5c5HR8OeLMIutQCfyKDNeOl4uY/agFR9oE
NQXQvsSrLXSJZuOyeiMmzlS75VII7YmElJo5aZkdrZcYaEZ27/ovmfbPnx8e9hitytdisQoCY+6A
gQMQe0ldzJu3mk0+RGKAAKK+1BVZihUp6JFOh0URp780iE9LrsWQjmtXCqFBtPIRAqVy5WtDciWG
HOkdwJAgeAUv9Zq0asfS5csRrPnNW65yY/4ks5/iInbizYbv/e1dsgIAE4Z3MryTQaoPt3W4rcNt
HW7rcFs7dVtPsGMR02momhteQP/k9SX8doiYO7Nd885DJ0+IWGRD9KaJhuEdWnyHeAF5weS23z6+
cd6/efdBqF9Ul4ol1PcPOYpGVFlCRyu0aRimkAvHY5qEMVZMSJkG0Ur339KvYhX37YlO69R5bJBu
PNUKuN7/jAsas6IbWSLTBLf+pZdfAlslAov3Z6ghXuocmdlbZ/fShDRTz9OvUOXW0s9kGKMSOywH
Q63Kl3T4KWc0cpWNt+7m1+NdFqhB6W2qOneW8SpnxAzzTtX/GqvGufKB54gTj2vFG/xITXkrj9pQ
CnUaAaoQleiQEYrwN0LQkLUBGEgujlgnJnPuPSzkVjIv9Mpom8HQvIiL7Q4Anafrgh/L65f+228v
/Xf8f29vyi/2YGjBvhU33+5X35VfvH7z47uX3uj9Tz/9/z5+fPdOeioovVpepXNBYapPgQiPAhFj
hEzUDvxqe4DD6JsGd3PbRyQafU4I+/EQ9+Mh7GeMuJ8xDqwyjBaSjw4cW9d24hPCFDQCzQs7+PZC
FtkWsKY/st13SPQ0rqDFRHm9nap62GJ6OrBc14OyqsxolzRF1tqawrjzvjCAGSjDFiiLt705sNYx
JsNbcjmQgteMVOsOSOSvQk+YnvB+MEP596ShCUOdw0XlqrkgRLtbKMoqkCdxTR3L4CMNsm/IVrTB
IJ1giLSSPBr8RxXv7UnZ2XIfxQhoFqPPEhM+deO5DlzGtYOuxK/zoKp4BGtfGWexdhK8oJL1gD/f
h7N3dEkb60CnouxF8D/w8H7fDFN8EKa0w8Oi9wLO7tSS5SaatNsSlFZ3b0iN1uIV3KgrmHSycrcO
sNPaWfDkrjrTGwrMO2Uxbg6SzOINSHy+4X4ac3YW/d6Gw44FVFNAr8lu7Uv/dr8qjy7b/8PJRrBb
8D66YvNVMv9sPlJFvCGuzP3Cx98V6BCJCiaF6LhVAcD8+d5oVE8Jvgxw7gGGYs+ZLsCtD+8/WjaS
hSkwczKuN5gaBuG956eJjesJrtxojSb8imSFpaLHs8X1EiYO1327WaXx4nDryy/5v1qynOpIATb5
AeqxDM/u6d2oABiNZjTYc64ZyUXM1AgECTIaJAWJCPJzTTowVQTGvalTArigxJmmtZFhJUOCofCW
1/1RNwaDfR5SZaD559B3F62eKa2+Wr13sGBFPL/j5w+EOQmgFhUkwNj4eRFnBRUr/4kY/VT3v8f3
bPF3Lkx/jTdW8tsvCNBtspOxey6a+tGUA9lREGApdJM24WeOO1dGlZCONAjBR7sUBR7mSDk9YnaE
/LJesG9s8dOPN5/Zw6dk/SVeJYBYUe1y9EJqABASkURxAG/9Qkfi2rJkYTC1XBMcxEnuzMDQJjky
bJhFiDBlJTPe/fbb+9+qCPudW0BsFs8/v/jTPf/wFxmb8897wddavVjFefHn//yPF7tb++J/3fzv
dLW95/SV5tLNuz8+ln0x/poUN3+LH9Jt8Xv5eTfJfckLtrj56s9vLte7KdJ0ld983RQ5y76w5y8O
t70sAP9f379YJWv2wgv9718k6xefPpXUfPrECXnxIvvy4vWLnK2Wr5bb9fxPh9Dr9y8eNdmfzZIr
IGAeyXWjHbX3cbLeUXr4CU7ugchXs3TxgMPNxxWfqfP98Y68Aw0v9jz8VP71kaFZ/JWr0822eMUv
0+JPf7ZF6mSyo7QkYkfpnw6kbpefNmmelLf8+wP5S07f0zf//Of/eJOX4FhZiJFlafafL96Uc8Z3
n5Ssb1/wT1jyvz7+/Is/jf78YpEs1v93wU+NG74vyo87+mfX+/N/SPhnyWr37B4dCfteUoiPuByZ
jU2Yi/mK20f54cz5V7ettQ5A4OyRD0mmCFWQVvIaYvdndqwfJt5OUOzZ+Inb/p8OwmSvKQ6ChYxY
84yJtR8Zp4DpybXhvK/rvHUA6ErhKgOSNapJKCHb887ezzhIvt1Yb5Z8eXy1OI3YlanantmlTMUD
ResrlTW42vYM5YE3GHybLL3NStLBsD7jp6M/NKGNEUMhitmoSKXusRMXkSelIz2T2qKXXAmTKLZA
C8ccP2jdXhNP3IOMKgJsrSVYyn96ziwlPJ+vPpQnNJ0xQKECjW5QTy9LZ5Li/XZVJJunsVU/7pp8
WEnzqaeEXmTTvE7Dj2FChWir3mkOUT7Ryzx+c/DmqY6wFJkUElFgaLQKCxAilHJMaXpPMjYVUkhc
XCkN6f9ifle9YrTjByrSY7ee//nZXCvG0CRHNCUR5KLmfF2hdQ3hbj5knrUh6nSTsPPtLC/KJSy5
wZfr66fKf4gz/h0YxEfAxDhbXnQ/pwj5Ez6+wshAfV5N5j61aBbOn82HLN3Et0/zKOz5o1XE9L3T
9NlF7EP+O5CXcSmFrMw6RUbZzXYWQBwa2s/qHitPEDwCb9z0/5pmn/f9azAnUkhKCGSHXUbSU+rj
bpVu4WyFZ+sIu5yu0XyR4NYfuzeTU+pEInP08CiINH+NJhbJXjD1vCLZlUSkcD/MaJGdkrKgocAV
qf22fQrUntvXhd13vZmQZSmXISwH6jdiADcSzfVrca3T+6QoygLreFNsM6A6fhjI6eSMBMQXotlb
rzB/K/O1RM1e49cEhksCCE7VNcPOQjqVLLohyOeD1OmA0hoGARGvYHzreaI7MrIDBpOdSE4CMhPA
zxffIphbUiXzsF1PaRroNxwdWhyCxb4gQK1nPUkl6UeWInOhHCMrawB1guvXFsrFZRE7Unj5ck39
oOZTz3T0CObzyjaqcvozvbuvQ1JFbg5GskwAGZHR2qBBY/hStMD37pVc025SUmAohecj/94cOGtE
dHUtL/1hPXdm/HQ/505c/gW3M2nl8koJSbdszbK4SDNnzjlUZHGy5tcxSzOkJnmN6xvQ78Udy5xF
Ot8KDOnpCAhgoSepMHPttJ6ufA46Yor6yIue9oqEaeto5sb0M1cI0ck+Vb523F0JGnCyqGqd3Nmu
rQ6U7W32lHBgIwnKrKUUNVozxLK3DBGun7xiYO2WF3TVfU+ax0Qu2Cp+KAeX3+ev3dHISlTk0oyE
mlIPAVZIUi9+HF7jcejOLe+302IOEjoSI3iYkOiiptAd0dQhyyCUdOpKGx50Fy/Sr7+laWEHjjpd
Xh/t2Dxnuu4yXzegBypPR98Ls84OdKiyN2so1F0r4DZnBCZTQPDELKjT1zCcmceOCbOYIQvEg5cV
j9WteXeNY/5IijvkvIPzlfX1dcYev7Sips+W708nL1sJh3U35f/f3pP1to00+VeyDzNPS0enLS8Q
LBzHswkmF2Jn831PAiW1bcYUqSWpxJpfv03dB4++qrpIEwNk7MRWV1fXfWKnsaXObwwRaaV7xDjY
JZwyxxtyvfpAqdMd9b5bR1Cc9bDJu8WMvc74OuFfD0fTGWlPta8xhV4JESZ0EQvKa/nqm+iEUrE7
rMLnxjWJCDq+ZR6oY1stnG4+P06i+TgJkWpTc86VH+KUiaI9jJ9xtFBgsMrPYtPS/juexlf9smfL
0ZY1Jq5IlfIpz9+x50PGJ6aXSqEVcCxyxBuSW2P+dLhzj1nuy6cP09kqErKK0Y0j5ibsHVhBYhbf
iwChb0AmbvTAEifdf2Qn63ACgHCCSN/er0YCra+WQPvBRtfRYpaEV18/vF5Xa7C/2WLJUsN71/Pn
nM2G326vnK+3t2cpY8WiMwgUlMo4jmlt/NC8h4xfoPwUTXDPrCF2ImzsdBTLgaFjaWUR+VKN3Kw0
y+dbIr6/vR0Qzc4DdU9hIwyRwiMiJhHBSI0BLGHjR0huYEAk5w3HycJnZxzfVkyGDDhsUJKYwb3a
eWrV5t8HoYpFRvHBu172el11S6+6w+xwsXDw0fPE818D1blkG+9HJ5KhgybpKy5qsKO/siAUu4wb
2sGh95yTbdC9osqcuIk7j7xhq4MTttOADS/ydU464HXetP9gO3JHlEjQiZKBsMz8fIzC35z27Ni+
+4drDn9gzzPfG3sJ1maanJO1OLVpXhIhFHSbRfhwHf334N3TU8oboFCoWq5VnYL9LxVzLgn/pLgn
Nt2lzoPJNJgBrAveQP/5gS6CEZT2ToZ8N4Wqgy3HwpdFauM82xDzAi9xfj9yIt1qO2RTsAACgNJD
TgmWg+FLGGzQd+VSkaQN3Wqa0wXMRiNpuZWotrODCIAYeRlTQaZqFH+dqxV/KYrV9Ah6HtkWKuVy
x5TWll9h6/ndofUp5cK2ZbfPT2wUF+h1BO3y93efPr6DnZMqbOeN/HAEN39WARcGO/lOb2mPKpoE
sKB1sRO+iCaN4KEVmJijwHHA0VJJiEj29AhCjvUo4H6OAo0oitCf7i83Xs7Sm0cePSv2FDxlc3Z2
tBu36S3VNNWPEQq50tAY+YgRTpTuClqvDHLcJIm80RxkIaoda1oSLQckUISa+lSfVMRmLFWTj278
F1co5cttrbYazRDXlusdTsgCOnpaaOlbxPfQ76V8tpbpMXsgaA/NHpo6P0Dz+4ip8NMLMgDUfJD7
iaSO56Ox78Yxi/cnFcTENJsGVxOsIJUDTerJZDy5Aw0w9vnvXa+AjIFldMnBALUHHOPWaw84DDbo
qFFZokZrEV8hxW2VQdAtkxyH0ym31YloKRvh/gMsCBvOp9IL1W43ejzgwXmy8vu3j2ec5nF9gv1D
67FSoOSSYO7c1JuyR+ZOWATS1ZZtMKT/5nj3kTtl9HzJU4zI5n4L7wrKn9VKsmrT+4HiTfi7xYk7
nTmP3kM6JzEO/TnwomFJIISbMpdK7HU65Tli4yTdBpWiL/2cN5t/HPlu8CR1NakNUd1W55UCLKDP
DWPhaJoPx/xdh5oL7OWyqhRdv/q0U+VDKe6OGmKRRIU5D65YhqMmYUyAgiujLdl59kyuEuped6Id
UHbMknSCM9ek6bdvEvac/MmxvPwmPfTPlPTfc9Jf/tMfnb+egZS8qKls6hJ2JUTd7IgMrLmTcJak
C2Bw3arDY5VLkXbSLnbvmXULPgsI4J6JWUAwuToLmuSqUUPwkF2Qs1sSh7/E6qIKdcfomJNZsg23
JQYJbju+ywx81AoUULIpUf6h1tOyHAZSqOIv6I65cXzLEifgP+/63j8ugh0jB4dencHyS/Qig92p
jTFiVqgV0wqeHNOAQ8fGTZ4Teob3BiiZ/NO/Pn18z5H9jf3fnP/D3pNMmO8uUnd9Gr9pt/iP5zzK
0QfELJg48SIYOyP+g0+x46bfpGDZLmagY53KV6SzYBxO0gkFaTbFHTH/zTzwxuni1jb/b57cO4OX
OtlDKoCFbZUWaSQZ2ZTx/sVvniFKBGjIjuDNvNwAuaLG5Lu0z6n5FxvNIF6ToFgXJYhGYyyM9avY
vpfQgwkSo8905QSibBAFiBo8HM9IEGlQseBFRkzjIwbn51i5p3yCr8FTjGeFmJRAx4hR4hV+qzq8
TuyNplZJfUkflB52gxIqRmTZA4lcKA7573hBh6w5Uo4AMs8Rh44XOe1WW/NDBoP+pdPRJ9bN29KX
RuCEsn0aSvJk99aESLiM+BTmeXFT344OW1+no/cRwzKU6M9+Kzr3v9qXgwt9SkMltMp5vzmVL5yY
HTadJYuSULjMI3SIiaChRcoASoBupI71GJMgd1MR/35HqT7skEsEcjPAfsva7unqYKLEKBZ6Zb+x
vPafg5KdvmS+ru77VsS6FjePL01ZtN16YKWMTIqWeHnBz7Q7DKwfTRT+LkL76jj0fXcWM0Nm0poY
6dOQlPHdpWtiiRssXfWtdnsMoTY7Op/EayBt/K5SDdg+48mX4hc9dGqZDqxyzRCVbcTUfdceRnxU
TOiW08hzh3ZNuARdV8rbzSPFCuuTnVvQM2HJ91Bq7g/9XDPJgnbLQjWHQp+ExN0tR/DKzLCeMY+2
RzKZQA6qFZlXzkSTCg0+Q2x2EiXpniEHpVcPp32l53sl9qvEJ8HVsz+Lr96SeclereOO5dZRj1YL
jJyB2sM0UCVBw3RA5JZ3g9JTiZ1Kf91nMbfUoVptEXm+742NuCTlH2Z61fVeaMzC0mfp08uZBVt8
GVh0LooFuu7Nyv7v6/o3a+onVnl5xJvUiv56vcoWxq2ohloJWt+Q59nrEbtZ37Jj1LefCevXK7NH
iXfWb1zi/MqZ/TV6rn30UHk1N56GzkVLJ1bBoRsV2atEbZalWk9f5Fy3gW+DQ0pGy+pR6tEKtH4m
z4Qdt3rwuuBlaZWW8V/pR7Hx1HXa7Z7lQr3VI9dE3B8/D7n6Q93mxw3R1KQCcYUTh5lyac5rVJnZ
uTCGFYfVi148+21lnQtq3vO5/mecm6M4r6mD3z4MOV/x3MzNzuvmJBJ8qZJWQAmL6CFi7KmqjLSP
DZpR6iV6qdAP88NkeNkZ6Lsng8pFGEroXOz3dQNpmwegRKubF200MyavigM0IOetXphwY84rWzZq
zAGj5itcmHKCzhtZsiUWcrajoQkSF3UqEb0wNFpjiPrmkKiJ58GQzYe6VtM2ljxgxrCLae1T76df
oZaKjNm5PY9sFLHfmjfcp8EasFQZTsQNh4Ex93QFU8NMO9SSs7YH2nkQ1EcWthK7A7tm/IACtdUl
BbPUQ4bchy61lgdUwYBi7w7MIGVAzrkZwM0qgHyYX148d31TFjLNlqGBvXZ7oCKogW4R1OrZ61Rk
s0ILQRvK0+n6Ch+8cRF7Shjc59VtJ2lbJK71E9R27Ims2ehVfGzJHkOQHJ2ANqVA2CruX1hZpCq1
FWd/BJWxdePCFnrbrvvTblV4WVi5AD63X1zXv6jZHEA0KSMDlR2gFHZwCUsb40vU5E8uZi1Sc+3O
jdiK3UqGgVEtEnEx0TVm1nSJ3a3dNUJtvTqu3xMjDXLEamgGFdrNJDmoVzcbhFpXfLtnJNByaUSw
9F+oYCFHFYVPob9+Wj7YIxnmuKQpzfoVisefjCE1P2cRKty1I2JqwrZvaXp8KTsXmumX1JZOb8Y3
gqt0pJ3M0PeREFHn9pVh34bwzhZ3BueDDiujAsR890s6ZZBPoTcwlu2pxbZtjhFtW2qJ1ZpQK78L
FXJN0ar5605UubR2CvYw0r73XJ8OLFVRiWxOfAbaWCWMGieqWm2yOadhRaGUpIQzN/KkczqKeuqO
vSAJ40fjS0efp37FbHIUfp5bL+ERDQkVXUWAbEQ+w1ZQags+3SoiCtFVMyGPZ4ej24nCqRvgbukx
ICAnYewMLnQzOvz+lKKfdqkfL+yjQBDQKmCPF8jlF9qad1vzCrna56KL0Z60oP0ku7elmX1pUyGW
xIud8041zco17FRQ+dsLJuFvE2pzywVk3KVZu9NvyW+ETiv7rgKuvJIwuuYOjesFLHI6cAuxiVmA
G5Ioxp4QTexRF6l5Z0vKoEKnz04ZpRIWZ/vEYuOJJXjXVC5q816k5FzbDMO37VhQa5S2qznZZAk6
maUMQewNn7tnPad9eT4wQ+qk7NF9aq1Jdu3wzUjJlY7WfpCx51Vvt8ds0L40IRI69OYctS3SeEoM
dekdT0mETORkNDVAsDsSqUvB+BIt1NpiW9br0+z3RbZatPviUVYmr1+DXFjZQBjU4KL6iLkJ2/wY
ifpplHlHbXKFHwaa7Ytcc0PjlNqG5qKi8iZYvk2lU1j5kaRCxJU0MVSklfnyZ5KzstqYM27FuqJ1
FJnflmzv+ejFSbqO21nR2vLv4NIFpfDPY0fK9YZWfOK97G1qabHiCAg4Ttq2OzlyKVtAskFjZ0Pm
xPI4HRLJmA4lRbHBDJ2Xmsecpifsnps3E90QaRdOyv9go+toMUvCq68fXk9Y5P1iw5GXxMMntljZ
esPZ6Gly3xn6YfCw/OMsRXEM7Sup0a7edQREjgyHdPVZvWsiTNylxan7nFHrQetko0P7NEpQindJ
5ad6uLUxuzh5v0phpVW08dJAALs3sJxoRy8kgmxhP40YgHa8anRowI8nQMbFh2DCntnk3dvX3Ph4
SH0cNwkjJ/zFons//J0CYFMJ7AkabHkrEhIssS/lsiCX1LIgl1ZGrqzla1WanKB+RfSVLi0naURS
7gJCBimQotuRkxsIMrey5JKEZpduXlPDjASdpcH1S3irS1jsG0xqLPm4BuNC/L6pVMolyQTPigbr
8FAlrptYWL5fA0ysvfmemWBaz0T2p1//eFOpe9s3E6TpEa3Y7tWmAjR9K4LZyr6+SOiTSGD1SYUZ
q7cHaQ+V5yaI/bwyk1BMxvQlFiiZLKiLD9B82et1NXNnxqL/VTF9dp53PJ/pT9BZ3/6cfHBkCeaF
6RLc93efPsKV4cqqhvPaV2YKxI2MWQwXpBrTVSW/cVl89EaWJLJs2E6XcGRUAfoqvCyZbo2D1ki4
MGFbXVQoniC6As9+ZYWqbiNQ2rgvnunmg4orRr2AQzVKwXrww5HrO+2zeD4qsR4EysTWMvUXG3OG
Nm6gizHsQLvY7eQWNtQMEZt1j9oNDSyoAtOUXAGhzkZliWF+WsjQWJ5BFep7zCCFfueXic6BAj0A
q2kFxzuOF5Hn+97YjORBnd4homLQFeQKq/OniFOQJzREVvAaZENj+/qr1iksiaGpG64iE8V/5PIs
ZjBOS3Eh38Oo02137AzPPmLGKsTwcYNOxGYvLss++4MVyQxaBINlAkxGatTjmv2oyKEyYUCq1q/A
dDPtFuGV25/Ee6CLBQGhAy9zOBRHdJhomALkDCxUearyhOilNF8MVdpBOmcPoyd7dL8jsJrUK60v
RGwcmna4jxNJffabrzBCR8a2B62uVZJdAkBnZgCURCo9euQ96JeF4rGK0H2cx6d4HFevRjdwDLxG
+hGUnKTdg9TAcBjHBl5o/c51qVaOES8jAA2bj2dPk/tp8tOduQJhuWLJ9lzCkpDExm/i/JxpgV/2
EfDEcfIcTRB7Q1WYPJNdslTciC50mRWF0RolggoTWKS20+p0tNg/NfvTD4GSAALXiB+9++SnF9s5
fxpfdjvKndSCDdTisa7Vg9bIp1wTF6Gd3ftfPz9Gw4jFszCIWfoXw4lKkTmETtxwRYUl1DQePrnB
T093/2jKoRXyC47rWmZuxN6mn+tGi6+hFySxSA1iEUaWtOEUikyVctRiZjAl5jZUUctdymJPN7Sm
7WJZoikgPmrNp932TxNXG9oSuuYmZ+RIHAJ15TEecqUqpzjt0InzFjOpmD/9FFXU7Y0JSZZx/BSP
++ettoGtDutXoXK11P2lRyPiU8r0903tPS0libR6mBqEwZ/CiAlV34q9dx0wEg/Hw5TmnGJ5IvdB
l8jjOuGmIAhRxIqsahIgOaSIWg1elL8/mSmca82g9wnD4o/AK+sr9urNuF6XvUuy5iZgPacGamFD
6utA8pM+fy45gZJ9tGEtil7kZWXMFOTmeGszlRSn8IjOGCgiisd/nIeRY6Cido+dKZVPLhM746Cm
A54313PYc1LBK9rRudTmFekPWdlSwhNuL3ROBBdzZo+ZUT07KVi9YT3iGDDRwq/15BLSjNh85w1o
NsBSmj+h8k7mrP1Mn2RHfiM/HJ09G9mMsRZ7dIMSoinuU+wQ8aqTyP3Fotj1X3/mh/I7c9SlB8aJ
W14koIswgcNF990dSM8wmrCSmkEd0LPPEoVUywVZSYwNgmiMc0WO5akbOALkJiO3d6+AcqiKftc9
HM/trcCoTDMiQ9IQ3IoXyAZt4yeaPatAwcZJNE+HxzlcoxbbHOaV+/HZWgrA0oxtUfvj+K4qxsWH
ZD1/NGLT8JfroxoXmYdDq2w7as7E69GnUYHnRbHFSoO0VuKJWa8PyG+mbDL5Z5T3pY2eWIJtOJVQ
JeMHQpSh764VP7hEA1lRe4q743cIWM7luUqSyBvNE4ay/qDw8PoaWxmXlXkyd/Ob0FOhZ1E44Rzh
cdagmXetj3LPYI6DZ4YkrzoHhHRxk/Euh1yBcrg56xllEpz20ZqWnsRJ//r08T3/9G/s/+b8H/bu
PGG+u0hTFdP4Df/p3Pk8Rx8Qs2DixItg7Iz4Dz7Fjpt+ox7/WJLMNUcF1kaigqNFFXIuSoLQ2SQz
nOXQOccP3YnACvqDiNLMTR6deMbGnus73oR/jHfvcSIwng3QQagCDmQ6H4UR8qLdEyHSXn93x56T
VIZUYoGeuurb52cY3aNA+agp2+K3h0MorTCjRdopJV7TFPT1y22Rpl/n27muBys5E4YACyXWnC7w
lGFVsn5FShstEQgEBPjxxcL9xme2zOX9o2VicTs/5i5i7IfrP7HIccdjNlsqJud+mddHiyuWAkEq
NleDBN4J8eDFveWOVnFu+D/DVWqpwSJKv6sgxOvJfDpdFBcfZPy4cW7VwdPxTRCo8xQbwHTZ5Ni0
Lcc1f5BwDUVgQdYyh2py+5UjYswacEPskiv01iBD4e5S46WUuLHdNSmmKydBLDQZyxLogXK6W2/d
WsP+ZovVWrx71/PnHNLht9ur29sr5+vf17dt51d72N9bkAdDywYAA4i7A5fPq0Ci7S6N3Ngbm39J
bJlrYqpJCX6kJ7QRM1SA65eNQ0KuTKVsuaianGqCsCp0Ueb7fL4lJtOEo2BryAlIGwv0fqr854nn
v35k/iyNcELxfdGJdnFB3znX9vAq2CaXaR9gFCVpHAzgAQmCUGzRbxgFh7lzTrbL5Lkqkoj/oet8
0M9niGpm6nJMI4uxtjuw990qgyD0WpCQSOcuJHMjVnhA0d7I9Q/4DdMXiFb/cCBA4O2QPVU1nkdR
+q5pvRLhDJNOukeEZqudfNELaJjK5ekLSvy7q/EnMpDCzCtgd9Q5cJKP5aJxhhWxxMw7SsfUIxss
J+3NAnh1UviCcqvlHy2XXRJvysJ5YsFv2jtZO0/DRfQvL5zHKUY+unFy/ej5k2/sJxsnIhurallS
BlK6V4ZomYYTw/bPHj0hWx+iJ2fxw33opwoqMTyrNY/9dsfB3lLRU0LWLZUv1VJRHmUsbC1gagYw
w6pWC6hcBbjmpZWNGuMq39OztSc8fI1CjvDYCx4+rCdeeGHgLP11gJLV8iBXKTxNrblZBXxKU3gq
WPJsMfvm1hv5nHy2HH/75M1stEqUwlPziSalnFz3MWygWACe9SJyC4SBLLSDFaRswlwxY9X20oRK
miCR+RPDplZDYa4NOY9nZ26wkNKIV8HiPf9xzVTVDiuRSHgHRClnwiAT+ShDKYxBfkbFEq+R4VL2
kvWamVrGA8CjU4uQTWgyjKq9ISQegEiRViJLyQe1c1eNwil5exjSUkBm6GrXtcoji643Td+Stld6
pwhOTesrDiXsZetC34iPuR/iTPmpdu34QzC0ze/t8C8LFvfB2TptnpvX/h1GT5JzYn4sfyXWy1Nk
nF9/n2HvsjSHbTW9M5VamQVY968w6xLSDT0U4dgVKLL8C2+YSuCjqr0ZB6rOWojVBgmaRgnwQFNx
qEStAXHJehUsVuaIUWuEpHYnZsT8jPWeGuqq5sNrEhcWFCP23SFDntD24634Qoenv9zOiAxCLXff
m9F3MirukNSQZ23KnF6h8XYvsj43QwwTcCUo2dhKjUp7n/ab/88LHpxwnsTehDku/3zGRBpFMhhw
Eo6TxYxY36zK1WUKGErwoBt2hDMVik5EWcVONVBkXi/uEwSaOhQ+tNGCtMKMeYxZhdU5KhqtQBBb
07KqMFU7l6/9EmajyMp75vZYBu5MU2Gil5xCl0mfH6m3B5as52y8XXyY4IZUMs7W7du2EOVqVo2Y
NLcyaAI57SELQbbkTNYjXh6ZO0knht8n/M8Yd8lIIQzNSniDmrYQ00h6UB2GClu9EoEbgS3aVRuo
Ibl92FxEWdk2VhOn2QuPW2CGmgQMWOxZqKjit4s79+GzO2VWWuTLAKltR3HZxQ3YDb4f/nbYdJYs
nF+uP2cWzYcsUKAjnCTijvrP3Jj9UrIxi9JQIyfaAJW4+l6QLhRNnNXnx6kyWS0SGgactt78y7lJ
z7IViBCDrkFmg8yXjkwZi+jMuk2ml0nNRNbvR4//zswdM8cLaFgoOSBJRBZnbpQ2aL1+9+XTV/5l
OvQg/d9fUTi9TaI0sr/U/S91DGQeya3pLZv0aHnOEi8MP39ShnuViylKHgcPNiC366wxxDXoT4If
wF7ZFAwVWYVIMGpdpD4tBbGVQWrM3AapDVJfLFJl3CKI3ZWyrpn4FsqGXADJpdwGeZ76cAXaci7K
MShEM/oqHgmJ1W/IU50sDb6SE1BgE4lUCIT4lYA8XdB9WEqCBzg4YhggoVDiiPHfYE44Y4G9eOYR
EARzrbXxfY9QbcfblQFCzkzwAm5jBcta/hE/loLlkgWSRnO4N52tBKWLP5g24+ym8wtU+2QRDwkt
JA2YmCIIH+axE6zD3PWxWOXuLcBTVe1szJAgaNkU2bObgiZ5xX5AxzYrmSQgkVLnBCwKAxYExy3+
kM2jc5tOIkjLgYylQHMgZ4X15z4PYepO4XMlLB7LdVRHQDQSCc4mIFHeLANKjha7W8yY43vc+eG+
j4UelLzzFar+OLZuWeS5vvfPskNn/eVduBLeOJaOCBB1bavJe8t6d5kYvnUtikzLBNfYjdMkb8yC
2Eu8XyUq04RxKcKXSOalNiiQJkTWyzQxUTgVnoVvO0kMaUgENPqZLVPiTNGG2Iy7DhL2nMxd/6/I
fUg/G8d4KDwdssRoaUK+Sdr/+UenlXSWf3bplRplQYlL7Y2Ek7WIUN16uYMb37fISimURUiWkjoM
QrbOfvUhszjf5xSOZsYPnMV1im079pYkHEVGT8Sm4S+Gb2ztnYtnnVC3S5DogTI2lzTzIZiwZzZ5
9/b1E1vM3OQRRMBW69G2DJWJHAV/xQsCFqX857TawIHb/CMb3m94v8LY1DKJwJ/CzL7p60fPn6Tp
zo3OBjXzpAiGdIMHjG+8ZzeVqotq8ZIZIzODWgExbDL4gHFuviJulEajghtsQjgz9MOEL8zuOvKi
6OyAxgzXZnqRkLFZjQOz3orMvRqtSkgk7EyrTSPxOLUHN98Ecx+1Uk0ICFPD+db/47828iYTmz2s
WZDUrXBN6GlV43Fd/Hhc18DYbuJVd4aejH7i7CUXRWXJHqtJOgRICjm6ZryseFFNW+bu5vaOqp2V
woZGo6IGzplV88ro0ON0NINz/Lf2jKtccJqWHSCLDnEhmQYMBbZd7wzbmuxJceCJzz70Ai7bvAmV
yQf5ufd9SGFmFdSm+S1XcNlsg1MDClmOqo5WfHbcGb/fhE2cJHSSRw/HR4FO4Rq2k3vqy3I1XqJS
XKSMOC2kueMxmyWWFr4JwWZB6hTbCtccJYkzWXAYvbHjTia2o52FAFEeXvoi8kPySZt9ewcheSN/
nHYeTPjIyoerC3lT3m9O3GQeO268CMZ43vHRoS8tfK35hNl6vY+ffejjZB8oxD/qF4I/4kGcaDvK
oYXEqhLXmLrPsfcP4JifwiNrKR11HkhSuJ6RsaJ1Atw7TK+YKHVtxvzoN51W78+0W/LN988frr98
+3z748PnP8dpB2WQvPkzHbT9BsgZ670yDSiEGKlv2+T7m6t3SHQi9dC9Vnt10pf3f3Ra728+fvyy
PehzmKTlReHEXZyVHSp3P1OnXr//cP33zWf6DGjnV3ENY9nROAavgnmJVJYa52YIYcqZ7BWgLIAx
I3uvIHgaTFfJxbAU1Vv6kJDyFVeTC6hkaRIwpU8Qu92y7erzEgNYlgw6K7T89eF/bzgS3n6//vt2
i5g/utfPf3Rv+A/xr/7o/JV+s0JQ+jvpX5QuYqYACG4/pAJpwl3dUAR4z38ls7XJFJRYplYqo4HF
FoSYtmdcqj9wSaDzXNRz50z3Cluewth5nVfI0hjqGhakK5jxI3+Fbzc3O/b3xuw/DmCdhCwOwmTq
Jom5QIPhw+3IXg2qMXJrDQaUOJ8Ooab81Gnd3aRK6+rHze2XTzcYMRQdeW0Zz5q3xiFwWrqpnMgg
4FWkLx2OUH9cS3wo9Z79DbD//oIBm9z7qQCnIYXskLQ12VO56/ZlhVU+/UDcrC9NebjwqaEubT2P
0nnPWwhvf9zc3HGa+frl7uruy4G+4id6gUFRiiyd7FfWYAhTky8qnblfjXgSq8lVJxeTV1SIqqkL
KnnA4WW08JUNsjcxzYMbwwapCDpHH6smcKKGyqTBKZJc3l3B/v7L99u7L585rD/SoNj7q2Vs7Gp7
k+UPiksoWQzCQKEnAWg8p1Ix2qlKk26DJBuJgyOW7itE3iHnyHRfYTItjLfTfYVMTtYF+Pnl5Qr8
H1f/5uB++X53d8X//+3q8//sXOflD0EJbwgI7IgiDuQrJORD0I006UO8XIpDLPohJkLTqyO+AaFi
aqrdc6dmkEx5nu9GD+kA6CUeOQZHqY8D12wgcPDLbqRTec1sN/ACffTKhdbwoxULj9zYQ2/i3B7a
bLAy1yC3RSrmkBWZo5fH/mCj62gxS8Krrx9ePzBOy27C/maLJRTDeD7mEMUsHl7d3DrXb6/PUjBi
QM5Sh4feEC68rh5rjIXWq5Erbkv7Buz2t0mworyaLOFDHVF9UjnszKJw6nHWA968ovbQFZjuhazE
FKlJQIoitiwaqyXOtbYVJ6nscwPU6TYkrT7GrDfBiUncynSI0mh9k1BjdnuzpJszyHRCiqHYTj+1
Jo7pNCkCCQdTeMav5amAFUSuhQrFs1e03xSjZdNnTmLxfFTiUSAGdEFs/uIA3gESTI94wWt1lS7l
Jd0kJmF5yAtOOm3TuJEYkL2qW/aPD972stfraoT1TIsA+t2dJtSLbIzlQPSZto3ICj7ybaW6wq86
k+PECdBmE60dRQvWq1cD8sLTNVVtoCbZHgvmh1PCOsX2XJBAnv3+bxq9xKp593ni+a8fmT9L1x1A
SdOiEysiS6s3YMAihYmEXIJw+Xc0VlVkACMQhKlcmzyt5mkAfWCjeTZXTm1FVKFctdbhLYZ+kIKq
fczQlv/IBGWvnx7IKibTzV7Kg9Y6eeH5ECJjkqExiU9isDKFA7rHEyJzTxH7RDumoaUmoReg2+eM
EEok0fOOm6cj3a5MpgxCVg3SmFtQ2z5uMHlM8h1I96IDePfEOsHJtnPLRep2CdGYRYnjTn66Yw4I
Vgvj6aHG+wAI0g3NFnYg8UkQ/2T76EFrzipQcSsbsgcUUwZKTE6FG0JhleqhsljX6zZnURRG2N3m
20ObbnMUvwiW5M1BQWFFMMmCuRI2wtz6K3aofCf/3TdakwUO4BGVUycKYLhRAMNljSNGll0UAIk7
lXI4ieoBhbuJJ9/N7fkluKCqJVs91QIVVBK4BJNd9GaE9FptY5Fxc3zRM/VJ7RalpsiaLfSV8Vny
NYb5Rhz55msIhu/LCp4+jODpyc6qSX8BAo62rEJot0hZrpLWgtFZJwaj7OaqZ3s1knSyaa8SApN+
XwhKV8lhQEkgadqCAEQrJdeSTo2CPKp0ciH/o75+uSXgY8hBASV1lPI2xGgUz8WQe7NSaYnQ+30Q
eCm1D6Q5A0psSjNHZUhSICIqd/lCUYcdzO1LExGQuvj6nVwYSUzCfCegFExnCxWd4FTTSPMCMUGA
kJaSqlZHztLIsiG+42u4/11c30qhptCUWCrM7/b1pRQMEmoLc5WJ7B2gImiy1AEWui8R5mCp3fJz
odVPbfvKxWWUiV7QijRbSiJFQDGfWU3gSmXa98YUexw1YTRhEecf45VMQpyNsi3m+JoCmBIWTbDb
E5parDl02aH+6TbeNnuyesXH7msPqj9mdBii0T4w691MH6ZDlDpmoD5V5/BkxALz2qISqyhgTGNd
qaobGcIsJlc+uYQWX7Tiz8q6Jmya/hRz2ApdFJsbih4U1cqQO1QE040haqxQPBO/KNXi8idLl2j/
z/UnUiXjh/AolIyH82Sz8KqN0/d5cqK8+x24U+bE43DGYhQ/+Pg86GWpeKl6q01yJ5QAbtTInZhn
yPhuHKc+BW7o6uBUUmsncYo0DkXdi50dbQQN5dIHLaJPOgmARXM6yy8zbVxvyrisc8ZhtLefvXYR
LqHoz7HyhvTcdU8VekaZILzmCkmpW1TEQbKUratGgk9C4JmPJxxYOGgBBfFTCzyZDrrv1GniFobj
FpnCFidwIX/0Sx1bIO3ndTDD9XLnbj29yA0e+KHf0v9xIkg/jn0NPS6dgOVK6cmKTe0bggaxPMus
JQk7qYnSFOjJMtqA09BaJx/rzDhZ+GzoJknkjTh7QlfPiJzcaG3jWtuKvobU1C+igKmUU8Ajwmon
l+tPW3pbR2s/T/0UX9Hq2908QhTtnXe46F1kvNy/f5BK4h2Ao5DD46hzYhZ5ru/94yZeGCBNe8o5
F8XuSpmA0/2UHwpgo9VXZte1lrFcKIrXLW3pCvowIxZQnuC0YJ7jlXooXZpcRrTQMsmRrjXdyWz2
ttXMcB/YAS82wS2JhRq2nklioFg0sl8sSBI3emCJLVv+CARti75OHXUmeL6ug9/9kGOJXiW0FLHb
sIaUQCjGvyjPsmAcTlJ97s68lVUG4GRniZz70J+w6Cx5TlAk3O44xCfKQ26T6DBbhrAje7wiBMEz
m3fMwWkeb8C8oNJpRwVZ4egnGydxEkZs+MQWy/5EOAut/FwzQeOAJb/D6Gk1OwM3/ysEielw8s31
u/dkgslHwJAqElfou7Yh7KprLt97UZxs+u+Xmyn5F16yAFuUcGqTeMEv1/cmju+OWFmO3UBlb54k
w92mLVEUjAWwGUUh02KvdDNQPyxb/Ntwx3QgUWNzmQrxEgbW3mriBfde4CXMidjEi1IiOZstQAaT
dUtH+2fCgvao1Ug/KJCbaer475n7wN64fsKigBs6q72K3Vbnz6n3/KZFiXaKIcWlLBXIJ+zenfsJ
eQxnw/lyOVcj6HzkIzS8S4F3K5WyBdEQ2A1gGNJSxwXdmmW739/8FdICKihPo8qKwGSQ8tTWRohV
Sh5a1zoDGSV46illsyQY/hsF3BjPVTeeGxp+8TRcx2otGT1SeR7ei/bOWOBsPo7/OWcoY7hyjoUJ
UTYyqNGj9HhQxP1Oh7bEM3fMbKxIFwSHbg1oNUQFcqUqmp5rpFjjDTSauKHhJh0En8jNVMwN85LN
B1W9Is/ecH0Q4WeigC3boQXfsqlY46UArbnSOYXD66ljKpsWNqNvilBLotRcpspcCm1nRPx4orXl
1WEWSWKyXrPajLhCEYuoHWdacDQVv02cA9RVakIcYOZnQ7kN5TaU21BuQ7kN5TaU21BuQ7nkKVfE
eyNR6qFQ4NFwZcOVjT5pKLeh3BbhSC210gXwgoWGURtGbVRMjSm3Xql1gwn1tDrBGXEYnhz+RCxy
4iUxQI430wDIYKLdbnq92QsFmlQvJCIbCXZ1gF4qBeiJSAv7bBVg0BCHTjwf3UfulJET1IeQWWGX
08d5YJunid8urtMdwJ9hcScFgplZrHtII6TEVdR3M/FYROAUEBRWWZEqCI1ZoysWCRk0RmXznfuQ
kpAzflyum5qE4/nyh97fffr4OQXYmsgWgsygJF97zM49c5N5xJxZ6HvjxRnXrnbFeglcpCqFIYm/
BA9NrTSAlhPiQSvKTx8yM0syNUB0vJXZ/gwxOPyQS/buuf6HNfeU3vGIMZcTXtI/4mou24Q3F3TE
VK/Ve1WKdUuwmVLbe1RvXygJc4lNvVVn26Xm1gBpe0hNtEvIgBLa01fABpRcnXY8U1Yfsot2bq+E
1v5IaiVRjwlpm9DBJWW2SpC0XqqlVelHw47o+t3Gzikk8FqlmXJZGDfTpAmG/BNCg1azhQsHYlRy
iSonB98dr5C5GzcNZzQLHg6duaE9PFzyQes39VYHAXVc5S2PEjFR+fnWen5jDQLR2iSTyzIqEwYU
3TaQL77RtlzogmBi6YIiDCq2EWeWl7mU1IwcEsexngW6lmn2rXR9QFBAOLUM43kUhQ9cGcbOPLkf
YBmkWcc2VbOGZHUWchF2Ekkfm2O8PLrxVZJE3mjOfwzVbDo9uSlsMyk5T/GLJTAlT86hDy+IWZRc
TX5yKyTYSGBUCs2HQJRStyw78h76KzNqteIZWuyfnNfIe5O8lU8ZWDymCEFTMlWmXE84B1iZy50n
JKnu2LNNQbk9XlpKsvA+tWacgcN/D0NMnh5YnxGtYMJm+75gyVYYMS0Gdw6J+6792TFFMNSjYFju
zvVuWNa7uWgM/v2nq2uhmgyM4okjYPT0hxOxe3Qdsj20ivyokco5erkXmeKUxkHNMpx6969jgjMD
I/8PUEsBAh4DFAACAAgAhSl1S8x2ZseyKgAAPTgAACoAGAAAAAAAAQAAAKSBAAAAAFdlYktpdFRl
c3RSdW5uZXJBcHAuYXBwLTI1NzgyLXNwaW5kdW1wLnR4dFVUBQADKSYUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAKYpdUtAXzDXsyoAAFE4AAAqABgAAAAAAAEAAACkgRYrAABXZWJLaXRUZXN0
UnVubmVyQXBwLmFwcC0yNzA2MC1zcGluZHVtcC50eHRVVAUAA2gmFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADIKXVLLm2faJcqAAA1OAAAKgAYAAAAAAABAAAApIEtVgAAV2ViS2l0VGVzdFJ1
bm5lckFwcC5hcHAtMjcxMDctc3BpbmR1bXAudHh0VVQFAAOnJhRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA0Ch1SwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BKIEAAF93cHRfY2VydHMvVVQF
AAPXJBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0Ch1S41jgXwHCQAAOhEAABUAGAAAAAAA
AQAAAKSBbYEAAF93cHRfY2VydHMvMEI2RTQ4LnBlbVVUBQAD1yQUWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANAodUvaCvNt5QkAADsSAAAVABgAAAAAAAEAAACkgcOKAABfd3B0X2NlcnRzLzBC
NkU0OS5wZW1VVAUAA9ckFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADQKHVLjWOBfAcJAAA6
EQAAFQAYAAAAAAABAAAApIH3lAAAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQFAAPXJBRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA0Ch1S2q98tRHBQAA1wYAABQAGAAAAAAAAQAAAKSBTZ4AAF93
cHRfY2VydHMvY2FrZXkucGVtVVQFAAPXJBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0Ch1
S3t5yJdJAAAAZQAAABQAGAAAAAAAAQAAAKSB4qMAAF93cHRfY2VydHMvaW5kZXgudHh0VVQFAAPX
JBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA0Ch1S5hceX8VAAAAFQAAABkAGAAAAAAAAQAA
AKSBeaQAAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJVVAUAA9ckFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAADQKHVLmFx5fxUAAAAVAAAAHQAYAAAAAAABAAAApIHhpAAAX3dwdF9jZXJ0cy9p
bmRleC50eHQuYXR0ci5vbGRVVAUAA9ckFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADQKHVL
4pKklzcAAAA3AAAAGAAYAAAAAAABAAAApIFNpQAAX3dwdF9jZXJ0cy9pbmRleC50eHQub2xkVVQF
AAPXJBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0Ch1S+/oHxELBQAAjwYAABgAGAAAAAAA
AQAAAKSB1qUAAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUBQAD1yQUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANAodUvaCvNt5QkAADsSAAAYABgAAAAAAAEAAACkgTOrAABfd3B0X2NlcnRz
L2xvY2FsaG9zdC5wZW1VVAUAA9ckFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADQKHVLdO7h
3wcAAAAHAAAAEQAYAAAAAAABAAAApIFqtQAAX3dwdF9jZXJ0cy9zZXJpYWxVVAUAA9ckFFp1eAsA
AQT1AQAABBQAAABQSwECHgMKAAIAAADQKHVLih0HOAcAAAAHAAAAFQAYAAAAAAABAAAApIG8tQAA
X3dwdF9jZXJ0cy9zZXJpYWwub2xkVVQFAAPXJBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
6il1S6EnSWqAdQEA/ewNAA4AGAAAAAAAAQAAAKSBErYAAGFjY2Vzc19sb2cudHh0VVQFAAPoJhRa
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAeCl1S6tfwZymKgAAMDgAADoAGAAAAAAAAQAAAKSB
2isCAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC0yNTk2Mi1zcGluZHVt
cC50eHRVVAUAAxQmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACaKXVLEv6R5aQqAAA9OAAA
OgAYAAAAAAABAAAApIH0VgIAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50
LTI3MDYyLXNwaW5kdW1wLnR4dFVUBQADUyYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALsp
dUuFD8v3lyoAADU4AAA6ABgAAAAAAAEAAACkgQyCAgBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQtMjcxMDktc3BpbmR1bXAudHh0VVQFAAOSJhRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAADCl1SwAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BF60CAGNyeXB0by9VVAUA
A0clFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAMKXVLAAAAAAAAAAAAAAAADgAYAAAAAAAA
ABAA7UFYrQIAY3J5cHRvL3N1YnRsZS9VVAUAA0glFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIA
AAAMKXVLJeDTCCwAAAAsAAAAPgAYAAAAAAABAAAApIGgrQIAY3J5cHRvL3N1YnRsZS9yc2EtZ2Vu
ZXJhdGUta2V5LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVyci50eHRVVAUAA0clFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAMKXVLMDu4sUsAAABoAAAAPAAYAAAAAAABAAAApIFErgIAY3J5
cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy1zdGRlcnIudHh0
VVQFAANIJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAACil1SwAAAAAAAAAAAAAAAA8AGAAA
AAAAAAAQAO1BBa8CAGNyeXB0by93b3JrZXJzL1VUBQADQyUUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAAopdUsAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQU6vAgBjcnlwdG8vd29ya2Vycy9z
dWJ0bGUvVVQFAANDJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAACil1SyXg0wgsAAAALAAA
ADEAGAAAAAAAAQAAAKSBnq8CAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5
LXN0ZGVyci50eHRVVAUAA0MlFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAuKXVLAAAAAAAA
AAAAAAAACAAYAAAAAAAAABAA7UE1sAIAZWRpdGluZy9VVAUAA4glFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABGKXVLAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UF3sAIAZWRpdGluZy9wYXN0
ZWJvYXJkL1VUBQADtCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABgpdUtwLOHEYwAAAGsA
AAAlABgAAAAAAAEAAACkgcSwAgBlZGl0aW5nL3Bhc3RlYm9hcmQvMTk2NDQtMi1zdGRlcnIudHh0
VVQFAANgJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGSl1S6+E+U1jAAAAawAAACUAGAAA
AAAAAQAAAKSBhrECAGVkaXRpbmcvcGFzdGVib2FyZC8zOTc2ODcyLXN0ZGVyci50eHRVVAUAA2El
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAZKXVLeuKMOWMAAABrAAAAJwAYAAAAAAABAAAA
pIFIsgIAZWRpdGluZy9wYXN0ZWJvYXJkLzQwNzYyNjctMi1zdGRlcnIudHh0VVQFAANiJRRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHCl1SwtV9JiqAAAALgQAACcAGAAAAAAAAQAAAKSBDLMC
AGVkaXRpbmcvcGFzdGVib2FyZC80MDc2MjY3LTMtc3RkZXJyLnR4dFVUBQADaCUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAB0pdUt1UkDRYwAAAGsAAAAlABgAAAAAAAEAAACkgRe0AgBlZGl0
aW5nL3Bhc3RlYm9hcmQvNDA3NjI2Ny1zdGRlcnIudHh0VVQFAANpJRRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAHSl1S+AqrLtjAAAAawAAACUAGAAAAAAAAQAAAKSB2bQCAGVkaXRpbmcvcGFz
dGVib2FyZC80MjQyMjkzLXN0ZGVyci50eHRVVAUAA2klFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAdKXVLispsmWMAAABrAAAAJQAYAAAAAAABAAAApIGbtQIAZWRpdGluZy9wYXN0ZWJvYXJk
LzQ2NDEwMzMtc3RkZXJyLnR4dFVUBQADaiUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAB0p
dUuXecdSYwAAAGsAAAAlABgAAAAAAAEAAACkgV22AgBlZGl0aW5nL3Bhc3RlYm9hcmQvNDkyMjcw
OS1zdGRlcnIudHh0VVQFAANqJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAICl1S+V6gBpj
AAAAawAAACcAGAAAAAAAAQAAAKSBH7cCAGVkaXRpbmcvcGFzdGVib2FyZC80OTQ0NzcwLTEtc3Rk
ZXJyLnR4dFVUBQADayUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACApdUuDm+tSYwAAAGsA
AAAlABgAAAAAAAEAAACkgeO3AgBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1zdGRlcnIudHh0
VVQFAANsJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAICl1S7ixpchjAAAAawAAACUAGAAA
AAAAAQAAAKSBpbgCAGVkaXRpbmcvcGFzdGVib2FyZC81MDA2Nzc5LXN0ZGVyci50eHRVVAUAA2wl
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhKXVL0dC49mMAAABrAAAAJQAYAAAAAAABAAAA
pIFnuQIAZWRpdGluZy9wYXN0ZWJvYXJkLzUwMjg0NDctc3RkZXJyLnR4dFVUBQADbSUUWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACEpdUvJZwuJYwAAAGsAAAAlABgAAAAAAAEAAACkgSm6AgBl
ZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1zdGRlcnIudHh0VVQFAANtJRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAISl1S5pueQ1jAAAAawAAACUAGAAAAAAAAQAAAKSB67oCAGVkaXRpbmcv
cGFzdGVib2FyZC81MDcxMDc0LXN0ZGVyci50eHRVVAUAA24lFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAhKXVLazIE3GIAAABrAAAAJQAYAAAAAAABAAAApIGtuwIAZWRpdGluZy9wYXN0ZWJv
YXJkLzUwNzU5NDQtc3RkZXJyLnR4dFVUBQADbiUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACIpdUvn73uRYwAAAGsAAAAlABgAAAAAAAEAAACkgW68AgBlZGl0aW5nL3Bhc3RlYm9hcmQvNTQ3
ODI1MC1zdGRlcnIudHh0VVQFAANvJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIil1S9CJ
sehjAAAAawAAACcAGAAAAAAAAQAAAKSBML0CAGVkaXRpbmcvcGFzdGVib2FyZC81NjAxNTgzLTEt
c3RkZXJyLnR4dFVUBQADbyUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACIpdUvdDm29YwAA
AGsAAAAlABgAAAAAAAEAAACkgfS9AgBlZGl0aW5nL3Bhc3RlYm9hcmQvNTY2NTI5OS1zdGRlcnIu
dHh0VVQFAANvJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIil1S5ZIygliAAAAawAAACcA
GAAAAAAAAQAAAKSBtr4CAGVkaXRpbmcvcGFzdGVib2FyZC81NzYxNTMwLTEtc3RkZXJyLnR4dFVU
BQADcCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACIpdUvAqrExYwAAAGsAAAAnABgAAAAA
AAEAAACkgXm/AgBlZGl0aW5nL3Bhc3RlYm9hcmQvNTc4MDY5Ny0xLXN0ZGVyci50eHRVVAUAA3Al
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAjKXVLND75sWMAAABrAAAAQAAYAAAAAAABAAAA
pIE9wAIAZWRpdGluZy9wYXN0ZWJvYXJkL2F2b2lkLWNvcHlpbmctYm9keS13aXRoLWJhY2tncm91
bmQtc3RkZXJyLnR4dFVUBQADcSUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACMpdUuQeQdQ
YwAAAGsAAAA2ABgAAAAAAAEAAACkgRrBAgBlZGl0aW5nL3Bhc3RlYm9hcmQvYmxvY2std3JhcHBl
cnMtbmVjZXNzYXJ5LXN0ZGVyci50eHRVVAUAA3ElFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAjKXVLDj6F4GMAAABrAAAALQAYAAAAAAABAAAApIHtwQIAZWRpdGluZy9wYXN0ZWJvYXJkL2Nq
ay1saW5lLWhlaWdodC1zdGRlcnIudHh0VVQFAANyJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAJCl1S1DsZ6djAAAAawAAAC0AGAAAAAAAAQAAAKSBt8ICAGVkaXRpbmcvcGFzdGVib2FyZC9j
bGlwYm9hcmQtZXZlbnQtc3RkZXJyLnR4dFVUBQADcyUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACQpdUsrhdW1YwAAAGsAAAAzABgAAAAAAAEAAACkgYHDAgBlZGl0aW5nL3Bhc3RlYm9hcmQv
Y29udGVudGVkaXRhYmxlLXByZS0yLXN0ZGVyci50eHRVVAUAA3MlFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAkKXVLxZ+IK2MAAABrAAAAMQAYAAAAAAABAAAApIFRxAIAZWRpdGluZy9wYXN0
ZWJvYXJkL2NvbnRlbnRlZGl0YWJsZS1wcmUtc3RkZXJyLnR4dFVUBQADdCUUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIACQpdUvGv29KYwAAAGsAAABCABgAAAAAAAEAAACkgR/FAgBlZGl0aW5n
L3Bhc3RlYm9hcmQvY29weS1jcmFzaC13aXRoLWV4dHJhbmVvdXMtYXR0cmlidXRlLXN0ZGVyci50
eHRVVAUAA3QlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlKXVLKFqDJ2MAAABrAAAARwAY
AAAAAAABAAAApIH+xQIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktY3V0LXBhc3RlLWV2ZW50cy1m
aXJlZC13aGVuLWRpc2FibGVkLXN0ZGVyci50eHRVVAUAA3UlFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAlKXVL/uqEUmIAAABrAAAAVgAYAAAAAAABAAAApIHixgIAZWRpdGluZy9wYXN0ZWJv
YXJkL2NvcHktZWxlbWVudC13aXRoLWNvbmZsaWN0aW5nLWJhY2tncm91bmQtY29sb3ItZnJvbS1y
dWxlLXN0ZGVyci50eHRVVAUAA3UlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlKXVLGErr
F2MAAABrAAAANgAYAAAAAAABAAAApIHUxwIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Ut
d2l0aC1hbHQtdGV4dC1zdGRlcnIudHh0VVQFAAN2JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAJil1S8jynjtjAAAAawAAADMAGAAAAAAAAQAAAKSBp8gCAGVkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXBhc3RlLWF0dGFjaG1lbnQtc3RkZXJyLnR4dFVUBQADeCUUWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACcpdUv66jZcdAAAANYAAAAtABgAAAAAAAEAAACkgXfJAgBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvY29weS1wYXN0ZS1iaWRpLXN0ZGVyci50eHRVVAUAA3olFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAnKXVLzapWlGMAAABrAAAASwAYAAAAAAABAAAApIFSygIAZWRpdGluZy9wYXN0
ZWJvYXJkL2NvcHktcGFzdGUtY29udGVudC1zdGFydGluZy1hbmQtZW5kaW5nLWNhbnZhcy1zdGRl
cnIudHh0VVQFAAN6JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJyl1S3EkpyVjAAAAawAA
ADcAGAAAAAAAAQAAAKSBOssCAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWNvbnZlcnRz
LWZpeGVkLXN0ZGVyci50eHRVVAUAA3olFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnKXVL
Wbx3lWMAAABrAAAAOAAYAAAAAAABAAAApIEOzAIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFz
dGUtY29udmVydHMtc3RpY2t5LXN0ZGVyci50eHRVVAUAA3olFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAoKXVLvaDGymMAAABrAAAAXAAYAAAAAAABAAAApIHjzAIAZWRpdGluZy9wYXN0ZWJv
YXJkL2NvcHktcGFzdGUtZG9lc250LWNvbnZlcnQtc3RpY2t5LWFuZC1maXhlZC1kdXJpbmctcGFy
dGlhbC1jb3B5LXN0ZGVyci50eHRVVAUAA3slFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAo
KXVL6TfjKWMAAABrAAAAPwAYAAAAAAABAAAApIHczQIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cGFzdGUtZmlyc3QtbGluZS1pbi10ZXh0YXJlYS1zdGRlcnIudHh0VVQFAAN7JRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAKCl1S9p9sSdjAAAAawAAAC4AGAAAAAAAAQAAAKSBuM4CAGVkaXRp
bmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWZsb2F0LXN0ZGVyci50eHRVVAUAA3slFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAoKXVLw39na2MAAABrAAAAPQAYAAAAAAABAAAApIGDzwIAZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtaW5zZXJ0cy1jbGVhcmluZy1kaXYtc3RkZXJyLnR4
dFVUBQADfCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACgpdUvQXuAuYwAAAGsAAAA5ABgA
AAAAAAEAAACkgV3QAgBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1wcmUtbGluZS1jb250
ZW50LXN0ZGVyci50eHRVVAUAA3wlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApKXVL9Rm8
umMAAABrAAAAMgAYAAAAAAABAAAApIEz0QIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUt
cnVieS10ZXh0LXN0ZGVyci50eHRVVAUAA30lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAp
KXVLJ+ep8mMAAABrAAAAPQAYAAAAAAABAAAApIEC0gIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cGFzdGUtcnVieS10ZXh0LXdpdGgtYmxvY2stc3RkZXJyLnR4dFVUBQADfSUUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIACkpdUtFYmaZYwAAAGsAAAA9ABgAAAAAAAEAAACkgdzSAgBlZGl0aW5n
L3Bhc3RlYm9hcmQvY29weS1wYXN0ZS13aXRoLWltcG9ydGFudC1ydWxlcy1zdGRlcnIudHh0VVQF
AAN9JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKSl1SyZfxlhjAAAAawAAAEAAGAAAAAAA
AQAAAKSBttMCAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLXdyYXBzLXBvc2l0aW9uLWFi
c29sdXRlLXN0ZGVyci50eHRVVAUAA34lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApKXVL
HK0VtGMAAABrAAAAMwAYAAAAAAABAAAApIGT1AIAZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3Rh
bmRhbG9uZS1pbWFnZS1zdGRlcnIudHh0VVQFAAN+JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAKSl1S+CvtQdjAAAAawAAAD0AGAAAAAAAAQAAAKSBY9UCAGVkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LXdpdGhvdXQtY29tbW9uLWJsb2NrLWNyYXNoLXN0ZGVyci50eHRVVAUAA34lFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAApKXVLlq+c0WMAAABrAAAANAAYAAAAAAABAAAApIE91gIAZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktd2l0aG91dC1zZWxlY3Rpb24tc3RkZXJyLnR4dFVUBQADfiUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACopdUuOkB7/YwAAAGsAAABSABgAAAAAAAEAAACk
gQ7XAgBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weWluZy1odG1sLXN0cmlwcy1qYXZhc2NyaXB0LXVy
bC1hbmQtZXZlbnQtaGFuZGxlci1zdGRlcnIudHh0VVQFAAN/JRRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAKil1S742/NVjAAAAawAAAEEAGAAAAAAAAQAAAKSB/dcCAGVkaXRpbmcvcGFzdGVi
b2FyZC9jcmFzaC1hY2Nlc3NpbmctY2xpcGJvYXJkRGF0YS10eXBlcy1zdGRlcnIudHh0VVQFAAN/
JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKil1Sykv+kZjAAAAawAAADEAGAAAAAAAAQAA
AKSB29gCAGVkaXRpbmcvcGFzdGVib2FyZC9jcmVhdGVNYXJrdXAtYXNzZXJ0LXN0ZGVyci50eHRV
VAUAA4AlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAqKXVLMm+o+mMAAABrAAAAKgAYAAAA
AAABAAAApIGp2QIAZWRpdGluZy9wYXN0ZWJvYXJkL2N1dC10ZXh0LTAwMS1zdGRlcnIudHh0VVQF
AAOAJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKil1S2vglstsAAAA1gAAAEkAGAAAAAAA
AQAAAKSBcNoCAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW5vbi1u
b3JtYWxpemVkLXR5cGVzLXN0ZGVyci50eHRVVAUAA4AlFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAqKXVLoAByf2MAAABrAAAAZgAYAAAAAAABAAAApIFf2wIAZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGEtdHJhbnNmZXItZ2V0LWRhdGEtb24tY29weWluZy1wYXN0aW5nLW1hbGZvcm1lZC11cmwt
aW4tc2FtZS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAOAJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAKyl1S9dUIQ1jAAAAawAAAEsAGAAAAAAAAQAAAKSBYtwCAGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLXBhc3RlLWFzLXBsYWluLXRleHQtc3RkZXJyLnR4
dFVUBQADgSUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACspdUspoKyVYwAAAGsAAABwABgA
AAAAAAEAAACkgUrdAgBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1v
bi1wYXN0ZS1hcy1wbGFpbi10ZXh0LXdoZW4tY3VzdG9tLXBhc3RlYm9hcmQtZGF0YS1kaXNhYmxl
ZC1zdGRlcnIudHh0VVQFAAOBJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKyl1S6vOAuNj
AAAAawAAAEQAGAAAAAAAAQAAAKSBV94CAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWdldC1kYXRhLW9uLXBhc3RlLWN1c3RvbS1zdGRlcnIudHh0VVQFAAOBJRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAKyl1SybbpXdjAAAAawAAAEgAGAAAAAAAAQAAAKSBON8CAGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWdldC1kYXRhLW9uLXBhc3RlLXBsYWluLXRleHQtc3Rk
ZXJyLnR4dFVUBQADgSUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACspdUvrqBCJYwAAAGsA
AABHABgAAAAAAAEAAACkgR3gAgBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQt
ZGF0YS1vbi1wYXN0ZS1yaWNoLXRleHQtc3RkZXJyLnR4dFVUBQADgiUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACspdUufC8/MYwAAAGsAAABSABgAAAAAAAEAAACkgQHhAgBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1nZXQtZGF0YS1vbi1wYXN0aW5nLWh0bWwtdXNlcy1ibG9i
LXVybC1zdGRlcnIudHh0VVQFAAOCJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKyl1S9R1
jqtjAAAAawAAAE0AGAAAAAAAAQAAAKSB8OECAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1zdGRlcnIudHh0VVQFAAOCJRRa
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALCl1S82skYJjAAAAawAAAEYAGAAAAAAAAQAAAKSB
2uICAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1v
bi1jb3B5LXN0ZGVyci50eHRVVAUAA4MlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAsKXVL
xLih1GMAAABrAAAAQQAYAAAAAAABAAAApIG94wIAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMtYWRkLWN1c3RvbS1kYXRhLXN0ZGVyci50eHRVVAUAA4MlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAsKXVLVZVjkGMAAABrAAAAXwAYAAAAAAABAAAApIGb5AIAZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItc2V0LWRhdGEtaWdub3JlLWNvcGllZC1tYWxmb3Jt
ZWQtdXJsLWluLW51bGwtb3JpZ2luLXN0ZGVyci50eHRVVAUAA4QlFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAsKXVLimGrAmMAAABrAAAAXQAYAAAAAAABAAAApIGX5QIAZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItc2V0LWRhdGEtc2FuaXRpemUtdXJsLXdoZW4tY29weWluZy1p
bi1udWxsLW9yaWdpbi1zdGRlcnIudHh0VVQFAAOEJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgALCl1S6GahVtjAAAAawAAAF8AGAAAAAAAAQAAAKSBkeYCAGVkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLXNldC1kYXRhLXNhbml0aXplcy1odG1sLXdoZW4tY29weWluZy1pbi1udWxs
LW9yaWdpbi1zdGRlcnIudHh0VVQFAAOEJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALSl1
S2ls71NjAAAAawAAAFAAGAAAAAAAAQAAAKSBjecCAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLXNldC1kYXRhLXNhbml0aXplcy1odG1sLXdoZW4tY29weWluZy1zdGRlcnIudHh0VVQF
AAOFJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALSl1S2E3+I9jAAAAawAAAEsAGAAAAAAA
AQAAAKSBeugCAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItdHlwZXMtaXMtaW5pdGlh
bGx5LWVtcHR5LW9uLWNvcHktc3RkZXJyLnR4dFVUBQADhSUUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAC0pdUt4w1cHYwAAAGsAAABCABgAAAAAAAEAAACkgWLpAgBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YVRyYW5zZmVyLXR5cGVzLXBhc3RpbmctcGxhaW50ZXh0LXN0ZGVyci50eHRVVAUAA4Ul
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAtKXVLU1a9g2MAAABrAAAAPAAYAAAAAAABAAAA
pIFB6gIAZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1nZXRkYXRhLXBsYWludGV4dC1z
dGRlcnIudHh0VVQFAAOFJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALSl1S7FW+v1jAAAA
awAAADoAGAAAAAAAAQAAAKSBGusCAGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtY29weS1odG1sLXN0ZGVyci50eHRVVAUAA4YlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAtKXVLolq0OmMAAABrAAAAPwAYAAAAAAABAAAApIHx6wIAZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGF0cmFuc2Zlci1pdGVtcy1jb3B5LXBsYWludGV4dC1zdGRlcnIudHh0VVQFAAOGJRRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgALSl1S6MZpARjAAAAawAAADkAGAAAAAAAAQAAAKSBzewCAGVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtY29weS11cmwtc3RkZXJyLnR4dFVU
BQADhiUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC0pdUvHBdNsYgAAAGsAAABAABgAAAAA
AAEAAACkgaPtAgBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLXBhc3RlLXBs
YWludGV4dC1zdGRlcnIudHh0VVQFAAOGJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALil1
SwOl0OdjAAAAawAAADwAGAAAAAAAAQAAAKSBf+4CAGVkaXRpbmcvcGFzdGVib2FyZC9kby1ub3Qt
Y29weS11bm5lY2Vzc2FyeS1zdHlsZXMtc3RkZXJyLnR4dFVUBQADhyUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAC8pdUt/60iZYwAAAGsAAAA3ABgAAAAAAAEAAACkgVjvAgBlZGl0aW5nL3Bh
c3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1wYXN0ZS1zdGRlcnIudHh0VVQFAAOJJRRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALyl1S+x0uMFjAAAAawAAACsAGAAAAAAAAQAAAKSBLPAC
AGVkaXRpbmcvcGFzdGVib2FyZC9oZWFkaW5nLWNyYXNoLXN0ZGVyci50eHRVVAUAA4olFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAvKXVLvRrdOmMAAABrAAAALQAYAAAAAAABAAAApIH08AIA
ZWRpdGluZy9wYXN0ZWJvYXJkL2ltYWdlLWluLWlmcmFtZS1zdGRlcnIudHh0VVQFAAOKJRRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALyl1S/gDvrtjAAAAawAAAEQAGAAAAAAAAQAAAKSBvvEC
AGVkaXRpbmcvcGFzdGVib2FyZC9pbWctc3Jjc2V0LWNvcHktcGFzdGUtY2Fub25pY2FsaXphdGlv
bi1zdGRlcnIudHh0VVQFAAOKJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMCl1Sy0XNb5j
AAAAawAAACsAGAAAAAAAAQAAAKSBn/ICAGVkaXRpbmcvcGFzdGVib2FyZC9pbnB1dC1maWVsZC0x
LXN0ZGVyci50eHRVVAUAA4slFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAwKXVLeZ2CW2MA
AABrAAAAWgAYAAAAAAABAAAApIFn8wIAZWRpdGluZy9wYXN0ZWJvYXJkL2xpbmUtZmVlZC1iZXR3
ZWVuLWJyLWFuZC1iLXNob3VsZC1ub3QtcmVvcmRlci1wYXN0ZWQtY29udGVudC1zdGRlcnIudHh0
VVQFAAOLJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMSl1SyLpZqljAAAAawAAAC8AGAAA
AAAAAQAAAKSBXvQCAGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1zdGRlcnIu
dHh0VVQFAAOOJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMSl1S+LWpotjAAAAawAAADUA
GAAAAAAAAQAAAKSBKvUCAGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC10eXBl
cy1zdGRlcnIudHh0VVQFAAONJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMSl1S1YWBANj
AAAAawAAACUAGAAAAAAAAQAAAKSB/PUCAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS0yLXN0ZGVy
ci50eHRVVAUAA44lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAxKXVL9g+IM2MAAABrAAAA
LwAYAAAAAAABAAAApIG+9gIAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzgyNjctZml4LXN0
ZGVyci50eHRVVAUAA44lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAxKXVLDLks62MAAABr
AAAALwAYAAAAAAABAAAApIGK9wIAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4
LXN0ZGVyci50eHRVVAUAA44lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAzKXVLMtsFHq0A
AACZBAAAMAAYAAAAAAABAAAApIFW+AIAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFuZC1zYW5p
dGl6ZS1zdGRlcnIudHh0VVQFAAOSJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANCl1SzGc
KEljAAAAawAAAEIAGAAAAAAAAQAAAKSBbfkCAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9j
a3F1b3RlLWFuZC1wYXJhZ3JhcGgtYnJlYWstc3RkZXJyLnR4dFVUBQADkyUUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADQpdUtKROo5YwAAAGsAAABAABgAAAAAAAEAAACkgUz6AgBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS1zdGRlcnIudHh0
VVQFAAOTJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANCl1S11jr9JjAAAAawAAAC8AGAAA
AAAAAQAAAKSBKfsCAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1zdGRlcnIu
dHh0VVQFAAOUJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANSl1S6SBxSxjAAAAawAAAE4A
GAAAAAAAAQAAAKSB9fsCAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kb3VibGUtbmVzdGVkLWJs
b2NrcXVvdGUtYmVmb3JlLWJsb2NrcXVvdGUtc3RkZXJyLnR4dFVUBQADlSUUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADUpdUtvYHRDYwAAAGsAAAAzABgAAAAAAAEAAACkgeD8AgBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtZXZlbnQtb25seS1vbmNlLXN0ZGVyci50eHRVVAUAA5UlFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA1KXVLXJUn02MAAABrAAAANQAYAAAAAAABAAAApIGw/QIA
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2ItdXJsLXN0ZGVyci50eHRVVAUA
A5UlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA1KXVLpQNwvWMAAABrAAAAQgAYAAAAAAAB
AAAApIGC/gIAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1m
aWxlLXVybC1zdGRlcnIudHh0VVQFAAOVJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANSl1
S8uFDe1jAAAAawAAADoAGAAAAAAAAQAAAKSBYf8CAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1p
bWFnZS11c2luZy1pbWFnZS1kYXRhLXN0ZGVyci50eHRVVAUAA5YlFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA1KXVL3CvJgGMAAABrAAAAMwAYAAAAAAABAAAApIE4AAMAZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWludG8tdGFibGUtY2VsbC1zdGRlcnIudHh0VVQFAAOWJRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgANil1S82IXn5jAAAAawAAADQAGAAAAAAAAQAAAKSBCAEDAGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDAxLXN0ZGVyci50eHRVVAUAA5clFFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA2KXVLLLM2yGMAAABrAAAANAAYAAAAAAABAAAApIHZ
AQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDItc3RkZXJyLnR4dFVU
BQADlyUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADYpdUvbCmvDYwAAAGsAAAA0ABgAAAAA
AAEAAACkgaoCAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAwMy1zdGRl
cnIudHh0VVQFAAOXJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANil1S/gzq1FjAAAAawAA
ADQAGAAAAAAAAQAAAKSBewMDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3Mt
MDA0LXN0ZGVyci50eHRVVAUAA5clFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA2KXVLL2av
6GMAAABrAAAANAAYAAAAAAABAAAApIFMBAMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUt
ZW5kaW5ncy0wMDUtc3RkZXJyLnR4dFVUBQADmCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ADYpdUtXOrd0YwAAAGsAAAA0ABgAAAAAAAEAAACkgR0FAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtbGluZS1lbmRpbmdzLTAwNi1zdGRlcnIudHh0VVQFAAOYJRRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgANyl1SyKlFaljAAAAawAAADQAGAAAAAAAAQAAAKSB7gUDAGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA3LXN0ZGVyci50eHRVVAUAA5klFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA3KXVLgfWoTWMAAABrAAAANAAYAAAAAAABAAAApIG/BgMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDgtc3RkZXJyLnR4dFVUBQADmSUUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADcpdUv7lXy0YwAAAGsAAAA0ABgAAAAAAAEAAACkgZAH
AwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAwOS1zdGRlcnIudHh0VVQF
AAOZJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANyl1S+94fVhjAAAAawAAADQAGAAAAAAA
AQAAAKSBYQgDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDEwLXN0ZGVy
ci50eHRVVAUAA5olFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA3KXVLzlCgM2MAAABrAAAA
LAAYAAAAAAABAAAApIEyCQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpc3QtMDAxLXN0ZGVy
ci50eHRVVAUAA5olFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4KXVLdQLh4HUAAADWAAAA
LAAYAAAAAAABAAAApIH7CQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpc3QtMDAyLXN0ZGVy
ci50eHRVVAUAA5slFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4KXVLAiPkCGMAAABrAAAA
LAAYAAAAAAABAAAApIHWCgMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWxpc3QtMDAzLXN0ZGVy
ci50eHRVVAUAA5slFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4KXVLQd2XcmMAAABrAAAA
MwAYAAAAAAABAAAApIGfCwMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW1hdGNoLXN0eWxlLTAw
MS1zdGRlcnIudHh0VVQFAAOcJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOCl1S2UqKHVj
AAAAawAAADMAGAAAAAAAAQAAAKSBbwwDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1tYXRjaC1z
dHlsZS0wMDItc3RkZXJyLnR4dFVUBQADnCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADgp
dUtUgI1+YwAAAGsAAAA0ABgAAAAAAAEAAACkgT8NAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
cGxhaW50ZXh0LW5vd3JhcC1zdGRlcnIudHh0VVQFAAOcJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAOSl1S/tGWNVjAAAAawAAACsAGAAAAAAAAQAAAKSBEA4DAGVkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1wcmUtMDAxLXN0ZGVyci50eHRVVAUAA50lFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA5KXVLrddraGMAAABrAAAAKwAYAAAAAAABAAAApIHYDgMAZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXByZS0wMDItc3RkZXJyLnR4dFVUBQADnSUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADkpdUvnWRQFYwAAAGsAAAAzABgAAAAAAAEAAACkgaAPAwBlZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtcmVtb3ZpbmctaWZyYW1lLXN0ZGVyci50eHRVVAUAA54lFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA5KXVLGXnsJ2MAAABrAAAALQAYAAAAAAABAAAApIFwEAMAZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMS1zdGRlcnIudHh0VVQFAAOeJRRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAOSl1S79GoKljAAAAawAAAC0AGAAAAAAAAQAAAKSBOhEDAGVkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS10YWJsZS0wMDItc3RkZXJyLnR4dFVUBQADniUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADopdUvZDnFsYwAAAGsAAAAtABgAAAAAAAEAAACkgQQSAwBlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGFibGUtMDAzLXN0ZGVyci50eHRVVAUAA58lFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAA6KXVLzkr2aWMAAABrAAAALwAYAAAAAAABAAAApIHOEgMAZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLWNlbGxzLXN0ZGVyci50eHRVVAUAA58lFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA6KXVLJLmgO2MAAABrAAAALAAYAAAAAAABAAAApIGaEwMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAxLXN0ZGVyci50eHRVVAUAA6AlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA6KXVLB5drDmMAAABrAAAALAAYAAAAAAABAAAApIFjFAMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAyLXN0ZGVyci50eHRVVAUAA6AlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA7KXVLVkiWh2MAAABrAAAALAAYAAAAAAABAAAApIEsFQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAzLXN0ZGVyci50eHRVVAUAA6ElFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA7KXVLkdQlNWMAAABrAAAALAAYAAAAAAABAAAApIH1FQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA0LXN0ZGVyci50eHRVVAUAA6ElFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA7KXVLfpQgI2MAAABrAAAALAAYAAAAAAABAAAApIG+FgMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA1LXN0ZGVyci50eHRVVAUAA6ElFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA7KXVLLlWtO2MAAABrAAAALAAYAAAAAAABAAAApIGHFwMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA2LXN0ZGVyci50eHRVVAUAA6IlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA8KXVLRYHpUmMAAABrAAAALAAYAAAAAAABAAAApIFQGAMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA3LXN0ZGVyci50eHRVVAUAA6MlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA8KXVLuerqvmMAAABrAAAALAAYAAAAAAABAAAApIEZGQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA4LXN0ZGVyci50eHRVVAUAA6MlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA8KXVLG3Cza2MAAABrAAAALAAYAAAAAAABAAAApIHiGQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA5LXN0ZGVyci50eHRVVAUAA6QlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA8KXVLWoRsYmMAAABrAAAALAAYAAAAAAABAAAApIGrGgMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEwLXN0ZGVyci50eHRVVAUAA6QlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVLOGm8K2MAAABrAAAALAAYAAAAAAABAAAApIF0GwMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLXN0ZGVyci50eHRVVAUAA6UlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVLtS7KcWMAAABrAAAALAAYAAAAAAABAAAApIE9HAMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLXN0ZGVyci50eHRVVAUAA6UlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVL9lV6sGMAAABrAAAALAAYAAAAAAABAAAApIEGHQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEzLXN0ZGVyci50eHRVVAUAA6UlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVLTsGfxGMAAABrAAAALAAYAAAAAAABAAAApIHPHQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE0LXN0ZGVyci50eHRVVAUAA6YlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVL9i8Q5mMAAABrAAAALAAYAAAAAAABAAAApIGYHgMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE1LXN0ZGVyci50eHRVVAUAA6YlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA9KXVLgDg+XmMAAABrAAAALAAYAAAAAAABAAAApIFhHwMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE2LXN0ZGVyci50eHRVVAUAA6YlFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABAKXVLe6NCrGMAAABrAAAALAAYAAAAAAABAAAApIEqIAMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE3LXN0ZGVyci50eHRVVAUAA6clFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABAKXVL91td42MAAABrAAAALAAYAAAAAAABAAAApIHzIAMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE4LXN0ZGVyci50eHRVVAUAA6clFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABAKXVL+cqLWGMAAABrAAAALAAYAAAAAAABAAAApIG8IQMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDE5LXN0ZGVyci50eHRVVAUAA6clFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABAKXVLWh/5zmMAAABrAAAANwAYAAAAAAABAAAApIGFIgMAZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDEtc3RkZXJyLnR4dFVUBQADqCUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEApdUv5UGprYwAAAGsAAAA3ABgAAAAAAAEAAACk
gVkjAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMi1zdGRlcnIu
dHh0VVQFAAOoJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQCl1S4X2XJZjAAAAawAAADcA
GAAAAAAAAQAAAKSBLSQDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LWF0LXRhYnNwYW4t
MDAzLXN0ZGVyci50eHRVVAUAA6glFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABBKXVLqADZ
L2MAAABrAAAANQAYAAAAAAABAAAApIEBJQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQt
d2l0aC1zdHlsZS0yLXN0ZGVyci50eHRVVAUAA6klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABBKXVLel2aoWMAAABrAAAANQAYAAAAAAABAAAApIHTJQMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXRleHQtd2l0aC1zdHlsZS0zLXN0ZGVyci50eHRVVAUAA6olFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABBKXVL1zmEtGMAAABrAAAANQAYAAAAAAABAAAApIGlJgMAZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS00LXN0ZGVyci50eHRVVAUAA6olFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABCKXVLbRXSY2MAAABrAAAANQAYAAAAAAABAAAApIF3JwMAZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS01LXN0ZGVyci50eHRVVAUAA6sl
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABCKXVL8Ka2lWMAAABrAAAAMwAYAAAAAAABAAAA
pIFJKAMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS1zdGRlcnIudHh0
VVQFAAOsJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQil1SyNSPwNjAAAAawAAADUAGAAA
AAAAAQAAAKSBGSkDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS11bnJlbmRlcmVkLXNlbGVjdC1z
dGRlcnIudHh0VVQFAAOsJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQyl1S/7T19uVAAAA
ggIAADMAGAAAAAAAAQAAAKSB6ykDAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS13aXRob3V0LW5l
c3Rpbmctc3RkZXJyLnR4dFVUBQADriUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEMpdUuZ
dAgGYwAAAGsAAAAnABgAAAAAAAEAAACkge0qAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUteG1s
LXN0ZGVyci50eHRVVAUAA64lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABDKXVLT3dYZGMA
AABrAAAAQwAYAAAAAAABAAAApIGxKwMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RpbmctZW1wdHkt
aHRtbC1mYWxscy1iYWNrLXRvLXRleHQtc3RkZXJyLnR4dFVUBQADriUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAEQpdUvNkcuKYwAAAGsAAAA+ABgAAAAAAAEAAACkgZEsAwBlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGluZy1pbnRvLXAtc2hvdWxkLW5vdC1uZXN0LXAtc3RkZXJyLnR4dFVUBQAD
ryUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEQpdUtMqgNwYwAAAGsAAAAqABgAAAAAAAEA
AACkgWwtAwBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGluZy10YWJzLXN0ZGVyci50eHRVVAUAA68l
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEKXVL8M4w+WMAAABrAAAAMgAYAAAAAAABAAAA
pIEzLgMAZWRpdGluZy9wYXN0ZWJvYXJkL3ByZXNlcnZlLWNhcmV0LWNvbG9yLXN0ZGVyci50eHRV
VAUAA68lFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEKXVL1EjAdGMAAABrAAAASgAYAAAA
AAABAAAApIECLwMAZWRpdGluZy9wYXN0ZWJvYXJkL3ByZXNlcnZlLWxpbmUtYnJlYWstYXQtZW5k
LW9mLXBhc3RlZC1jb250ZW50LXN0ZGVyci50eHRVVAUAA68lFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABEKXVLflzorWMAAABrAAAANgAYAAAAAAABAAAApIHpLwMAZWRpdGluZy9wYXN0ZWJv
YXJkL3ByZXNlcnZlLXVuZGVybGluZS1jb2xvci1zdGRlcnIudHh0VVQFAAOwJRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgARCl1S6BqfxljAAAAawAAAC4AGAAAAAAAAQAAAKSBvDADAGVkaXRp
bmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLXN0ZGVyci50eHRVVAUAA7AlFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABEKXVLaDmANmMAAABrAAAASQAYAAAAAAABAAAApIGHMQMAZWRp
dGluZy9wYXN0ZWJvYXJkL3NpbXBsZml5aW5nLW1hcmt1cC1zaG91bGQtbm90LXN0cmlwLWNvbnRl
bnQtc3RkZXJyLnR4dFVUBQADsCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEUpdUsb39Wm
YwAAAGsAAABBABgAAAAAAAEAAACkgW0yAwBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUt
MDAzLXRyYWlsaW5nLXdoaXRlc3BhY2Utc3RkZXJyLnR4dFVUBQADsSUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAEUpdUv1wOI8YwAAAGsAAAAtABgAAAAAAAEAAACkgUszAwBlZGl0aW5nL3Bh
c3RlYm9hcmQvc21hcnQtcGFzdGUtMDA2LXN0ZGVyci50eHRVVAUAA7ElFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABFKXVLzHofp2IAAABrAAAALgAYAAAAAAABAAAApIEVNAMAZWRpdGluZy9w
YXN0ZWJvYXJkL3N0eWxlLWZyb20tcnVsZXMtc3RkZXJyLnR4dFVUBQADsiUUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEYpdUvVgpNMYgAAAGsAAAAzABgAAAAAAAEAAACkgd80AwBlZGl0aW5n
L3Bhc3RlYm9hcmQvc3R5bGVkLWVsZW1lbnQtbWFya3VwLXN0ZGVyci50eHRVVAUAA7MlFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABGKXVLDLNS+2MAAABrAAAAKwAYAAAAAAABAAAApIGuNQMA
ZWRpdGluZy9wYXN0ZWJvYXJkL3Rlc3RjYXNlLTk1MDctc3RkZXJyLnR4dFVUBQADsyUUWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYpdUt7zGrXYwAAAGsAAAA3ABgAAAAAAAEAAACkgXY2AwBl
ZGl0aW5nL3Bhc3RlYm9hcmQvdW5kb2FibGUtZnJhZ21lbnQtcmVtb3Zlcy1zdGRlcnIudHh0VVQF
AAO0JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAALil1SwAAAAAAAAAAAAAAABIAGAAAAAAA
AAAQAO1BSjcDAGVkaXRpbmcvc2VsZWN0aW9uL1VUBQADiCUUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAC4pdUtUfNLCYwAAAGsAAAAtABgAAAAAAAEAAACkgZY3AwBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtY3Jhc2gtMDAyLXN0ZGVyci50eHRVVAUAA4glFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABSKnVLVU36oF0OAACiNgEADQAYAAAAAAABAAAApIFgOAMAZXJyb3JfbG9nLnR4dFVU
BQADqycUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFApdUsAAAAAAAAAAAAAAAAFABgAAAAA
AAAAEADtQQRHAwBmYXN0L1VUBQADyCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGIpdUsA
AAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQUNHAwBmYXN0L2Nzcy9VVAUAA+glFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAuKXVL2wjTQjsAAAA/AAAAKQAYAAAAAAABAAAApIGGRwMAZmFzdC9j
c3MvY29tcGFyZS1jb250ZW50LXN0eWxlLXN0ZGVyci50eHRVVAUAA4glFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABiKXVL35fZYhcTAABeHAEAJAAYAAAAAAABAAAApIEkSAMAZmFzdC9jc3Mv
d29yZC1zcGFjZS1leHRyYS1hY3R1YWwudHh0VVQFAAPoJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAYil1S2M7lYZ5AgAAmAoAACIAGAAAAAAAAQAAAKSBmVsDAGZhc3QvY3NzL3dvcmQtc3Bh
Y2UtZXh0cmEtZGlmZi50eHRVVAUAA+glFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABiKXVL
A88woBwTAABeHAEAJgAYAAAAAAABAAAApIFuXgMAZmFzdC9jc3Mvd29yZC1zcGFjZS1leHRyYS1l
eHBlY3RlZC50eHRVVAUAA+glFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABiKXVLOc4P0JYK
AABVQAAAKgAYAAAAAAABAAAApIHqcQMAZmFzdC9jc3Mvd29yZC1zcGFjZS1leHRyYS1wcmV0dHkt
ZGlmZi5odG1sVVQFAAPoJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAANil1SwAAAAAAAAAA
AAAAAAwAGAAAAAAAAAAQAO1B5HwDAGZhc3QvZXZlbnRzL1VUBQADmCUUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADYpdUvbMHT+wQAAAKoBAAA7ABgAAAAAAAEAAACkgSp9AwBmYXN0L2V2ZW50
cy9iZWZvcmV1bmxvYWQtYWxlcnQtdXNlci1pbnRlcmFjdGlvbjItc3RkZXJyLnR4dFVUBQADmCUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEIpdUsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADt
QWB+AwBmYXN0L2Zvcm1zL1VUBQADrCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEIpdUvv
Ae7pnwAAAMwAAAAzABgAAAAAAAEAAACkgaV+AwBmYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlk
YXRpb24tY2FuY2VsLXN0ZGVyci50eHRVVAUAA6wlFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAA7KXVLAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGxfwMAZmFzdC9mcmFtZXMvVVQFAAOiJRRa
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOyl1S9sI00I7AAAAPwAAAC8AGAAAAAAAAQAAAKSB
938DAGZhc3QvZnJhbWVzL2ZyYW1lLWRpc3BsYXktbm9uZS1mb2N1cy1zdGRlcnIudHh0VVQFAAOi
JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAQyl1SwAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQ
AO1Bm4ADAGZhc3QvaW1hZ2VzL1VUBQADriUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEMp
dUshj704MgAAADMAAAAsABgAAAAAAAEAAACkgeGAAwBmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2Ut
Y3JvcC1ib3gtc3RkZXJyLnR4dFVUBQADriUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEUp
dUsAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQXmBAwBmYXN0L2xvYWRlci9VVAUAA7IlFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABCKXVL2wjTQjsAAAA/AAAAUgAYAAAAAAABAAAApIG/gQMA
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUBQADqyUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAEIpdUvbCNNCOwAAAD8AAABTABgAAAAAAAEAAACkgYaCAwBmYXN0L2xvYWRlci9pbWFnZXMt
ZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Utc3Rk
ZXJyLnR4dFVUBQADrCUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEUpdUvbCNNCOwAAAD8A
AAAtABgAAAAAAAEAAACkgU6DAwBmYXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLXN0
ZGVyci50eHRVVAUAA7IlFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABKKXVLAAAAAAAAAAAA
AAAADAAYAAAAAAAAABAA7UHwgwMAZmFzdC9wYXJzZXIvVVQFAAO7JRRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgASil1S/KlGS5jAAAAawAAADIAGAAAAAAAAQAAAKSBNoQDAGZhc3QvcGFyc2Vy
L3N0cmlwLXNjcmlwdC1hdHRycy1vbi1pbnB1dC1zdGRlcnIudHh0VVQFAAO7JRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAUSl1SwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BBYUDAGZhc3Qv
eHNsL1VUBQADySUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFApdUtO+yD4iAAAAOcAAAAl
ABgAAAAAAAEAAACkgUiFAwBmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQF
AAPIJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUCl1S/2iLmSPAAAA7gAAACcAGAAAAAAA
AQAAAKSBL4YDAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQADyCUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFApdUuyu8ZnhwAAADQBAAAkABgAAAAAAAEAAACk
gR+HAwBmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAA8glFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABRKXVLwuv1xowAAABgAQAANAAYAAAAAAABAAAApIEEiAMAZmFz
dC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQADySUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoqdUvRXSaeuwIAAIYPAAARABgAAAAAAAEAAACk
gf6IAwBmdWxsX3Jlc3VsdHMuanNvblVUBQAD1ycUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AGspdUsAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQQSMAwBodHRwL1VUBQAD+SUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAHEpdUsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQUOMAwBodHRw
L3Rlc3RzL1VUBQADBiYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFUpdUsAAAAAAAAAAAAA
AAATABgAAAAAAAAAEADtQYiMAwBodHRwL3Rlc3RzL2Nvb2tpZXMvVVQFAAPRJRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAVSl1S0qV5RAUAgAAsEAAADkAGAAAAAAAAQAAAKSB1YwDAGh0dHAv
dGVzdHMvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtcmVsYXhpbmctc3RkZXJyLnR4dFVUBQAD
0SUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFkpdUsAAAAAAAAAAAAAAAASABgAAAAAAAAA
EADtQVyPAwBodHRwL3Rlc3RzL2ltYWdlcy9VVAUAA9olFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABZKXVLRC0IOX8AAABBAQAALgAYAAAAAAABAAAApIGojwMAaHR0cC90ZXN0cy9pbWFnZXMv
aGlkcGktc3Jjc2V0LWNvcHktc3RkZXJyLnR4dFVUBQAD2iUUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAGEpdUsAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQY+QAwBodHRwL3Rlc3RzL2xvYWRp
bmcvVVQFAAPlJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWCl1S07lMcqbAQAABwQAAD8A
GAAAAAAAAQAAAKSB3JADAGh0dHAvdGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1jc3MtYmxv
Y2tlZC1ieS1jc3AtYWN0dWFsLnR4dFVUBQAD2CUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AFgpdUt9coO9GwIAAFUFAAA9ABgAAAAAAAEAAACkgfCSAwBodHRwL3Rlc3RzL2xvYWRpbmcvZG8t
bm90LXByZWxvYWQtY3NzLWJsb2NrZWQtYnktY3NwLWRpZmYudHh0VVQFAAPYJRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAWCl1S0rfyp8gAQAAuAIAAEEAGAAAAAAAAQAAAKSBgpUDAGh0dHAv
dGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1jc3MtYmxvY2tlZC1ieS1jc3AtZXhwZWN0ZWQu
dHh0VVQFAAPYJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWSl1S8ZbjRw6CQAAoCIAAEUA
GAAAAAAAAQAAAKSBHZcDAGh0dHAvdGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1jc3MtYmxv
Y2tlZC1ieS1jc3AtcHJldHR5LWRpZmYuaHRtbFVUBQAD2SUUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFkpdUuMdb+QkgEAAAkEAABGABgAAAAAAAEAAACkgdagAwBodHRwL3Rlc3RzL2xvYWRp
bmcvZG8tbm90LXByZWxvYWQtc2NyaXB0LXNyYy1ibG9ja2VkLWJ5LWNzcC1hY3R1YWwudHh0VVQF
AAPaJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWSl1S2qn0LYQAgAAZQUAAEQAGAAAAAAA
AQAAAKSB6KIDAGh0dHAvdGVzdHMvbG9hZGluZy9kby1ub3QtcHJlbG9hZC1zY3JpcHQtc3JjLWJs
b2NrZWQtYnktY3NwLWRpZmYudHh0VVQFAAPaJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
WSl1S3ZdrSYgAQAAugIAAEgAGAAAAAAAAQAAAKSBdqUDAGh0dHAvdGVzdHMvbG9hZGluZy9kby1u
b3QtcHJlbG9hZC1zY3JpcHQtc3JjLWJsb2NrZWQtYnktY3NwLWV4cGVjdGVkLnR4dFVUBQAD2iUU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFkpdUsEtEpeLgkAAKkiAABMABgAAAAAAAEAAACk
gRinAwBodHRwL3Rlc3RzL2xvYWRpbmcvZG8tbm90LXByZWxvYWQtc2NyaXB0LXNyYy1ibG9ja2Vk
LWJ5LWNzcC1wcmV0dHktZGlmZi5odG1sVVQFAAPaJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAWyl1S/CCi8afAQAAbwQAADgAGAAAAAAAAQAAAKSBzLADAGh0dHAvdGVzdHMvbG9hZGluZy9w
cmVsb2FkLWNzcy13aXRoLWNzcC1ub25jZS1hY3R1YWwudHh0VVQFAAPeJRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAWyl1S4cl+rMYAgAAsAUAADYAGAAAAAAAAQAAAKSB3bIDAGh0dHAvdGVz
dHMvbG9hZGluZy9wcmVsb2FkLWNzcy13aXRoLWNzcC1ub25jZS1kaWZmLnR4dFVUBQAD3iUUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFspdUsW5lFwnQAAADQBAAA6ABgAAAAAAAEAAACkgWW1
AwBodHRwL3Rlc3RzL2xvYWRpbmcvcHJlbG9hZC1jc3Mtd2l0aC1jc3Atbm9uY2UtZXhwZWN0ZWQu
dHh0VVQFAAPeJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWyl1S2NOxVY8CQAA9iIAAD4A
GAAAAAAAAQAAAKSBdrYDAGh0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLWNzcy13aXRoLWNzcC1u
b25jZS1wcmV0dHktZGlmZi5odG1sVVQFAAPeJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
YSl1S2enF02VAQAAcgQAAD8AGAAAAAAAAQAAAKSBKsADAGh0dHAvdGVzdHMvbG9hZGluZy9wcmVs
b2FkLXNjcmlwdC1zcmMtd2l0aC1jc3Atbm9uY2UtYWN0dWFsLnR4dFVUBQAD5SUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGEpdUuS00gMDAIAAMEFAAA9ABgAAAAAAAEAAACkgTjCAwBodHRw
L3Rlc3RzL2xvYWRpbmcvcHJlbG9hZC1zY3JpcHQtc3JjLXdpdGgtY3NwLW5vbmNlLWRpZmYudHh0
VVQFAAPlJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYSl1SyhSUrmaAAAAMAEAAEEAGAAA
AAAAAQAAAKSBu8QDAGh0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLXNjcmlwdC1zcmMtd2l0aC1j
c3Atbm9uY2UtZXhwZWN0ZWQudHh0VVQFAAPlJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
YSl1S+9WlOwoCQAAACMAAEUAGAAAAAAAAQAAAKSB0MUDAGh0dHAvdGVzdHMvbG9hZGluZy9wcmVs
b2FkLXNjcmlwdC1zcmMtd2l0aC1jc3Atbm9uY2UtcHJldHR5LWRpZmYuaHRtbFVUBQAD5SUUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHEpdUsAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQXfP
AwBodHRwL3Rlc3RzL21pc2MvVVQFAAMGJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcSl1
SxU1NZJ6AAAAvAAAACoAGAAAAAAAAQAAAKSBwc8DAGh0dHAvdGVzdHMvbWlzYy94c2x0LWJhZC1p
bXBvcnQtc3RkZXJyLnR4dFVUBQADBiYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFspdUsA
AAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQZ/QAwBodHRwL3Rlc3RzL25hdmlnYXRpb24vVVQFAAPe
JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWyl1S9sI00I7AAAAPwAAADcAGAAAAAAAAQAA
AKSB79ADAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mYWxsYmFjay1hbmNob3ItcmVsb2FkLXN0ZGVy
ci50eHRVVAUAA94lFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABbKXVLAAAAAAAAAAAAAAAA
FQAYAAAAAAAAABAA7UGb0QMAaHR0cC90ZXN0cy9xdWlja2xvb2svVVQFAAPeJRRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAWyl1SwF+MAEoBAAAlmAAAEEAGAAAAAAAAQAAAKSB6tEDAGh0dHAv
dGVzdHMvcXVpY2tsb29rL3NlY3VyZS1kb2N1bWVudC13aXRoLXN1YnJlc291cmNlcy1zdGRlcnIu
dHh0VVQFAAPeJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAbCl1SwAAAAAAAAAAAAAAABQA
GAAAAAAAAAAQAO1BjdYDAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQFAAP8JRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAYCl1SwAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1B29YDAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY2xpcGJvYXJkL1VUBQAD4yUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AF0pdUu4DG1zYwAAAGsAAABaABgAAAAAAAEAAACkgTPXAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2Ns
aXBib2FyZC9jb3B5LXBhc3RlLWh0bWwtY3Jvc3Mtb3JpZ2luLWlmcmFtZS1hY3Jvc3Mtb3JpZ2lu
LXN0ZGVyci50eHRVVAUAA+IlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgKXVLoUwF8WMA
AABrAAAAWwAYAAAAAAABAAAApIEq2AMAaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY29w
eS1wYXN0ZS1odG1sLWNyb3NzLW9yaWdpbi1pZnJhbWUtaW4tc2FtZS1vcmlnaW4tc3RkZXJyLnR4
dFVUBQAD4yUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGApdUvtiSxXYwAAAGsAAABTABgA
AAAAAAEAAACkgSLZAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jb3B5LXBhc3RlLXVy
bC1hY3Jvc3Mtb3JpZ2luLXNhbml0aXplcy11cmwtc3RkZXJyLnR4dFVUBQAD4yUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAGspdUsAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQRLaAwBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAUAA/klFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADMKXVLAAAAAAAAAAAAAAAALgAYAAAAAAAAABAA7UF22gMAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL1VUBQADsCYUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGIpdUtH1mxArQEAANALAABLABgAAAAAAAEAAACkgd7aAwBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvaW1wb3J0LXNjcmlwdG5v
bmNlLWFjdHVhbC50eHRVVAUAA+glFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABiKXVLGUwX
tEoCAACKDQAASQAYAAAAAAABAAAApIEQ3QMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL2ltcG9ydC1zY3JpcHRub25jZS1kaWZmLnR4dFVUBQAD6CUUWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGIpdUvjkRiQ2gAAAHQEAABNABgAAAAAAAEAAACkgd3fAwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvaW1wb3J0LXNjcmlw
dG5vbmNlLWV4cGVjdGVkLnR4dFVUBQAD6CUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGMp
dUs22N+EvgkAAG03AABRABgAAAAAAAEAAACkgT7hAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS8xLjEvaW1wb3J0LXNjcmlwdG5vbmNlLXByZXR0eS1kaWZmLmh0bWxV
VAUAA+klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjKXVLZF4Vo9cBAADqBgAAUwAYAAAA
AAABAAAApIGH6wMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L21vZHVsZS1zY3JpcHRub25jZS1hbGxvd2VkLWFjdHVhbC50eHRVVAUAA+klFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABjKXVLjq8Wx3wCAAAnCQAAUQAYAAAAAAABAAAApIHr7QMAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25j
ZS1hbGxvd2VkLWRpZmYudHh0VVQFAAPpJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYyl1
S52gPLiOAAAAwAAAAFUAGAAAAAAAAQAAAKSB8vADAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYWxsb3dlZC1leHBlY3RlZC50
eHRVVAUAA+klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjKXVLhfxD86gJAAD6KwAAWQAY
AAAAAAABAAAApIEP8gMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
MS4xL21vZHVsZS1zY3JpcHRub25jZS1hbGxvd2VkLXByZXR0eS1kaWZmLmh0bWxVVAUAA+klFFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjKXVL3fGChOcBAADgBQAAWgAYAAAAAAABAAAApIFK
/AMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1z
Y3JpcHRub25jZS1hbmQtc2NyaXB0aGFzaC1hY3R1YWwudHh0VVQFAAPpJRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAYyl1S5KjjiyNAgAAHwgAAFgAGAAAAAAAAQAAAKSBxf4DAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2Ut
YW5kLXNjcmlwdGhhc2gtZGlmZi50eHRVVAUAA+klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABjKXVLa/jBugQBAAArAgAAXAAYAAAAAAABAAAApIHkAQQAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1hbmQtc2NyaXB0aGFz
aC1leHBlY3RlZC50eHRVVAUAA+klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjKXVLhIHn
6s0JAADiKwAAYAAYAAAAAAABAAAApIF+AwQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1hbmQtc2NyaXB0aGFzaC1wcmV0dHkt
ZGlmZi5odG1sVVQFAAPpJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYyl1S87RkfDbAQAA
gAYAAFkAGAAAAAAAAQAAAKSB5Q0EAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmFzaWMtYmxvY2tlZC1hY3R1YWwudHh0VVQF
AAPpJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYyl1S0OuEIGFAgAAvggAAFcAGAAAAAAA
AQAAAKSBUxAEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9t
b2R1bGUtc2NyaXB0bm9uY2UtYmFzaWMtYmxvY2tlZC1kaWZmLnR4dFVUBQAD6SUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGMpdUvdUAu8AwEAAMwCAABbABgAAAAAAAEAAACkgWkTBABodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5v
bmNlLWJhc2ljLWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQFAAPpJRRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAYyl1SzmjLxXHCQAAvysAAF8AGAAAAAAAAQAAAKSBARUEAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmFzaWMt
YmxvY2tlZC1wcmV0dHktZGlmZi5odG1sVVQFAAPpJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAYyl1SzRVqVBeAQAAnQUAAFMAGAAAAAAAAQAAAKSBYR8EAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmxvY2tlZC1hY3R1
YWwudHh0VVQFAAPqJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYyl1S7N6pM6lAQAAvgUA
AFEAGAAAAAAAAQAAAKSBTCEEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmxvY2tlZC1kaWZmLnR4dFVUBQAD6iUUWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGMpdUuSk/8xBAEAADMDAABVABgAAAAAAAEAAACkgXwjBABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlw
dG5vbmNlLWJsb2NrZWQtZXhwZWN0ZWQudHh0VVQFAAPqJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAYyl1SwXiRtGICAAABiAAAFkAGAAAAAAAAQAAAKSBDyUEAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtYmxvY2tlZC1w
cmV0dHktZGlmZi5odG1sVVQFAAPqJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZCl1S3l2
/QLmAAAA0QEAAF8AGAAAAAAAAQAAAKSBKi4EAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVuc2FmZWlubGluZS1h
Y3R1YWwudHh0VVQFAAPrJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZCl1S3nmAB6pAQAA
AAQAAF0AGAAAAAAAAQAAAKSBqS8EAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVuc2FmZWlubGluZS1kaWZmLnR4
dFVUBQAD6yUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGQpdUtKHu8u1gAAADoBAABhABgA
AAAAAAEAAACkgekxBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvbW9kdWxlLXNjcmlwdG5vbmNlLWlnbm9yZS11bnNhZmVpbmxpbmUtZXhwZWN0ZWQudHh0VVQF
AAPrJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZCl1SynTz9WaCAAA8hwAAGUAGAAAAAAA
AQAAAKSBWjMEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9t
b2R1bGUtc2NyaXB0bm9uY2UtaWdub3JlLXVuc2FmZWlubGluZS1wcmV0dHktZGlmZi5odG1sVVQF
AAPrJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhSl1SxnUwKK3AQAAEgUAAHUAGAAAAAAA
AQAAAKSBkzwEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9t
b2R1bGUtc2NyaXB0bm9uY2UtaW4tZW5mb3JjZWQtcG9saWN5LWFuZC1ub3QtaW4tcmVwb3J0LW9u
bHktYWN0dWFsLnR4dFVUBQADKSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIUpdUvsweEG
fwIAAFsHAABzABgAAAAAAAEAAACkgfk+BABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLWVuZm9yY2VkLXBvbGljeS1hbmQt
bm90LWluLXJlcG9ydC1vbmx5LWRpZmYudHh0VVQFAAMpJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAhSl1S28/qNxPAQAAFQMAAHcAGAAAAAAAAQAAAKSBJUIEAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtaW4tZW5mb3Jj
ZWQtcG9saWN5LWFuZC1ub3QtaW4tcmVwb3J0LW9ubHktZXhwZWN0ZWQudHh0VVQFAAMpJhRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhSl1S2cZDdfICQAAzCgAAHsAGAAAAAAAAQAAAKSBJUQE
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2Ny
aXB0bm9uY2UtaW4tZW5mb3JjZWQtcG9saWN5LWFuZC1ub3QtaW4tcmVwb3J0LW9ubHktcHJldHR5
LWRpZmYuaHRtbFVUBQADKSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIUpdUtyiBmnWwAA
AF4AAAB1ABgAAAAAAAEAAACkgaJOBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLWVuZm9yY2VkLXBvbGljeS1hbmQtbm90
LWluLXJlcG9ydC1vbmx5LXN0ZGVyci50eHRVVAUAAykmFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACmKXVL9mfKVqABAADhAgAAlwAYAAAAAAABAAAApIGsTwQAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1pbi1vbmUtZW5m
b3JjZWQtcG9saWN5LW5laXRoZXItaW4tYW5vdGhlci1lbmZvcmNlZC1wb2xpY3ktbm9yLXJlcG9y
dC1wb2xpY3ktYWN0dWFsLnR4dFVUBQADaCYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKYp
dUvbsZPLXwIAADAFAACVABgAAAAAAAEAAACkgR1SBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLW9uZS1lbmZvcmNlZC1w
b2xpY3ktbmVpdGhlci1pbi1hbm90aGVyLWVuZm9yY2VkLXBvbGljeS1ub3ItcmVwb3J0LXBvbGlj
eS1kaWZmLnR4dFVUBQADaCYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKYpdUtmQQK46gAA
AGwBAACZABgAAAAAAAEAAACkgUtVBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLW9uZS1lbmZvcmNlZC1wb2xpY3ktbmVp
dGhlci1pbi1hbm90aGVyLWVuZm9yY2VkLXBvbGljeS1ub3ItcmVwb3J0LXBvbGljeS1leHBlY3Rl
ZC50eHRVVAUAA2gmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACmKXVL5PvscoMJAADCIgAA
nQAYAAAAAAABAAAApIEIVwQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1pbi1vbmUtZW5mb3JjZWQtcG9saWN5LW5laXRoZXIt
aW4tYW5vdGhlci1lbmZvcmNlZC1wb2xpY3ktbm9yLXJlcG9ydC1wb2xpY3ktcHJldHR5LWRpZmYu
aHRtbFVUBQADaCYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKYpdUvfu6CWXAAAAF4AAACX
ABgAAAAAAAEAAACkgWJhBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLWluLW9uZS1lbmZvcmNlZC1wb2xpY3ktbmVpdGhlci1p
bi1hbm90aGVyLWVuZm9yY2VkLXBvbGljeS1ub3ItcmVwb3J0LXBvbGljeS1zdGRlcnIudHh0VVQF
AANoJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyCl1S9t0bXtKAQAA9wYAAF0AGAAAAAAA
AQAAAKSBj2IEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9t
b2R1bGUtc2NyaXB0bm9uY2UtbXVsdGlwbGUtcG9saWNpZXMtYWN0dWFsLnR4dFVUBQADpyYUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMgpdUs3Im6+SgIAAF0JAABbABgAAAAAAAEAAACkgXBk
BABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNj
cmlwdG5vbmNlLW11bHRpcGxlLXBvbGljaWVzLWRpZmYudHh0VVQFAAOnJhRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAyCl1S2xTe8AUAQAApAMAAF8AGAAAAAAAAQAAAKSBT2cEAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2Ut
bXVsdGlwbGUtcG9saWNpZXMtZXhwZWN0ZWQudHh0VVQFAAOnJhRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAyCl1S8ldiUh5CQAAzCgAAGMAGAAAAAAAAQAAAKSB/GgEAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtbXVsdGlw
bGUtcG9saWNpZXMtcHJldHR5LWRpZmYuaHRtbFVUBQADqCYUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAMgpdUu4fh1TXAAAAF4AAABdABgAAAAAAAEAAACkgRJzBABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLW11bHRpcGxl
LXBvbGljaWVzLXN0ZGVyci50eHRVVAUAA6cmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADJ
KXVLithHYNUBAADIBAAAVAAYAAAAAAABAAAApIEFdAQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1yZWRpcmVjdC1hY3R1YWwu
dHh0VVQFAAOqJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySl1S/HjANaVAgAAaAcAAFIA
GAAAAAAAAQAAAKSBaHYEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3QtZGlmZi50eHRVVAUAA6omFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADJKXVLw3wiP8YAAAApAQAAVgAYAAAAAAABAAAApIGJeQQAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRu
b25jZS1yZWRpcmVjdC1leHBlY3RlZC50eHRVVAUAA6omFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADJKXVL0aq0YZMJAABIJQAAWgAYAAAAAAABAAAApIHfegQAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL21vZHVsZS1zY3JpcHRub25jZS1yZWRpcmVjdC1w
cmV0dHktZGlmZi5odG1sVVQFAAOqJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySl1SwyQ
uPLNAQAAyAQAAGAAGAAAAAAAAQAAAKSBBoUEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3Qtc2FtZS1vcmlnaW4t
YWN0dWFsLnR4dFVUBQADqSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMkpdUssSYtBVwIA
AMEGAABeABgAAAAAAAEAAACkgW2HBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvbW9kdWxlLXNjcmlwdG5vbmNlLXJlZGlyZWN0LXNhbWUtb3JpZ2luLWRpZmYu
dHh0VVQFAAOpJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySl1S4p1o+ZeAAAAawAAAGIA
GAAAAAAAAQAAAKSBXIoEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
LzEuMS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3Qtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0
VVQFAAOpJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySl1S6oISL9SCQAA/iMAAGYAGAAA
AAAAAQAAAKSBVosEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9tb2R1bGUtc2NyaXB0bm9uY2UtcmVkaXJlY3Qtc2FtZS1vcmlnaW4tcHJldHR5LWRpZmYuaHRt
bFVUBQADqiYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMopdUsSWZVdkAQAAG8VAAB7ABgA
AAAAAAEAAACkgUiVBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1y
ZXBvcnQtcG9saWN5LWFjdHVhbC50eHRVVAUAA6smFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADKKXVLJL46HZwFAAD4GwAAeQAYAAAAAAABAAAApIGNmgQAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYWxsb3dlZC1ieS1lbmZvcmNlZC1w
b2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeS1kaWZmLnR4dFVUBQADqyYUWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAMopdUuXeZHTDAIAAD4FAAB9ABgAAAAAAAEAAACkgdygBABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1h
bGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LWV4
cGVjdGVkLnR4dFVUBQADqyYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMopdUvg/12ZAg4A
ALZlAACBABgAAAAAAAEAAACkgZ+jBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxv
Y2tlZC1ieS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZmLmh0bWxVVAUAA6smFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADJKXVLX8lnNJIEAABzFQAAfAAYAAAAAAABAAAApIFcsgQAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYWxsb3dl
ZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItYWN0dWFs
LnR4dFVUBQADqiYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMkpdUsCyggungUAAAIcAAB6
ABgAAAAAAAEAAACkgaS3BABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1i
eS1yZXBvcnQtcG9saWN5Mi1kaWZmLnR4dFVUBQADqiYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAMkpdUtfYIrlDQIAAEIFAAB+ABgAAAAAAAEAAACkgfa9BABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWVuZm9yY2Vk
LXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1leHBlY3RlZC50eHRVVAUAA6om
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKKXVL08/ZfQUOAAC/ZQAAggAYAAAAAAABAAAA
pIG7wAQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3Njcmlw
dGhhc2gtYWxsb3dlZC1ieS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBv
bGljeTItcHJldHR5LWRpZmYuaHRtbFVUBQADqyYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AMopdUsREPORlwQAAIwVAACCABgAAAAAAAEAAACkgXzPBABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWxlZ2FjeS1lbmZv
cmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeS1hY3R1YWwudHh0VVQFAAOs
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1S90v4tykBQAAPxwAAIAAGAAAAAAAAQAA
AKSBz9QEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3Jp
cHRoYXNoLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1y
ZXBvcnQtcG9saWN5LWRpZmYudHh0VVQFAAOsJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
yil1Szfplh8RAgAAWgUAAIQAGAAAAAAAAQAAAKSBLdsEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9y
Y2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LWV4cGVjdGVkLnR4dFVUBQAD
rCYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMopdUv1gTnlDA4AAPZlAACIABgAAAAAAAEA
AACkgfzdBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2Ny
aXB0aGFzaC1hbGxvd2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnkt
cmVwb3J0LXBvbGljeS1wcmV0dHktZGlmZi5odG1sVVQFAAOsJhRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAyil1Swv+wu6UBAAAkBUAAIMAGAAAAAAAAQAAAKSByuwEAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWFsbG93ZWQtYnktbGVn
YWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1hY3R1YWwu
dHh0VVQFAAOrJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1SxpgDMSgBQAASRwAAIEA
GAAAAAAAAQAAAKSBG/IEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
LzEuMS9zY3JpcHRoYXNoLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxv
Y2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1kaWZmLnR4dFVUBQADqyYUWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAMopdUvrhAD3EgIAAF4FAACFABgAAAAAAAEAAACkgXb4BABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1hbGxvd2VkLWJ5LWxl
Z2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItZXhwZWN0
ZWQudHh0VVQFAAOrJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1S9ww/XAIDgAA/2UA
AIkAGAAAAAAAAQAAAKSBR/sEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9zY3JpcHRoYXNoLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQt
YmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1wcmV0dHktZGlmZi5odG1sVVQFAAOsJhRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1S8rgVaAsBQAAFxgAAHsAGAAAAAAAAQAAAKSBEgoFAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJs
b2NrZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ktYWN0
dWFsLnR4dFVUBQADrCYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMopdUvjsoTINwYAAKYe
AAB5ABgAAAAAAAEAAACkgfMPBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dl
ZC1ieS1yZXBvcnQtcG9saWN5LWRpZmYudHh0VVQFAAOsJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAyil1S8RDwGuoAgAA5gcAAH0AGAAAAAAAAQAAAKSB3RYFAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktZW5mb3Jj
ZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQFAAOs
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyyl1S7P1IpKtDgAAdGsAAIEAGAAAAAAAAQAA
AKSBPBoFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3Jp
cHRoYXNoLWJsb2NrZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1w
b2xpY3ktcHJldHR5LWRpZmYuaHRtbFVUBQADrSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AMopdUs28/1JFgIAAAQGAAB8ABgAAAAAAAEAAACkgaQpBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWVuZm9yY2VkLXBv
bGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5Mi1hY3R1YWwudHh0VVQFAAOsJhRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1SzNQK9myAgAA5wcAAHoAGAAAAAAAAQAAAKSBcCwF
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNo
LWJsb2NrZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ky
LWRpZmYudHh0VVQFAAOsJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1SxC0haNOAQAA
KAIAAH4AGAAAAAAAAQAAAKSB1i8FAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxv
d2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWV4cGVjdGVkLnR4dFVUBQADrCYUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAMopdUvg6u1XxwkAANomAACCABgAAAAAAAEAAACkgdwxBQBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5
LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5Mi1wcmV0dHktZGlm
Zi5odG1sVVQFAAOsJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyyl1S2VGo28aBQAALhcA
AIIAGAAAAAAAAQAAAKSBXzwFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQt
YWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5LWFjdHVhbC50eHRVVAUAA60mFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADLKXVLeLGxBxoGAAB4HQAAgAAYAAAAAAABAAAApIE1QgUAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1i
eS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ktZGlm
Zi50eHRVVAUAA60mFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADLKXVLEppXxqACAACWBwAA
hAAYAAAAAAABAAAApIEJSQUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1h
bGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQFAAOtJhRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAyyl1S31a1/eKDgAAQmgAAIgAGAAAAAAAAQAAAKSBZ0wFAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQt
YnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5LXBy
ZXR0eS1kaWZmLmh0bWxVVAUAA60mFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADLKXVLNvP9
SRYCAAAEBgAAgwAYAAAAAAABAAAApIGzWwUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9s
aWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWFjdHVhbC50eHRVVAUAA60mFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADLKXVLeN187bgCAAD1BwAAgQAYAAAAAAABAAAApIGGXgUA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gt
YmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9ydC1w
b2xpY3kyLWRpZmYudHh0VVQFAAOtJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyyl1SxC0
haNOAQAAKAIAAIUAGAAAAAAAAQAAAKSB+WEFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJsb2NrZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBv
bGljeS1hbmQtYWxsb3dlZC1ieS1yZXBvcnQtcG9saWN5Mi1leHBlY3RlZC50eHRVVAUAA60mFFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADLKXVLy/Orts0JAADhJgAAiQAYAAAAAAABAAAApIEG
ZAUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhh
c2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1hbGxvd2VkLWJ5LXJlcG9y
dC1wb2xpY3kyLXByZXR0eS1kaWZmLmh0bWxVVAUAA60mFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADLKXVLPeOYXZcEAABCFgAAggAYAAAAAAABAAAApIGWbgUAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3kt
ZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3ktYWN0dWFsLnR4dFVU
BQADriYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMspdUvHuGpkpgUAAPocAACAABgAAAAA
AAEAAACkgelzBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEv
c2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQt
YnktcmVwb3J0LXBvbGljeS1kaWZmLnR4dFVUBQADriYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAMspdUtzlu9jFAIAABAGAACEABgAAAAAAAEAAACkgUl6BQBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWxlZ2FjeS1l
bmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeS1leHBlY3RlZC50eHRV
VAUAA64mFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADLKXVLRR/UbxMOAABGZwAAiAAYAAAA
AAABAAAApIEbfQUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L3NjcmlwdGhhc2gtYmxvY2tlZC1ieS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2Vk
LWJ5LXJlcG9ydC1wb2xpY3ktcHJldHR5LWRpZmYuaHRtbFVUBQADriYUWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAMspdUvZ+eh9kwQAAEYWAACDABgAAAAAAAEAAACkgfCLBQBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5
LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItYWN0
dWFsLnR4dFVUBQADrSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMspdUsTFaFxogUAAAQd
AACBABgAAAAAAAEAAACkgUCRBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5k
LWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItZGlmZi50eHRVVAUAA60mFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADLKXVLyHuvGRUCAAAUBgAAhQAYAAAAAAABAAAApIGdlwUAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmxvY2tlZC1i
eS1sZWdhY3ktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWV4
cGVjdGVkLnR4dFVUBQADrSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMspdUsCeH12Dw4A
AE9nAACJABgAAAAAAAEAAACkgXGaBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1ibG9ja2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3kt
YW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTItcHJldHR5LWRpZmYuaHRtbFVUBQADriYUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMwpdUunNDnBtQEAACgFAABMABgAAAAAAAEAAACkgUOp
BQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0bm9u
Y2UtYWxsb3dlZC1hY3R1YWwudHh0VVQFAAOwJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
zCl1S6u55aKTAQAAqgYAAHwAGAAAAAAAAQAAAKSBfqsFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRub25jZS1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBv
bGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LWFjdHVhbC50eHRVVAUAA68mFFp1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADMKXVLsIgS+S8CAACJCAAAegAYAAAAAAABAAAApIHHrQUA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNl
LWFsbG93ZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3kt
ZGlmZi50eHRVVAUAA68mFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADMKXVLbylF6xkAAAAZ
AAAAfgAYAAAAAAABAAAApIGqsAUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9j
a2VkLWJ5LXJlcG9ydC1wb2xpY3ktZXhwZWN0ZWQudHh0VVQFAAOvJhRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAzCl1S/RpaB40CQAALCcAAIIAGAAAAAAAAQAAAKSBe7EFAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRub25jZS1hbGxvd2VkLWJ5
LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZm
Lmh0bWxVVAUAA7AmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADMKXVL/S9vKJUBAACqBgAA
fQAYAAAAAAABAAAApIFruwUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktZW5mb3JjZWQtcG9saWN5LWFuZC1ibG9ja2Vk
LWJ5LXJlcG9ydC1wb2xpY3kyLWFjdHVhbC50eHRVVAUAA68mFFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADMKXVL/eoq+TMCAACLCAAAewAYAAAAAAABAAAApIG3vQUAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktZW5m
b3JjZWQtcG9saWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3kyLWRpZmYudHh0VVQFAAOv
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAzCl1S28pResZAAAAGQAAAH8AGAAAAAAAAQAA
AKSBn8AFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3Jp
cHRub25jZS1hbGxvd2VkLWJ5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQt
cG9saWN5Mi1leHBlY3RlZC50eHRVVAUAA68mFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADM
KXVL2BA6/zoJAAAtJwAAgwAYAAAAAAABAAAApIFxwQUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktZW5mb3JjZWQtcG9s
aWN5LWFuZC1ibG9ja2VkLWJ5LXJlcG9ydC1wb2xpY3kyLXByZXR0eS1kaWZmLmh0bWxVVAUAA68m
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADMKXVL96R8GpQBAACqBgAAgwAYAAAAAAABAAAA
pIFoywUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3Njcmlw
dG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1y
ZXBvcnQtcG9saWN5LWFjdHVhbC50eHRVVAUAA7AmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADMKXVLiWFh5TYCAACXCAAAgQAYAAAAAAABAAAApIG5zQUAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5LWVu
Zm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LWRpZmYudHh0VVQFAAOw
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAzCl1S28pResZAAAAGQAAAIUAGAAAAAAAAQAA
AKSBqtAFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3Jp
cHRub25jZS1hbGxvd2VkLWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnkt
cmVwb3J0LXBvbGljeS1leHBlY3RlZC50eHRVVAUAA7AmFFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADMKXVL3ONDSjwJAAAzJwAAiQAYAAAAAAABAAAApIGC0QUAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5
LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5LXByZXR0eS1kaWZm
Lmh0bWxVVAUAA7AmFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADMKXVL/S9vKJUBAACqBgAA
hAAYAAAAAAABAAAApIGB2wUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQt
YmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1hY3R1YWwudHh0VVQFAAOwJhRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAzCl1S1qAIyo4AgAAmQgAAIIAGAAAAAAAAQAAAKSB1N0FAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRub25jZS1hbGxvd2Vk
LWJ5LWxlZ2FjeS1lbmZvcmNlZC1wb2xpY3ktYW5kLWJsb2NrZWQtYnktcmVwb3J0LXBvbGljeTIt
ZGlmZi50eHRVVAUAA7AmFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAADMKXVLbylF6xkAAAAZ
AAAAhgAYAAAAAAABAAAApIHI4AUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFsbG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1h
bmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9saWN5Mi1leHBlY3RlZC50eHRVVAUAA7AmFFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADMKXVLag1NXT4JAAA0JwAAigAYAAAAAAABAAAApIGh4QUAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdG5vbmNlLWFs
bG93ZWQtYnktbGVnYWN5LWVuZm9yY2VkLXBvbGljeS1hbmQtYmxvY2tlZC1ieS1yZXBvcnQtcG9s
aWN5Mi1wcmV0dHktZGlmZi5odG1sVVQFAAOwJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
zCl1SydryLBJAgAAMQcAAEoAGAAAAAAAAQAAAKSBo+sFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRub25jZS1hbGxvd2VkLWRpZmYudHh0VVQFAAOw
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAzCl1SxaZVp2BAAAAoQAAAE4AGAAAAAAAAQAA
AKSBcO4FAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3Jp
cHRub25jZS1hbGxvd2VkLWV4cGVjdGVkLnR4dFVUBQADsCYUWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGApdUuSmoTdbgAAAHMAAABeABgAAAAAAAEAAACkgXnvBQBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy1zdGFyLXNlY3VyZS13ZWJzb2Nr
ZXQtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAPjJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
YCl1S8O967krAQAA0gIAAF4AGAAAAAAAAQAAAKSBf/AFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2RlZmF1bHQtc3JjLXN0YXItc2VjdXJlLXdlYnNvY2tldC1hbGxv
d2VkLWFjdHVhbC50eHRVVAUAA+MlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgKXVLzOmE
CsgBAABzBAAAXAAYAAAAAAABAAAApIFC8gUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvZGVmYXVsdC1zcmMtc3Rhci1zZWN1cmUtd2Vic29ja2V0LWFsbG93ZWQtZGlm
Zi50eHRVVAUAA+MlFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABgKXVLm8ANlhwAAAAcAAAA
YAAYAAAAAAABAAAApIGg9AUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvZGVmYXVsdC1zcmMtc3Rhci1zZWN1cmUtd2Vic29ja2V0LWFsbG93ZWQtZXhwZWN0ZWQudHh0
VVQFAAPjJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYCl1S31HZSO0CAAAVR8AAGQAGAAA
AAAAAQAAAKSBVvUFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Rl
ZmF1bHQtc3JjLXN0YXItc2VjdXJlLXdlYnNvY2tldC1hbGxvd2VkLXByZXR0eS1kaWZmLmh0bWxV
VAUAA+QlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgKXVLw73ruSsBAADSAgAAVwAYAAAA
AAABAAAApIGo/gUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGVm
YXVsdC1zcmMtc3Rhci13ZWJzb2NrZXQtYWxsb3dlZC1hY3R1YWwudHh0VVQFAAPkJRRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAYCl1SyBtdAfFAQAAZQQAAFUAGAAAAAAAAQAAAKSBZAAGAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2RlZmF1bHQtc3JjLXN0YXIt
d2Vic29ja2V0LWFsbG93ZWQtZGlmZi50eHRVVAUAA+QlFFp1eAsAAQT1AQAABBQAAABQSwECHgMK
AAIAAABgKXVLm8ANlhwAAAAcAAAAWQAYAAAAAAABAAAApIG4AgYAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZGVmYXVsdC1zcmMtc3Rhci13ZWJzb2NrZXQtYWxsb3dl
ZC1leHBlY3RlZC50eHRVVAUAA+QlFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgKXVLGiap
yrEIAABOHwAAXQAYAAAAAAABAAAApIFnAwYAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvZGVmYXVsdC1zcmMtc3Rhci13ZWJzb2NrZXQtYWxsb3dlZC1wcmV0dHktZGlm
Zi5odG1sVVQFAAPkJRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYil1SwAAAAAAAAAAAAAA
AEQAGAAAAAAAAAAQAO1BrwwGAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvVVQFAAPoJRRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAYil1S2frlYKPAAAAnAAAAH4AGAAAAAAAAQAAAKSBLQ0GAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvdXBn
cmFkZS1yZWRpcmVjdC1odHRwcy10by1odHRwLXNjcmlwdC1pbi1pZnJhbWUtc3RkZXJyLnR4dFVU
BQAD6CUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGspdUtjqqxsggAAAKgAAABAABgAAAAA
AAEAAACkgXQOBgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wt
YWxsb3dlZC1zdGRlcnIudHh0VVQFAAP5JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAayl1
S2OqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBcA8GAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRV
VAUAA/klFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsKXVLYEtmEJEAAAD7AQAARQAYAAAA
AAABAAAApIF+EAYAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1z
ZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAP8JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAbCl1SwAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BjhEGAGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvVVQFAAP8JRRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAail1SwnHs8REAQAAFggA
AE4AGAAAAAAAAQAAAKSB4hEGAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtYXN5bmMtc3RkZXJyLnR4dFVUBQAD9yUUWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGopdUvvhDKUZQEAACwQAABNABgAAAAAAAEAAACkga4TBgBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFs
LXN5bmMtc3RkZXJyLnR4dFVUBQAD9yUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGopdUst
K+z/RQEAABYIAABLABgAAAAAAAEAAACkgZoVBgBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXByZWZsaWdodC1oZWFkZXJzLWFzeW5jLXN0ZGVyci50eHRVVAUAA/clFFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsKXVLPK7gTisBAAALBAAAQAAYAAAAAAABAAAApIFk
FwYAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tY29va2llLXN0b3JhZ2Ut
c3RkZXJyLnR4dFVUBQAD/CUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGwpdUuoP+hXKgEA
AAsEAABGABgAAAAAAAEAAACkgQkZBgBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3NzLW9y
aWdpbi1uby1jcmVkZW50aWFsLXByb21wdC1zdGRlcnIudHh0VVQFAAP8JRRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAayl1SwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BsxoGAGh0dHAvd3B0
L1VUBQAD+SUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGspdUsAAAAAAAAAAAAAAAAQABgA
AAAAAAAAEADtQfYaBgBodHRwL3dwdC9iZWFjb24vVVQFAAP5JRRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAayl1SwAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BQBsGAGh0dHAvd3B0L2JlYWNv
bi9jb3JzL1VUBQAD+iUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGspdUuWJNeVLQEAAAsE
AAA1ABgAAAAAAAEAAACkgY8bBgBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXByZWZsaWdodC1j
b29raWUtc3RkZXJyLnR4dFVUBQAD+SUUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGspdUun
+bNCJQEAAAsEAAA/ABgAAAAAAAEAAACkgSsdBgBodHRwL3dwdC9iZWFjb24vY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWRpcmVjdC1mYWlsdXJlLXN0ZGVyci50eHRVVAUAA/olFFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADOKHVLWwRYDqIFAABNEAAACgAYAAAAAAABAAAApIHJHgYAaHR0cGQuY29u
ZlVUBQAD0yQUWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKgpdUsAAAAAAAAAAAAAAAAJABgA
AAAAAAAAEADtQa8kBgBpbXBvcnRlZC9VVAUAA2smFFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AACoKXVLAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UHyJAYAaW1wb3J0ZWQvdzNjL1VUBQADayYU
WnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKgpdUsAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADt
QTklBgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUBQADayYUWnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAKgpdUsAAAAAAAAAAAAAAAAtABgAAAAAAAAAEADtQZMlBgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9VVAUAA2smFFp1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADLKXVLAAAAAAAAAAAAAAAAOQAYAAAAAAAAABAA7UH6JQYAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvVVQFAAOu
JhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqCl1S480GnBEAAAAoAkAAFwAGAAAAAAAAQAA
AKSBbSYGAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVy
YXRlS2V5L2ZhaWx1cmVzX1JTQS1PQUVQLndvcmtlci1zdGRlcnIudHh0VVQFAANrJhRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAqCl1S1QCybI2AAAAwAIAAFsAGAAAAAAAAQAAAKSBRycGAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L2Zh
aWx1cmVzX1JTQS1QU1Mud29ya2VyLXN0ZGVyci50eHRVVAUAA2wmFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACpKXVLVALJsjYAAADAAgAAZQAYAAAAAAABAAAApIESKAYAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvZmFpbHVyZXNfUlNB
U1NBLVBLQ1MxLXYxXzUud29ya2VyLXN0ZGVyci50eHRVVAUAA20mFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADHKXVL+8m/ukoAAAAgDwAAVwAYAAAAAAABAAAApIHnKAYAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9mYWlsdXJl
cy5odHRwcy1zdGRlcnIudHh0VVQFAAOmJhRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyil1
S480GnBEAAAAoAkAAGAAGAAAAAAAAQAAAKSBwikGAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBLU9BRVAuaHR0
cHMtc3RkZXJyLnR4dFVUBQADqyYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMspdUtUAsmy
NgAAAMACAABfABgAAAAAAAEAAACkgaAqBgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQS1QU1MuaHR0cHMtc3Rk
ZXJyLnR4dFVUBQADrSYUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMspdUtUAsmyNgAAAMAC
AABpABgAAAAAAAEAAACkgW8rBgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNy
eXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12MV81Lmh0dHBz
LXN0ZGVyci50eHRVVAUAA64mFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB4KXVLErHw2coC
AAAONAAAGgAYAAAAAAABAAAApIFILAYAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAUAAxQm
FFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABpKXVL7mLkMQkBAACPAgAAGgAYAAAAAAABAAAA
pIFmLwYAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUAA/YlFFp1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADPKHVLAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIHDMAYAcHl3ZWJzb2NrZXQu
d3NzLmxvZy1lcnIudHh0VVQFAAPWJBRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAzyh1SwAA
AAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBGDEGAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVU
BQAD1SQUWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoqdUuPylJacSkAAMavAAAMABgAAAAA
AAEAAACkgW0xBgByZXN1bHRzLmh0bWxVVAUAA9cnFFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABqKnVL/IP2M4edBQAIrB0ACgAYAAAAAAABAAAApIEkWwYAc3RhdHMuanNvblVUBQAD1ycUWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANgpdUv5WSiG6UABAPhLHQAZABgAAAAAAAEAAACkge/4
CwB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAPIJhRadXgLAAEE9QEAAAQUAAAAUEsFBgAA
AACYAZgBZNoAACs6DQAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327407</attachid>
            <date>2017-11-21 06:40:11 -0800</date>
            <delta_ts>2017-11-21 08:36:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171121064010.patch</filename>
            <type>text/plain</type>
            <size>431673</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTA5NzY3MzEwZjZlNzAzNDFkN2FlMDA2MDNhZjkwMTQ0ODI4NWUxLi5kYWFjZGViMTViZGMwZWZj
NjkxYTVhYjFkYmVlYzE4ZDc3ZDY2YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXVtGVExd
IFN1cHBvcnQgTWFwU2V0IC8gU2V0QWRkIGludHJpbnNpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjE2MTM1NDUxYmExMjE2
NTY5YWFmNWRmMzdhMzFhNDQwMjY0NGZiMy4uZjNlMTkzNTA0NmJkN2I3NzViODM0MDIwODAxZTlh
ZjQ3YWZmMWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlv
bnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
dGV4dC9BU0NJSUZhc3RQYXRoLmg6IE1vdmVkIHRoZSB1c2luZyBmb3IgY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJIGhlcmUgc2luY2UKKyAgICAgICAgdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgaGVyZS4K
KworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOiBSZW1vdmVkIG92ZXJsb2FkcyBv
ZiBjb250YWlucywgZmluZCwgc3RhcnRzV2l0aCwgYW5kCisgICAgICAgIGVuZHNXaXRoIHRoYXQg
dGFrZSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZXkgc2hvdWxkIGJlICJjYXNlIHNl
bnNpdGl2ZSIuCisgICAgICAgIFdoZW4gZmFsc2UsIHRoaXMgd2FzIGRvaW5nIFVuaWNvZGUgY2Fz
ZSBmb2xkaW5nLCBhbmQgbm8gY2FsbGVycyBuZWVkZWQgdGhhdC4KKyAgICAgICAgQWxzbyB0d2Vh
a2VkIGZvcm1hdHRpbmcgYW5kIGFyZ3VtZW50IG5hbWVzLgorCisgICAgICAgICogd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOiBBZGRlZCBhbiBpbmNsdWRlIG9mIExDaGFyLmgg
c2luY2UgdGhpcyBmaWxlCisgICAgICAgIHVzZXMgdGhhdC4gQWxzbyB0d2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSk6IERlbGV0ZWQuIERlc3Bp
dGUgaXRzIG5hbWUgc291bmRpbmcgbGlrZQorICAgICAgICBpdCB1c2VkIHRoZSBmdWxsIFVuaWNv
ZGUgd2hpdGVzcGFjZSBkZWZpbml0aW9uLCB0aGlzIGFjdHVhbGx5IGNoZWNrZWQgaXNBU0NJSVNw
YWNlLgorICAgICAgICBDYWxsZXJzIG5vdyBhbGwgdXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMg
aW5zdGVhZCB3aXRoIHRoZSB3aGl0ZXNwYWNlIGRlZmluaXRpb24KKyAgICAgICAgdGhhdCBpcyBh
cHByb3ByaWF0ZSB0byBlYWNoIGNhbGwgc2l0ZS4KKyAgICAgICAgKFdURjo6bGF0aW4xQ2FzZUZv
bGRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsQ29tcGF0aWJpbGl0eUNhc2Vs
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2Fz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsSW5uZXIpOiBSZW1vdmVkIGJvb2xlYW4gY2FzZVNl
bnNpdGl2ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6
IERpdHRvLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCk6IERpdHRvLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBNb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2aXR5
IG91dCBpbnRvIGEgZGlmZmVyZW50IGhlYWRlci4KKyAgICAgICAgTW92ZWQgQVNDSUlGYXN0UGF0
aC5oIGluY2x1ZGUgaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3ZlZCBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzCisgICAgICAgIGZyZWUgZnVuY3Rpb24gaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3Zl
ZCBsb3RzIG9mIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xhc3MKKyAgICAgICAgZGVmaW5pdGlv
bnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyIHRvIHJlYWQuIFNvcnRlZCB0
aGluZ3MgYSBiaXQuCisgICAgICAgIFR3ZWFrZWQgZm9ybWF0dGluZy4gTWFya2VkIGNvbnN0cnVj
dG9yIHRoYXQgdGFrZXMgb25lIGFyZ3VtZW50IGV4cGxpY2l0LiBBZGRlZAorICAgICAgICBhbiBp
c0VtcHR5IGZ1bmN0aW9uIGxpa2UgdGhlIG9uZSBpbiBTdHJpbmcuIFJlbW92ZWQgdGhlIGhhc0F0
TGVhc3RPbmVSZWYKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgZG9lc24ndCBvZmZlciBhIGJl
bmVmaXQgb3ZlciB0aGUgcmVmQ291bnQgZnVuY3Rpb24uIFJlbmFtZWQKKyAgICAgICAgY29weUNo
YXJzIHRvIGNvcHlDaGFyYWN0ZXJzLiBBZGRlZCBpc0FsbEFTQ0lJLCBpc0FsbExhdGluMSBhbmQK
KyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBmdW5jdGlvbnMuIFJlbW92ZWQgYm9vbGVh
biBjYXNlU2Vuc2l0aXZlIGFyZ3VtZW50cworICAgICAgICBmcm9tIHZhcmlvdXMgZnVuY3Rpb25z
LiBSZW1vdmVkIGZpbmRJZ25vcmluZ0Nhc2UgYW5kIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLgor
ICAgICAgICBBZGRlZCBhIEZJWE1FIHRvIGNvZGVQb2ludENvbXBhcmUgYWJvdXQgdGhlIHdheSBp
dCB0cmVhdHMgbnVsbCBhbmQgZW1wdHkgc3RyaW5ncworICAgICAgICBhcyBlcXVhbC4gQ2hhbmdl
ZCBsZW5ndGggYXJndW1lbnQgaW4gcmVtb3ZlIHRvIHVuc2lnbmVkIHRvIG1hdGNoIG90aGVyIGxl
bmd0aHMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnJlbW92ZUludGVybmFsKTogQ2hhbmdlZCBsZW5ndGggYXJndW1lbnQgdG8gYmUg
dW5zaWduZWQuCisgICAgICAgIChXVEY6OmNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMpOiBV
c2UgZW1wdHlTdHJpbmcuCisgICAgICAgIChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkIGNvbnN0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggdG8gU3RyaW5n
SW1wbC5oLiBNb3ZlZCBsb3RzIG9mCisgICAgICAgIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xh
c3MgZGVmaW5pdGlvbnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyCisgICAg
ICAgIHRvIHJlYWQsIG1hZGUgb3RoZXJzIG9uZS1saW5lcnMuIFJlbW92ZWQgdGhlIFN0cmluZzo6
YXQgZnVuY3Rpb24gYnV0IGtlcHQgdGhlCisgICAgICAgIFN0cmluZzo6Y2hhcmFjdGVyQXQgZnVu
Y3Rpb247IHRoZSB0d28gd2VyZSBpZGVudGljYWwuIFJlbW92ZWQgYm9vbGVhbgorICAgICAgICBj
YXNlU2Vuc2l0aXZlIGFyZ3VtZW50cyBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zLiBSZW1vdmVkIGZp
bmRJZ25vcmluZ0Nhc2UgYW5kCisgICAgICAgIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLiBSZW5h
bWVkIGNvbnRhaW5zT25seUFTQ0lJIHRvIGlzQWxsQVNDSUkgYW5kCisgICAgICAgIGNvbnRhaW5z
T25seUxhdGluMSB0byBpc0FsbExhdGluMSB0byBtYXRjaCB0aGUgbmFtaW5nIG9mIGlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnMuCisgICAgICAgIE1vdmVkIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25z
IG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbmVkIGFib3ZlIGZ1cnRoZXIKKyAgICAgICAgZG93
biwgYWZ0ZXIgdGhpbmdzIGxpa2UgdGhlIEFTQ0lJTGl0ZXJhbCBjbGFzcyBhbmQgdmFyaW91cyBm
dW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6IFVwZGF0ZWQgbmFtZSBvZiBjb3B5Q2hhcnMuCisKIDIwMTctMTEtMTkgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBUT1VD
SF9JQ09OX0xPQURJTkcgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxY2VkNDNmMjU4ZThh
M2JhMGIyZDVhMTJlNTQzNDdmY2ExNTU0YS4uM2VjNDE2NTg1ZmU3NmQxZjhhM2FjMjU3YTA2NmNj
MWEyOWIyZDEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzMCBAQAorMjAxNy0xMS0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5n
IG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVh
ZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Omhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6IFVzZSBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyk6IFVzZSBpc0FsbEFTQ0lJLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRMZW5ndGhGb3JUZXh0UmFuZ2UgY29uc3QpOiBVc2Ug
dGV4dCgpLmxlbmd0aCgpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJ
blJhbmdlKTogVXNlIGlzSFRNTFNwYWNlIGluc3RlYWQgb2YKKyAgICAgICAgaXNTcGFjZU9yTmV3
bGluZSBzaW5jZSB0aGUgY29kZSBpcyB0cnlpbmcgdG8gc2tpcCBjb2xsYXBzaWJsZSBIVE1MIHNw
YWNlcywgbm90CisgICAgICAgIGFyYml0cmFyeSBVbmljb2RlIHdoaXRlc3BhY2UuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJz
KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+IGZvciB0
aGUgc2FtZSByZWFzb24gYXMgYWJvdmUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9i
amVjdENvbnRhaW5zVGV4dCBjb25zdCk6IFVzZQorICAgICAgICBuZXcgZmluZFBsYWluVGV4dCBm
dW5jdGlvbiBleHBvcnRlZCBmcm9tIFRleHRJdGVyYXRvciBzbyB0aGlzIGNhbiBzaGFyZSB0aGUK
KyAgICAgICAgc2FtZSBzZWFyY2ggbWF0Y2hpbmcgbG9naWMgdXNlZCB0byBmaW5kIHRleHQgaW4g
d2VicGFnZXMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RU
ZXh0KTogVXNlIGNhcGl0YWxpemUgYW5kIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgcmF0aGVy
IHRoYW4gbWFrZUNhcGl0YWxpemUgbW9kaWZ5aW5nIGEgc3RyaW5nIGluIHBsYWNlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KTogVXNlIGlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+CisgICAgICAgIGZvciB0aGUgc2FtZSByZWFzb24gYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdUb0J5dGVTdHJpbmcpOiBVc2UgaXNBbGxMYXRpbjEuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpjb250YWluc09ubHlBU0NJSVdpdGhOb1VwcGVyY2FzZSk6IFVzZQor
ICAgICAgICBTdHJpbmdWaWV3Ojpjb2RlVW5pdHMgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorCisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICBVc2UgaXNBbGxB
U0NJSS4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6YWRk
UGF0dGVybik6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3Jt
YXQgY29uc3QpOiBVc2UgcHJvdG9jb2xJcyBhbmQKKyAgICAgICAgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIGNzcy9ET01DU1NOYW1lc3BhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dmFsdWVXaXRob3V0SW1wb3J0YW50KTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3cpOiBVc2UgaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0NTU1NwYWNlPiwKKyAgICAgICAgZm9yIHRoZSBwcmVmbGlnaHQsIHdo
aWNoIG1hdGNoZXMgd2hhdCB0aGUgYWN0dWFsIHBhcnNpbmcgY29kZSB1c2VzLgorCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSBjb25zdCk6IERlbGV0ZWQuIENhbGxlcnMgY2FuCisg
ICAgICAgIGVmZmljaWVudGx5IGdldCBhdCB0aGUgZGF0YSBhbmQgZG8gdGhpcyBraW5kIG9mIGNo
ZWNrIG9uIHRoZSBkYXRhIGRpcmVjdGx5LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplVHlwZSk6IFVzZSBzdGFydHNXaXRoIHNpbmNl
IHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBjb252ZXJ0ZWQKKyAgICAgICAgdG8gQVNDSUkgbG93ZXJj
YXNlLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGNvbnN0KTogVXNlIGlzSFRNTFNwYWNl
IHNpbmNlCisgICAgICAgIHNpbmNlIHRoZSBjb2RlIGlzIHRyeWluZyB0byBjaGVjayBmb3IgY29s
bGFwc2libGUgSFRNTCBzcGFjZXMsIG5vdCBnZW5lcmFsCisgICAgICAgIFVuaWNvZGUgc3BhY2Vz
LiBPdGhlciBjYWxsIHNpdGVzIG9mIGlzU3BhY2VPck5ld2xpbmUgbmVlZCB0byBiZSBjaGVja2Vk
IGZvcgorICAgICAgICB0aGlzLCBidXQgSSBkaWQgbm90IGZpeCB0aGVtIGFsbCBhdCB0aGlzIHRp
bWUuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKTogVXNlIG5vQnJl
YWtTcGFjZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29uc3QpOiBVc2UgdGV4
dCgpLmxlbmd0aCgpIGluc3RlYWQKKyAgICAgICAgb2YgdGV4dExlbmd0aC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCBjb25zdCk6IFVzZSBu
b0JyZWFrU3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVj
dGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dE5vZGVPZmZzZXRJbkZsb3cpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGFwc2VkU3BhY2VMZW5ndGgpOiBVcGRhdGVkIHNpbmNlIFJlbmRlclRl
eHQ6OnRleHQgbm93IHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6IEFkZGVkLiBVc2VzIFNl
YXJjaEJ1ZmZlciB0byBzZWFyY2ggZm9yIG9uZSBzdHJpbmcKKyAgICAgICAgd2l0aGluIGFub3Ro
ZXIuIEV4cG9ydGVkIHNvIGFjY2Vzc2liaWxpdHkgY29kZSBjYW4gZG8gdGhpcyBvcGVyYXRpb24u
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDogVXBkYXRlZCBmb3IgdGhlIGFib3Zl
LgorCisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6IFVzZSBub0Jy
ZWFrU3BhY2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kU3RhcnRPZlBhcmFncmFwaCk6IFVwZGF0ZWQgc2luY2UgUmVuZGVyVGV4
dDo6dGV4dCBub3cgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRFbmRPZlBhcmFncmFwaCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0
KTogVXNlIFN0cmluZzo6Y2hhcmFjdGVyQXQgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorICAgICAg
ICBVc2UgY2FwaXRhbGl6ZSBpbnN0ZWFkIG9mIG1ha2VDYXBpdGFsaXplZC4KKworICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaXBNaWNyb3NvZnRQcmVmaXgpOiBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogaHRtbC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERh
dGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KTogVXNlCisgICAgICAgIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL0Jhc2VUZXh0
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0SW5wdXRUeXBlOjpwYXR0
ZXJuTWlzbWF0Y2ggY29uc3QpOiBSZW1vdmVkIGV4cGxpY2l0CisgICAgICAgIFRleHRDYXNlU2Vu
c2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0aGUgZGVmYXVsdCwgYW5kIG5lZWRlZCB0byB0b3VjaCB0
aGlzIGFueXdheQorICAgICAgICBiZWNhdXNlIHRoZSBlbnVtZXJhdGlvbiBpcyBub3cgaW4gYSBk
aWZmZXJlbnQgbmFtZXNwYWNlLgorCisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkRW1haWxBZGRyZXNzKTogVXBkYXRlZCB0byB1c2Ug
SlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aGFz
RmFsbGJhY2tDb250ZW50IGNvbnN0KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnNo
b3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6aGFzVmFsaWRDbGFzc0lkKTogVXNlIHByb3RvY29sSXMuCisgICAgICAgIChXZWJDb3Jl
OjpwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSk6IFVzZSBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPi4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpz
ZXRDb21wYXRpYmlsaXR5TW9kZUZyb21Eb2N0eXBlKToKKyAgICAgICAgVXNlIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdENoYXJzZXQpOiBV
c2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjppc0NvbnRhaW5lZEluUmVx
dWVzdCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpo
YXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKTogRG9uJ3QgcGFzcyB0aGUgbGVuZ3RoIHRvCisgICAg
ICAgIHRoZSBTdHJpbmc6OnN0YXJ0c1dpdGggZnVuY3Rpb24uIFRoZXJlIGhhcyBuZXZlciBiZWVu
IGEgdmVyc2lvbiBvZiB0aGF0IGZ1bmN0aW9uCisgICAgICAgIHRoYXQgdGFrZXMgdGhlIGxlbmd0
aCwgdGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzIHRoZSBsZW5ndGggc2luY2UgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGhhbmRsZXMgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MgbGlrZSB0aGUgb25lIGhl
cmUsIGFuZCBpbiB0aGUgcGFzdCB0aGUgbGVuZ3RoCisgICAgICAgIGhhcyBiZWVuIGdldHRpbmcg
Y29udmVydGVkIHRvIGEgYm9vbGVhbiBtYWtpbmcgdGhlIGNvbXBhcmlzb24gYmUgY2FzZSBzZW5z
aXRpdmUuCisgICAgICAgIFJlbW92aW5nIHRoZSBhcmd1bWVudCBlbnRpcmVseSBsZWF2ZXMgaXQg
Y2FzZSBzZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxl
bWVudCk6IFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UKKyAgICAgICAgYW5kIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKTogVXNl
IEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zT25s
eUhUTUxXaGl0ZXNwYWNlKTogTWFkZSB0aGlzIGEgbm9uLW1lbWJlciBmdW5jdGlvbgorICAgICAg
ICBhbmQgcmVpbXBsZW1lbnRlZCB1c2luZyBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPigpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RD
aGlsZCk6IFVzZSBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQcmV2aW91c1NpYmxpbmcpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxkTm9kZUNvdW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0
RE9NTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZFJlbW92ZURPTU5vZGUpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZp
bGUpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIHBhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2U2NFV0aWxpdGllczo6YnRvYSk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKTogUmVt
b3ZlZCBUZXh0Q2FzZVNlbnNpdGl2ZSBhcmd1bWVudCBzaW5jZQorICAgICAgICB0aGF0IGlzIG5v
dyB0aGUgZGVmYXVsdCBhbmQgYWxzbyB1c2VkIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6IE1vcmUgb2Yg
dGhlIHNhbWUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCk6
IFVzZQorICAgICAgICB0ZXh0KCkubGVuZ3RoKCkuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbElu
SFRUUEZhbWlseSk6IFVzZQorICAgICAgICBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9zdCBjb25zdCk6Cisg
ICAgICAgIFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzIGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlTm9u
Y2VTb3VyY2UpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGggY29uc3QpOiBVc2Ugbm9CcmVha1NwYWNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFR5cGU6OnBhcmFtZXRlciBjb25zdCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkRm9udE1JTUVUeXBlKTogVXNlCisgICAgICAg
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZSk6IFVzZQorICAgICAgICBt
aW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKTogVXNl
CisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0FsbEFTQ0lJKTog
UmVuYW1lZCBmcm9tIGNvbnRhaW5zT25seUFTQ0lJLgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RW5jb2RlZEhvc3RuYW1lKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNPbmx5QVNDSUkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKTogVXNlIFN0
cmluZ0ltcGw6OmlzQWxsQVNDSUkuIENoYW5nZWQKKyAgICAgICAgdG8gdGFrZSBTdHJpbmdJbXBs
JiB0byBndWFyYW50ZWUgd2Ugd29uJ3Qga2VlcCBkb2luZyBudWxsIGNoZWNrcyBzaW5jZQorICAg
ICAgICB0aGUgY2FsbGVyIGFscmVhZHkgY2hlY2tzIGZvciBudWxsLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KTogUGFzcyBTdHJpbmdJbXBsJi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UK
KyAgICAgICAgYW5kIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkS2V5U3lzdGVtUkUpOiBVc2UgSlND
OjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpzaW1pbGFyRm9udCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlIGZvcgorICAg
ICAgICB0aGUgR2VlemEgZm9udCBzcGVjaWFsIGNhc2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkUmVqZWN0TUlNRVR5cGUpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyk6IFJlbW92ZWQKKyAgICAgICAgVGV4dENhc2VTZW5z
aXRpdmUgc2luY2UgaXQgbm93IGlzIHRoZSBkZWZhdWx0LgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4pOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOiBVc2UgaXNBbGxBU0NJ
SS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyk6IFVzZSBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoKTogVXNlIGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDaGFyc2V0SW5NZWRpYVR5
cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmFuZ2UpOiBVc2Ugc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZUZyb21IYW5kbGUpOgorICAg
ICAgICBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFy
a3VwRnJvbUNGSFRNTCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpmcmFnbWVudEZyb21DRkhUTUwpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9C
aWRpUnVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSdW46OkJpZGlSdW4pOiBVc2UgdGV4
dCgpLmxlbmd0aCgpLgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFic29sdXRlUERGVVJMIGNvbnN0KTogVXNl
CisgICAgICAgIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxh
Y2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpmYXN0SW5jcmVtZW50SW5UZXh0Tm9kZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lSXRlcmF0b3I6OmluY3JlbWVudCk6IER0dG8uCisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
aXNMaW5lQnJlYWsgY29uc3QpOiBVcGRhdGVkIHNpbmNlIFJlbmRlclRleHQ6OnRleHQKKyAgICAg
ICAgbm93IHJldHVybnMgYSBTdHJpbmdJbXBsJi4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kIGNvbnN0KTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnRleHQgY29uc3QpOiBVcGRhdGVkIHNpbmNl
IFJlbmRlclRleHQ6OnRleHQKKyAgICAgICAgbm93IHJldHVybnMgYSBTdHJpbmdJbXBsJi4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4pOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
aXNpYmxlUmVuZGVyVGV4dCk6IFVzZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNl
PigpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJl
ZmVycmVkTG9naWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgIFVzZSB0aGUgbmV3IHRyaW1tZWRQ
cmVmZXJyZWRXaWR0aHMgdGhhdCByZXR1cm5zIGEgc3RydWN0dXJlIGluc3RlYWQgb2YgdGhlCisg
ICAgICAgIG9sZCBvbmUgd2l0aCBsb3RzIG9mIGFyZ3VtZW50cy4gQWxzbyB1c2UgdGV4dCgpLmxl
bmd0aCgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5kc1dpdGhIVE1MU3BhY2VzKTogUmVuYW1lZCBhbmQgY2hhbmdl
ZCB0byB1c2UgaXNIVE1MU3BhY2UKKyAgICAgICAgaW5zdGVhZCBvZiBpc0FTQ0lJU3BhY2UuCisg
ICAgICAgIChXZWJDb3JlOjpyZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIpOiBVc2UgZW5kc1dpdGhI
VE1MU3BhY2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIFVwZGF0ZWQgZm9yIGhj
YW5nZXMgdG8gUmVuZGVyVGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
aGFuZGxlVHJhaWxpbmdTcGFjZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlvbik6IERpdHRvLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNv
bWJpbmVUZXh0Ojpjb21iaW5lVGV4dElmTmVlZGVkKTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3Rz
IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpib2xkZXIpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQpOiBSZXdyb3Rl
IHRvCisgICAgICAgIG9ubHkgY29tcHV0ZSB0aGUgYm9sZGVyIGZvbnQgb25jZSByYXRoZXIgdGhh
biBmb3IgZXZlcnkgaXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUZvcmVncm91bmQpOiBVcGRhdGVkIGZvcgorICAgICAgICBjaGFuZ2UgdG8gYXBwbHlUZXh0
VHJhbnNmb3JtLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKTogVXBkYXRl
ZCBmb3IgY2hhbmdlCisgICAgICAgIHRvIFJlbmRlclRleHQ6OnRleHQuCisgICAgICAgIChSZW5k
ZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvCisg
ICAgICAgIGFwcGx5VGV4dFRyYW5zZm9ybS4KKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVt
VGV4dCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FwaXRhbGl6ZSk6IFJlbmFtZWQgZnJvbSBtYWtlQ2FwaXRh
bGl6ZWQuIENoYW5nZWQgdG8KKyAgICAgICAgdGFrZSBhbmQgcmV0dXJuIGEgU3RyaW5nIGluc3Rl
YWQgb2YgdGFraW5nIGEgU3RyaW5nKi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OlJl
bmRlclRleHQpOiBVc2UgaXNBbGxBU0NJSS4gQWxzbyBtb3ZlZAorICAgICAgICBpbml0aWFsaXph
dGlvbiBvZiBtb3N0IG5vbi1iaXRmaWVsZCBtZW1iZXJzIHRvIHRoZSBjbGFzcyBkZWZpbml0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6IFVzZSB0
ZXh0KCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aGFuZ2FibGVQdW5jdHVh
dGlvblN0YXJ0V2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25FbmRXaWR0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6aXNIYW5nYWJsZVN0b3BPckNvbW1hKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpmaXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3Bh
Y2VzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpsYXN0Q2hh
cmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OnRyaW1tZWRQcmVmZXJyZWRXaWR0aHMpOiBDaGFuZ2VkIHRvIHJldHVy
biB2YWx1ZXMKKyAgICAgICAgaW4gYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB0YWtpbmcgbG90cyBv
ZiBhcmd1bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyk6IFVwZGF0ZWQgdG8gdXNlCisgICAgICAgIHRoZSB0ZXh0KCkgZnVu
Y3Rpb24uCisgICAgICAgIChXZWJDb3JlOjppc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6aXNBbGxDb2xsYXBzaWJsZVdoaXRl
c3BhY2UgY29uc3QpOiBVcGRhdGVkIHRvCisgICAgICAgIHVzZSBhIHRpZ2h0ZXIgbG9vcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzQWxsUG9zc2libHlDb2xsYXBzaWJsZVdoaXRlc3BhY2UpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbnRhaW5zT25seUhUTUxXaGl0ZXNw
YWNlIGNvbnN0KTogVXBkYXRlZCB0bworICAgICAgICB1c2UgYSB0aWdodGVyIGxvb3AuIFJlbmFt
ZWQgZnJvbSBjb250YWluc09ubHlXaGl0ZXNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6c2V0VGV4dFdpdGhPZmZzZXQpOiBVcGRhdGVkIHRvICB1c2UgdGV4dCgpLgorICAgICAg
ICAoV2ViQ29yZTo6aXNJbmxpbmVGbG93T3JFbXB0eVRleHQpOiBSZXdyb3RlIHRvIGJlIGVhc2ll
ciB0byByZWFkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0
ZXIgY29uc3QpOiBHb3QgcmlkIG9mIHVubmVlZGVkCisgICAgICAgIG51bGwgY2hlY2sgYW5kIHNp
bXBsaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFuc2Zvcm0pOiBDaGFuZ2Vk
IHRvIHJldHVybiBhIFN0cmluZyByYXRoZXIKKyAgICAgICAgdGhhbiBtb2RpZnlpbmcgb25lIHRo
YXQgaXMgcGFzc2VkIGluLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2V0UmVuZGVy
ZWRUZXh0KTogVXBkYXRlZCB1c2Ugb2YgYXBwbHlUZXh0VHJhbnNmb3JtLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6c2VjdXJlVGV4dCk6IE1vcmUgb2YgdGhlIHNhbWUuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJp
bmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnRleHRXaXRo
b3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3aWR0aCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGluZUJveGVzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldCBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JC
YWNrd2FyZERlbGV0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpuZXh0T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHJpbmdWaWV3IGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOiBNYWRlIHNvbWUgbW9yZSBtZW1iZXJzIHBy
aXZhdGUgYW5kIGZpbmFsLgorICAgICAgICBVcGRhdGVkIGZvciBhYm92ZSwgaW5jbHVkaW5nIGFk
ZGluZyB0aGUgV2lkdGhzIHN0cnVjdHVyZS4gR290IHJpZCBvZiB0aGUKKyAgICAgICAgdGV4dExl
bmd0aCBmdW5jdGlvbiwgd2hpY2ggZXhpc3RlZCBhcyBhIHdvcmthcm91bmQgYmVmb3JlIHdlIGNv
dWxkIG1hcmsKKyAgICAgICAgYSBmdW5jdGlvbiBsaWtlIGxlbmd0aCBmaW5hbC4gTWFkZSB0aGUg
dGV4dCBmdW5jdGlvbiByZXR1cm4gYSBTdHJpbmdJbXBsJiwKKyAgICAgICAgd2hpY2ggaXMgZ29v
ZCBzaW5jZSB0aGUgbV90ZXh0IHN0cmluZyBpcyBuZXZlciBudWxsLCBhbmQgc28gY2FsbGVycyBl
bmQKKyAgICAgICAgdXAgdXNpbmcgU3RyaW5nSW1wbCBkaXJlY3RseSBhbmQgc2F2aW5nIG51bGwg
Y2hlY2tzLiBSZW1vdmVkIGZ1bmN0aW9ucworICAgICAgICB0aGF0IGFyZSBub3QgbmVlZGVkLCBp
bmNsdWRpbmcgaXM4Qml0LCBjaGFyYWN0ZXJzOCwgY2hhcmFjdGVyczE2LAorICAgICAgICB1bmNo
ZWNrZWRDaGFyYWN0ZXJBdCwgb3BlcmF0b3JbXSwgYW5kIGlzQWxsQVNDSUkuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRGcmFnbWVudDo6c2V0VGV4dCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dExpbmVCb3hlczo6Y2FyZXRNYXhPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OnBvc2l0aW9uRm9yUG9pbnQgY29uc3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OnNldFNlbGVj
dGlvblN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVz
OjphYnNvbHV0ZVF1YWRzIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yRm9udEFuZFRleHQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OnRleHRMZW5ndGhGb3JTdWJ0cmVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0Ojpjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93cyk6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmluaXRpYWxpemVTZWdtZW50cyk6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnRleHRPZmZzZXRGb3JQb2ludCk6
IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpmaW5kQ2FyZXRNYXhpbXVtT2Zm
c2V0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBZGRCb3JkZXJQYWRkaW5nTWFyZ2luKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmplY3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oml0ZXJhdG9ySXNCZXlvbmRFbmRPZlJlbmRlckNv
bWJpbmVUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0ZXh0V2lkdGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRp
b25Gb3JUcmFpbGluZ1dvcmQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9UcmFp
bGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhaWxpbmdPYmplY3RzOjp1cGRh
dGVXaGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRpb25zRm9yVHJhaWxpbmdCb3hlcyk6IERpdHRv
LgorCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVudCk6
IFJlbW92ZWQgc3RyYXkgdXNlIG9mICJ1bnNpZ25lZCBpbnQiLgorCisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayBjb25zdCk6IFVzZSB0
ZXh0KCkubGVuZ3RoKCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpw
b3NpdGlvbkZvclBvaW50KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1Jl
bmRlclNWR0lubGluZVRleHQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2lu
ZTo6Y3VycmVudExvZ2ljYWxDaGFyYWN0ZXJBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMgY29uc3Qp
OiBEaXR0by4KKworICAgICAgICAqIHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKTogVXNlIGlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+LgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVHJlZVVwZGF0ZXI6OnRleHRSZW5kZXJlcklzTmVlZGVkKTogRGl0dG8uCisKKyAgICAgICAg
KiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6Omhhc0ZlYXR1
cmVGb3JMZWdhY3lCaW5kaW5ncyk6IFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKTogRGl0dG8uCisKIDIw
MTctMTEtMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtDYWlyb10gZHJhd05hdGl2ZUltYWdlKCksIGRyYXdQYXR0ZXJuKCkgaW4gQ2Fpcm9PcGVyYXRp
b25zIHNob3VsZCBvcGVyYXRlIGRpcmVjdGx5IHdpdGggY2Fpcm9fc3VyZmFjZV90IG9iamVjdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYWE5MDc2ZTRlZGE5MDgyNjIwMzY0MDU3ZTllOTExYmE0ZmE0OTgwZC4uM2Ez
NWNkZmI2ZTNhOGQ5OWUxMTM1OGNjZDYxMjhkMTU4NjgzZjc1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAxNy0xMS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBV
bmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmlzTWVkaWFNSU1FVHlw
ZSk6IFVzZSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6aGFzaFN0cmluZyk6IFVzZSBpc0FsbEFTQ0lJLi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
UG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZS4uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBzZXRDdXN0b21IZWFk
ZXJGaWVsZHM6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcik6IFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
OjpXZWJQcmVmZXJlbmNlcyk6IEluaXRpYWxpemUgbV9pZGVudGlmaWVyIGV4cGxpY2l0bHkuIFNv
bWVob3cKKyAgICAgICAgY2hhbmdpbmcgdGhlIFN0cmluZyBkZWZhdWx0IGNvbnN0cnVjdG9yIHRv
IGJlICI9IGRlZmF1bHQiIGxlZCB0byBhIHdhcm5pbmcgdGhhdCB3ZQorICAgICAgICBvdGhlcndp
c2UgZGlkIG5vdCBnZXQgYWJvdXQgbm90IGluaXRpYWxpemluZyBtX2lkZW50aWZpZXIuIEFyZ3Vh
Ymx5IGEgY29tcGlsZXIgYnVnLAorICAgICAgICBidXQgbGVnaXRpbWF0ZWx5IHN0cmFuZ2UgdGhh
dCB0aGUgY29weSBjb25zdHJ1Y3RvciBkb2VzIG5vdCBjb3B5IG1faWRlbnRpZmllciBhbmQgc28K
KyAgICAgICAgbmljZSB0byBiZSBleHBsaWNpdCBhYm91dCBpdCwgSSBndWVzcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uUmF3KTogVXNlCisgICAgICAgIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRo
TmF0aXZlQXBwbGljYXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IFVzZSBp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKwogMjAxNy0xMS0yMSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gV1BF
V2ViUHJvY2VzczogQ291bGRuJ3QgZmluZCBjdXJyZW50IEdMWCBvciBFR0wgY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDlkZTRjMTc3NWQzNzA0ODhkODE4NTk5M2EyYzRj
MjY5ODcxMDQwYTMuLmMxODVjNjc3NzAzNWU3NTkwNTY4YjQ5ZDc3NjExMTJiOWJjZTc1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMS0yMCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3Ry
aW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5z
dGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBIaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHA6CisgICAgICAgIChCaW5hcnlQ
cm9wZXJ0eUxpc3RQbGFuOjp3cml0ZVN0cmluZ09iamVjdCk6IFVzZSBpc0FsbEFTQ0lJLgorICAg
ICAgICAoQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kU3RyaW5nT2JqZWN0KTog
RGl0dG8uCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAg
ICAgIChyZWdFeHBGb3JMYWJlbHMpOiBSZW1vdmVkIFRleHRDYXNlU2Vuc2l0aXZlIHNpbmNlIGl0
IGlzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6
IFVzZSBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUuCisKIDIwMTctMTEtMTkgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNl
ZCBUT1VDSF9JQ09OX0xPQURJTkcgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggNWE4ZWJjNTMxNmEyZGFjMTk5MGUyMGVkODU3MWE4MmRmZDFkZDYyYi4uMzE1MjI1
ODk2MWRhZDM3ZWY5ZDRmNjRhZmRiNTY4ZGQ2MDIwZTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTExLTIxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcgb3BlcmF0aW9ucyB0aGF0
IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFkIG9mIEFTQ0lJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1
Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6Omdl
dFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyBjb25zdCk6IFVzZQorICAgICAgICBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlIGFuZCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgor
ICAgICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6Omlu
aXRUb1Jlc3VtZVdpdGhCdW5kbGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bWFya0FsbE1hdGNoZXNG
b3JUZXh0KTogRml4IG9sZCBjb2RlIHRoYXQgd2FzIHBhc3NpbmcgVGV4dENhc2VTZW5zaXRpdml0
eQorICAgICAgICB0byBhIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgdGFrZXMgRmluZE9wdGlvbnMu
IEJ5IGx1Y2ssIFRleHRDYXNlU2Vuc2l0aXZlIGhhcHBlbnMgdG8KKyAgICAgICAgYmUgMCwgd2hp
Y2ggaXMgY29ycmVjdCBGaW5kT3B0aW9ucyBmb3IgY2FzZSBzZW5zaXRpdmUgbWF0Y2hpbmcsIGFu
ZCBUZXh0Q2FzZUluc2Vuc2l0aXZlCisgICAgICAgIGhhcHBlbnMgdG8gYmUgMSwgd2hpY2ggaXMg
Y29ycmVjdCBGaW5kT3B0aW9ucyBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZywgc28gZml4
aW5nCisgICAgICAgIHRoZSBjb2RlIGRvZXMgbm90IGNhdXNlIGFueSBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKIDIwMTctMTEtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBvbGQgVVJMIHBhcnNlciByZW1uYW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmlu
ZGV4IGI0Y2VjNmI0ZTk5ODA4ODk5MmZhZjE1Yjc3OGY4NzgxYWNlNGI2MjcuLjc5NGU3ZmE3M2Nh
MmY5M2I3Y2Q5ZTg1YTVlZjkyNWEzNmY5MDAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTgxLDE0ICs4MSwxNCBA
QCBVbmlxdWVkU3RyaW5nSW1wbCogRGVzaXJlZElkZW50aWZpZXJzOjphdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKICAgICAgICAgcmVzdWx0ID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaW5kZXgp
LmltcGwoKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IG1fYWRkZWRJZGVudGlmaWVyc1tp
bmRleCAtIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCldOwotICAgIEFTU0VSVChy
ZXN1bHQtPmhhc0F0TGVhc3RPbmVSZWYoKSk7CisgICAgQVNTRVJUKHJlc3VsdC0+cmVmQ291bnQo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBEZXNpcmVkSWRlbnRpZmllcnM6OnJl
YWxseUFkZChWTSYgdm0sIENvbW1vbkRhdGEqIGNvbW1vbkRhdGEpCiB7CiAgICAgZm9yIChhdXRv
IHJlcCA6IG1fYWRkZWRJZGVudGlmaWVycykgewotICAgICAgICBBU1NFUlQocmVwLT5oYXNBdExl
YXN0T25lUmVmKCkpOworICAgICAgICBBU1NFUlQocmVwLT5yZWZDb3VudCgpKTsKICAgICAgICAg
Y29tbW9uRGF0YS0+ZGZnSWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoJnZt
LCByZXApKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDg0MzcwYjFhY2RlYmVjZjgzY2VmNGQ5NjgwM2RjMTA4YmZiNmQwZDguLjNiMzY3ZmY3YWUyMmQw
MDA4YmVlOWRlYzMzMTY4OWI0NWYyZmJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgaW4KIHN0YXRp
YyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwg
Ym9vbCBpc1JlZ2V4KQogewogICAgIGlmIChpc1JlZ2V4KSB7Ci0gICAgICAgIEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24gcmVnZXgocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAg
ICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4pOwogICAgICAg
ICByZXR1cm4gcmVnZXgubWF0Y2godXJsKSAhPSAtMTsKICAgICB9CiAgICAgcmV0dXJuIHVybCA9
PSBwYXR0ZXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmlu
ZGV4IGZkZWRhMWQxMzg1OThkYjBlMDI4ZDZiMjU1Y2FiMTc1MDY5MTZjNDguLjIwNjUyNzU2ZmU4
ZWJjYzUwOTcxYjFhODUxZmQzZDY5NzlmNGQyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTExNyw4ICsxMTcsNyBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmUgPSAyMDQ4Owogdm9pZCBKU1JvcGVTdHJp
bmc6OnJlc29sdmVSb3BlSW50ZXJuYWw4KExDaGFyKiBidWZmZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGlzU3Vic3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKAotICAgICAg
ICAgICAgYnVmZmVyLCBzdWJzdHJpbmdCYXNlKCktPm1fdmFsdWUuY2hhcmFjdGVyczgoKSArIHN1
YnN0cmluZ09mZnNldCgpLCBsZW5ndGgoKSk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
YWN0ZXJzKGJ1ZmZlciwgc3Vic3RyaW5nQmFzZSgpLT5tX3ZhbHVlLmNoYXJhY3RlcnM4KCkgKyBz
dWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApAQCAtMTM4LDcgKzEzNyw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZUludGVy
bmFsOE5vU3Vic3RyaW5nKExDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzX21heEludGVybmFsUm9wZUxlbmd0aCAmJiBmaWJlcihpKTsgKytpKSB7CiAgICAg
ICAgIGNvbnN0IFN0cmluZ0ltcGwmIGZpYmVyU3RyaW5nID0gKmZpYmVyKGkpLT5tX3ZhbHVlLmlt
cGwoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmliZXJTdHJpbmcubGVuZ3RoKCk7Ci0g
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFj
dGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9z
aXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiAgICAgICAgIHBvc2l0
aW9uICs9IGxlbmd0aDsKICAgICB9CiAgICAgQVNTRVJUKChidWZmZXIgKyBsZW5ndGgoKSkgPT0g
cG9zaXRpb24pOwpAQCAtMTQ3LDcgKzE0Niw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZl
Um9wZUludGVybmFsOE5vU3Vic3RyaW5nKExDaGFyKiBidWZmZXIpIGNvbnN0CiB2b2lkIEpTUm9w
ZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDE2KFVDaGFyKiBidWZmZXIpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKAor
ICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycygKICAgICAgICAgICAgIGJ1ZmZlciwg
c3Vic3RyaW5nQmFzZSgpLT5tX3ZhbHVlLmNoYXJhY3RlcnMxNigpICsgc3Vic3RyaW5nT2Zmc2V0
KCksIGxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2OSw5ICsxNjgsOSBA
QCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJbnRlcm5hbDE2Tm9TdWJzdHJpbmcoVUNo
YXIqIGJ1ZmZlcikgY29uc3QKICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCYgZmliZXJTdHJpbmcg
PSAqZmliZXIoaSktPm1fdmFsdWUuaW1wbCgpOwogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBm
aWJlclN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgaWYgKGZpYmVyU3RyaW5nLmlzOEJpdCgpKQot
ICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBvc2l0aW9uLCBmaWJlclN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJh
Y3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmli
ZXJTdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CisgICAgICAgICAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgZmliZXJTdHJpbmcuY2hhcmFjdGVyczE2KCksIGxl
bmd0aCk7CiAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9CiAgICAgQVNTRVJUKChi
dWZmZXIgKyBsZW5ndGgoKSkgPT0gcG9zaXRpb24pOwpAQCAtMzM1LDcgKzMzNCw3IEBAIHZvaWQg
SlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciogYnVmZmVyKSBjb25zdAog
ICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY3VycmVudEZpYmVyLT5sZW5ndGgo
KTsKICAgICAgICAgcG9zaXRpb24gLT0gbGVuZ3RoOwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcnMocG9zaXRpb24sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgIH0KIAog
ICAgIEFTU0VSVChidWZmZXIgPT0gcG9zaXRpb24pOwpAQCAtMzYzLDkgKzM2Miw5IEBAIHZvaWQg
SlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKiBidWZmZXIpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY3VycmVudEZpYmVyQXNSb3BlLT5sZW5n
dGgoKTsKICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSBsZW5ndGg7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5n
dGgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3Np
dGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKHBv
c2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgpOworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5n
LT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c19tYXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgY3VycmVudEZpYmVyQXNSb3BlLT5maWJlcihpKTsg
KytpKQpAQCAtMzc3LDkgKzM3Niw5IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZVNs
b3dDYXNlKFVDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmluZy0+bGVuZ3RoKCk7CiAgICAgICAgIHBvc2l0aW9uIC09IGxlbmd0aDsKICAgICAgICAgaWYg
KHN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9z
aXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnM4KCksIGxl
bmd0aCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhw
b3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKHBvc2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnMxNigp
LCBsZW5ndGgpOwogICAgIH0KIAogICAgIEFTU0VSVChidWZmZXIgPT0gcG9zaXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5k
ZXggYWRiZmFkMjExOWUwYzY5NDcxODVmMjFjOWMyYzM0MjFkNzQzNzExNS4uOGUyYTZlYmE0NWQw
MTRmZjE3MjZlYWRhYTk4MTY1MjkyZmI0YTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBl
eGVjLCBKU1N0cmluZyogc291cmMKICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAo
aW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsg
c3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0YSAr
IHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBi
dWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNjAsNyAr
MzYwLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3Mo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmMKICAgICBpbnQgYnVmZmVyUG9zID0gMDsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICBpZiAo
aW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJz
dHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURhdGEgKyBzdWJzdHJp
bmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICBidWZmZXJQb3MgKz0g
c3JjTGVuOwogICAgICAgICB9CiAgICAgfQpAQCAtNDEzLDEzICs0MTMsMTMgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVj
U3RhdGUqIGV4ZWMsIEoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhDb3VudDsgaSsr
KSB7CiAgICAgICAgICAgICBpZiAoaSA8IHJhbmdlQ291bnQpIHsKICAgICAgICAgICAgICAgICBp
ZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNl
RGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBz
b3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAg
ICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpIDwgc2VwYXJhdG9yQ291bnQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBv
cywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAgICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFy
YXRvcnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyUG9zICs9IHNlcExlbjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00
NDAsMTggKzQ0MCwxOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vi
c3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgICAgICBpZiAoaSA8
IHJhbmdlQ291bnQpIHsKICAgICAgICAgICAgIGlmIChpbnQgc3JjTGVuID0gc3Vic3RyaW5nUmFu
Z2VzW2ldLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaXM4Qml0KCkpCi0g
ICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQ
b3MsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBz
cmNMZW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhi
dWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpICsgc3Vic3RyaW5nUmFuZ2Vz
W2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNl
LmNoYXJhY3RlcnMxNigpICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBi
dWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3Np
dGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChpIDwgc2VwYXJhdG9yQ291bnQpIHsK
ICAgICAgICAgICAgIGlmIChpbnQgc2VwTGVuID0gc2VwYXJhdG9yc1tpXS5sZW5ndGgoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChzZXBhcmF0b3JzW2ldLmlzOEJpdCgpKQotICAgICAgICAgICAg
ICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0
b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9yc1tpXS5j
aGFyYWN0ZXJzOCgpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJh
dG9yc1tpXS5jaGFyYWN0ZXJzMTYoKSwgc2VwTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0b3JzW2ld
LmNoYXJhY3RlcnMxNigpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBz
ZXBMZW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3OTksNyArMTc5OSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0luY2x1ZGVzSW1wbChWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5jb250YWlucyhzZWFyY2hTdHJpbmcsIHRydWUsIHN0
YXJ0KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2Vh
cmNoSW4uZmluZChzZWFyY2hTdHJpbmcsIHN0YXJ0KSAhPSBub3RGb3VuZCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lv
bi5oCmluZGV4IDI4NDI3NzQzY2RmNmEzOGE5YTdhMGQyZWI3MTIzNjFmYzExN2I4ODMuLjIwNzM5
MGI1ZTllNzFhYTY2YTgyZWE0NTE2MzFiMWVjNDQ4NWNiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaApAQCAtMjksMTUgKzI5LDEzIEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLWVudW0gTXVsdGlsaW5lTW9kZSB7
Ci0gICAgTXVsdGlsaW5lRGlzYWJsZWQsCi0gICAgTXVsdGlsaW5lRW5hYmxlZAotfTsKK2VudW0g
TXVsdGlsaW5lTW9kZSB7IE11bHRpbGluZURpc2FibGVkLCBNdWx0aWxpbmVFbmFibGVkIH07Citl
bnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwgVGV4dENhc2VJbnNl
bnNpdGl2ZSB9OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZWd1bGFyRXhwcmVzc2lvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUmVndWxhckV4cHJl
c3Npb24oY29uc3QgU3RyaW5nJiwgVGV4dENhc2VTZW5zaXRpdml0eSwgTXVsdGlsaW5lTW9kZSA9
IE11bHRpbGluZURpc2FibGVkKTsKKyAgICBleHBsaWNpdCBSZWd1bGFyRXhwcmVzc2lvbihjb25z
dCBTdHJpbmcmLCBUZXh0Q2FzZVNlbnNpdGl2aXR5ID0gVGV4dENhc2VTZW5zaXRpdmUsIE11bHRp
bGluZU1vZGUgPSBNdWx0aWxpbmVEaXNhYmxlZCk7CiAgICAgflJlZ3VsYXJFeHByZXNzaW9uKCk7
CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaAppbmRleCBlYjU0ODI4YTI4ZWFkYTQwOTc0NWM4MWRl
ZDM3MWRiMjY2MmZiNTc2Li4yNjQyYTViYmViMmQwYjYzNDU3NThmMmY0MWI4YWNkZmZiNjhmNTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaApAQCAtMTk0LDQgKzE5NCw2IEBAIGlu
bGluZSB2b2lkIGNvcHlMQ2hhcnNGcm9tVUNoYXJTb3VyY2UoTENoYXIqIGRlc3RpbmF0aW9uLCBj
b25zdCBVQ2hhciogc291cmNlLCBzCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCit1c2luZyBXVEY6
OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKKwogI2VuZGlmIC8vIEFTQ0lJRmFzdFBhdGhfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggNzY1OGUwNTEyNTU5NDBmMTk5OTlhMjI5YzYy
M2Q5OGViZWYzMmE4Mi4uYjg2M2FiMDMzMTY4YWQ4NTIyNTQ4ZWE1MWQ0YmRlZDA3OTU1YmU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDA2LCAyMDA4LCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03Miw4ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBBdG9taWNTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpCisgICAgdGVtcGxh
dGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgQXRvbWljU3RyaW5nKGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRl
cmFsVGFnKQogICAgICAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZExpdGVyYWwo
Y2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKSkKICAgICB7CiAgICAgICAgIENPTVBJTEVf
QVNTRVJUKGNoYXJhY3RlckNvdW50ID4gMSwgQXRvbWljU3RyaW5nRnJvbUxpdGVyYWxOb3RFbXB0
eSk7CkBAIC0xMTIsNTEgKzExMSwyNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAgICAgLy8gSWYgd2UgbmVl
ZCBtb3JlIG92ZXJsb2FkcyBvZiB0aGUgbnVtYmVyIGZ1bmN0aW9uLCB3ZSBjYW4gYWRkIGFsbCB0
aGUgb3RoZXJzIHRoYXQgU3RyaW5nIGhhcywgYnV0IHRoZXNlIHNlZW0gdG8gZG8gZm9yIG5vdy4K
IAotICAgIGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29u
dGFpbnMoYyk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlu
cyhzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBz
KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzKTsgfQotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHMsIGNhc2VTZW5zaXRpdmUpOyB9Ci0g
ICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QK
LSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShzKTsg
fQotCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5maW5kKGMsIHN0YXJ0KTsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0
IExDaGFyKiBzLCB1bnNpZ25lZCBzdGFydCA9IDAsIGJvb2wgY2FzZVNlbnRpdGl2ZSA9IHRydWUp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQocywgc3RhcnQsIGNhc2VTZW50
aXRpdmUpOyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFy
dCA9IDAsIGJvb2wgY2FzZVNlbnRpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmQocywgc3RhcnQsIGNhc2VTZW50aXRpdmUpOyB9Ci0gICAgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQotICAgIHNpemVfdCBmaW5k
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHMs
IHN0YXJ0T2Zmc2V0KTsgfQotICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25Q
dHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQotCi0gICAgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJp
bmcuc3RhcnRzV2l0aChzKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKHMpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0
cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0
cmluZy5zdGFydHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRo
KFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0g
ICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9v
bCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcu
c3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKTsgfQotCi0gICAg
Ym9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
c3RyaW5nLmVuZHNXaXRoKHMpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5n
JiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5n
LmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChVQ2hhciBj
aGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJh
Y3Rlcik7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29sIGVu
ZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0
aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGg8bWF0
Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBib29sIGNvbnRhaW5zKFVD
aGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMoY2hhcmFjdGVy
KTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmluZyk7
IH0KKyAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJp
bmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nKTsgfQorCisgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFy
dCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoY2hhcmFjdGVyLCBzdGFydCk7IH0K
KyAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7IH0KKyAgICBzaXpl
X3QgZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywg
c3RhcnRPZmZzZXQpOyB9CisgICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmZpbmQobWF0Y2hGdW5jdGlvbiwgc3RhcnQpOyB9CisKKyAgICBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgo
c3RyaW5nKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAo
JnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRo
PG1hdGNoTGVuZ3RoPihwcmVmaXgpOyB9CisKKyAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzdHJpbmcpOyB9Cisg
ICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7
IH0KKyAgICBib29sIGVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuZW5kc1dpdGgoY2hhcmFjdGVyKTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNo
TGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCk7IH0K
IAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBBdG9taWNTdHJpbmcgY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQXRvbWljU3RyaW5n
IGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3Q7CkBAIC0xNzIsMTMgKzE0NywxMyBAQCBw
dWJsaWM6CiAjaWYgVVNFKENGKQogICAgIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZik7CiAjZW5k
aWYKKwogI2lmZGVmIF9fT0JKQ19fCiAgICAgQXRvbWljU3RyaW5nKE5TU3RyaW5nKik7CiAgICAg
b3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICNlbmRpZgog
Ci0gICAgLy8gQXRvbWljU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3RyaW5n
IGlmCi0gICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5j
ZXMuCisgICAgLy8gQXRvbWljU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3Ry
aW5nIGlmIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgog
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7CiAg
ICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKQEAgLTIyOSw1
MyArMjA0LDUzIEBAIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZygpCiB7CiB9CiAK
LWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogcykKLSAgICA6
IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6
OkF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogc3RyaW5nKQorICAgIDogbV9zdHJpbmcoQXRvbWlj
U3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0
b21pY1N0cmluZyhjb25zdCBjaGFyKiBzKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1w
bDo6YWRkKHMpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IGNoYXIq
IHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQog
ewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChz
LCBsZW5ndGgpKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFy
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0lt
cGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0
b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9zdHJp
bmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMsIGxlbmd0aCkpCitpbmxpbmUgQXRvbWljU3RyaW5n
OjpBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKQorICAg
IDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZywgbGVuZ3RoKSkKIHsKIH0K
IAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzKQotICAg
IDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHMpKQoraW5saW5lIEF0b21pY1N0cmlu
Zzo6QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9t
aWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6
QXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkKLSAgICA6IG1fc3RyaW5nKGltcCkK
K2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBzdHJp
bmcpCisgICAgOiBtX3N0cmluZyhzdHJpbmcpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6
OkF0b21pY1N0cmluZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiBpbXApCi0gICAgOiBtX3N0
cmluZyhXVEZNb3ZlKGltcCkpCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoV1RGTW92ZShz
dHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5n
SW1wbCogaW1wKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKGltcCkpCitp
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAg
IDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGlu
ZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdGF0aWNTdHJpbmdJbXBsKiBpbXAp
Ci0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoaW1wKSkKK2lubGluZSBBdG9t
aWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KIAotaW5s
aW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKLSAgICA6IG1f
c3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzLmltcGwoKSkpCitpbmxpbmUgQXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhB
dG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5nLmltcGwoKSkpCiB7CiB9CiAKQEAgLTI5MCwxNyAr
MjY1LDIxIEBAIGlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogfQogCiAjaWYgVVNFKENGKQotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWlj
U3RyaW5nKENGU3RyaW5nUmVmIHMpCi0gICAgOiAgbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6
YWRkKHMpKQorCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYg
c3RyaW5nKQorICAgIDogIG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQog
ewogfQorCiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoTlNTdHJpbmcqIHMpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBs
OjphZGQoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXMpKQorCitpbmxpbmUgQXRvbWljU3RyaW5nOjpB
dG9taWNTdHJpbmcoTlNTdHJpbmcqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmlu
Z0ltcGw6OmFkZCgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nKSkKIHsKIH0KKwogI2VuZGlm
CiAKIC8vIERlZmluZSBleHRlcm5hbCBnbG9iYWwgdmFyaWFibGVzIGZvciB0aGUgY29tbW9ubHkg
dXNlZCBhdG9taWMgc3RyaW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50
ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmgKaW5kZXggNjE5NDJlN2ZjNGIyNWNhMWI5MDU2MjQwMTc5ZDgxN2Zh
YWY1YjliZi4uOWRiODMwM2M4MzAxYjk3YzQzMDgyMDgyNmZhNDZhOTJjZTljZTkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTIy
LDE0ICsyMiwxMyBAQAogI2lmbmRlZiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uX2gKICNkZWZp
bmUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hh
ci5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIg
ewotICAgIFBvc2l0aXZlTnVtYmVyLAotICAgIE5lZ2F0aXZlTnVtYmVyCi19OworZW51bSBQb3Np
dGl2ZU9yTmVnYXRpdmVOdW1iZXIgeyBQb3NpdGl2ZU51bWJlciwgTmVnYXRpdmVOdW1iZXIgfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25U
cmFpdDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
blRyYWl0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJU
eXBlLCBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlwZSwgdHlwZW5hbWUgQWRkaXRp
b25hbEFyZ3VtZW50VHlwZT4KIHN0YXRpYyB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdJbXBsKFVuc2lnbmVkSW50ZWdl
clR5cGUgbnVtYmVyLCBBZGRpdGlvbmFsQXJndW1lbnRUeXBlIGFkZGl0aW9uYWxBcmd1bWVudCkK
QEAgLTYzLDcgKzYyLDYgQEAgaW5saW5lIHR5cGVuYW1lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b25UcmFpdDxUPjo6UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ1Vuc2kKICAgICByZXR1cm4gbnVt
YmVyVG9TdHJpbmdJbXBsPFQsIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlTnVtYmVyPihu
dW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7CiB9CiAKLQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0
aXZlTnVtYmVyIE51bWJlclR5cGU+CiBzdGF0aWMgdm9pZCB3cml0ZU51bWJlclRvQnVmZmVySW1w
bChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24p
CiB7CkBAIC05Nyw3ICs5NSw2IEBAIGlubGluZSB2b2lkIHdyaXRlTnVtYmVyVG9CdWZmZXJVbnNp
Z25lZChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQ2hhcmFjdGVyVHlwCiAgICAgcmV0dXJu
IHdyaXRlTnVtYmVyVG9CdWZmZXJJbXBsPENoYXJhY3RlclR5cGUsIFVuc2lnbmVkSW50ZWdlclR5
cGUsIFBvc2l0aXZlTnVtYmVyPihudW1iZXIsIGRlc3RpbmF0aW9uKTsKIH0KIAotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIg
TnVtYmVyVHlwZT4KIHN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZk51bWJlckFzU3RyaW5nSW1wbChV
bnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKIHsKQEAgLTEyOCw3ICsxMjUsNiBAQCBpbmxpbmUg
dW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ1Vuc2lnbmVkKFVuc2lnbmVkSW50ZWdlclR5
cGUgbnVtYmVyKQogICAgIHJldHVybiBsZW5ndGhPZk51bWJlckFzU3RyaW5nSW1wbDxVbnNpZ25l
ZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyKTsKIH0KIAotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogI2VuZGlmIC8vIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDE3ZjM5YjRiNjg5NGZlZWI1YjJjNzMyMzE5ZDJj
ZTdkMDI1YjU0MC4uZmFkNTA3NTBkYWZjY2VkNGIxYjViMTM2OGZhOTIyZTEwYWU5ZTA4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xNjIsNyArMTYyLDYgQEAgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ24KIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0
eSgpOwotCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChjaGFyYWN0ZXJzLCBs
ZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKSk7CiB9CiAKQEAgLTE3MCwxMiArMTY5LDEw
IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybiAqZW1wdHkoKTsKLQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwo
Y2hhcmFjdGVycywgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZykpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5ndGgsIENoYXJUeXBl
KiYgZGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVk
IGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomIGRhdGEpCiB7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAg
ICAgICAgZGF0YSA9IDA7CkBAIC0xODQsMjAgKzE4MSwxOSBAQCBpbmxpbmUgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5n
dGgsCiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KGxlbmd0
aCwgZGF0YSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLWlubGluZSBSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1w
dHkodW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlw
ZSomIGRhdGEpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCk7CiAKICAgICAvLyBBbGxvY2F0ZSBhIHNp
bmdsZSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIFN0cmluZ0ltcGwKICAgICAv
LyBzdHJ1Y3QgYXMgd2VsbCBhcyB0aGUgZGF0YSB3aGljaCBpdCBjb250YWlucy4gVGhpcyByZW1v
dmVzIG9uZQogICAgIC8vIGhlYXAgYWxsb2NhdGlvbiBmcm9tIHRoaXMgY2FsbC4KLSAgICBpZiAo
bGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2Yo
U3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJUeXBlKSkpCisgICAgaWYgKGxlbmd0aCA+ICgoc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAv
IHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgU3RyaW5nSW1w
bCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0
aW9uU2l6ZTxDaGFyVHlwZT4obGVuZ3RoKSkpOworICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0
YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hhcmFj
dGVyVHlwZT4obGVuZ3RoKSkpOwogCi0gICAgZGF0YSA9IHN0cmluZy0+dGFpbFBvaW50ZXI8Q2hh
clR5cGU+KCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJUeXBlPihzdHJpbmcs
IGxlbmd0aCk7CisgICAgZGF0YSA9IHN0cmluZy0+dGFpbFBvaW50ZXI8Q2hhcmFjdGVyVHlwZT4o
KTsKKyAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhcmFjdGVyVHlwZT4oc3RyaW5nLCBs
ZW5ndGgpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTIxMCw4ICsyMDYsNyBAQCBS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyKiYgZGF0YSkKICAgICByZXR1cm4gY3JlYXRlVW5pbml0aWFsaXplZEludGVy
bmFsKGxlbmd0aCwgZGF0YSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLWlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFsKFJlZjxT
dHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJUeXBlKiYg
ZGF0YSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmIG9y
aWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQogewog
ICAgIEFTU0VSVChvcmlnaW5hbFN0cmluZy0+aGFzT25lUmVmKCkpOwogICAgIEFTU0VSVChvcmln
aW5hbFN0cmluZy0+YnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVySW50ZXJuYWwpOwpAQCAtMjIy
LDE0ICsyMTcsMTQgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9j
YXRlSW50ZXJuYWwoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWwKICAgICB9CiAKICAgICAvLyBT
YW1lIGFzIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoKSBleGNlcHQgaGVyZSB3ZSB1c2Ugc3RyaW5nUmVh
bGxvYy4KLSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJUeXBlKSkpCisgICAgaWYg
KGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9m
KFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAgICAgICAgIENSQVNIKCk7
CiAKICAgICBvcmlnaW5hbFN0cmluZy0+flN0cmluZ0ltcGwoKTsKLSAgICBhdXRvKiBzdHJpbmcg
PSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nUmVhbGxvYygmb3JpZ2luYWxTdHJpbmcu
bGVha1JlZigpLCBhbGxvY2F0aW9uU2l6ZTxDaGFyVHlwZT4obGVuZ3RoKSkpOworICAgIGF1dG8q
IHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdSZWFsbG9jKCZvcmlnaW5h
bFN0cmluZy5sZWFrUmVmKCksIGFsbG9jYXRpb25TaXplPENoYXJhY3RlclR5cGU+KGxlbmd0aCkp
KTsKIAotICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJUeXBlPigpOwotICAgIHJl
dHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOworICAgIGRh
dGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJhY3RlclR5cGU+KCk7CisgICAgcmV0dXJuIGNv
bnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKIH0KIAogUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3Jp
Z2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKQpAQCAtMjQ0LDE1ICsy
MzksMTMgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUmVmPFN0cmlu
Z0ltcGw+JiYgb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmUKICAgICByZXR1cm4gcmVhbGxvY2F0ZUlu
dGVybmFsKFdURk1vdmUob3JpZ2luYWxTdHJpbmcpLCBsZW5ndGgsIGRhdGEpOwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwotCi0gICAgQ2hhclR5cGUqIGRhdGE7Cisg
ICAgQ2hhcmFjdGVyVHlwZSogZGF0YTsKICAgICBhdXRvIHN0cmluZyA9IGNyZWF0ZVVuaW5pdGlh
bGl6ZWRJbnRlcm5hbE5vbkVtcHR5KGxlbmd0aCwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIGNo
YXJhY3RlcnMsIGxlbmd0aCAqIHNpemVvZihDaGFyVHlwZSkpOworICAgIGNvcHlDaGFyYWN0ZXJz
KGRhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIApAQCAt
Mjc1LDcgKzI2OCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQ
b3NzaWJsZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduCiAgICAgYXV0byBzdHJpbmcg
PSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoY2hh
cmFjdGVyc1tpXSAmIDB4ZmYwMCkKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gJiAweEZGMDAp
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgICAg
IGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyc1tpXSk7CiAgICAgfQpAQCAt
Mjk4LDI5ICsyOTEsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlKGNvbnN0
IExDaGFyKiBzdHJpbmcpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAK
LWJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpCi17Ci0gICAgLy8gRklY
TUU6IFNob3VsZCByZW5hbWUgdGhpcyB0byBjb250YWluc09ubHlBU0NJSVdoaXRlc3BhY2UuCi0g
ICAgLy8gTW9zdCBXZWJLaXQgY2FsbGVycyBpbnN0ZWFkIHdhbnQgY29udGFpbnNPbmx5SFRNTFdo
aXRlc3BhY2Ugd2hpY2gsIHVubGlrZSB0aGlzLAotICAgIC8vIHdvdWxkICpub3QqIHRyZWF0IFUr
MDAwQiBMSU5FIFRBQlVMQVRJT04gYXMgYSBzcGFjZS4KLQotICAgIGlmIChpczhCaXQoKSkgewot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgVUNoYXIgYyA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlTcGFj
ZShjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IG1fZGF0YTE2W2ldOwotICAgICAgICBpZiAo
IWlzQVNDSUlTcGFjZShjKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdWJzdHJpbmco
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoc3RhcnQgPj0gbV9s
ZW5ndGgpCkBAIC0zODEsMTEgKzM1MSw4IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
b252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICBpZiAoIShvcmVkICYgfjB4N0Yp
KSB7CiAgICAgICAgIFVDaGFyKiBkYXRhMTY7CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0
ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhMTYpOwotICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIFVDaGFyIGMgPSBtX2RhdGExNltpXTsKLSAgICAgICAgICAgIGRhdGExNltpXSA9
IHRvQVNDSUlMb3dlcihjKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRhdGExNltpXSA9IHRvQVNDSUlMb3dl
cihtX2RhdGExNltpXSk7CiAgICAgICAgIHJldHVybiBuZXdJbXBsOwogICAgIH0KIApAQCAtNDUy
LDkgKzQxOSw5IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9VcHBlcmNh
c2VXaXRob3V0TG9jYWxlKCkKICAgICAgICAgLy8gRG8gYSBmYXN0ZXIgbG9vcCBmb3IgdGhlIGNh
c2Ugd2hlcmUgYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KICAgICAgICAgdW5zaWduZWQg
b3JlZCA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgb3JlZCB8PSBjOwot
ICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJVXBwZXIoYyk7CisgICAgICAgICAgICBMQ2hh
ciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAgb3JlZCB8PSBjaGFyYWN0ZXI7
CisgICAgICAgICAgICBkYXRhOFtpXSA9IHRvQVNDSUlVcHBlcihjaGFyYWN0ZXIpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghKG9yZWQgJiB+MHg3RikpCiAgICAgICAgICAgICByZXR1cm4gbmV3
SW1wbDsKQEAgLTQ2NiwxMSArNDMzLDExIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkKICAgICAgICAgLy8gIDEuIFNvbWUgTGF0
aW4tMSBjaGFyYWN0ZXJzIHdoZW4gY29udmVydGVkIHRvIHVwcGVyIGNhc2UgYXJlIDE2IGJpdCBj
aGFyYWN0ZXJzLgogICAgICAgICAvLyAgMi4gTG93ZXIgY2FzZSBzaGFycC1TIGNvbnZlcnRzIHRv
ICJTUyIgKHR3byBjaGFyYWN0ZXJzKQogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThbaV07Ci0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoYyA9PSBzbWFsbExldHRlclNoYXJwUykpCisgICAgICAgICAgICBM
Q2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGNo
YXJhY3RlciA9PSBzbWFsbExldHRlclNoYXJwUykpCiAgICAgICAgICAgICAgICAgKytudW1iZXJT
aGFycFNDaGFyYWN0ZXJzOwotICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjKSA8PSAweEZG
RkYpOwotICAgICAgICAgICAgVUNoYXIgdXBwZXIgPSB1X3RvdXBwZXIoYyk7CisgICAgICAgICAg
ICBBU1NFUlQodV90b3VwcGVyKGNoYXJhY3RlcikgPD0gMHhGRkZGKTsKKyAgICAgICAgICAgIFVD
aGFyIHVwcGVyID0gdV90b3VwcGVyKGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodXBwZXIgPiAweEZGKSkgewogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgdXBwZXIt
Y2FzZWQgY2hhcmFjdGVyIGRvZXMgbm90IGZpdCBpbiBhbiA4LWJpdCBzdHJpbmcsIHdlIG5lZWQg
dG8gdGFrZSB0aGUgMTYtYml0IHBhdGguCiAgICAgICAgICAgICAgICAgZ290byB1cGNvbnZlcnQ7
CkBAIC00ODcsMTMgKzQ1NCwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVy
dFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIExDaGFyKiBkZXN0ID0gZGF0YTg7
CiAKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKGMgPT0gc21hbGxM
ZXR0ZXJTaGFycFMpIHsKKyAgICAgICAgICAgIExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07
CisgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IHNtYWxsTGV0dGVyU2hhcnBTKSB7CiAgICAg
ICAgICAgICAgICAgKmRlc3QrKyA9ICdTJzsKICAgICAgICAgICAgICAgICAqZGVzdCsrID0gJ1Mn
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVy
KGMpIDw9IDB4RkYpOwotICAgICAgICAgICAgICAgICpkZXN0KysgPSBzdGF0aWNfY2FzdDxMQ2hh
cj4odV90b3VwcGVyKGMpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGNoYXJh
Y3RlcikgPD0gMHhGRik7CisgICAgICAgICAgICAgICAgKmRlc3QrKyA9IHN0YXRpY19jYXN0PExD
aGFyPih1X3RvdXBwZXIoY2hhcmFjdGVyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtNTEwLDkgKzQ3Nyw5IEBAIHVwY29udmVydDoKICAgICAvLyBEbyBhIGZhc3RlciBsb29wIGZv
ciB0aGUgY2FzZSB3aGVyZSBhbGwgdGhlIGNoYXJhY3RlcnMgYXJlIEFTQ0lJLgogICAgIHVuc2ln
bmVkIG9yZWQgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgVUNoYXIgYyA9IHNvdXJjZTE2W2ldOwotICAgICAgICBvcmVkIHw9IGM7Ci0gICAgICAg
IGRhdGExNltpXSA9IHRvQVNDSUlVcHBlcihjKTsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0g
c291cmNlMTZbaV07CisgICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyOworICAgICAgICBkYXRhMTZb
aV0gPSB0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyKTsKICAgICB9CiAgICAgaWYgKCEob3JlZCAmIH4w
eDdGKSkKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC02MzQsOCArNjAxLDcgQEAgU2xvd1Bh
dGg6CiAgICAgICAgIGlmICghbmVlZDE2Qml0Q2hhcmFjdGVycykgewogICAgICAgICAgICAgTENo
YXIqIGRhdGE4OwogICAgICAgICAgICAgYXV0byBmb2xkZWQgPSBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTgpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGZhaWxpbmdJbmRleDsgKytpKQotICAgICAgICAgICAgICAgIGRhdGE4
W2ldID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGE4LCBtX2Rh
dGE4LCBmYWlsaW5nSW5kZXgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZmFpbGlu
Z0luZGV4OyBpIDwgbV9sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2hhcmFj
dGVyID0gbV9kYXRhOFtpXTsKICAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSShjaGFyYWN0ZXIp
KQpAQCAtNzA3LDggKzY3Myw3IEBAIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYgaW1wbCwgY29uCiBTbG93UGF0aDoK
ICAgICBDaGFyYWN0ZXJUeXBlKiBuZXdEYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVu
aW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KGxlbmd0aCwgbmV3RGF0YSk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZhaWxpbmdJbmRleDsgKytpKQotICAgICAgICBuZXdEYXRhW2ld
ID0gZGF0YVtpXTsKKyAgICBjb3B5Q2hhcmFjdGVycyhuZXdEYXRhLCBkYXRhLCBmYWlsaW5nSW5k
ZXgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IGxlbmd0aDsgKytp
KQogICAgICAgICBuZXdEYXRhW2ldID0gdHlwZSA9PSBDYXNlQ29udmVydFR5cGU6Okxvd2VyID8g
dG9BU0NJSUxvd2VyKGRhdGFbaV0pIDogdG9BU0NJSVVwcGVyKGRhdGFbaV0pOwogICAgIHJldHVy
biBuZXdJbXBsOwpAQCAtNzYwLDkgKzcyNSw5IEBAIGNsYXNzIFVDaGFyUHJlZGljYXRlIHsKIHB1
YmxpYzoKICAgICBpbmxpbmUgVUNoYXJQcmVkaWNhdGUoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
ciBmdW5jdGlvbik6IG1fZnVuY3Rpb24oZnVuY3Rpb24pIHsgfQogCi0gICAgaW5saW5lIGJvb2wg
b3BlcmF0b3IoKShVQ2hhciBjaCkgY29uc3QKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKFVD
aGFyIGNoYXJhY3RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKGNo
KTsKKyAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24oY2hhcmFjdGVyKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC03NzEsOSArNzM2LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3BhY2VPck5ld2xpbmVQ
cmVkaWNhdGUgewogcHVibGljOgotICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoVUNoYXIgY2gp
IGNvbnN0CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShjaCk7CisgICAgICAgIHJl
dHVybiBpc1NwYWNlT3JOZXdsaW5lKGNoYXJhY3Rlcik7CiAgICAgfQogfTsKIApAQCAtNzg3LDEx
ICs3NTIsMTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0cmlwV2hpdGVTcGFjZShJ
c1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UKICAgICByZXR1cm4gc3RyaXBNYXRj
aGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZShpc1doaXRlU3BhY2UpKTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1v
dmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoKQogewotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tID0g
Y2hhcmFjdGVyczsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0
aDsKKyAgICBhdXRvKiBmcm9tID0gY2hhcmFjdGVyczsKKyAgICBhdXRvKiBmcm9tZW5kID0gZnJv
bSArIG1fbGVuZ3RoOwogICAgIAogICAgIC8vIEFzc3VtZSB0aGUgY29tbW9uIGNhc2Ugd2lsbCBu
b3QgcmVtb3ZlIGFueSBjaGFyYWN0ZXJzCiAgICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiAh
ZmluZE1hdGNoKCpmcm9tKSkKQEAgLTc5OSwxMiArNzYzLDEyIEBAIEFMV0FZU19JTkxJTkUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUq
IGNoYXJhCiAgICAgaWYgKGZyb20gPT0gZnJvbWVuZCkKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIAotICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7Ci0gICAgQ2hh
clR5cGUqIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CisgICAgU3RyaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+IGRhdGEobV9sZW5ndGgpOworICAgIGF1dG8qIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7
CiAgICAgdW5zaWduZWQgb3V0YyA9IGZyb20gLSBjaGFyYWN0ZXJzOwogICAgIAogICAgIGlmIChv
dXRjKQotICAgICAgICBtZW1jcHkodG8sIGNoYXJhY3RlcnMsIG91dGMgKiBzaXplb2YoQ2hhclR5
cGUpKTsKKyAgICAgICAgY29weUNoYXJhY3RlcnModG8sIGNoYXJhY3RlcnMsIG91dGMpOwogCiAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiBmaW5k
TWF0Y2goKmZyb20pKQpAQCAtODI3LDE3ICs3OTEsMTYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0
Y2gKICAgICByZXR1cm4gcmVtb3ZlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzMTYoKSwgZmluZE1hdGNo
KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0
ZT4KLWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hh
cmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGljYXRlKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+IGlubGluZSBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQ
cmVkaWNhdGUgcHJlZGljYXRlKQogewotICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YSht
X2xlbmd0aCk7CisgICAgU3RyaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGRhdGEobV9sZW5ndGgp
OwogCi0gICAgY29uc3QgQ2hhclR5cGUqIGZyb20gPSBjaGFyYWN0ZXJzPENoYXJUeXBlPigpOwot
ICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0gZnJvbSArIG1fbGVuZ3RoOworICAgIGF1dG8q
IGZyb20gPSBjaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCk7CisgICAgYXV0byogZnJvbWVuZCA9
IGZyb20gKyBtX2xlbmd0aDsKICAgICBpbnQgb3V0YyA9IDA7CiAgICAgYm9vbCBjaGFuZ2VkVG9T
cGFjZSA9IGZhbHNlOwogICAgIAotICAgIENoYXJUeXBlKiB0byA9IGRhdGEuY2hhcmFjdGVycygp
OworICAgIGF1dG8qIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CiAgICAgCiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiBwcmVkaWNhdGUoKmZyb20p
KSB7CkBAIC05NjIsNTQgKzkyNSw2IEBAIGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCog
b2spCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0
aCwgb2spOwogfQogCi0vLyBUYWJsZSBpcyBiYXNlZCBvbiBmdHA6Ly9mdHAudW5pY29kZS5vcmcv
UHVibGljL1VOSURBVEEvQ2FzZUZvbGRpbmcudHh0Ci1zdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4x
Q2FzZUZvbGRUYWJsZVsyNTZdID0gewotICAgIDB4MDAwMCwgMHgwMDAxLCAweDAwMDIsIDB4MDAw
MywgMHgwMDA0LCAweDAwMDUsIDB4MDAwNiwgMHgwMDA3LCAweDAwMDgsIDB4MDAwOSwgMHgwMDBh
LCAweDAwMGIsIDB4MDAwYywgMHgwMDBkLCAweDAwMGUsIDB4MDAwZiwKLSAgICAweDAwMTAsIDB4
MDAxMSwgMHgwMDEyLCAweDAwMTMsIDB4MDAxNCwgMHgwMDE1LCAweDAwMTYsIDB4MDAxNywgMHgw
MDE4LCAweDAwMTksIDB4MDAxYSwgMHgwMDFiLCAweDAwMWMsIDB4MDAxZCwgMHgwMDFlLCAweDAw
MWYsCi0gICAgMHgwMDIwLCAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAweDAwMjQsIDB4MDAyNSwg
MHgwMDI2LCAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMmEsIDB4MDAyYiwgMHgwMDJjLCAw
eDAwMmQsIDB4MDAyZSwgMHgwMDJmLAotICAgIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAz
MywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDNh
LCAweDAwM2IsIDB4MDAzYywgMHgwMDNkLCAweDAwM2UsIDB4MDAzZiwKLSAgICAweDAwNDAsIDB4
MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywgMHgw
MDY4LCAweDAwNjksIDB4MDA2YSwgMHgwMDZiLCAweDAwNmMsIDB4MDA2ZCwgMHgwMDZlLCAweDAw
NmYsCi0gICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwg
MHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4MDA1YiwgMHgwMDVjLCAw
eDAwNWQsIDB4MDA1ZSwgMHgwMDVmLAotICAgIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2
MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZh
LCAweDAwNmIsIDB4MDA2YywgMHgwMDZkLCAweDAwNmUsIDB4MDA2ZiwKLSAgICAweDAwNzAsIDB4
MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgw
MDc4LCAweDAwNzksIDB4MDA3YSwgMHgwMDdiLCAweDAwN2MsIDB4MDA3ZCwgMHgwMDdlLCAweDAw
N2YsCi0gICAgMHgwMDgwLCAweDAwODEsIDB4MDA4MiwgMHgwMDgzLCAweDAwODQsIDB4MDA4NSwg
MHgwMDg2LCAweDAwODcsIDB4MDA4OCwgMHgwMDg5LCAweDAwOGEsIDB4MDA4YiwgMHgwMDhjLCAw
eDAwOGQsIDB4MDA4ZSwgMHgwMDhmLAotICAgIDB4MDA5MCwgMHgwMDkxLCAweDAwOTIsIDB4MDA5
MywgMHgwMDk0LCAweDAwOTUsIDB4MDA5NiwgMHgwMDk3LCAweDAwOTgsIDB4MDA5OSwgMHgwMDlh
LCAweDAwOWIsIDB4MDA5YywgMHgwMDlkLCAweDAwOWUsIDB4MDA5ZiwKLSAgICAweDAwYTAsIDB4
MDBhMSwgMHgwMGEyLCAweDAwYTMsIDB4MDBhNCwgMHgwMGE1LCAweDAwYTYsIDB4MDBhNywgMHgw
MGE4LCAweDAwYTksIDB4MDBhYSwgMHgwMGFiLCAweDAwYWMsIDB4MDBhZCwgMHgwMGFlLCAweDAw
YWYsCi0gICAgMHgwMGIwLCAweDAwYjEsIDB4MDBiMiwgMHgwMGIzLCAweDAwYjQsIDB4MDNiYywg
MHgwMGI2LCAweDAwYjcsIDB4MDBiOCwgMHgwMGI5LCAweDAwYmEsIDB4MDBiYiwgMHgwMGJjLCAw
eDAwYmQsIDB4MDBiZSwgMHgwMGJmLAotICAgIDB4MDBlMCwgMHgwMGUxLCAweDAwZTIsIDB4MDBl
MywgMHgwMGU0LCAweDAwZTUsIDB4MDBlNiwgMHgwMGU3LCAweDAwZTgsIDB4MDBlOSwgMHgwMGVh
LCAweDAwZWIsIDB4MDBlYywgMHgwMGVkLCAweDAwZWUsIDB4MDBlZiwKLSAgICAweDAwZjAsIDB4
MDBmMSwgMHgwMGYyLCAweDAwZjMsIDB4MDBmNCwgMHgwMGY1LCAweDAwZjYsIDB4MDBkNywgMHgw
MGY4LCAweDAwZjksIDB4MDBmYSwgMHgwMGZiLCAweDAwZmMsIDB4MDBmZCwgMHgwMGZlLCAweDAw
ZGYsCi0gICAgMHgwMGUwLCAweDAwZTEsIDB4MDBlMiwgMHgwMGUzLCAweDAwZTQsIDB4MDBlNSwg
MHgwMGU2LCAweDAwZTcsIDB4MDBlOCwgMHgwMGU5LCAweDAwZWEsIDB4MDBlYiwgMHgwMGVjLCAw
eDAwZWQsIDB4MDBlZSwgMHgwMGVmLAotICAgIDB4MDBmMCwgMHgwMGYxLCAweDAwZjIsIDB4MDBm
MywgMHgwMGY0LCAweDAwZjUsIDB4MDBmNiwgMHgwMGY3LCAweDAwZjgsIDB4MDBmOSwgMHgwMGZh
LCAweDAwZmIsIDB4MDBmYywgMHgwMGZkLCAweDAwZmUsIDB4MDBmZiwKLX07Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBMQ2hhciogYSwgY29u
c3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICB3aGlsZSAobGVuZ3RoLS0pIHsK
LSAgICAgICAgaWYgKGxhdGluMUNhc2VGb2xkVGFibGVbKmErK10gIT0gbGF0aW4xQ2FzZUZvbGRU
YWJsZVsqYisrXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVz
cyhjb25zdCBVQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAg
ICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgaWYgKHVfZm9sZENhc2UoKmErKywgVV9GT0xE
X0NBU0VfREVGQVVMVCkgIT0gbGF0aW4xQ2FzZUZvbGRUYWJsZVsqYisrXSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBMQ2hhciogYSwgY29uc3Qg
VUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gZXF1YWxDb21wYXRpYmls
aXR5Q2FzZWxlc3MoYiwgYSwgbGVuZ3RoKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGVxdWFs
Q29tcGF0aWJpbGl0eUNhc2VsZXNzKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiAhdV9tZW1jYXNlY21wKGEsIGIsIGxlbmd0aCwg
VV9GT0xEX0NBU0VfREVGQVVMVCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQpCiB7CiAg
ICAgaWYgKGlzOEJpdCgpKQpAQCAtMTA4OSw1MCArMTAwNCw2IEBAIHNpemVfdCBTdHJpbmdJbXBs
OjpmaW5kKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiAgICAgcmV0
dXJuIGluZGV4ICsgaTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0Nhc2Uo
Y29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBDaGVj
ayBmb3IgbnVsbCBvciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAotICAgIGlmICghbWF0
Y2hTdHJpbmcpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICBzaXplX3QgbWF0Y2hTdHJp
bmdMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obWF0Y2hTdHJp
bmcpKTsKLSAgICBpZiAobWF0Y2hTdHJpbmdMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgdW5zaWduZWQgbWF0Y2hMZW5n
dGggPSBtYXRjaFN0cmluZ0xlbmd0aDsKLSAgICBpZiAoIW1hdGNoTGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCgpKTsKLQotICAgIC8vIENoZWNrIGluZGV4ICYg
bWF0Y2hMZW5ndGggYXJlIGluIHJhbmdlLgotICAgIGlmIChpbmRleCA+IGxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gbGVuZ3Ro
KCkgLSBpbmRleDsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBzZWFyY2hMZW5ndGgpCi0gICAgICAg
IHJldHVybiBub3RGb3VuZDsKLSAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9u
YWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1
bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3RoOwotCi0gICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBzZWFyY2hDaGFyYWN0ZXJzID0gY2hhcmFj
dGVyczgoKSArIGluZGV4OwotCi0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICB3aGls
ZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENoYXJhY3RlcnMgKyBpLCBtYXRj
aFN0cmluZywgbWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgICAgICBpZiAoaSA9PSBkZWx0YSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGluZGV4ICsgaTsKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciog
c2VhcmNoQ2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpICsgaW5kZXg7Ci0KLSAgICB1bnNpZ25l
ZCBpID0gMDsKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENo
YXJhY3RlcnMgKyBpLCBtYXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpKSB7Ci0gICAgICAgIGlmIChp
ID09IGRlbHRhKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICArK2k7Ci0g
ICAgfQotICAgIHJldHVybiBpbmRleCArIGk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5k
KFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nKQogewogICAgIC8vIENoZWNrIGZvciBudWxsIHN0cmlu
ZyB0byBtYXRjaCBhZ2FpbnN0CkBAIC0xMTgxLDUwICsxMDUyLDYgQEAgc2l6ZV90IFN0cmluZ0lt
cGw6OmZpbmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIHJl
dHVybiBmaW5kQ29tbW9uKCp0aGlzLCAqbWF0Y2hTdHJpbmcsIGluZGV4KTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVy
VHlwZT4KLUFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlSW5uZXIo
Y29uc3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hD
aGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBz
ZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQotewotICAgIC8vIGRlbHRhIGlzIHRo
ZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0aW1lcyB0byB0ZXN0OyBkZWx0YSA9PSAwIG1lYW5zIHRl
c3Qgb25seSBvbmNlLgotICAgIHVuc2lnbmVkIGRlbHRhID0gc2VhcmNoTGVuZ3RoIC0gbWF0Y2hM
ZW5ndGg7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAvLyBrZWVwIGxvb3BpbmcgdW50aWwg
d2UgbWF0Y2gKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENo
YXJhY3RlcnMgKyBpLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBp
ZiAoaSA9PSBkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgKytp
OwotICAgIH0KLSAgICByZXR1cm4gaW5kZXggKyBpOwotfQotCi1zaXplX3QgU3RyaW5nSW1wbDo6
ZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgp
Ci17Ci0gICAgLy8gQ2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWlu
c3QKLSAgICBpZiAoIW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAg
dW5zaWduZWQgbWF0Y2hMZW5ndGggPSBtYXRjaFN0cmluZy0+bGVuZ3RoKCk7Ci0gICAgaWYgKCFt
YXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4LCBsZW5ndGgoKSk7Ci0K
LSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KLSAgICBpZiAo
aW5kZXggPiBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVk
IHNlYXJjaExlbmd0aCA9IGxlbmd0aCgpIC0gaW5kZXg7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4g
c2VhcmNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0KLSAgICBpZiAoaXM4Qml0
KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczgoKSArIGluZGV4LCBtYXRjaFN0
cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwot
ICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCkgKyBpbmRl
eCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgc2VhcmNoTGVuZ3RoLCBtYXRj
aExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKLSAgICAg
ICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJzMTYoKSArIGluZGV4LCBt
YXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5n
dGgpOwotCi0gICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJzMTYoKSAr
IGluZGV4LCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGluZGV4LCBzZWFyY2hMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLX0KLQogc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykgY29uc3QKIHsKICAgICByZXR1cm4g
OjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgbWF0Y2hTdHJpbmcsIDApOwpAQCAt
MTI0OSwxMSArMTA3NiwxMSBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZAogICAgIHJldHVybiA6
OldURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqbWF0Y2hTdHJpbmcsIHN0YXJ0T2Zm
c2V0KTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGMsIHVuc2ln
bmVkIGluZGV4KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3Rl
ciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgYywgaW5kZXgpOwotICAg
IHJldHVybiBXVEY6OnJldmVyc2VGaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgYywgaW5k
ZXgpOworICAgICAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzOCgpLCBtX2xl
bmd0aCwgY2hhcmFjdGVyLCBpbmRleCk7CisgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hh
cmFjdGVyczE2KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIGluZGV4KTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlw
ZT4KQEAgLTEzMTYsMTAwICsxMTQzLDQ4IEBAIHNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmlu
ZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCiAgICAgcmV0dXJuIHJl
dmVyc2VGaW5kSW5uZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYo
KSwgaW5kZXgsIG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgotQUxX
QVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIoY29u
c3QgU2VhcmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFy
YWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVh
bElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNv
bnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKIHsKLSAgICAvLyBk
ZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0g
MCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHN0ZDo6bWluKGlu
ZGV4LCBsZW5ndGggLSBtYXRjaExlbmd0aCk7CisgICAgQVNTRVJUKG1hdGNoTGVuZ3RoIDw9IHN0
cmluZy5sZW5ndGgoKSk7CisgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ICsgbWF0Y2hMZW5ndGggPD0g
c3RyaW5nLmxlbmd0aCgpKTsKIAotICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaAot
ICAgIHdoaWxlICghZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Moc2VhcmNoQ2hhcmFjdGVycyAr
IGRlbHRhLCBtYXRjaENoYXJhY3RlcnMsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBpZiAoIWRl
bHRhKQotICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICAtLWRlbHRhOwotICAg
IH0KLSAgICByZXR1cm4gZGVsdGE7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
cmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKIH0KIAot
c2l6ZV90IFN0cmluZ0ltcGw6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKK0FMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1
YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBj
b25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZykKIHsKLSAgICAvLyBDaGVjayBmb3IgbnVsbCBv
ciBlbXB0eSBzdHJpbmcgdG8gbWF0Y2ggYWdhaW5zdAotICAgIGlmICghbWF0Y2hTdHJpbmcpCi0g
ICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNpZ25lZCBtYXRjaExlbmd0aCA9IG1hdGNo
U3RyaW5nLT5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBvdXJMZW5ndGggPSBsZW5ndGgoKTsKLSAg
ICBpZiAoIW1hdGNoTGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RkOjptaW4oaW5kZXgsIG91ckxl
bmd0aCk7Ci0KLSAgICAvLyBDaGVjayBpbmRleCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4K
LSAgICBpZiAobWF0Y2hMZW5ndGggPiBvdXJMZW5ndGgpCi0gICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKLQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBpZiAobWF0Y2hTdHJpbmctPmlzOEJp
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hh
cmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBvdXJMZW5ndGgs
IG1hdGNoTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5u
ZXIoY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3Vy
TGVuZ3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgfQotCi0gICAgaWYgKG1hdGNoU3RyaW5nLT5pczhC
aXQoKSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFj
dGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3VyTGVuZ3RoLCBt
YXRjaExlbmd0aCk7Ci0KLSAgICByZXR1cm4gcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2VJbm5lcihj
aGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgZXF1YWxJ
bm5lcihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
Y29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VT
ZW5zaXRpdmUpCi17Ci0gICAgQVNTRVJUKHN0cmluZ0ltcGwpOwotICAgIEFTU0VSVChtYXRjaExl
bmd0aCA8PSBzdHJpbmdJbXBsLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ICsg
bWF0Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwotCi0gICAgaWYgKGNhc2VTZW5z
aXRpdmUpIHsKLSAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQotICAgICAgICAgICAg
cmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOwot
ICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9m
ZnNldCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hM
ZW5ndGgpOwotICAgIH0KLSAgICBpZiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiBlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzOCgp
ICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmlu
ZyksIG1hdGNoTGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Mo
c3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0Y2hMZW5ndGgpOwotfQotCi1BTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nSW1w
bCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nKQot
ewotICAgIGlmIChzdGFydE9mZnNldCA+IHN0cmluZ0ltcGwubGVuZ3RoKCkpCisgICAgaWYgKHN0
YXJ0T2Zmc2V0ID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpID4gc3RyaW5nSW1wbC5sZW5ndGgoKSkKKyAgICBpZiAo
bWF0Y2hTdHJpbmcubGVuZ3RoKCkgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAobWF0Y2hTdHJpbmcubGVuZ3RoKCkgKyBzdGFydE9mZnNldCA+IHN0cmlu
Z0ltcGwubGVuZ3RoKCkpCisgICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpICsgc3RhcnRPZmZz
ZXQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChz
dHJpbmdJbXBsLmlzOEJpdCgpKSB7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewogICAgICAg
ICBpZiAobWF0Y2hTdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwoc3Ry
aW5nSW1wbC5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3Rl
cnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmlu
Z0ltcGwuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHN0
cmluZy5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4
KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5j
aGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBt
YXRjaFN0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogICAgIGlmIChtYXRjaFN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwuY2hhcmFjdGVyczE2KCkgKyBzdGFy
dE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkp
OwotICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZz
ZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwg
bWF0Y2hTdHJpbmcuY2hhcmFjdGVyczgoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOworICAgIHJl
dHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJp
bmcuY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKIH0KIAotYm9vbCBTdHJp
bmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqIHN0cikgY29uc3QKK2Jvb2wgU3Ry
aW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFzdHIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gOjpXVEY6OnN0
YXJ0c1dpdGgoKnRoaXMsICpzdHIpOworICAgIHJldHVybiBzdHJpbmcgJiYgOjpXVEY6OnN0YXJ0
c1dpdGgoKnRoaXMsICpzdHJpbmcpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgo
Y29uc3QgU3RyaW5nSW1wbCYgc3RyKSBjb25zdAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykgY29uc3QKIHsKLSAgICByZXR1cm4gOjpXVEY6OnN0
YXJ0c1dpdGgoKnRoaXMsIHN0cik7CisgICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlz
LCBzdHJpbmcpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFwcmVmaXgp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKKyAgICByZXR1cm4gcHJlZml4ICYmIDo6
V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICpwcmVmaXgpOwogfQogCiBi
b29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJ
bXBsJiBwcmVmaXgpIGNvbnN0CkBAIC0xNDIyLDEyICsxMTk3LDkgQEAgYm9vbCBTdHJpbmdJbXBs
OjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKICAgICByZXR1cm4gbV9sZW5ndGgg
JiYgKCp0aGlzKVswXSA9PSBjaGFyYWN0ZXI7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6c3RhcnRz
V2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBj
aGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKG1hdGNoTGVuZ3RoKTsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBsZW5ndGgoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlcXVhbElubmVyKHRoaXMsIDAsIG1hdGNoU3Ry
aW5nLCBtYXRjaExlbmd0aCwgY2FzZVNlbnNpdGl2ZSk7CisgICAgcmV0dXJuIG1hdGNoTGVuZ3Ro
IDw9IGxlbmd0aCgpICYmIGVxdWFsSW5uZXIoKnRoaXMsIDAsIG1hdGNoU3RyaW5nLCBtYXRjaExl
bmd0aCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0
cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKQEAgLTE0
MzcsMTAgKzEyMDksNyBAQCBib29sIFN0cmluZ0ltcGw6Omhhc0luZml4U3RhcnRpbmdBdChjb25z
dCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcgogCiBib29sIFN0cmluZ0lt
cGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIHN1ZmZpeCkKIHsKLSAgICBpZiAoIXN1ZmZpeCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywg
KnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGgoKnRoaXMsICpz
dWZmaXgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwmIHN1ZmZp
eCkKQEAgLTE0NDgsMjIgKzEyMTcsOSBAQCBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmlu
Z0ltcGwmIHN1ZmZpeCkKICAgICByZXR1cm4gOjpXVEY6OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgp
OwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5n
LCBib29sIGNhc2VTZW5zaXRpdmUpCi17Ci0gICAgQVNTRVJUKG1hdGNoU3RyaW5nKTsKLSAgICBp
ZiAobV9sZW5ndGggPj0gbWF0Y2hTdHJpbmctPm1fbGVuZ3RoKSB7Ci0gICAgICAgIHVuc2lnbmVk
IHN0YXJ0ID0gbV9sZW5ndGggLSBtYXRjaFN0cmluZy0+bV9sZW5ndGg7Ci0gICAgICAgIHJldHVy
biAoY2FzZVNlbnNpdGl2ZSA/IGZpbmQobWF0Y2hTdHJpbmcsIHN0YXJ0KSA6IGZpbmRJZ25vcmlu
Z0Nhc2UobWF0Y2hTdHJpbmcsIHN0YXJ0KSkgPT0gc3RhcnQ7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ0ltcGwqIHN1ZmZpeCkgY29uc3QKIHsKLSAgICBpZiAoIXN1ZmZpeCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCp0aGlzLCAqc3VmZml4KTsKKyAgICByZXR1cm4gc3VmZml4ICYmIDo6V1RGOjplbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqc3VmZml4KTsKIH0KIAogYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIHN1ZmZpeCkg
Y29uc3QKQEAgLTE0NzYsNjYgKzEyMzIsNTkgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChV
Q2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGVuZ3RoICYmICgqdGhpcylbbV9s
ZW5ndGggLSAxXSA9PSBjaGFyYWN0ZXI7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgo
Y29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29sIGNhc2VT
ZW5zaXRpdmUpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKGNvbnN0IGNoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobWF0
Y2hMZW5ndGgpOwotICAgIGlmIChtYXRjaExlbmd0aCA+IGxlbmd0aCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBsZW5ndGgoKSAtIG1hdGNoTGVu
Z3RoOwotICAgIHJldHVybiBlcXVhbElubmVyKHRoaXMsIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmlu
ZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUpOworICAgIHJldHVybiBtYXRjaExlbmd0aCA8
PSBsZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCBsZW5ndGgoKSAtIG1hdGNoTGVuZ3RoLCBt
YXRjaFN0cmluZywgbWF0Y2hMZW5ndGgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6Omhhc0luZml4
RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVuZE9mZnNl
dCkgY29uc3QKIHsKLSAgICBpZiAoZW5kT2Zmc2V0IDwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZXF1YWxJbm5lcigqdGhpcywgZW5kT2Zm
c2V0IC0gbWF0Y2hTdHJpbmcubGVuZ3RoKCksIG1hdGNoU3RyaW5nKTsKKyAgICByZXR1cm4gZW5k
T2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgpICYmIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9m
ZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZyk7CiB9CiAKLVJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIG9sZEMsIFVDaGFyIG5ld0MpCitSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxh
Y2VtZW50KQogewotICAgIGlmIChvbGRDID09IG5ld0MpCisgICAgaWYgKHRhcmdldCA9PSByZXBs
YWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9y
IChpID0gMDsgaSAhPSBtX2xlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBpczhCaXQo
KSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXTsKLSAgICAgICAgaWYgKGMgPT0gb2xkQykKKyAg
ICAgICAgVUNoYXIgY2hhcmFjdGVyID0gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZb
aV07CisgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGlmIChpID09IG1fbGVuZ3RoKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
ICAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG9sZEMgPiAweGZmKQotICAgICAgICAg
ICAgLy8gTG9va2luZyBmb3IgYSAxNiBiaXQgY2hhciBpbiBhbiA4IGJpdCBzdHJpbmcsIHdlJ3Jl
IGRvbmUuCisgICAgICAgIGlmICh0YXJnZXQgPiAweEZGKSB7CisgICAgICAgICAgICAvLyBMb29r
aW5nIGZvciBhIDE2LWJpdCBjaGFyYWN0ZXIgaW4gYW4gOC1iaXQgc3RyaW5nLCBzbyB3ZSdyZSBk
b25lLgogICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG5ld0MgPD0gMHhmZikgeworICAgICAgICBpZiAocmVwbGFjZW1lbnQgPD0gMHhGRikgewogICAg
ICAgICAgICAgTENoYXIqIGRhdGE7Ci0gICAgICAgICAgICBMQ2hhciBvbGRDaGFyID0gc3RhdGlj
X2Nhc3Q8TENoYXI+KG9sZEMpOwotICAgICAgICAgICAgTENoYXIgbmV3Q2hhciA9IHN0YXRpY19j
YXN0PExDaGFyPihuZXdDKTsKKyAgICAgICAgICAgIExDaGFyIG9sZENoYXIgPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4odGFyZ2V0KTsKKyAgICAgICAgICAgIExDaGFyIG5ld0NoYXIgPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4ocmVwbGFjZW1lbnQpOwogCiAgICAgICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YSk7CiAKICAgICAg
ICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IExDaGFyIGNoID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gb2xkQ2hh
cikKLSAgICAgICAgICAgICAgICAgICAgY2ggPSBuZXdDaGFyOwotICAgICAgICAgICAgICAgIGRh
dGFbaV0gPSBjaDsKKyAgICAgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ld
OworICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gb2xkQ2hhcikKKyAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyID0gbmV3Q2hhcjsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0g
Y2hhcmFjdGVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAg
ICAgICAgIH0KIAotICAgICAgICAvLyBUaGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgd2UgbmVlZCB0
byB1cCBjb252ZXJ0IGZyb20gOCB0byAxNiBiaXQsCi0gICAgICAgIC8vIGNyZWF0ZSBhIDE2IGJp
dCBzdHJpbmcgZm9yIHRoZSByZXN1bHQuCiAgICAgICAgIFVDaGFyKiBkYXRhOwogICAgICAgICBh
dXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0
aCwgZGF0YSk7CiAKICAgICAgICAgZm9yIChpID0gMDsgaSAhPSBtX2xlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBVQ2hhciBjaCA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICBpZiAoY2ggPT0g
b2xkQykKLSAgICAgICAgICAgICAgICBjaCA9IG5ld0M7Ci0gICAgICAgICAgICBkYXRhW2ldID0g
Y2g7CisgICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4W2ldOworICAgICAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSB0YXJnZXQpCisgICAgICAgICAgICAgICAgY2hhcmFjdGVyID0g
cmVwbGFjZW1lbnQ7CisgICAgICAgICAgICBkYXRhW2ldID0gY2hhcmFjdGVyOwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CkBAIC0xNTQ1LDU2ICsxMjk0LDUwIEBAIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIG9sZEMsIFVDaGFyIG5ld0MpCiAg
ICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9s
ZW5ndGgsIGRhdGEpOwogCiAgICAgZm9yIChpID0gMDsgaSAhPSBtX2xlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIFVDaGFyIGNoID0gbV9kYXRhMTZbaV07Ci0gICAgICAgIGlmIChjaCA9PSBvbGRDKQot
ICAgICAgICAgICAgY2ggPSBuZXdDOwotICAgICAgICBkYXRhW2ldID0gY2g7CisgICAgICAgIFVD
aGFyIGNoYXJhY3RlciA9IG1fZGF0YTE2W2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyID09IHRh
cmdldCkKKyAgICAgICAgICAgIGNoYXJhY3RlciA9IHJlcGxhY2VtZW50OworICAgICAgICBkYXRh
W2ldID0gY2hhcmFjdGVyOwogICAgIH0KICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aFRvUmVwbGFjZSwgU3RyaW5nSW1wbCogc3RyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFj
ZSwgU3RyaW5nSW1wbCogc3RyaW5nKQogewogICAgIHBvc2l0aW9uID0gc3RkOjptaW4ocG9zaXRp
b24sIGxlbmd0aCgpKTsKICAgICBsZW5ndGhUb1JlcGxhY2UgPSBzdGQ6Om1pbihsZW5ndGhUb1Jl
cGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24pOwotICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0
ID0gc3RyID8gc3RyLT5sZW5ndGgoKSA6IDA7CisgICAgdW5zaWduZWQgbGVuZ3RoVG9JbnNlcnQg
PSBzdHJpbmcgPyBzdHJpbmctPmxlbmd0aCgpIDogMDsKICAgICBpZiAoIWxlbmd0aFRvUmVwbGFj
ZSAmJiAhbGVuZ3RoVG9JbnNlcnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmICgo
bGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UpID49IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSBsZW5ndGhUb0luc2VydCkpCiAgICAgICAgIENSQVNIKCk7CiAKLSAgICBp
ZiAoaXM4Qml0KCkgJiYgKCFzdHIgfHwgc3RyLT5pczhCaXQoKSkpIHsKKyAgICBpZiAoaXM4Qml0
KCkgJiYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pczhCaXQoKSkpIHsKICAgICAgICAgTENoYXIqIGRh
dGE7CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkg
LSBsZW5ndGhUb1JlcGxhY2UgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7Ci0gICAgICAgIG1lbWNw
eShkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbiAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICBpZiAo
c3RyKQotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiwgc3RyLT5tX2RhdGE4LCBs
ZW5ndGhUb0luc2VydCAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICBtZW1jcHkoZGF0YSArIHBv
c2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTggKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVw
bGFjZSwKLSAgICAgICAgICAgICAgIChsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBs
YWNlKSAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhLCBtX2Rh
dGE4LCBwb3NpdGlvbik7CisgICAgICAgIGlmIChzdHJpbmcpCisgICAgICAgICAgICBjb3B5Q2hh
cmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQp
OworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2Vy
dCwgbV9kYXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQog
ICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7CiAgICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9zaXRpb247
ICsraSkKLSAgICAgICAgICAgIGRhdGFbaV0gPSBtX2RhdGE4W2ldOworICAgICAgICBjb3B5Q2hh
cmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgZWxzZQotICAgICAgICBtZW1j
cHkoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgaWYgKHN0
cikgewotICAgICAgICBpZiAoc3RyLT5pczhCaXQoKSkKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGhUb0luc2VydDsgKytpKQotICAgICAgICAgICAgICAgIGRhdGFb
aSArIHBvc2l0aW9uXSA9IHN0ci0+bV9kYXRhOFtpXTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMo
ZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKKyAgICBpZiAoc3RyaW5nKSB7CisgICAgICAgIGlm
IChzdHJpbmctPmlzOEJpdCgpKQorICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBv
c2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiwgc3RyLT5tX2RhdGExNiwgbGVuZ3Ro
VG9JbnNlcnQgKiBzaXplb2YoVUNoYXIpKTsKLSAgICB9Ci0gICAgaWYgKGlzOEJpdCgpKSB7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVu
Z3RoVG9SZXBsYWNlOyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBwb3NpdGlvbiArIGxlbmd0
aFRvSW5zZXJ0XSA9IG1fZGF0YThbaSArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlXTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtZW1jcHkoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNl
cnQsIGNoYXJhY3RlcnMxNigpICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsCi0gICAgICAg
ICAgICAobGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSkgKiBzaXplb2YoVUNo
YXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5n
LT5tX2RhdGExNiwgbGVuZ3RoVG9JbnNlcnQpOwogICAgIH0KKyAgICBpZiAoaXM4Qml0KCkpCisg
ICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBt
X2RhdGE4ICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24g
LSBsZW5ndGhUb1JlcGxhY2UpOworICAgIGVsc2UKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQsIG1fZGF0YTE2ICsgcG9zaXRpb24gKyBsZW5n
dGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2UpOwogICAg
IHJldHVybiBuZXdJbXBsOwogfQogCkBAIC0xNjAyLDEwICsxMzQ1LDggQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFj
ZW1lbnQpCiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwot
CiAgICAgaWYgKHJlcGxhY2VtZW50LT5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHJlcGxhY2Uo
cGF0dGVybiwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7Ci0K
ICAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcGxh
Y2VtZW50LT5sZW5ndGgoKSk7CiB9CiAKQEAgLTE2NDgsMTUgKzEzODksMTUgQEAgUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJl
cGxhY2VtZW50LCB1bnMKIAogICAgICAgICB3aGlsZSAoKHNyY1NlZ21lbnRFbmQgPSBmaW5kKHBh
dHRlcm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBzcmNT
ZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAg
ICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBz
cmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFj
dGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdt
ZW50TGVuZ3RoKTsKICAgICAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwot
ICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJM
ZW5ndGggKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEg
KyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgpOwogICAgICAgICAgICAgZHN0
T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNy
Y1NlZ21lbnRFbmQgKyAxOwogICAgICAgICB9CiAKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9
IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9m
ZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVv
ZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2Rh
dGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICBBU1NF
UlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgp
KTsKIApAQCAtMTY2OCwxOCArMTQwOSwxNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQsIHVucwogCiAg
ICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQp
KSAhPSBub3RGb3VuZCkgewogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVu
ZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1f
ZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsg
c3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICBkc3RPZmZzZXQg
Kz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJl
cFN0ckxlbmd0aDsgKytpKQotICAgICAgICAgICAgZGF0YVtpICsgZHN0T2Zmc2V0XSA9IHJlcGxh
Y2VtZW50W2ldOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCByZXBs
YWNlbWVudCwgcmVwU3RyTGVuZ3RoKTsKIAogICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVu
Z3RoOwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgMTsKICAgICB9
CiAKICAgICBzcmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7Ci0g
ICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBz
cmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5n
dGgpOwogCiAgICAgQVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1w
bC5nZXQoKS5sZW5ndGgoKSk7CiAKQEAgLTE3MjUsMTkgKzE0NjUsMTcgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxh
Y2VtZW50LCB1bnMKIAogICAgICAgICB3aGlsZSAoKHNyY1NlZ21lbnRFbmQgPSBmaW5kKHBhdHRl
cm4sIHNyY1NlZ21lbnRTdGFydCkpICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBzcmNTZWdt
ZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICAgICAgZGF0YVtpICsgZHN0T2Zmc2V0XSA9IG1fZGF0YThbaSArIHNyY1NlZ21lbnRTdGFy
dF07CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4
ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICAgICAgZHN0
T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIGRz
dE9mZnNldCwgcmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAg
ICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJl
cFN0ckxlbmd0aCk7CiAKICAgICAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAg
ICAgICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5kICsgMTsKICAgICAgICAg
fQogCiAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFy
dDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY1NlZ21lbnRMZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdt
ZW50U3RhcnRdOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2Rh
dGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICBBU1NF
UlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgp
KTsKIApAQCAtMTc0OSwxNyArMTQ4NywxNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFjZW1lbnQsIHVucwogCiAg
ICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQp
KSAhPSBub3RGb3VuZCkgewogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVu
ZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1f
ZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsg
c3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAgICBkc3RPZmZzZXQg
Kz0gc3JjU2VnbWVudExlbmd0aDsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCk7CiAK
ICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0
YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAgICAgfQogCiAgICAgc3JjU2VnbWVudExlbmd0aCA9
IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0
LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihV
Q2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsg
c3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgIEFTU0VSVChkc3RPZmZz
ZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5ld0ltcGwuZ2V0KCkubGVuZ3RoKCkpOwogCkBAIC0x
ODE4LDE1ICsxNTU2LDE1IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0
cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAgICAgICAgIGF1dG8g
bmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobmV3U2l6ZSwgZGF0YSk7CiAgICAgICAgIHdo
aWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2VnbWVudFN0YXJ0KSkgIT0g
bm90Rm91bmQpIHsKICAgICAgICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBzcmNTZWdtZW50RW5k
IC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQs
IG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGggKiBzaXplb2YoTENo
YXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0
YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogICAgICAgICAgICAgZHN0
T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIGRz
dE9mZnNldCwgcmVwbGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCAqIHNpemVvZihMQ2hh
cikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFj
ZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0g
cmVwU3RyTGVuZ3RoOwogICAgICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVu
ZCArIHBhdHRlcm5MZW5ndGg7CiAgICAgICAgIH0KIAogICAgICAgICBzcmNTZWdtZW50TGVuZ3Ro
ID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0
T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6
ZW9mKExDaGFyKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1f
ZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogCiAgICAgICAgIEFT
U0VSVChkc3RPZmZzZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5ld0ltcGwuZ2V0KCkubGVuZ3Ro
KCkpOwogCkBAIC0xODM5LDIwICsxNTc3LDE4IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAg
ICAgICAgIHNyY1NlZ21lbnRMZW5ndGggPSBzcmNTZWdtZW50RW5kIC0gc3JjU2VnbWVudFN0YXJ0
OwogICAgICAgICBpZiAoc3JjSXM4Qml0KSB7CiAgICAgICAgICAgICAvLyBDYXNlIDMuCi0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3JjU2VnbWVudExlbmd0aDsgKytpKQot
ICAgICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdt
ZW50U3RhcnRdOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
bV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBDYXNlIDIgJiA0LgotICAgICAgICAgICAgbWVtY3B5KGRh
dGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVu
Z3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsg
ZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7
CiAgICAgICAgIH0KICAgICAgICAgZHN0T2Zmc2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7CiAgICAg
ICAgIGlmIChyZXBsYWNlbWVudElzOEJpdCkgewogICAgICAgICAgICAgLy8gQ2FzZXMgMiAmIDMu
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVwU3RyTGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICAgICAgZGF0YVtpICsgZHN0T2Zmc2V0XSA9IHJlcGxhY2VtZW50LT5tX2Rh
dGE4W2ldOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVw
bGFjZW1lbnQtPm1fZGF0YTgsIHJlcFN0ckxlbmd0aCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBDYXNlIDQKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBy
ZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcFN0ckxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAg
ICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgcmVwbGFjZW1lbnQtPm1f
ZGF0YTE2LCByZXBTdHJMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIGRzdE9mZnNldCArPSBy
ZXBTdHJMZW5ndGg7CiAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyBw
YXR0ZXJuTGVuZ3RoOwpAQCAtMTg2MSwxMSArMTU5NywxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNl
bWVudAogICAgIHNyY1NlZ21lbnRMZW5ndGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFydDsK
ICAgICBpZiAoc3JjSXM4Qml0KSB7CiAgICAgICAgIC8vIENhc2UgMy4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNyY1NlZ21lbnRMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRh
dGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdtZW50U3RhcnRdOworICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0
YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYXNlcyAy
ICYgNC4KLSAgICAgICAgbWVtY3B5KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2Vn
bWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0
LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3Jj
U2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsKQEAgLTE4NzgsOCArMTYx
Myw3IEBAIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCog
YikKICAgICByZXR1cm4gZXF1YWxDb21tb24oYSwgYik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLWlubGluZSBib29sIGVxdWFsSW50ZXJuYWwoY29uc3QgU3RyaW5nSW1wbCog
YSwgY29uc3QgQ2hhclR5cGUqIGIsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFsSW50ZXJuYWwoY29uc3QgU3RyaW5nSW1w
bCogYSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlm
ICghYSkKICAgICAgICAgcmV0dXJuICFiOwpAQCAtMTk1NCwxMSArMTY4OCw3IEBAIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1wbCogYikKIAogYm9vbCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0lt
cGwqIGIpCiB7Ci0gICAgaWYgKGEgPT0gYikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KCFhIHx8ICFiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2VDb21tb24oKmEsICpiKTsKKyAgICByZXR1cm4gYSA9PSBiIHx8IChhICYmIGIg
JiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSgqYSwgKmIpKTsKIH0KIAogYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBs
KiBiKQpAQCAtMTk3MSw3ICsxNzAxLDcgQEAgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9u
TnVsbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogVUNoYXJEaXJl
Y3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgVUNoYXJEaXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IHVfY2hhckRp
cmVjdGlvbihpczhCaXQoKSA/IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXSk7CisgICAgICAgIGF1
dG8gY2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihpczhCaXQoKSA/IG1fZGF0YThbaV0g
OiBtX2RhdGExNltpXSk7CiAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfTEVGVF9UT19S
SUdIVCkgewogICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQogICAgICAg
ICAgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IHRydWU7CkBAIC0yMDEzLDEzICsx
NzQzLDEzIEBAIHNpemVfdCBTdHJpbmdJbXBsOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuIHNpemUgKyBzaXplb2YoKnRoaXMpOwogfQogCi0vLyBIZWxwZXIgdG8gd3JpdGUgYSB0aHJl
ZS1ieXRlIFVURi04IGNvZGUgcG9pbnQgdG8gdGhlIGJ1ZmZlciwgY2FsbGVyIG11c3QgY2hlY2sg
cm9vbSBpcyBhdmFpbGFibGUuCi1zdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFy
KiYgYnVmZmVyLCBVQ2hhciBjaCkKKy8vIEhlbHBlciB0byB3cml0ZSBhIHRocmVlLWJ5dGUgVVRG
LTggY29kZSBwb2ludCBpbnRvIHRoZSBidWZmZXI7IGNhbGxlciBtdXN0IGVuc3VyZSByb29tIGlz
IGF2YWlsYWJsZS4KK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRVVEY4VHJpcGxlKGNoYXIqJiBidWZm
ZXIsIFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICBBU1NFUlQoY2ggPj0gMHgwODAwKTsKLSAgICAq
YnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNoID4+IDEyKSAmIDB4MEYpIHwgMHhFMCk7
Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiA2KSAmIDB4M0YpIHwg
MHg4MCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKGNoICYgMHgzRikgfCAw
eDgwKTsKKyAgICBBU1NFUlQoY2hhcmFjdGVyID49IDB4MDgwMCk7CisgICAgKmJ1ZmZlcisrID0g
c3RhdGljX2Nhc3Q8Y2hhcj4oKChjaGFyYWN0ZXIgPj4gMTIpICYgMHgwRikgfCAweEUwKTsKKyAg
ICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNoYXJhY3RlciA+PiA2KSAmIDB4M0Yp
IHwgMHg4MCk7CisgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKGNoYXJhY3RlciAm
IDB4M0YpIHwgMHg4MCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6dXRmOEltcGwoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY2hhciomIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIENvbnZlcnNpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmlu
ZGV4IDEzMDg2NmNmMmEwZDBmNGExOGQ2MTgyMzJmNmVhMTVhNDIxZjcyZjAuLjNmYmVlMDRiYTU0
MWRlMzJlZGI0ZTA5Mzk5YTVmZmEwZGRlZGE0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9Db252ZXJzaW9u
TW9kZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ01hbGxvYy5oPgpAQCAtNTcsNyArNTgsNiBAQCBjbGFzcyBTeW1ib2xJbXBs
OwogY2xhc3MgU3ltYm9sUmVnaXN0cnk7CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcjsKLXRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9yOwog
c3RydWN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiBzdHJ1Y3QgTENoYXJCdWZm
ZXJUcmFuc2xhdG9yOwogc3RydWN0IFN0cmluZ0hhc2g7CkBAIC02NiwyMiArNjYsMjEgQEAgc3Ry
dWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJl
dGFpblB0cjsKIAordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCdWZmZXJGcm9tU3RhdGljRGF0
YVRyYW5zbGF0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhhc2hBbmRDaGFyYWN0ZXJz
VHJhbnNsYXRvcjsKIAotZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5IHsKLSAgICBUZXh0Q2FzZVNl
bnNpdGl2ZSwKLSAgICBUZXh0Q2FzZUluc2Vuc2l0aXZlCi19OworLy8gRGVmaW5lIFNUUklOR19T
VEFUUyB0byAxIHR1cm4gb24gcnVudGltZSBzdGF0aXN0aWNzIGZvciBzdHJpbmcgc2l6ZXMgYW5k
IG1lbW9yeSB1c2FnZS4KKyNkZWZpbmUgU1RSSU5HX1NUQVRTIDAKIAogdHlwZWRlZiBib29sICgq
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikoVUNoYXIpOwogdHlwZWRlZiBib29sICgqSXNXaGl0
ZVNwYWNlRnVuY3Rpb25QdHIpKFVDaGFyKTsKIAotLy8gRGVmaW5lIFNUUklOR19TVEFUUyB0byAx
IHR1cm4gb24gcnVuIHRpbWUgc3RhdGlzdGljcyBvZiBzdHJpbmcgc2l6ZXMgYW5kIG1lbW9yeSB1
c2FnZQotI2RlZmluZSBTVFJJTkdfU1RBVFMgMAordGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFy
YWN0ZXIoVUNoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQWxsU3BlY2lhbENo
YXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHNpemVfdCBsZW5ndGgpOwogCiAjaWYgU1RS
SU5HX1NUQVRTCisKIHN0cnVjdCBTdHJpbmdTdGF0cyB7Ci0gICAgaW5saW5lIHZvaWQgYWRkOEJp
dFN0cmluZyh1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNTdWJTdHJpbmcgPSBmYWxzZSkKKyAgICB2
b2lkIGFkZDhCaXRTdHJpbmcodW5zaWduZWQgbGVuZ3RoLCBib29sIGlzU3ViU3RyaW5nID0gZmFs
c2UpCiAgICAgewogICAgICAgICArK21fdG90YWxOdW1iZXJTdHJpbmdzOwogICAgICAgICArK21f
bnVtYmVyOEJpdFN0cmluZ3M7CkBAIC04OSw3ICs4OCw3IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7
CiAgICAgICAgICAgICBtX3RvdGFsOEJpdERhdGEgKz0gbGVuZ3RoOwogICAgIH0KIAotICAgIGlu
bGluZSB2b2lkIGFkZDE2Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmlu
ZyA9IGZhbHNlKQorICAgIHZvaWQgYWRkMTZCaXRTdHJpbmcodW5zaWduZWQgbGVuZ3RoLCBib29s
IGlzU3ViU3RyaW5nID0gZmFsc2UpCiAgICAgewogICAgICAgICArK21fdG90YWxOdW1iZXJTdHJp
bmdzOwogICAgICAgICArK21fbnVtYmVyMTZCaXRTdHJpbmdzOwpAQCAtMTIwLDcgKzExOSw5IEBA
IHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAjZGVmaW5lIFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5H
KHN0cmluZykgU3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5yZW1vdmVTdHJpbmcoc3RyaW5nKQog
I2RlZmluZSBTVFJJTkdfU1RBVFNfUkVGX1NUUklORyhzdHJpbmcpICsrU3RyaW5nSW1wbDo6c3Ry
aW5nU3RhdHMoKS5tX3JlZkNhbGxzOwogI2RlZmluZSBTVFJJTkdfU1RBVFNfREVSRUZfU1RSSU5H
KHN0cmluZykgKytTdHJpbmdJbXBsOjpzdHJpbmdTdGF0cygpLm1fZGVyZWZDYWxsczsKKwogI2Vs
c2UKKwogI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKGxlbmd0aCkgKCh2b2lk
KTApCiAjZGVmaW5lIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKGxlbmd0aCwgaXNTdWJT
dHJpbmcpICgodm9pZCkwKQogI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORyhs
ZW5ndGgpICgodm9pZCkwKQpAQCAtMTI5LDQyICsxMzAsMTggQEAgc3RydWN0IFN0cmluZ1N0YXRz
IHsKICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFTU9WRV9TVFJJTkcoc3RyaW5nKSAoKHZvaWQpMCkK
ICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSAoKHZvaWQpMCkKICNkZWZp
bmUgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORyhzdHJpbmcpICgodm9pZCkwKQorCiAjZW5kaWYK
IAogY2xhc3MgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJp
bmdJbXBsU2hhcGUpOwogcHJvdGVjdGVkOgotICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCBy
ZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBMQ2hhciogZGF0YTgsIHVuc2lnbmVkIGhh
c2hBbmRGbGFncykKLSAgICAgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQotICAgICAgICAsIG1f
bGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBtX2RhdGE4KGRhdGE4KQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7IH0KLQotICAgIFN0cmluZ0ltcGxTaGFwZSh1
bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogZGF0YTE2LCB1
bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCi0gICAgICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAg
ICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9kYXRhMTYoZGF0YTE2KQotICAg
ICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7IH0KKyAgICBTdHJpbmdJ
bXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIq
LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOworICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCBy
ZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGhhc2hBbmRG
bGFncyk7CiAKICAgICBlbnVtIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcgeyBDb25zdHJ1Y3RX
aXRoQ29uc3RFeHByIH07Ci0gICAgCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+Ci0gICAgY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1
bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpCi0gICAgICAg
IDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAg
ICAgICwgbV9kYXRhOENoYXIoY2hhcmFjdGVycykKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyho
YXNoQW5kRmxhZ3MpCi0gICAgeyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyQ291bnQ+Ci0gICAgY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3Vu
dCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3Rl
ckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFn
KQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQotICAgICAgICAsIG1fZGF0YTE2Q2hhcihjaGFyYWN0ZXJzKQotICAgICAgICAsIG1faGFz
aEFuZEZsYWdzKGhhc2hBbmRGbGFncykKLSAgICB7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3Vu
dCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291
bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpOwor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RyaW5nSW1w
bFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIxNl90
ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENv
bnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpOwogCiAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAg
ICB1bnNpZ25lZCBtX2xlbmd0aDsKQEAgLTE4MSwyNiArMTU4LDI1IEBAIHByb3RlY3RlZDoKIAog
Y2xhc3MgU3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTdHJpbmdJbXBsKTsgV1RGX01BS0VfU1RSSU5HX0FMTE9DQVRFRDsKKwor
ICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOworICAgIGZyaWVuZCBjbGFzcyBKU0M6
OkxMSW50OjpEYXRhOworICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICBmcmllbmQgY2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7CisgICAgZnJpZW5kIGNsYXNz
IFJlZ2lzdGVyZWRTeW1ib2xJbXBsOworICAgIGZyaWVuZCBjbGFzcyBTeW1ib2xJbXBsOworCiAg
ICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVy
c1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVy
c1RyYW5zbGF0b3I7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gZnJpZW5k
IHN0cnVjdCBXVEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6TENoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RG
OjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZl
clRyYW5zbGF0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnQ6OkRhdGE7Ci0gICAgZnJp
ZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgIGZyaWVuZCBjbGFzcyBB
dG9taWNTdHJpbmdJbXBsOwotICAgIGZyaWVuZCBjbGFzcyBTeW1ib2xJbXBsOwotICAgIGZyaWVu
ZCBjbGFzcyBQcml2YXRlU3ltYm9sSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgUmVnaXN0ZXJlZFN5
bWJvbEltcGw7Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIHN0cnVjdCBX
VEY6OkJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRDaGFyYWN0ZXJzVHJhbnNsYXRvcjsKKwogcHVi
bGljOgotICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKLSAgICAgICAgQnVmZmVySW50ZXJuYWws
Ci0gICAgICAgIEJ1ZmZlck93bmVkLAotICAgICAgICBCdWZmZXJTdWJzdHJpbmcsCi0gICAgfTsK
KyAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7IEJ1ZmZlckludGVybmFsLCBCdWZmZXJPd25lZCwg
QnVmZmVyU3Vic3RyaW5nIH07CiAKICAgICAvLyBUaGUgYm90dG9tIDYgYml0cyBpbiB0aGUgaGFz
aCBhcmUgZmxhZ3MuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2ZsYWdD
b3VudCA9IDY7CkBAIC0yMjIsOTQgKzE5OCwyOSBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmdT
eW1ib2wgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sLCAvLyBzeW1ib2wsIG5vbi1hdG9t
aWMKICAgICB9OwogCi0gICAgLy8gRklYTUU6IHRoZXJlIGhhcyB0byBiZSBhIGxlc3MgaGFja3kg
d2F5IHRvIGRvIHRoaXMuCiAgICAgZW51bSBGb3JjZThCaXQgeyBGb3JjZThCaXRDb25zdHJ1Y3Rv
ciB9OwotICAgIC8vIENyZWF0ZSBhIG5vcm1hbCA4LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBz
dG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICBTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCwg
Rm9yY2U4Qml0KQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50
LCBsZW5ndGgsIHRhaWxQb2ludGVyPExDaGFyPigpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0
YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwogCi0gICAgICAgIFNUUklOR19TVEFUU19B
RERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICAvLyBDcmVhdGUgYSBub3JtYWwg
OC1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJuYWwpCisgICAg
U3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgsIEZvcmNlOEJpdCk7CiAKICAgICAvLyBDcmVhdGUg
YSBub3JtYWwgMTYtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVy
bmFsKQotICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IFN0cmluZ0lt
cGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIHRhaWxQb2ludGVyPFVDaGFyPigp
LCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2RhdGExNik7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7Ci0KLSAgICAgICAgU1RSSU5HX1NU
QVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBleHBsaWNpdCBTdHJp
bmdJbXBsKHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDcmVhdGUgYSBTdHJpbmdJbXBsIGFk
b3B0aW5nIG93bmVyc2hpcCBvZiB0aGUgcHJvdmlkZWQgYnVmZmVyIChCdWZmZXJPd25lZCkKLSAg
ICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxMQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgs
IGNoYXJhY3RlcnMubGVha1B0cigpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1h
bCB8IEJ1ZmZlck93bmVkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAg
ICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJ
TkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxMQ2hhcj4gY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIGVudW0gQ29uc3RydWN0V2l0aG91dENv
cHlpbmdUYWcgeyBDb25zdHJ1Y3RXaXRob3V0Q29weWluZyB9OwotICAgIFN0cmluZ0ltcGwoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENv
cHlpbmdUYWcpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQs
IGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwot
Ci0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9
Ci0KLSAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFw
ZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9kYXRhOCk7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7Ci0KLSAgICAgICAgU1RS
SU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Ci0gICAgfQorICAgIFN0cmluZ0lt
cGwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5n
VGFnKTsKKyAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb25z
dHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CiAKICAgICAvLyBDcmVhdGUgYSBTdHJpbmdJbXBsIGFk
b3B0aW5nIG93bmVyc2hpcCBvZiB0aGUgcHJvdmlkZWQgYnVmZmVyIChCdWZmZXJPd25lZCkKLSAg
ICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgs
IGNoYXJhY3RlcnMubGVha1B0cigpLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX2RhdGExNik7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7Ci0K
LSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0K
KyAgICBTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4sIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAg
ICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBvZiBh
biBleGlzdGluZyA4LWJpdCBTdHJpbmdJbXBsIChCdWZmZXJTdWJzdHJpbmcpCi0gICAgU3RyaW5n
SW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5n
SW1wbD4mJiBiYXNlKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVt
ZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVyU3Vic3RyaW5nKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsK
LSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotICAg
ICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsK
LQotICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKLQotICAgICAg
ICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Ci0gICAgfQor
ICAgIFN0cmluZ0ltcGwoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJ
bXBsPiYmKTsKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzdHJpbmdzIHRoYXQgYXJlIGEg
c3Vic3RyaW5nIG9mIGFuIGV4aXN0aW5nIDE2LWJpdCBTdHJpbmdJbXBsIChCdWZmZXJTdWJzdHJp
bmcpCi0gICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShz
X3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1
ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwotICAgICAg
ICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotICAgICAgICBB
U1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKLQotICAg
ICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKLQotICAgICAgICBTVFJJ
TkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBT
dHJpbmdJbXBsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4m
Jik7CiAKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIHZvaWQgZGVz
dHJveShTdHJpbmdJbXBsKik7CkBAIC0zMTcsNzEgKzIyOCwyNiBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThC
aXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGU4Qml0SWZQb3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVj
dG9yKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvci5k
YXRhKCksIHZlY3Rvci5zaXplKCkpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5l
Q2FwYWNpdHk+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29u
c3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBV
Q2hhciopOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciopOwotICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1
cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KLQotICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFyaW5n
SW1wbChTdHJpbmdJbXBsJiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSByZXAubGVuZ3RoKCkpOworICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogc3RyaW5n
KSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHN0cmluZykp
OyB9CiAKLSAgICAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gKmVtcHR5KCk7
CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbChT
dHJpbmdJbXBsJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCi0gICAgICAg
IGF1dG8qIG93bmVyUmVwID0gKChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXApOworICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRl
cmFsKGNvbnN0IGNoYXIgKCYpW2NoYXJhY3RlckNvdW50XSk7CiAKLSAgICAgICAgLy8gV2UgYWxs
b2NhdGUgYSBidWZmZXIgdGhhdCBjb250YWlucyBib3RoIHRoZSBTdHJpbmdJbXBsIHN0cnVjdCBh
cyB3ZWxsIGFzIHRoZSBwb2ludGVyIHRvIHRoZSBvd25lciBzdHJpbmcuCi0gICAgICAgIGF1dG8q
IHN0cmluZ0ltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9j
YXRpb25TaXplPFN0cmluZ0ltcGwqPigxKSkpOwotICAgICAgICBpZiAocmVwLmlzOEJpdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0
cmluZ0ltcGwocmVwLm1fZGF0YTggKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBs
KHJlcC5tX2RhdGExNiArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXApKTsKLSAgICB9CisgICAg
Ly8gRklYTUU6IFJlcGxhY2UgY2FsbHMgdG8gdGhlc2Ugb3ZlcmxvYWRzIG9mIGNyZWF0ZUZyb21M
aXRlcmFsIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGluc3RlYWQuCisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciopOwogCi0gICAg
dGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFy
YWN0ZXJDb3VudCA+IDEsIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbE5vdEVtcHR5KTsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNp
emVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmluZ0ltcGxGcm9tTGl0ZXJh
bENhbm5vdE92ZXJmbG93KTsKLQotICAgICAgICByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJDb3Vu
dCAtIDEpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG9mZiBvZiB0aGVzZSBm
dW5jdGlvbnMgdG8gY3JlYXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4KLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIq
JiBkYXRhKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmUHRyPFN0cmlu
Z0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0
KQotICAgIHsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIG91dHB1dCA9IG51
bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHkoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNp
emVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoVCkpKSB7Ci0gICAgICAgICAgICBvdXRwdXQgPSBu
dWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAg
U3RyaW5nSW1wbCogcmVzdWx0SW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPih0cnlTdHJp
bmdNYWxsb2MoYWxsb2NhdGlvblNpemU8VD4obGVuZ3RoKSkpOwotICAgICAgICBpZiAoIXJlc3Vs
dEltcGwpIHsKLSAgICAgICAgICAgIG91dHB1dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBvdXRwdXQgPSByZXN1bHRJbXBsLT50YWls
UG9pbnRlcjxUPigpOwotCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1
bHRJbXBsLCBsZW5ndGgpOwotICAgIH0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomKTsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgdGhl
IFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhl
IFJlZiwKICAgICAvLyBhbmQgdGhlIGJ1ZmZlciBvd25lcnNoaXAgbXVzdCBiZSBCdWZmZXJJbnRl
cm5hbC4gSnVzdCBsaWtlIHRoZSBpbnB1dCBwb2ludGVyIG9mIHJlYWxsb2MoKSwKQEAgLTM5Niw4
MyArMjYyLDMxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQo
KSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2luZDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBk
YXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgp
OyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KLSAgICBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ1ZlY3RvcjxDaGFyVHlwZSwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYgdmVjdG9yKQotICAgIHsK
LSAgICAgICAgaWYgKHNpemVfdCBzaXplID0gdmVjdG9yLnNpemUoKSkgewotICAgICAgICAgICAg
QVNTRVJUKHZlY3Rvci5kYXRhKCkpOwotICAgICAgICAgICAgaWYgKHNpemUgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJlbGVhc2VC
dWZmZXIoKSwgc2l6ZSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqZW1wdHkoKTsKLSAg
ICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KKyAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ1ZlY3RvcjxDaGFyYWN0ZXJUeXBl
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mJik7CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJp
bmdCdWZmZXI8VUNoYXI+JiYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mJik7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3QgbGVuZ3RoTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0lt
cGwsIG1fbGVuZ3RoKTsgfQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNo
QW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFtX2xlbmd0aDsgfQogCisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJl
dHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CiAgICAgQUxXQVlT
X0lOTElORSBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IEFTU0VSVChpczhCaXQo
KSk7IHJldHVybiBtX2RhdGE4OyB9CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2KCkgY29uc3QgeyBBU1NFUlQoIWlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YTE2OyB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBj
b25zdCBDaGFyVHlwZSAqY2hhcmFjdGVycygpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMoKSBjb25zdDsK
IAotICAgIHNpemVfdCBjb3N0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEZvciBzdWJzdHJp
bmdzLCByZXR1cm4gdGhlIGNvc3Qgb2YgdGhlIGJhc2Ugc3RyaW5nLgotICAgICAgICBpZiAoYnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHN1
YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7Ci0KLSAgICAgICAgLy8gTm90ZTogd2UgbXVzdCBub3Qg
YWx0ZXIgdGhlIG1faGFzaEFuZEZsYWdzIGZpZWxkIGluIGluc3RhbmNlcyBvZiBTdGF0aWNTdHJp
bmdJbXBsLgotICAgICAgICAvLyBXZSBlbnN1cmUgdGhpcyBieSBwcmUtc2V0dGluZyB0aGUgc19o
YXNoRmxhZ0RpZFJlcG9ydENvc3QgYml0IGluIGFsbCBpbnN0YW5jZXMgb2YKLSAgICAgICAgLy8g
U3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2Vz
IHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKLSAgICAgICAgLy8gMCBoZXJlIGFuZCBhdm9p
ZCBtb2RpZnlpbmcgbV9oYXNoQW5kRmxhZ3MuCi0gICAgICAgIGlmIChtX2hhc2hBbmRGbGFncyAm
IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAg
ICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ0RpZFJlcG9ydENvc3Q7Ci0gICAgICAgIHNp
emVfdCByZXN1bHQgPSBtX2xlbmd0aDsKLSAgICAgICAgaWYgKCFpczhCaXQoKSkKLSAgICAgICAg
ICAgIHJlc3VsdCA8PD0gMTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0g
ICAgc2l6ZV90IGNvc3REdXJpbmdHQygpCi0gICAgewotICAgICAgICBpZiAoaXNTdGF0aWMoKSkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgaWYgKGJ1ZmZlck93bmVy
c2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBkaXZpZGVSb3Vu
ZGVkVXAoc3Vic3RyaW5nQnVmZmVyKCktPmNvc3REdXJpbmdHQygpLCByZWZDb3VudCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsKLSAgICAgICAgaWYgKCFp
czhCaXQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA8PD0gMTsKLSAgICAgICAgcmV0dXJuIGRpdmlk
ZVJvdW5kZWRVcChyZXN1bHQsIHJlZkNvdW50KCkpOwotICAgIH0KKyAgICBzaXplX3QgY29zdCgp
IGNvbnN0OworICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKTsKIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIFN0cmluZ0tpbmQgc3Ry
aW5nS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KG1faGFzaEFu
ZEZsYWdzICYgc19oYXNoTWFza1N0cmluZ0tpbmQpOyB9CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJv
bDsgfQogICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAm
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7IH0KLQotICAgIHZvaWQgc2V0SXNBdG9taWMo
Ym9vbCBpc0F0b21pYykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7Ci0gICAg
ICAgIEFTU0VSVCghaXNTeW1ib2woKSk7Ci0gICAgICAgIGlmIChpc0F0b21pYykgewotICAgICAg
ICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKLSAg
ICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3RyaW5nQXRvbWljKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1faGFzaEFuZEZsYWdzICY9IH5zX2hhc2hGbGFnU3RyaW5n
S2luZElzQXRvbWljOwotICAgICAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9PSBTdHJpbmdO
b3JtYWwpOwotICAgICAgICB9Ci0gICAgfQorICAgIHZvaWQgc2V0SXNBdG9taWMoYm9vbCk7CiAK
ICNpZiBTVFJJTkdfU1RBVFMKICAgICBib29sIGlzU3ViU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
YnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nOyB9CkBAIC00ODksNDQgKzMwMywx
NSBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBoaWdoIGJpdHMgb2YgJ2hhc2gnIGFyZSBhbHdheXMg
ZW1wdHksIGJ1dCB3ZSBwcmVmZXIgdG8gc3RvcmUgb3VyIGZsYWdzCiAgICAgLy8gaW4gdGhlIGxv
dyBiaXRzIGJlY2F1c2UgaXQgbWFrZXMgdGhlbSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB0byBh
Y2Nlc3MuCiAgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQgYW5kIHJpZ2h0IHdoZW4gc2V0dGluZyBh
bmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgotICAgIHZvaWQgc2V0SGFzaCh1bnNpZ25lZCBoYXNo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFoYXNIYXNoKCkpOwotICAgICAgICBBU1NF
UlQoIWlzU3RhdGljKCkpOwotICAgICAgICAvLyBNdWx0aXBsZSBjbGllbnRzIGFzc3VtZSB0aGF0
IFN0cmluZ0hhc2hlciBpcyB0aGUgY2Fub25pY2FsIHN0cmluZyBoYXNoIGZ1bmN0aW9uLgotICAg
ICAgICBBU1NFUlQoaGFzaCA9PSAoaXM4Qml0KCkgPyBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNo
QW5kTWFza1RvcDhCaXRzKG1fZGF0YTgsIG1fbGVuZ3RoKSA6IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKSkpOwotICAgICAgICBBU1NF
UlQoIShoYXNoICYgKHNfZmxhZ01hc2sgPDwgKDggKiBzaXplb2YoaGFzaCkgLSBzX2ZsYWdDb3Vu
dCkpKSk7IC8vIFZlcmlmeSB0aGF0IGVub3VnaCBoaWdoIGJpdHMgYXJlIGVtcHR5LgotICAgICAg
ICAKLSAgICAgICAgaGFzaCA8PD0gc19mbGFnQ291bnQ7Ci0gICAgICAgIEFTU0VSVCghKGhhc2gg
JiBtX2hhc2hBbmRGbGFncykpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggbG93IGJpdHMgYXJlIGVt
cHR5IGFmdGVyIHNoaWZ0LgotICAgICAgICBBU1NFUlQoaGFzaCk7IC8vIFZlcmlmeSB0aGF0IDAg
aXMgYSB2YWxpZCBzZW50aW5lbCBoYXNoIHZhbHVlLgotCi0gICAgICAgIG1faGFzaEFuZEZsYWdz
IHw9IGhhc2g7IC8vIFN0b3JlIGhhc2ggd2l0aCBmbGFncyBpbiBsb3cgYml0cy4KLSAgICB9Cisg
ICAgdm9pZCBzZXRIYXNoKHVuc2lnbmVkKSBjb25zdDsKIAotICAgIHVuc2lnbmVkIHJhd0hhc2go
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faGFzaEFuZEZsYWdzID4+IHNfZmxhZ0Nv
dW50OwotICAgIH0KKyAgICB1bnNpZ25lZCByYXdIYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNo
QW5kRmxhZ3MgPj4gc19mbGFnQ291bnQ7IH0KIAogcHVibGljOgotICAgIGJvb2wgaGFzSGFzaCgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmF3SGFzaCgpICE9IDA7Ci0gICAgfQotCi0g
ICAgdW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCho
YXNIYXNoKCkpOwotICAgICAgICByZXR1cm4gcmF3SGFzaCgpOwotICAgIH0KKyAgICBib29sIGhh
c0hhc2goKSBjb25zdCB7IHJldHVybiAhIXJhd0hhc2goKTsgfQogCi0gICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaGFzSGFzaCgpKQotICAgICAgICAgICAgcmV0
dXJuIGV4aXN0aW5nSGFzaCgpOwotICAgICAgICByZXR1cm4gaGFzaFNsb3dDYXNlKCk7Ci0gICAg
fQorICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0IHsgQVNTRVJUKGhhc0hhc2goKSk7
IHJldHVybiByYXdIYXNoKCk7IH0KKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4g
aGFzSGFzaCgpID8gcmF3SGFzaCgpIDogaGFzaFNsb3dDYXNlKCk7IH0KIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCBjb25jdXJyZW50SGFzaCgpIGNvbnN0OwogCkBAIC01MzUsNDAg
KzMyMCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4g
bV9yZWZDb3VudCAmIHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7IH0KIAotICAgIGlubGlu
ZSBzaXplX3QgcmVmQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmVmQ291
bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgYm9vbCBo
YXNPbmVSZWYoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gc19y
ZWZDb3VudEluY3JlbWVudDsKLSAgICB9CisgICAgc2l6ZV90IHJlZkNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZDb3VudCAvIHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KKyAgICBib29sIGhhc09u
ZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQgPT0gc19yZWZDb3VudEluY3JlbWVudDsg
fQogICAgIAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgYXNzZXJ0aW9ucy4KLSAg
ICBpbmxpbmUgYm9vbCBoYXNBdExlYXN0T25lUmVmKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhIW1fcmVmQ291bnQ7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgcmVmKCkKLSAgICB7
Ci0gICAgICAgIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKCp0aGlzKTsKLQotICAgICAgICBtX3Jl
ZkNvdW50ICs9IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQg
ZGVyZWYoKQotICAgIHsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORygqdGhpcyk7
Ci0KLSAgICAgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIHNfcmVmQ291
bnRJbmNyZW1lbnQ7Ci0gICAgICAgIGlmICghdGVtcFJlZkNvdW50KSB7Ci0gICAgICAgICAgICBT
dHJpbmdJbXBsOjpkZXN0cm95KHRoaXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIG1fcmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7Ci0gICAgfQorICAgIHZvaWQgcmVm
KCk7CisgICAgdm9pZCBkZXJlZigpOwogCiAgICAgY2xhc3MgU3RhdGljU3RyaW5nSW1wbCA6IHBy
aXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3Rh
dGljU3RyaW5nSW1wbCk7CkBAIC02MDAsNjQgKzM1NiwyOSBAQCBwdWJsaWM6CiAgICAgICAgIC8v
ICAgICAgIFN0cmluZ0ltcGw6Omhhc2goKSBvbmx5IHNldHMgYSBuZXcgaGFzaCBpZmYgIWhhc0hh
c2goKS4KICAgICAgICAgLy8gICAgICAgQWRkaXRpb25hbGx5LCBTdHJpbmdJbXBsOjpzZXRIYXNo
KCkgYXNzZXJ0cyBoYXNIYXNoKCkgYW5kICFpc1N0YXRpYygpLgogCi0gICAgICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgICAgICBjb25zdGV4cHIgU3RhdGljU3RyaW5n
SW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5k
IHN0cmluZ0tpbmQgPSBTdHJpbmdOb3JtYWwpCi0gICAgICAgICAgICA6IFN0cmluZ0ltcGxTaGFw
ZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0ZXJDb3VudCAtIDEsIGNoYXJh
Y3RlcnMsCi0gICAgICAgICAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2Zs
YWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgICAgICBjb25z
dGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJh
Y3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJpbmdLaW5kID0gU3RyaW5nTm9ybWFsKQotICAgICAg
ICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZywgY2hh
cmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgIHNfaGFzaEZsYWdE
aWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxh
Z0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgb3BlcmF0b3IgU3RyaW5nSW1wbCYoKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOwotICAgICAgICB9Cisg
ICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RhdGlj
U3RyaW5nSW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJp
bmdLaW5kID0gU3RyaW5nTm9ybWFsKTsKKyAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyQ291bnQ+IGNvbnN0ZXhwciBTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNoYXIxNl90ICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5kID0gU3RyaW5nTm9ybWFsKTsKKyAg
ICAgICAgb3BlcmF0b3IgU3RyaW5nSW1wbCYoKTsKICAgICB9OwogCiAgICAgV1RGX0VYUE9SVERB
VEEgc3RhdGljIFN0YXRpY1N0cmluZ0ltcGwgc19hdG9taWNFbXB0eVN0cmluZzsKICAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzX2F0b21pY0VtcHR5U3RyaW5nKTsgfQogCiAgICAgLy8gRklY
TUU6IERvZXMgdGhpcyByZWFsbHkgYmVsb25nIGluIFN0cmluZ0ltcGw/Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGNvcHlDaGFycyhUKiBkZXN0aW5hdGlvbiwgY29uc3Qg
VCogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQotICAgIHsKLSAgICAgICAgaWYgKG51
bUNoYXJhY3RlcnMgPT0gMSkgewotICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJjZTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkoZGVzdGluYXRp
b24sIHNvdXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25z
dCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQotICAgIHsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkKLSAgICAgICAgICAg
IGRlc3RpbmF0aW9uW2ldID0gc291cmNlW2ldOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBjb3B5Q2hhcmFjdGVycyhDaGFyYWN0ZXJUeXBl
KiBkZXN0aW5hdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1D
aGFyYWN0ZXJzKTsKKyAgICBzdGF0aWMgdm9pZCBjb3B5Q2hhcmFjdGVycyhVQ2hhciogZGVzdGlu
YXRpb24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpOwogCiAg
ICAgLy8gU29tZSBzdHJpbmcgZmVhdHVyZXMsIGxpa2UgcmVmY291bnRpbmcgYW5kIHRoZSBhdG9t
aWNpdHkgZmxhZywgYXJlIG5vdAogICAgIC8vIHRocmVhZC1zYWZlLiBXZSBhY2hpZXZlIHRocmVh
ZCBzYWZldHkgYnkgaXNvbGF0aW9uLCBnaXZpbmcgZWFjaCB0aHJlYWQKICAgICAvLyBpdHMgb3du
IGNvcHkgb2YgdGhlIHN0cmluZy4KICAgICBSZWY8U3RyaW5nSW1wbD4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHN1YnN0
cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlv
biwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KTsKIAotICAgIFVDaGFyIGF0KHVuc2lnbmVkIGkpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9sZW5ndGgpOwotICAgICAgICBpZiAo
aXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9kYXRhOFtpXTsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YTE2W2ldOwotICAgIH0KKyAgICBVQ2hhciBhdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAg
VUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWdu
ZWQpOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgY29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpOwotCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CkBAIC02OTIsNDkgKzQxMyw0NCBAQCBwdWJsaWM6CiAgICAgUmVmPFN0cmluZ0ltcGw+IHNp
bXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAKICAgICBSZWY8U3Ry
aW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBSZWY8U3Ry
aW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlw
ZSosIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOworCisgICAgYm9vbCBpc0FsbEFTQ0lJKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0FsbExhdGluMSgpIGNvbnN0OworICAgIHRlbXBsYXRlPGJvb2wg
aXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkg
Y29uc3Q7CiAKICAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0
ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDAp
OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNvbnN0IExD
aGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5k
KGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfQorICAgIEFMV0FZU19JTkxJTkUg
c2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0
dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHN0cmluZyksIGluZGV4KTsg
fQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChTdHJpbmdJbXBsKik7CiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25l
ZCBpbmRleCk7Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCBpbmRleCA9IDApOwotICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nh
c2UoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kSWdub3Jp
bmdDYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgpOyB9Ci0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogCi0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBy
ZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0OwogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0
OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25z
dDsKLSAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRp
dmUpIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyBzdGFydHNXaXRoKHN0cikgOiAocmV2ZXJzZUZp
bmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSA9PSAwKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29s
IGNhc2VTZW5zaXRpdmUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
PgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0s
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0c1dpdGgocHJl
Zml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5n
dGgpIGNvbnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0
c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBz
dGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGgoU3RyaW5nSW1wbCopOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVu
ZHNXaXRoKFN0cmluZ0ltcGwmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0
aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlKTsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBlbmRzV2l0aChVQ2hhcikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBib29s
IGNhc2VTZW5zaXRpdmUpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
PgotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBi
b29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVmaXgs
IG1hdGNoTGVuZ3RoIC0gMSwgY2FzZVNlbnNpdGl2ZSk7IH0KKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNv
bnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgo
cHJlZml4LCBtYXRjaExlbmd0aCAtIDEpOyB9CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgZW5kT2Zmc2V0
KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgVUNoYXIpOwpAQCAtNzQzLDEzICs0NTksMTQgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+
IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgp
OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBs
Kik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVu
c2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ0ltcGwqKTsKIAogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihi
b29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpOwogCiAjaWYgVVNFKENGKQog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKTsKICNlbmRpZgorCiAj
aWZkZWYgX19PQkpDX18KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgb3BlcmF0b3IgTlNTdHJp
bmcgKigpOwogI2VuZGlmCkBAIC03NjAsMTIgKzQ3Nyw3IEBAIHB1YmxpYzoKIAogICAgIEJ1ZmZl
ck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxC
dWZmZXJPd25lcnNoaXA+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza0J1ZmZlck93bmVyc2hp
cCk7IH0KICAgICAKLSAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKQotICAgICAgICAgICAgcmVsZWFzZUFzc2VydENhZ2VkKCk7
Ci0gICAgfQotICAgIAorICAgIHZvaWQgYXNzZXJ0Q2FnZWQoKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgpAQCAtNzc0LDk2ICs0ODYsMzUgQEAgcHJvdGVjdGVkOgogICAgIGVudW0gQ3JlYXRlU3ltYm9s
VGFnIHsgQ3JlYXRlU3ltYm9sIH07CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3ltYm9s
IHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyA4LWJpdCBbW0Rlc2NyaXB0aW9uXV0gc3RyaW5n
IGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KLSAgICBTdHJpbmdJbXBs
KENyZWF0ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3Ro
LCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZl
clN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX2RhdGE4KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORzIobV9s
ZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3
IHN5bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgMTYtYml0IFtbRGVzY3JpcHRpb25d
XSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVmZmVyIChCdWZmZXJTdWJzdHJpbmcpLgotICAgIFN0
cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50
LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOwotICAgICAgICBBU1NFUlQobV9kYXRhMTYp
OwotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUp
OwotICAgIH0KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gTnVsbCBzeW1ib2wuCi0gICAgU3RyaW5nSW1wbChD
cmVhdGVTeW1ib2xUYWcpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNy
ZW1lbnQsIDAsIGVtcHR5KCktPmNoYXJhY3RlcnM4KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwg
U3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlz
OEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBTVFJJTkdfU1RBVFNf
QUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Ci0gICAgfQorICAgIFN0cmluZ0ltcGwo
Q3JlYXRlU3ltYm9sVGFnKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gdGFpbEVsZW1lbnRDb3VudCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiAodGFpbE9mZnNldDxUPigpICsgdGFpbEVsZW1lbnRDb3Vu
dCAqIHNpemVvZihUKSkudW5zYWZlR2V0KCk7Ci0gICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVt
ZW50Q291bnQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc2l6ZV90
IHRhaWxPZmZzZXQoKQotICAgIHsKLSNpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICAvLyBNU1ZD
IGRvZXNuJ3Qgc3VwcG9ydCBhbGlnbm9mIHlldC4KLSAgICAgICAgcmV0dXJuIHJvdW5kVXBUb011
bHRpcGxlT2Y8c2l6ZW9mKFQpPihzaXplb2YoU3RyaW5nSW1wbCkpOwotI2Vsc2UKLSAgICAgICAg
cmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1w
bCwgbV9oYXNoQW5kRmxhZ3MpICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7
Ci0jZW5kaWYKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHNpemVfdCB0
YWlsT2Zmc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCByZXF1aXJlc0NvcHkoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlckludGVybmFsKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKGlzOEJpdCgpKQotICAgICAg
ICAgICAgcmV0dXJuIG1fZGF0YTggPT0gdGFpbFBvaW50ZXI8TENoYXI+KCk7Ci0gICAgICAgIHJl
dHVybiBtX2RhdGExNiA9PSB0YWlsUG9pbnRlcjxVQ2hhcj4oKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGNvbnN0IFQqIHRhaWxQb2ludGVyKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBUKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odGhpcykgKyB0YWlsT2Zmc2V0PFQ+KCkpOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogdGFpbFBvaW50ZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPihyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Ci0gICAgfQotCi0gICAgU3RyaW5n
SW1wbCogY29uc3QmIHN1YnN0cmluZ0J1ZmZlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKLQotICAgICAgICByZXR1
cm4gKnRhaWxQb2ludGVyPFN0cmluZ0ltcGwqPigpOwotICAgIH0KLQotICAgIFN0cmluZ0ltcGwq
JiBzdWJzdHJpbmdCdWZmZXIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hp
cCgpID09IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAgcmV0dXJuICp0YWlsUG9pbnRlcjxT
dHJpbmdJbXBsKj4oKTsKLSAgICB9CisgICAgYm9vbCByZXF1aXJlc0NvcHkoKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiB0YWlsUG9pbnRlcigpIGNvbnN0OworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIHRhaWxQb2ludGVyKCk7CisgICAgU3RyaW5nSW1wbCog
Y29uc3QmIHN1YnN0cmluZ0J1ZmZlcigpIGNvbnN0OworICAgIFN0cmluZ0ltcGwqJiBzdWJzdHJp
bmdCdWZmZXIoKTsKIAogICAgIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnRUeXBlIHsgVXBwZXIsIExv
d2VyIH07Ci0gICAgdGVtcGxhdGU8Q2FzZUNvbnZlcnRUeXBlIHR5cGUsIHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29udmVydEFTQ0lJQ2FzZShTdHJpbmdJ
bXBsJiwgY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKLQotICAgIHRlbXBsYXRlIDxj
bGFzcyBVQ2hhclByZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHN0cmlwTWF0Y2hlZENoYXJhY3Rl
cnMoVUNoYXJQcmVkaWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xh
c3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0
ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVybmFsKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCwgQ2hhclR5
cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFy
VHlwZSomKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmLCB1bnNpZ25lZCwg
Q2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOwor
ICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0QVNDSUlDYXNlKFN0cmluZ0ltcGwmLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVUNoYXJQ
cmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJl
ZGljYXRlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBV
Q2hhclByZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNU
b1NwYWNlKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVybmFsKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQsIENo
YXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1
bnNpZ25lZCwgQ2hhcmFjdGVyVHlwZSomKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3Ry
aW5nSW1wbD4mJiwgdW5zaWduZWQsIENoYXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5h
bChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBORVZFUl9JTkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAKICAgICAvLyBU
aGUgYm90dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBhIHN0YXRpYyAoaW1tb3J0
YWwpIHN0cmluZy4KQEAgLTg3NSwxMyArNTI2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiBwdWJs
aWM6Ci0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgYXNzZXJ0SGFzaElzQ29ycmVjdCgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQoaGFzSGFzaCgpKTsKLSAgICAgICAgQVNTRVJUKGV4aXN0
aW5nSGFzaCgpID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hh
cmFjdGVyczgoKSwgbGVuZ3RoKCkpKTsKLSAgICB9Ci0jZW5kaWYKKyAgICB2b2lkIGFzc2VydEhh
c2hJc0NvcnJlY3QoKSBjb25zdDsKIH07CiAKIHVzaW5nIFN0YXRpY1N0cmluZ0ltcGwgPSBTdHJp
bmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsOwpAQCAtOTAwLDE3ICs1NDUsNiBAQCBWYWx1ZUNoZWNr
PFN0cmluZ0ltcGwqPiB7CiB9OwogI2VuZGlmCiAKLXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5F
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxMQ2hhcj4oU3Ry
aW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChO
b3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0b3IpKTsg
fQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNvbnN0cnVjdEludGVybmFsPFVDaGFyPihTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGltcGwpIFN0cmluZ0ltcGwobGVu
Z3RoKSk7IH0KLQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczgoKTsg
fQotCi10ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6
Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQotCiBX
VEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
U3RyaW5nSW1wbCopOwogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3Ry
aW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJ
bXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oYikpOyB9CkBAIC05MzQsNyArNTY4LDMxIEBAIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VM
ZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciAoJmxv
d2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwogCi1pbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApCitzaXplX3QgZmluZChjb25zdCBM
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWdu
ZWQgaW5kZXggPSAwKTsKK3NpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
LCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmRMaW5lVGVybWlu
YXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBpbmRl
eCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlw
ZSosIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworc2l6ZV90
IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpOworc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
LCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpOworCit0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eT4mLCBTdHJpbmdJbXBsKik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUx
LCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMj4gaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgQ2hh
cmFjdGVyVHlwZTEqLCB1bnNpZ25lZCBsZW5ndGgxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiosIHVu
c2lnbmVkIGxlbmd0aDIpOworaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCos
IGNvbnN0IFN0cmluZ0ltcGwqKTsKKworLy8gRklYTUU6IFNob3VsZCByZW5hbWUgdGhpcyB0byBt
YWtlIGNsZWFyIGl0IHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLgor
Ly8gTW9zdCBXZWJLaXQgY2FsbGVycyBkb24ndCB3YW50IHRoYXQgd291bGQgdXNlIGlzQVNDSUlT
cGFjZSBvciBpc0hUTUxTcGFjZSBpbnN0ZWFkLgorYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFy
KTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5zaWduZWQgbGVuZ3RoT2ZO
dWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKik7CisKK3RlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJu
YWw8TENoYXI+KFN0cmluZ0ltcGwqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0cmluZ0ltcGwobGVuZ3RoLCBGb3JjZThC
aXRDb25zdHJ1Y3RvcikpOyB9Cit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPFVDaGFyPihTdHJpbmdJbXBsKiBzdHJp
bmcsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3Ry
aW5nKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9Cit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgY29u
c3QgTENoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4g
Y2hhcmFjdGVyczgoKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnMx
NigpOyB9CisKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVu
c2lnbmVkIGluZGV4KQogewogICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAgICBp
ZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2luZGV4XSkpCkBAIC05NDQsNyArNjAyLDcgQEAg
aW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3Rlck1hdGNoRnVuY3QKICAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAKLWlubGlu
ZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBD
aGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0g
MCkKK2lubGluZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVk
IGluZGV4KQogewogICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAgICBpZiAobWF0
Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2luZGV4XSkpCkBAIC05NTQsMjQgKzYxMiwyMiBAQCBpbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Q2hhcmFjdGVyTWF0Y2hGdW5jdAogICAgIHJldHVybiBub3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmRMaW5lVGVy
bWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBpbmRleCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogICAgIGlmIChpbmRl
eCA+PSBsZW5ndGgpCiAgICAgICAgIGluZGV4ID0gbGVuZ3RoIC0gMTsKLSAgICBDaGFyYWN0ZXJU
eXBlIGMgPSBjaGFyYWN0ZXJzW2luZGV4XTsKLSAgICB3aGlsZSAoKGMgIT0gJ1xuJykgJiYgKGMg
IT0gJ1xyJykpIHsKKyAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaW5kZXhdOworICAg
IHdoaWxlIChjaGFyYWN0ZXIgIT0gJ1xuJyAmJiBjaGFyYWN0ZXIgIT0gJ1xyJykgewogICAgICAg
ICBpZiAoIWluZGV4LS0pCiAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAgIGMg
PSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpbmRl
eF07CiAgICAgfQogICAgIHJldHVybiBpbmRleDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFj
dGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIs
IHVuc2lnbmVkIGluZGV4KQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbm90
Rm91bmQ7CkBAIC05ODQsMTIgKzY0MCwxMiBAQCBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcgogICAg
IHJldHVybiBpbmRleDsKIH0KIAotQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0
ZXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCitBTFdBWVNfSU5MSU5FIHNpemVfdCByZXZl
cnNlRmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBt
YXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgcmV0dXJuIHJldmVyc2VGaW5k
KGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8VUNoYXI+KG1hdGNoQ2hhcmFjdGVyKSwg
aW5kZXgpOwogfQogCi1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBp
bmRleCA9IFVJTlRfTUFYKQoraW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXgpCiB7CiAgICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYgfjB4RkYpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKQEAgLTEwMjEsNDUgKzY3NywzMCBAQCB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3Rv
cjxVQwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZTI+Ci1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUodW5zaWduZWQgbDEsIHVu
c2lnbmVkIGwyLCBjb25zdCBDaGFyYWN0ZXJUeXBlMSogYzEsIGNvbnN0IENoYXJhY3RlclR5cGUy
KiBjMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7Ci0g
ICAgdW5zaWduZWQgcG9zID0gMDsKLSAgICB3aGlsZSAocG9zIDwgbG1pbiAmJiAqYzEgPT0gKmMy
KSB7Ci0gICAgICAgICsrYzE7Ci0gICAgICAgICsrYzI7Ci0gICAgICAgICsrcG9zOworaW5saW5l
IGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IENoYXJhY3RlclR5cGUxKiBjaGFyYWN0ZXJzMSwg
dW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIqIGNoYXJhY3RlcnMyLCB1bnNp
Z25lZCBsZW5ndGgyKQoreworICAgIHVuc2lnbmVkIGNvbW1vbkxlbmd0aCA9IHN0ZDo6bWluKGxl
bmd0aDEsIGxlbmd0aDIpOworCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxl
IChwb3NpdGlvbiA8IGNvbW1vbkxlbmd0aCAmJiAqY2hhcmFjdGVyczEgPT0gKmNoYXJhY3RlcnMy
KSB7CisgICAgICAgICsrY2hhcmFjdGVyczE7CisgICAgICAgICsrY2hhcmFjdGVyczI7CisgICAg
ICAgICsrcG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKHBvcyA8IGxtaW4pCi0gICAgICAgIHJl
dHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CisgICAgaWYgKHBvc2l0aW9uIDwgY29tbW9u
TGVuZ3RoKQorICAgICAgICByZXR1cm4gKGNoYXJhY3RlcnMxWzBdID4gY2hhcmFjdGVyczJbMF0p
ID8gMSA6IC0xOwogCi0gICAgaWYgKGwxID09IGwyKQorICAgIGlmIChsZW5ndGgxID09IGxlbmd0
aDIpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIChsMSA+IGwyKSA/IDEgOiAtMTsK
LX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlOChjb25zdCBTdHJpbmdJbXBsKiBzdHJp
bmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQotewotICAgIHJldHVybiBjb2RlUG9pbnRD
b21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hh
cmFjdGVyczgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgoKSk7Ci19Ci0KLWlubGluZSBpbnQgY29k
ZVBvaW50Q29tcGFyZTE2KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0lt
cGwqIHN0cmluZzIpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+bGVu
Z3RoKCksIHN0cmluZzItPmxlbmd0aCgpLCBzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Mi0+Y2hhcmFjdGVyczE2KCkpOwotfQotCi1pbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmU4VG8x
Nihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQot
ewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcy
LT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczE2
KCkpOworICAgIHJldHVybiAobGVuZ3RoMSA+IGxlbmd0aDIpID8gMSA6IC0xOwogfQogCiBpbmxp
bmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3Qg
U3RyaW5nSW1wbCogc3RyaW5nMikKIHsKKyAgICAvLyBGSVhNRTogU2hvdWxkIG51bGwgc3RyaW5n
cyBjb21wYXJlIGFzIGxlc3MgdGhhbiBlbXB0eSBzdHJpbmdzIHJhdGhlciB0aGFuIGVxdWFsIHRv
IHRoZW0/CiAgICAgaWYgKCFzdHJpbmcxKQogICAgICAgICByZXR1cm4gKHN0cmluZzIgJiYgc3Ry
aW5nMi0+bGVuZ3RoKCkpID8gLTEgOiAwOwotCiAgICAgaWYgKCFzdHJpbmcyKQogICAgICAgICBy
ZXR1cm4gc3RyaW5nMS0+bGVuZ3RoKCkgPyAxIDogMDsKIApAQCAtMTA2NywyMyArNzA4LDIyIEBA
IGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBj
b25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyCiAgICAgYm9vbCBzdHJpbmcySXM4Qml0ID0gc3RyaW5n
Mi0+aXM4Qml0KCk7CiAgICAgaWYgKHN0cmluZzFJczhCaXQpIHsKICAgICAgICAgaWYgKHN0cmlu
ZzJJczhCaXQpCi0gICAgICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZTgoc3RyaW5nMSwg
c3RyaW5nMik7Ci0gICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlOFRvMTYoc3RyaW5nMSwg
c3RyaW5nMik7CisgICAgICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgoKSwg
c3RyaW5nMi0+bGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJp
bmcxLT5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVy
czE2KCksIHN0cmluZzItPmxlbmd0aCgpKTsKICAgICB9CiAgICAgaWYgKHN0cmluZzJJczhCaXQp
Ci0gICAgICAgIHJldHVybiAtY29kZVBvaW50Q29tcGFyZThUbzE2KHN0cmluZzIsIHN0cmluZzEp
OwotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlMTYoc3RyaW5nMSwgc3RyaW5nMik7CisgICAg
ICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMi0+bGVuZ3RoKCkp
OworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmNoYXJhY3RlcnMxNigpLCBz
dHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmxlbmd0
aCgpKTsKIH0KIAotaW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhciBjKQoraW5saW5l
IGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gVXNlIGlz
QVNDSUlTcGFjZSgpIGZvciBiYXNpYyBMYXRpbi0xLgogICAgIC8vIFRoaXMgd2lsbCBpbmNsdWRl
IG5ld2xpbmVzLCB3aGljaCBhcmVuJ3QgaW5jbHVkZWQgaW4gVW5pY29kZSBEaXJXUy4KLSAgICBy
ZXR1cm4gYyA8PSAweDdGID8gaXNBU0NJSVNwYWNlKGMpIDogdV9jaGFyRGlyZWN0aW9uKGMpID09
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKKyAgICByZXR1cm4gaXNBU0NJSShjaGFyYWN0ZXIpID8g
aXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBV
X1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1pbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0
ZXJUeXBlKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZyk7CiAgICAgc2l6ZV90IGxlbmd0
aCA9IDA7CkBAIC0xMDk0LDYgKzczNCwzOCBAQCBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxs
VGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwogfQogCitpbmxpbmUgU3RyaW5nSW1wbFNo
YXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpCisgICAgOiBtX3JlZkNv
dW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRhOChkYXRh
OCkKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sKK30KKworaW5saW5lIFN0
cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBkYXRhMTYsIHVuc2lnbmVkIGhhc2hBbmRGbGFncykKKyAg
ICA6IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBt
X2RhdGExNihkYXRhMTYpCisgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCit7Cit9
CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUgY29uc3RleHByIFN0
cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2ln
bmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKKyAgICA6IG1fcmVm
Q291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2RhdGE4Q2hh
cihjaGFyYWN0ZXJzKQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQoreworfQor
Cit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lIGNvbnN0ZXhwciBTdHJp
bmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5z
aWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKQorICAgIDogbV9y
ZWZDb3VudChyZWZDb3VudCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1fZGF0YTE2
Q2hhcihjaGFyYWN0ZXJzKQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQorewor
fQorCiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZXF1aXJlc0NvcHkoKSkgewpAQCAtMTEwNyw2ICs3NzksMzg5IEBA
IGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
ICAgICByZXR1cm4gY3JlYXRlKG1fZGF0YTE2LCBtX2xlbmd0aCk7CiB9CiAKK2lubGluZSBib29s
IFN0cmluZ0ltcGw6OmlzQWxsQVNDSUkoKSBjb25zdAoreworICAgIGlmIChpczhCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzOCgpLCBsZW5ndGgo
KSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzMTYoKSwgbGVu
Z3RoKCkpOworfQorCitpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjppc0FsbExhdGluMSgpIGNvbnN0
Cit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvKiBj
aGFyYWN0ZXJzID0gY2hhcmFjdGVyczE2KCk7CisgICAgVUNoYXIgb3JlZCA9IDA7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKQorICAgICAgICBvcmVkIHw9IGNoYXJh
Y3RlcnNbaV07CisgICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7Cit9CisKK3RlbXBsYXRlPGJv
b2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5s
aW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1NwZWNpYWxDaGFyYWN0ZXIoY2hhcmFjdGVyc1tp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCit0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGlubGluZSBib29s
IFN0cmluZ0ltcGw6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdAoreworICAgIGlmIChp
czhCaXQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1Nw
ZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gV1RG
Ojppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3Rlcj4oY2hhcmFjdGVyczE2
KCksIGxlbmd0aCgpKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWdu
ZWQgbGVuZ3RoLCBGb3JjZThCaXQpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxMQ2hhcj4oKSwgc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKK3sKKyAgICBBU1NFUlQobV9kYXRh
OCk7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9T
VFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbCh1bnNp
Z25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwg
bGVuZ3RoLCB0YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJu
YWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisg
ICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUg
U3RyaW5nSW1wbDo6U3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBs
ZW5ndGgsIGNoYXJhY3RlcnMubGVha1B0cigpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmlu
Z05vcm1hbCB8IEJ1ZmZlck93bmVkKQoreworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBBU1NF
UlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0
aCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKQorICAg
IDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVy
cywgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTE2
KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9T
VFJJTkcobV9sZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29w
eWluZ1RhZykKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5n
dGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVm
ZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0
aCk7CisKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKwor
aW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jUHRyPFVDaGFyPiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3Jl
bWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVy
T3duZWQpCit7CisgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICBBU1NFUlQobV9sZW5ndGgpOwor
CisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOworfQorCitpbmxp
bmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQorICAgIDogU3RyaW5nSW1wbFNoYXBl
KHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgc19oYXNoRmxhZzhCaXRC
dWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJTdWJzdHJpbmcpCit7CisgICAgQVNTRVJUKGlz
OEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRhOCk7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKyAg
ICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKKwor
ICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gJmJhc2UubGVha1JlZigpOworCisgICAgU1RSSU5HX1NU
QVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOworfQorCitpbmxpbmUgU3RyaW5n
SW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
LCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291
bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vi
c3RyaW5nKQoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGExNik7
CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlw
KCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gJmJhc2Uu
bGVha1JlZigpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3Ro
LCB0cnVlKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3Rv
cjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIGNyZWF0ZThC
aXRJZlBvc3NpYmxlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOworfQorCitBTFdBWVNf
SU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5n
SW1wbChTdHJpbmdJbXBsJiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLmxlbmd0aCgpKTsKKworICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gKmVtcHR5KCk7CisKKyAgICBhdXRvKiBvd25lclJlcCA9ICgocmVw
LmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVm
ZmVyKCkgOiAmcmVwKTsKKworICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVmZmVyIHRoYXQgY29udGFp
bnMgYm90aCB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QgYXMgd2VsbCBhcyB0aGUgcG9pbnRlciB0byB0
aGUgb3duZXIgc3RyaW5nLgorICAgIGF1dG8qIHN0cmluZ0ltcGwgPSBzdGF0aWNfY2FzdDxTdHJp
bmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPFN0cmluZ0ltcGwqPigxKSkpOwor
ICAgIGlmIChyZXAuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgs
ICpvd25lclJlcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJ
bXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGExNiArIG9mZnNldCwgbGVuZ3RoLCAqb3duZXJSZXAp
KTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCit7CisgICAgQ09NUElMRV9BU1NFUlQoY2hh
cmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7CisgICAgQ09N
UElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNpemVv
ZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbENh
bm5vdE92ZXJmbG93KTsKKworICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGNoYXJhY3RlckNvdW50IC0gMSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgUmVm
UHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYgb3V0cHV0KQoreworICAgIGlmICghbGVuZ3RoKSB7
CisgICAgICAgIG91dHB1dCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBlbXB0eSgpOworICAg
IH0KKworICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKSB7Cisg
ICAgICAgIG91dHB1dCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICBhdXRvKiByZXN1bHRJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHRyeVN0cmlu
Z01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKSk7CisgICAgaWYg
KCFyZXN1bHRJbXBsKSB7CisgICAgICAgIG91dHB1dCA9IG51bGxwdHI7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKyAgICBvdXRwdXQgPSByZXN1bHRJbXBsLT50YWlsUG9pbnRlcjxD
aGFyYWN0ZXJUeXBlPigpOworCisgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJhY3Rl
clR5cGU+KHJlc3VsdEltcGwsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHk+CitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmFkb3B0KFN0cmluZ1ZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mJiB2ZWN0b3IpCit7CisgICAgaWYgKHNpemVfdCBzaXpl
ID0gdmVjdG9yLnNpemUoKSkgeworICAgICAgICBBU1NFUlQodmVjdG9yLmRhdGEoKSk7CisgICAg
ICAgIGlmIChzaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1w
bCh2ZWN0b3IucmVsZWFzZUJ1ZmZlcigpLCBzaXplKSk7CisgICAgfQorICAgIHJldHVybiAqZW1w
dHkoKTsKK30KKworaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpjb3N0KCkgY29uc3QKK3sKKyAg
ICAvLyBGb3Igc3Vic3RyaW5ncywgcmV0dXJuIHRoZSBjb3N0IG9mIHRoZSBiYXNlIHN0cmluZy4K
KyAgICBpZiAoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICBy
ZXR1cm4gc3Vic3RyaW5nQnVmZmVyKCktPmNvc3QoKTsKKworICAgIC8vIE5vdGU6IHdlIG11c3Qg
bm90IGFsdGVyIHRoZSBtX2hhc2hBbmRGbGFncyBmaWVsZCBpbiBpbnN0YW5jZXMgb2YgU3RhdGlj
U3RyaW5nSW1wbC4KKyAgICAvLyBXZSBlbnN1cmUgdGhpcyBieSBwcmUtc2V0dGluZyB0aGUgc19o
YXNoRmxhZ0RpZFJlcG9ydENvc3QgYml0IGluIGFsbCBpbnN0YW5jZXMgb2YKKyAgICAvLyBTdGF0
aWNTdHJpbmdJbXBsLiBBcyBhIHJlc3VsdCwgU3RhdGljU3RyaW5nSW1wbCBpbnN0YW5jZXMgd2ls
bCBhbHdheXMgcmV0dXJuIGEgY29zdCBvZgorICAgIC8vIDAgaGVyZSBhbmQgYXZvaWQgbW9kaWZ5
aW5nIG1faGFzaEFuZEZsYWdzLgorICAgIGlmIChtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdE
aWRSZXBvcnRDb3N0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1faGFzaEFuZEZsYWdzIHw9
IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0OworICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsK
KyAgICBpZiAoIWlzOEJpdCgpKQorICAgICAgICByZXN1bHQgPDw9IDE7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpjb3N0RHVyaW5nR0MoKQorewor
ICAgIGlmIChpc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChidWZmZXJP
d25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpCisgICAgICAgIHJldHVybiBkaXZpZGVSb3Vu
ZGVkVXAoc3Vic3RyaW5nQnVmZmVyKCktPmNvc3REdXJpbmdHQygpLCByZWZDb3VudCgpKTsKKwor
ICAgIHNpemVfdCByZXN1bHQgPSBtX2xlbmd0aDsKKyAgICBpZiAoIWlzOEJpdCgpKQorICAgICAg
ICByZXN1bHQgPDw9IDE7CisgICAgcmV0dXJuIGRpdmlkZVJvdW5kZWRVcChyZXN1bHQsIHJlZkNv
dW50KCkpOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpzZXRJc0F0b21pYyhib29sIGlz
QXRvbWljKQoreworICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CisgICAgQVNTRVJUKCFpc1N5bWJv
bCgpKTsKKyAgICBpZiAoaXNBdG9taWMpIHsKKyAgICAgICAgbV9oYXNoQW5kRmxhZ3MgfD0gc19o
YXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgQVNTRVJUKHN0cmluZ0tpbmQoKSA9
PSBTdHJpbmdBdG9taWMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faGFzaEFuZEZsYWdzICY9
IH5zX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOworICAgICAgICBBU1NFUlQoc3RyaW5nS2lu
ZCgpID09IFN0cmluZ05vcm1hbCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBs
OjpzZXRIYXNoKHVuc2lnbmVkIGhhc2gpIGNvbnN0Cit7CisgICAgLy8gVGhlIGhpZ2ggYml0cyBv
ZiAnaGFzaCcgYXJlIGFsd2F5cyBlbXB0eSwgYnV0IHdlIHByZWZlciB0byBzdG9yZSBvdXIgZmxh
Z3MKKyAgICAvLyBpbiB0aGUgbG93IGJpdHMgYmVjYXVzZSBpdCBtYWtlcyB0aGVtIHNsaWdodGx5
IG1vcmUgZWZmaWNpZW50IHRvIGFjY2Vzcy4KKyAgICAvLyBTbywgd2Ugc2hpZnQgbGVmdCBhbmQg
cmlnaHQgd2hlbiBzZXR0aW5nIGFuZCBnZXR0aW5nIG91ciBoYXNoIGNvZGUuCisKKyAgICBBU1NF
UlQoIWhhc0hhc2goKSk7CisgICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKKyAgICAvLyBNdWx0aXBs
ZSBjbGllbnRzIGFzc3VtZSB0aGF0IFN0cmluZ0hhc2hlciBpcyB0aGUgY2Fub25pY2FsIHN0cmlu
ZyBoYXNoIGZ1bmN0aW9uLgorICAgIEFTU0VSVChoYXNoID09IChpczhCaXQoKSA/IFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpIDogU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGExNiwgbV9sZW5ndGgp
KSk7CisgICAgQVNTRVJUKCEoaGFzaCAmIChzX2ZsYWdNYXNrIDw8ICg4ICogc2l6ZW9mKGhhc2gp
IC0gc19mbGFnQ291bnQpKSkpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggaGlnaCBiaXRzIGFyZSBl
bXB0eS4KKworICAgIGhhc2ggPDw9IHNfZmxhZ0NvdW50OworICAgIEFTU0VSVCghKGhhc2ggJiBt
X2hhc2hBbmRGbGFncykpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggbG93IGJpdHMgYXJlIGVtcHR5
IGFmdGVyIHNoaWZ0LgorICAgIEFTU0VSVChoYXNoKTsgLy8gVmVyaWZ5IHRoYXQgMCBpcyBhIHZh
bGlkIHNlbnRpbmVsIGhhc2ggdmFsdWUuCisKKyAgICBtX2hhc2hBbmRGbGFncyB8PSBoYXNoOyAv
LyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93IGJpdHMuCit9CisKK2lubGluZSB2b2lkIFN0
cmluZ0ltcGw6OnJlZigpCit7CisgICAgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkcoKnRoaXMpOwor
CisgICAgbV9yZWZDb3VudCArPSBzX3JlZkNvdW50SW5jcmVtZW50OworfQorCitpbmxpbmUgdm9p
ZCBTdHJpbmdJbXBsOjpkZXJlZigpCit7CisgICAgU1RSSU5HX1NUQVRTX0RFUkVGX1NUUklORygq
dGhpcyk7CisKKyAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBtX3JlZkNvdW50IC0gc19yZWZD
b3VudEluY3JlbWVudDsKKyAgICBpZiAoIXRlbXBSZWZDb3VudCkgeworICAgICAgICBTdHJpbmdJ
bXBsOjpkZXN0cm95KHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVmQ291
bnQgPSB0ZW1wUmVmQ291bnQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSB2b2lkIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKENoYXJhY3RlclR5cGUqIGRl
c3RpbmF0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJh
Y3RlcnMpCit7CisgICAgaWYgKG51bUNoYXJhY3RlcnMgPT0gMSkgeworICAgICAgICAqZGVzdGlu
YXRpb24gPSAqc291cmNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbWNweShkZXN0
aW5hdGlvbiwgc291cmNlLCBudW1DaGFyYWN0ZXJzICogc2l6ZW9mKENoYXJhY3RlclR5cGUpKTsK
K30KKworQUxXQVlTX0lOTElORSB2b2lkIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKFVDaGFy
KiBkZXN0aW5hdGlvbiwgY29uc3QgTENoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVy
cykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyczsgKytpKQor
ICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKK30KKworaW5saW5lIFVDaGFyIFN0
cmluZ0ltcGw6OmF0KHVuc2lnbmVkIGkpIGNvbnN0Cit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKKyAgICByZXR1cm4gaXM4Qml0KCkgPyBtX2Rh
dGE4W2ldIDogbV9kYXRhMTZbaV07Cit9CisKK2lubGluZSB2b2lkIFN0cmluZ0ltcGw6OmFzc2Vy
dENhZ2VkKCkgY29uc3QKK3sKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgcmVs
ZWFzZUFzc2VydENhZ2VkKCk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJh
Y3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3Ry
aW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAg
IFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKworaW5s
aW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVm
Q291bnRJbmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycywgU3RyaW5nU3ltYm9sIHwgQnVmZmVy
U3Vic3RyaW5nKQoreworICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGEx
Nik7CisgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsK
K30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnKQorICAg
IDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIDAsIGVtcHR5KCktPmNoYXJh
Y3RlcnM4KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vi
c3RyaW5nKQoreworICAgIEFTU0VSVChpczhCaXQoKSk7CisgICAgQVNTRVJUKG1fZGF0YTgpOwor
ICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjphbGxvY2F0aW9u
U2l6ZShDaGVja2VkPHNpemVfdD4gdGFpbEVsZW1lbnRDb3VudCkKK3sKKyAgICByZXR1cm4gKHRh
aWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCkpLnVuc2FmZUdldCgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OnRh
aWxPZmZzZXQoKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisgICAgLy8gTVNWQyBkb2Vzbid0IHN1
cHBvcnQgYWxpZ25vZiB5ZXQuCisgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9m
KFQpPihzaXplb2YoU3RyaW5nSW1wbCkpOworI2Vsc2UKKyAgICByZXR1cm4gcm91bmRVcFRvTXVs
dGlwbGVPZjxhbGlnbm9mKFQpPihvZmZzZXRvZihTdHJpbmdJbXBsLCBtX2hhc2hBbmRGbGFncykg
KyBzaXplb2YoU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3MpKTsKKyNlbmRpZgorfQorCitpbmxp
bmUgYm9vbCBTdHJpbmdJbXBsOjpyZXF1aXJlc0NvcHkoKSBjb25zdAoreworICAgIGlmIChidWZm
ZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBtX2RhdGE4ID09IHRhaWxQb2ludGVy
PExDaGFyPigpOworICAgIHJldHVybiBtX2RhdGExNiA9PSB0YWlsUG9pbnRlcjxVQ2hhcj4oKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0IFQqIFN0cmluZ0ltcGw6OnRh
aWxQb2ludGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29u
c3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNl
dDxUPigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFN0cmluZ0ltcGw6
OnRhaWxQb2ludGVyKCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8VCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNldDxUPigpKTsKK30KKwor
aW5saW5lIFN0cmluZ0ltcGwqIGNvbnN0JiBTdHJpbmdJbXBsOjpzdWJzdHJpbmdCdWZmZXIoKSBj
b25zdAoreworICAgIEFTU0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcp
OworCisgICAgcmV0dXJuICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsKK30KKworaW5saW5l
IFN0cmluZ0ltcGwqJiBTdHJpbmdJbXBsOjpzdWJzdHJpbmdCdWZmZXIoKQoreworICAgIEFTU0VS
VChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOworCisgICAgcmV0dXJuICp0
YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6
YXNzZXJ0SGFzaElzQ29ycmVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGV4aXN0aW5nSGFzaCgp
ID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKCkpKTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGlu
bGluZSBjb25zdGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5n
SW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5k
IHN0cmluZ0tpbmQpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRp
Y1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAorICAgICAgICBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1
ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1Rv
cDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhw
cikKK3sKK30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGlubGluZSBjb25z
dGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbChjb25z
dCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCBzdHJp
bmdLaW5kKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJp
bmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAgICAgICAgc19oYXNoRmxhZ0Rp
ZFJlcG9ydENvc3QgfCBzdHJpbmdLaW5kIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVy
Ojpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFn
Q291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByKQoreworfQorCitpbmxpbmUgU3RyaW5nSW1w
bDo6U3RhdGljU3RyaW5nSW1wbDo6b3BlcmF0b3IgU3RyaW5nSW1wbCYoKQoreworICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4odGhpcyk7Cit9CisKIC8vIFN0cmluZ0hh
c2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nSW1wbCogYW5kIFJlZlB0cjxTdHJpbmdJ
bXBsPgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwogdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nSW1wbCo+IHsKQEAgLTExNTYsMTQgKzEyMTEsMTAg
QEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuICZpbXBsOyBcCiAgICAg
fSgpKQogCi0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1
c2luZyBXVEY6OlN0YXRpY1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwotdXNpbmcgV1RG
OjpUZXh0Q2FzZVNlbnNpdGl2aXR5OwotdXNpbmcgV1RGOjpUZXh0Q2FzZVNlbnNpdGl2ZTsKLXVz
aW5nIFdURjo6VGV4dENhc2VJbnNlbnNpdGl2ZTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDJhMjI1NWE2YzUyOWY0MWI3NDdkMGQ1MTVkOWYxNDVlMGZmNGUyZDIuLjE4
MTNlYzMwODdkNGRmMGMzYWFmMzg0YTU5ZmFjNDhmYzY5ZWEzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5oCkBAIC00NTEsMTYgKzQ1MSwxNiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3Ojpj
b250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojpn
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChMQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzOEJpdCgpKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRp
b24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOwogfQogCiBpbmxpbmUg
dm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChVQ2hhciogZGVzdGlu
YXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFN0cmluZ0ltcGw6OmNvcHlD
aGFycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsKKyAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczE2KCksIG1fbGVuZ3Ro
KTsKIH0KIAogaW5saW5lIFN0cmluZ1ZpZXc6OlVwY29udmVydGVkQ2hhcmFjdGVyczo6VXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAppbmRleCAwZTk5NTAyMWY4ZWZlOGJhZGVkYjc4Yjk4MDlmYzJlMGQzMWQ0Njdh
Li5lMzE1ZGFjMzdkMWIzNGU1ZDIwYTBhMDE2MWYwMjQ1MmY4MTJiNTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtNDgsMTIgKzQ4LDEwIEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB9CiAKIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVU
Ri0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLVN0cmluZzo6U3RyaW5n
KGNvbnN0IFVDaGFyKiBzdHIpCitTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogbnVsbFRlcm1p
bmF0ZWRTdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
aW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJp
bmcoc3RyKSk7CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQorICAgICAgICBtX2ltcGwg
PSBTdHJpbmdJbXBsOjpjcmVhdGUobnVsbFRlcm1pbmF0ZWRTdHJpbmcsIGxlbmd0aE9mTnVsbFRl
cm1pbmF0ZWRTdHJpbmcobnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAogLy8gQ29uc3RydWN0
IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCkBAIC02OSwxNyArNjcsMTcgQEAgU3RyaW5nOjpT
dHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBt
X2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGNoYXJhY3RlcnMpLCBsZW5ndGgpOwogfQogCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBs
YXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1TdHJpbmc6OlN0cmlu
Zyhjb25zdCBMQ2hhciogY2hhcmFjdGVycykKKy8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIExh
dGluLTEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCitTdHJpbmc6OlN0cmlu
Zyhjb25zdCBMQ2hhciogbnVsbFRlcm1pbmF0ZWRTdHJpbmcpCiB7Ci0gICAgaWYgKGNoYXJhY3Rl
cnMpCi0gICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzKTsKKyAg
ICBpZiAobnVsbFRlcm1pbmF0ZWRTdHJpbmcpCisgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6
OmNyZWF0ZShudWxsVGVybWluYXRlZFN0cmluZyk7CiB9CiAKLVN0cmluZzo6U3RyaW5nKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMpCitTdHJpbmc6OlN0cmluZyhjb25zdCBjaGFyKiBudWxsVGVybWlu
YXRlZFN0cmluZykKIHsKLSAgICBpZiAoY2hhcmFjdGVycykKLSAgICAgICAgbV9pbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSk7CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQorICAgICAgICBtX2ltcGwgPSBTdHJp
bmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG51bGxUZXJtaW5h
dGVkU3RyaW5nKSk7CiB9CiAKIFN0cmluZzo6U3RyaW5nKEFTQ0lJTGl0ZXJhbCBjaGFyYWN0ZXJz
KQpAQCAtODcsMzUgKzg1LDM2IEBAIFN0cmluZzo6U3RyaW5nKEFTQ0lJTGl0ZXJhbCBjaGFyYWN0
ZXJzKQogewogfQogCi12b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQordm9p
ZCBTdHJpbmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGV4dHJlbWVseSBpbmVmZmljaWVudC4gU28gbXVjaCBzbyB0aGF0IHdlIG1p
Z2h0IHdhbnQgdG8gdGFrZSB0aGlzIG91dCBvZiBTdHJpbmcncyBBUEkuCiAKLSAgICBpZiAoc3Ry
LmlzRW1wdHkoKSkKLSAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RyLm1faW1wbCkgewotICAg
ICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgICAgICBpZiAobV9pbXBsLT5pczhCaXQoKSAmJiBz
dHIubV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICAgICAgICAgIExDaGFyKiBkYXRhOwotICAg
ICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgLSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBDUkFT
SCgpOwotICAgICAgICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwgZGF0YSk7Ci0gICAg
ICAgICAgICAgICAgbWVtY3B5KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbV9pbXBsLT5s
ZW5ndGgoKSAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICAgICAgICAgIG1lbWNweShkYXRhICsg
bV9pbXBsLT5sZW5ndGgoKSwgc3RyLmNoYXJhY3RlcnM4KCksIHN0ci5sZW5ndGgoKSAqIHNpemVv
ZihMQ2hhcikpOwotICAgICAgICAgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgVUNoYXIq
IGRhdGE7Ci0gICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBD
UkFTSCgpOwotICAgICAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgpICsgc3RyLmxlbmd0aCgpLCBkYXRhKTsKLSAgICAg
ICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0
YSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KHN0cikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCkpOwotICAgICAgICAgICAgbV9pbXBsID0gV1RGTW92
ZShuZXdJbXBsKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2ltcGwgPSBzdHIubV9p
bXBsOworICAgIGlmICghbV9pbXBsKSB7CisgICAgICAgIG1faW1wbCA9IG90aGVyU3RyaW5nLm1f
aW1wbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvdGhlclN0cmluZy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbGVuZ3RoID0gbV9pbXBsLT5sZW5n
dGgoKTsKKyAgICBhdXRvIG90aGVyTGVuZ3RoID0gb3RoZXJTdHJpbmcubV9pbXBsLT5sZW5ndGgo
KTsKKyAgICBpZiAob3RoZXJMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSBsZW5ndGgpCisgICAgICAgIENSQVNIKCk7CisKKyAgICBpZiAobV9pbXBsLT5pczhC
aXQoKSAmJiBvdGhlclN0cmluZy5tX2ltcGwtPmlzOEJpdCgpKSB7CisgICAgICAgIExDaGFyKiBk
YXRhOworICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCArIG90aGVyTGVuZ3RoLCBkYXRhKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsgbGVuZ3RoLCBvdGhlclN0cmluZy5t
X2ltcGwtPmNoYXJhY3RlcnM4KCksIG90aGVyTGVuZ3RoKTsKKyAgICAgICAgbV9pbXBsID0gV1RG
TW92ZShuZXdJbXBsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBVQ2hhciogZGF0YTsK
KyAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCArIG90aGVyTGVuZ3RoLCBkYXRhKTsKKyAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOworICAgIFN0cmluZ1ZpZXcoKm90aGVyU3RyaW5nLm1f
aW1wbCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIGxlbmd0aCk7CisgICAgbV9p
bXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIAogdm9pZCBTdHJpbmc6OmFwcGVuZChMQ2hhciBj
aGFyYWN0ZXIpCkBAIC0xMzQsNyArMTMzLDcgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChMQ2hhciBj
aGFyYWN0ZXIpCiAgICAgICAgIENSQVNIKCk7CiAgICAgTENoYXIqIGRhdGE7CiAgICAgYXV0byBu
ZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2ltcGwtPmxlbmd0aCgp
ICsgMSwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbV9p
bXBsLT5sZW5ndGgoKSk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9p
bXBsLT5jaGFyYWN0ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKICAgICBkYXRhW21faW1wbC0+
bGVuZ3RoKCldID0gY2hhcmFjdGVyOwogICAgIG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CiB9
CkBAIC0yMjcsOCArMjI2LDggQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBMQ2hhciogY2hh
cmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICAgICAgICAgIENS
QVNIKCk7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJp
bmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRvQXBwZW5kLCBk
YXRhKTsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFj
dGVyczgoKSwgc3RyTGVuZ3RoKTsKLSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEg
KyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOworICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCks
IHN0ckxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBz
dHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOwogICAgICAgICBt
X2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjM3
LDggKzIzNiw4IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnNU
b0FwcGVuZCwgdW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgICAgIENSQVNIKCk7CiAgICAg
VUNoYXIqIGRhdGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKLSAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKLSAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFjdGVyc1RvQXBw
ZW5kLCBsZW5ndGhUb0FwcGVuZCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0
YSwgbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcmFjdGVycyhkYXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0
aFRvQXBwZW5kKTsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCkBAIC0yNjQs
MTAgKzI2MywxMCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
VG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQogICAgIFVDaGFyKiBkYXRhOwogICAg
IGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RyTGVuZ3Ro
ICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwogICAgIGlmIChtX2ltcGwtPmlzOEJpdCgpKQotICAg
ICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGF0YSwgY2hhcmFjdGVyczgoKSwgc3RyTGVuZ3Ro
KTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgY2hhcmFjdGVyczgo
KSwgc3RyTGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhk
YXRhLCBjaGFyYWN0ZXJzMTYoKSwgc3RyTGVuZ3RoKTsKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFjdGVyc1RvQXBwZW5kLCBsZW5ndGhUb0FwcGVuZCk7
CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIGNoYXJhY3RlcnMxNigp
LCBzdHJMZW5ndGgpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBzdHJM
ZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOwogICAgIG1faW1wbCA9
IFdURk1vdmUobmV3SW1wbCk7CiB9CiAKQEAgLTI4NSw0MSArMjg0LDMzIEBAIHZvaWQgU3RyaW5n
Ojp0cnVuY2F0ZSh1bnNpZ25lZCBwb3NpdGlvbikKICAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5z
dWJzdHJpbmcoMCwgcG9zaXRpb24pOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KLWlubGluZSB2b2lkIFN0cmluZzo6cmVtb3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgcG9zaXRpb24sIGludCBsZW5ndGhUb1JlbW92ZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB2b2lkIFN0cmluZzo6cmVt
b3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVtb3ZlKQogewogICAgIENoYXJhY3RlclR5cGUqIGRh
dGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgoKSAtIGxlbmd0aFRvUmVtb3ZlLCBkYXRhKTsKLSAgICBtZW1jcHkoZGF0YSwgY2hhcmFj
dGVycywgcG9zaXRpb24gKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpOwotICAgIG1lbWNweShkYXRh
ICsgcG9zaXRpb24sIGNoYXJhY3RlcnMgKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVtb3ZlLAotICAg
ICAgICAobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSAtIHBvc2l0aW9uKSAqIHNpemVvZihDaGFy
YWN0ZXJUeXBlKSk7Ci0KKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFy
YWN0ZXJzLCBwb3NpdGlvbik7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSAr
IHBvc2l0aW9uLCBjaGFyYWN0ZXJzICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlbW92ZSwgbGVuZ3Ro
KCkgLSBsZW5ndGhUb1JlbW92ZSAtIHBvc2l0aW9uKTsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5l
d0ltcGwpOwogfQogCi12b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoVG9SZW1vdmUpCit2b2lkIFN0cmluZzo6cmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBsZW5ndGhUb1JlbW92ZSkKIHsKLSAgICBpZiAobGVuZ3RoVG9SZW1vdmUgPD0gMCkK
KyAgICBpZiAoIWxlbmd0aFRvUmVtb3ZlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHBvc2l0
aW9uID49IGxlbmd0aCgpKQorICAgIGF1dG8gbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CisgICAg
aWYgKHBvc2l0aW9uID49IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obGVuZ3RoVG9SZW1vdmUpID4gbGVuZ3RoKCkgLSBwb3NpdGlvbikKLSAg
ICAgICAgbGVuZ3RoVG9SZW1vdmUgPSBsZW5ndGgoKSAtIHBvc2l0aW9uOwotCi0gICAgaWYgKGlz
OEJpdCgpKSB7CisgICAgbGVuZ3RoVG9SZW1vdmUgPSBzdGQ6Om1pbihsZW5ndGhUb1JlbW92ZSwg
bGVuZ3RoIC0gcG9zaXRpb24pOworICAgIGlmIChpczhCaXQoKSkKICAgICAgICAgcmVtb3ZlSW50
ZXJuYWwoY2hhcmFjdGVyczgoKSwgcG9zaXRpb24sIGxlbmd0aFRvUmVtb3ZlKTsKLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVtb3ZlSW50ZXJuYWwoY2hhcmFjdGVyczE2KCksIHBv
c2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7CisgICAgZWxzZQorICAgICAgICByZW1vdmVJbnRlcm5h
bChjaGFyYWN0ZXJzMTYoKSwgcG9zaXRpb24sIGxlbmd0aFRvUmVtb3ZlKTsKIH0KIAotU3RyaW5n
IFN0cmluZzo6c3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuKSBjb25zdAorU3Ry
aW5nIFN0cmluZzo6c3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpIAotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIG1faW1wbC0+c3Vic3RyaW5nKHBvcywgbGVuKTsKKyAgICAvLyBGSVhNRTogU2hv
dWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5l
ZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdWJzdHJpbmcocG9zaXRpb24sIGxlbmd0
aCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1w
bCh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKQEAgLTMzMiwxMDAgKzMy
Myw5NSBAQCBTdHJpbmcgU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIAogICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0aCA9
PSBzdHJpbmdMZW5ndGgpCiAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICByZXR1cm4gU3RyaW5n
KFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKCptX2ltcGwsIG9mZnNldCwg
bGVuZ3RoKSk7CisgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJ
bXBsKCptX2ltcGwsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBm
dW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPwotICAgIGlm
ICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVk
PwotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IG1faW1wbC0+Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKKyAgICByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3Ry
aW5nIFN0cmluZzo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9p
bXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7CisgICAgLy8gRklYTUU6IFNo
b3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGlu
ZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0aG91
dExvY2FsZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvTG93
ZXJjYXNlV2l0aG91dExvY2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZXg4Qml0KHVuc2lnbmVkIGZh
aWxpbmdJbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2Nh
bGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChmYWlsaW5nSW5kZXgpOworICAgIC8vIEZJWE1F
OiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBp
bmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChmYWlsaW5nSW5kZXgpIDogU3Ry
aW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExv
Y2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJz
IGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVy
dFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0
cmluZzo6Y29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9j
YWxlKGxvY2FsZUlkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlv
biwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUobG9jYWxlSWRlbnRp
ZmllcikgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpjb252ZXJ0VG9VcHBlcmNh
c2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVy
biBtX2ltcGwtPmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUobG9jYWxlSWRlbnRpZmllcik7
CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJz
IGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y29udmVy
dFRvVXBwZXJjYXNlV2l0aExvY2FsZShsb2NhbGVJZGVudGlmaWVyKSA6IFN0cmluZyB7IH07CiB9
CiAKIFN0cmluZyBTdHJpbmc6OnN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0
aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICAvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBuZWVkcyBhIG5ldyBuYW1lLiBGb3Igb25lIHRoaW5nLCAid2hpdGVzcGFjZSIgaXMg
YSBzaW5nbGUKKyAgICAvLyB3b3JkIHNvIHRoZSAicyIgc2hvdWxkIGJlIGxvd2VyY2FzZS4gRm9y
IGFub3RoZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20gdGhpcyBuYW1lCisgICAgLy8gdGhhdCB0aGUg
ZnVuY3Rpb24gdXNlcyB0aGUgVW5pY29kZSBkZWZpbml0aW9uIG9mIHdoaXRlc3BhY2UuIE1vc3Qg
V2ViS2l0IGNhbGxlcnMKKyAgICAvLyBkb24ndCB3YW50IHRoYXQgYW5kIGV2ZW50dWFsbHkgd2Ug
c2hvdWxkIGNvbnNpZGVyIGRlbGV0aW5nIHRoaXMuCisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+c3RyaXBXaGl0ZVNwYWNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpz
dHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKSBjb25z
dAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSk7CisgICAgLy8gRklYTUU6
IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlu
bGluZWQ/CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gSXQg
c3RyaXBzIGxlYWRpbmcgYW5kIHRyYWlsaW5nCisgICAgLy8gY2hhcmFjdGVycyB0aGF0IG1hdGNo
IGEgcHJlZGljYXRlOyBub3QgbmVjZXNzYXJpbHkgIndoaXRlIHNwYWNlIi4KKyAgICByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5zdHJpcFdoaXRlU3BhY2UoaXNXaGl0ZVNwYWNlKSA6IFN0cmluZyB7
IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OnNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9p
bXBsLT5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVu
Y3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICAvLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBuZWVkcyBhIG5ldyBuYW1lLiBGb3Igb25lIHRoaW5nLCAid2hp
dGVzcGFjZSIgaXMgYSBzaW5nbGUKKyAgICAvLyB3b3JkIHNvIHRoZSAicyIgc2hvdWxkIGJlIGxv
d2VyY2FzZS4gRm9yIGFub3RoZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20gdGhpcyBuYW1lCisgICAg
Ly8gdGhhdCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgVW5pY29kZSBkZWZpbml0aW9uIG9mIHdoaXRl
c3BhY2UuIE1vc3QgV2ViS2l0IGNhbGxlcnMKKyAgICAvLyBkb24ndCB3YW50IHRoYXQgYW5kIGV2
ZW50dWFsbHkgd2Ugc2hvdWxkIGNvbnNpZGVyIGRlbGV0aW5nIHRoaXMuCisgICAgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKCkgOiBTdHJpbmcgeyB9OwogfQogCiBT
dHJpbmcgU3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIg
aXNXaGl0ZVNwYWNlKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKGlzV2hpdGVT
cGFjZSk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkg
b3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c2ltcGxpZnlXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJp
bmcgU3RyaW5nOjpyZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmlu
ZE1hdGNoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+cmVtb3ZlQ2hhcmFjdGVycyhmaW5kTWF0Y2gpOworICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtl
IGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJlbW92ZUNoYXJh
Y3RlcnMoZmluZE1hdGNoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmZvbGRD
YXNlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBtX2ltcGwtPmZvbGRDYXNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0
aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/Cisg
ICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zm9sZENhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAK
IGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYgcmVzdWx0KSBjb25zdApAQCAtNDY1LDggKzQ1
MSw3IEBAIFZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV1RGX0FUVFJJQlVURV9QUklOVEYo
MSwgMCkKLXN0YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhjb25zdCBj
aGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKK1dURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApIHN0
YXRpYyBTdHJpbmcgY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhjb25zdCBjaGFyICpmb3Jt
YXQsIHZhX2xpc3QgYXJncykKIHsKICAgICB2YV9saXN0IGFyZ3NDb3B5OwogICAgIHZhX2NvcHko
YXJnc0NvcHksIGFyZ3MpOwpAQCAtNDc4LDE0ICs0NjMsMTIgQEAgc3RhdGljIFN0cmluZyBjcmVh
dGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdz
KQogCiAjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKICAgICBpZiAoc3Ryc3RyKGZvcm1hdCwg
IiVAIikpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkZvcm1hdCA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb3JtYXQs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0KCksIGFyZ3MpKTsKLQor
ICAgICAgICBhdXRvIGNmRm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvcm1hdCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRB
cmd1bWVudHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0KCksIGFy
Z3MpKTsKICAgICAgICAgdmFfZW5kKGFyZ3MpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgp
OwogICAgIH0KLSNlbmRpZiAvLyBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQorI2VuZGlmCiAKICAg
ICAvLyBEbyB0aGUgZm9ybWF0IG9uY2UgdG8gZ2V0IHRoZSBsZW5ndGguCiAjaWYgQ09NUElMRVIo
TVNWQykKQEAgLTQ5Nyw3ICs0ODAsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRB
bmRBcmd1bWVudHMoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiAgICAgdmFfZW5k
KGFyZ3MpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAwKQotICAgICAgICByZXR1cm4gU3RyaW5nKCIi
KTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgaWYgKHJlc3VsdCA8IDApCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtNTI3LDcgKzUxMCw2IEBAIFN0cmluZyBTdHJp
bmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICB2YV9zdGFydChhcmdzLCBm
b3JtYXQpOwogICAgIFN0cmluZyByZXN1bHQgPSBjcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KGZvcm1hdCwgYXJncyk7CiAgICAgdmFfZW5kKGFyZ3MpOwotICAgIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTcwMCwxMSArNjgyLDExIEBAIGZsb2F0IFN0cmluZzo6dG9GbG9hdChib29s
KiBvaykgY29uc3QKIH0KIAogI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SRUZFUkVOQ0VfUVVB
TElGSUVEX0ZVTkNUSU9OUykKKwogU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JgogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5KCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1
bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJpbmcgeyB9OwogfQogCiBT
dHJpbmcgU3RyaW5nOjppc29sYXRlZENvcHkoKSAmJgpAQCAtNzEyLDM2ICs2OTQsMjcgQEAgU3Ry
aW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICBpZiAoaXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKCkpIHsKICAgICAgICAgLy8gU2luY2Ugd2Uga25vdyB0aGF0IG91ciBzdHJpbmcg
aXMgYSB0ZW1wb3JhcnkgdGhhdCB3aWxsIGJlIGRlc3Ryb3llZAogICAgICAgICAvLyB3ZSBjYW4g
anVzdCBzdGVhbCB0aGUgbV9pbXBsIGZyb20gaXQsIHRodXMgYXZvaWRpbmcgYSBjb3B5LgotICAg
ICAgICByZXR1cm4gU3RyaW5nKFdURk1vdmUoKnRoaXMpKTsKKyAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZSgqdGhpcykgfTsKICAgICB9CiAKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJpbmcgeyB9OwogfQorCiAj
ZWxzZQorCiBTdHJpbmcgU3RyaW5nOjppc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIGlmICgh
bV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+aXNv
bGF0ZWRDb3B5KCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhl
IG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+aXNvbGF0ZWRDb3B5KCkgOiBTdHJpbmcgeyB9OwogfQorCiAjZW5kaWYKIAogYm9vbCBT
dHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
bXBsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwogICAgIC8vIEF0b21pY1N0cmluZ3MgYXJlIG5vdCBzYWZlIHRvIHNlbmQg
YmV0d2VlbiB0aHJlYWRzIGFzIH5TdHJpbmdJbXBsKCkKICAgICAvLyB3aWxsIHRyeSB0byByZW1v
dmUgdGhlbSBmcm9tIHRoZSB3cm9uZyBBdG9taWNTdHJpbmdUYWJsZS4KLSAgICBpZiAoaW1wbCgp
LT5pc0F0b21pYygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGltcGwoKS0+aGFz
T25lUmVmKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gaXNFbXB0eSgpIHx8IChtX2ltcGwtPmhhc09uZVJlZigpICYmICFtX2ltcGwtPmlzQXRv
bWljKCkpOwogfQogCiB2b2lkIFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Is
IGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0CkBA
IC04NDgsMTAgKzgyMSw3IEBAIENTdHJpbmcgU3RyaW5nOjpsYXRpbjEoKSBjb25zdAogCiBDU3Ry
aW5nIFN0cmluZzo6dXRmOChDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAogewotICAgIGlmICgh
bV9pbXBsKQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0gICAgCi0gICAgcmV0dXJu
IG1faW1wbC0+dXRmOChtb2RlKTsKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT51dGY4KG1v
ZGUpIDogQ1N0cmluZyB7ICIiLCAwIH07CiB9CiAKIENTdHJpbmcgU3RyaW5nOjp1dGY4KCkgY29u
c3QKQEAgLTg4MCw3ICs4NTAsNyBAQCBTdHJpbmcgU3RyaW5nOjptYWtlMTZCaXRGcm9tOEJpdFNv
dXJjZShjb25zdCBMQ2hhciogc291cmNlLCBzaXplX3QgbGVuZ3RoKQogICAgIFVDaGFyKiBkZXN0
aW5hdGlvbjsKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCwgZGVzdGluYXRpb24pOwogICAgIAotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhk
ZXN0aW5hdGlvbiwgc291cmNlLCBsZW5ndGgpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0
ZXJzKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGxlbmd0aCk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTk0OSw4ICs5MTksOCBAQCBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlckFsbG93ZWRJ
bkJhc2UoVUNoYXIgYywgaW50IGJhc2UpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyVHlwZT4KLXN0YXRpYyBpbmxp
bmUgSW50ZWdyYWxUeXBlIHRvSW50ZWdyYWxUeXBlKGNvbnN0IENoYXJUeXBlKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBib29sKiBvaywgaW50IGJhc2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3Jh
bFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIEludGVncmFsVHlw
ZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBib29sKiBvaywgaW50IGJhc2UpCiB7CiAgICAgc3RhdGljIGNvbnN0IEludGVncmFsVHlwZSBp
bnRlZ3JhbE1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdyYWxUeXBlPjo6bWF4KCk7CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEludGVn
cmFsVHlwZT46OmlzX3NpZ25lZDsKQEAgLTk4NCw3ICs5NTQsNyBAQCBzdGF0aWMgaW5saW5lIElu
dGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgYgogICAgIHdoaWxlIChsZW5ndGggJiYgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNlKCpk
YXRhLCBiYXNlKSkgewogICAgICAgICAtLWxlbmd0aDsKICAgICAgICAgSW50ZWdyYWxUeXBlIGRp
Z2l0VmFsdWU7Ci0gICAgICAgIENoYXJUeXBlIGMgPSAqZGF0YTsKKyAgICAgICAgYXV0byBjID0g
KmRhdGE7CiAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoYykpCiAgICAgICAgICAgICBkaWdpdFZh
bHVlID0gYyAtICcwJzsKICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScpCkBAIC0xMDI1LDggKzk5
NSw4IEBAIGJ5ZToKICAgICByZXR1cm4gaXNPayA/IHZhbHVlIDogMDsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFjdGVyc0Fz
SW50ZWdlcihjb25zdCBDaGFyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZDaGFyYWN0ZXJz
QXNJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAg
ICAgc2l6ZV90IGkgPSAwOwogCkBAIC0xMTUxLDggKzExMjEsOCBAQCBpbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rKQog
CiBlbnVtIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93VHJhaWxpbmdKdW5rLCBBbGxvd1Ry
YWlsaW5nSnVuayB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIFRyYWlsaW5nSnVu
a1BvbGljeSBwb2xpY3k+Ci1zdGF0aWMgaW5saW5lIGRvdWJsZSB0b0RvdWJsZVR5cGUoY29uc3Qg
Q2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNlZExl
bmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFRyYWlsaW5nSnVua1BvbGlj
eSBwb2xpY3k+CitzdGF0aWMgaW5saW5lIGRvdWJsZSB0b0RvdWJsZVR5cGUoY29uc3QgQ2hhcmFj
dGVyVHlwZSogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIHNpemVfdCYgcGFyc2VkTGVu
Z3RoKQogewogICAgIHNpemVfdCBsZWFkaW5nU3BhY2VzTGVuZ3RoID0gMDsKICAgICB3aGlsZSAo
bGVhZGluZ1NwYWNlc0xlbmd0aCA8IGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoZGF0YVtsZWFkaW5n
U3BhY2VzTGVuZ3RoXSkpCkBAIC0xMjE5LDcgKzExODksOCBAQCBjb25zdCBTdHJpbmcmIGVtcHR5
U3RyaW5nKCkKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjaWZuZGVmIE5ERUJVRwotLy8gRm9yIHVz
ZSBpbiB0aGUgZGVidWdnZXIKKworLy8gRm9yIHVzZSBpbiB0aGUgZGVidWdnZXIuCiBTdHJpbmcq
IHN0cmluZyhjb25zdCBjaGFyKik7CiBWZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmdJbXBs
KiBpbXBsKTsKIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZyYgc3RyaW5nKTsKQEAgLTEy
MzEsNyArMTIwMiw3IEBAIHZvaWQgU3RyaW5nOjpzaG93KCkgY29uc3QKIAogU3RyaW5nKiBzdHJp
bmcoY29uc3QgY2hhciogcykKIHsKLSAgICAvLyBsZWFrcyBtZW1vcnkhCisgICAgLy8gSW50ZW50
aW9uYWxseSBsZWFrcyBtZW1vcnkhCiAgICAgcmV0dXJuIG5ldyBTdHJpbmcocyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDNhOTdiMTY3ODc5MzA1OTA2ZDY1YjcwZjlhMWQ1MTVm
YjYyODFjY2EuLjJmMjlhYTUxYzg3MTBmYzU1YWIyMzRiMjNjMTVjMGI2ZWYxMWJlODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSA8c3RkYXJn
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlG
YXN0UGF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKQEAgLTgwLDcgKzc5LDcgQEAg
ZW51bSBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSB7IEtlZXBUcmFpbGluZ1plcm9zLCBU
cnVuY2F0ZVRyYWlsaW5nWmVyb3MgfTsKIGNsYXNzIFN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8g
Q29uc3RydWN0IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0
cmluZy4KLSAgICBTdHJpbmcoKSB7IH0KKyAgICBTdHJpbmcoKSA9IGRlZmF1bHQ7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
OwpAQCAtMTI1LDIyICsxMjQsMTYgQEAgcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgLy8gVGhpcyBjb25zdHJ1Y3Rv
ciBpcyB0aGUgImJpZyIgdmVyc2lvbiwgYXMgaXQgcHV0IHRoZSBsZW5ndGggaW4gdGhlIGZ1bmN0
aW9uIGNhbGwgYW5kIGdlbmVyYXRlIGJpZ2dlciBjb2RlLgogICAgIGVudW0gQ29uc3RydWN0RnJv
bUxpdGVyYWxUYWcgeyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OwotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PgotICAgIFN0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylb
Y2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykgOiBtX2ltcGwoU3RyaW5n
SW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWw8Y2hhcmFjdGVyQ291bnQ+KGNoYXJhY3RlcnMpKSB7IH0K
LQotICAgIC8vIFdlIGhhdmUgdG8gZGVjbGFyZSB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgY29w
eSBhc3NpZ25tZW50IG9wZXJhdG9yIGFzIHdlbGwsIG90aGVyd2lzZQotICAgIC8vIHRoZXknbGwg
YmUgaW1wbGljaXRseSBkZWxldGVkIGJ5IGFkZGluZyB0aGUgbW92ZSBjb25zdHJ1Y3RvciBhbmQg
bW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFN0cmluZyhjb25zdCBTdHJpbmcmIG90aGVy
KQotICAgICAgICA6IG1faW1wbChvdGhlci5tX2ltcGwpCi0gICAgeyB9Ci0gICAgU3RyaW5nKFN0
cmluZyYmIG90aGVyKQotICAgICAgICA6IG1faW1wbChXVEZNb3ZlKG90aGVyLm1faW1wbCkpCi0g
ICAgeyB9Ci0gICAgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJiBvdGhlcikgeyBtX2lt
cGwgPSBvdGhlci5tX2ltcGw7IHJldHVybiAqdGhpczsgfQotICAgIFN0cmluZyYgb3BlcmF0b3I9
KFN0cmluZyYmIG90aGVyKSB7IG1faW1wbCA9IFdURk1vdmUob3RoZXIubV9pbXBsKTsgcmV0dXJu
ICp0aGlzOyB9Ci0KLSAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCi0gICAgQUxXQVlTX0lO
TElORSB+U3RyaW5nKCkgeyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+
IFN0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1
Y3RGcm9tTGl0ZXJhbFRhZykgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWw8
Y2hhcmFjdGVyQ291bnQ+KGNoYXJhY3RlcnMpKSB7IH0KKworICAgIC8vIEZJWE1FOiBXaHkgZG8g
d2UgaGF2ZSB0byBkZWZpbmUgdGhlc2UgZXhwbGljaXRseSBnaXZlbiB0aGF0IHdlIGp1c3Qgd2Fu
dCB0aGUgZGVmYXVsdCB2ZXJzaW9ucz8KKyAgICAvLyBXZSBoYXZlIHZlcmlmaWVkIGVtcGlyaWNh
bGx5IHRoYXQgd2UgZG8uCisgICAgU3RyaW5nKGNvbnN0IFN0cmluZyYpID0gZGVmYXVsdDsKKyAg
ICBTdHJpbmcoU3RyaW5nJiYpID0gZGVmYXVsdDsKKyAgICBTdHJpbmcmIG9wZXJhdG9yPShjb25z
dCBTdHJpbmcmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nJiBvcGVyYXRvcj0oU3RyaW5nJiYpID0g
ZGVmYXVsdDsKKworICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygpID0gZGVmYXVsdDsKIAogICAg
IHZvaWQgc3dhcChTdHJpbmcmIG8pIHsgbV9pbXBsLnN3YXAoby5tX2ltcGwpOyB9CiAKQEAgLTE1
MCw0NiArMTQzLDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmluZ1Zl
Y3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT4mJiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KFdURk1vdmUodmVj
dG9yKSk7IH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQot
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVu
Z3RoKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1f
aW1wbC0+aXNFbXB0eSgpOyB9CiAKICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLmdldCgpOyB9CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkg
eyByZXR1cm4gV1RGTW92ZShtX2ltcGwpOyB9CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgY29uc3QgTENoYXIq
IGNoYXJhY3RlcnM4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzOEJpdCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVyczE2KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBsLT5pczhCaXQoKSk7Ci0g
ICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwotICAgIH0KKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmxlbmd0aCgpIDogMDsg
fQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+Y2hhcmFjdGVyczgoKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jaGFyYWN0ZXJzMTYo
KSA6IG51bGxwdHI7IH0KIAogICAgIC8vIFJldHVybiBjaGFyYWN0ZXJzOCgpIG9yIGNoYXJhY3Rl
cnMxNigpIGRlcGVuZGluZyBvbiBDaGFyYWN0ZXJUeXBlLgotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotICAgIGlubGluZSBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0
ZXJzKCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycygpIGNvbnN0OwogCiAgICAgYm9vbCBpczhCaXQoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CiAKLSAgICB1bnNpZ25lZCBzaXplSW5C
eXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKSAqIChpczhCaXQoKSA/IHNp
emVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKLSAgICB9CisgICAgdW5zaWduZWQgc2l6ZUlu
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmxlbmd0aCgpICogKGlzOEJp
dCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpIDogMDsgfQogCiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKQEAgLTE5NywxNiArMTY1LDExIEBAIHB1
YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4KENvbnZlcnNpb25N
b2RlKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4KCkgY29u
c3Q7CiAKLSAgICBVQ2hhciBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07Ci0gICAgfQotICAgIFVD
aGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsg
fQorICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBVQ2hh
ciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJBdChp
bmRleCk7IH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJl
cihpbnQpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1
bnNpZ25lZCBpbnQpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKGxvbmcpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCBsb25nKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0
cmluZyBudW1iZXIobG9uZyBsb25nKTsKQEAgLTIxOSwxMTkgKzE4Miw2NCBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJpbmdGaXhl
ZFdpZHRoKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcyk7CiAKICAgICAvLyBGaW5kIGEg
c2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxh
dGluMSBmb3Jtcy4KLSAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChjLCBzdGFydCkg
OiBub3RGb3VuZDsgfQotCi0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHIuaW1wbCgpKSA6IG5v
dEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0
YXJ0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLmlt
cGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0g
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0ci5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5k
OyB9Ci0KLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVu
Y3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAg
c2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLCBzdGFydCkgOiBub3RG
b3VuZDsgfQorICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQorCisgICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcuaW1wbCgpKSA6IG5v
dEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVk
IHN0YXJ0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwo
KSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IG5vdEZvdW5kOyB9CisgICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQg
c3RhcnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IG5vdEZvdW5kOyB9CisKKyAg
ICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKG1h
dGNoRnVuY3Rpb24sIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3Qg
TENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmZpbmQoc3RyaW5nLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCiAgICAgLy8gRmlu
ZCB0aGUgbGFzdCBpbnN0YW5jZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLgotICAg
IHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKGMsIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYg
c3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5k
OyB9Ci0KLSAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBtYXRjaGluZy4KLSAgICBzaXpl
X3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2Fz
ZShzdHIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2Uo
Y29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ci5pbXBs
KCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICAvLyBXcmFwcGVycyBmb3IgZmluZCAmIHJl
dmVyc2VGaW5kIGFkZGluZyBkeW5hbWljIHNlbnNpdGl2aXR5IGNoZWNrLgotICAgIHNpemVfdCBm
aW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUp
IGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyBmaW5kKHN0ciwgc3RhcnQp
IDogZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAot
ICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIsIHN0YXJ0KSA6IGZpbmRJ
Z25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3Qg
U3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0g
ICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6
IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9CisgICAgc2l6ZV90IHJldmVy
c2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2
ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCByZXZl
cnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBj
aGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCi0KLSAgICBib29s
IGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0gbm90Rm91bmQ7IH0K
LSAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
ZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3VuZDsgfQotICAg
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IGZpbmQoc3RyKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5n
JiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwKSBjb25z
dAotICAgICAgICB7IHJldHVybiBmaW5kKHN0ciwgc3RhcnRPZmZzZXQsIGNhc2VTZW5zaXRpdmUp
ICE9IG5vdEZvdW5kOyB9Ci0gICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNh
c2Uoc3RyKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIsIHN0YXJ0T2Zmc2V0KSAhPSBub3RG
b3VuZDsgfQotCi0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoKHMuaW1wbCgpKSA6IHMu
aXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJv
b2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QK
LSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoKHMuaW1wbCgpLCBj
YXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoKFVDaGFy
IGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFy
dHNXaXRoKGNoYXJhY3RlcikgOiBmYWxzZTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNo
TGVuZ3RoPgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExl
bmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4LCBjYXNlU2Vu
c2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJvb2wgaGFzSW5maXhTdGFydGluZ0F0KGNv
bnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgPyBtX2ltcGwtPmhhc0luZml4U3RhcnRp
bmdBdCgqcHJlZml4LmltcGwoKSwgc3RhcnRPZmZzZXQpIDogZmFsc2U7IH0KLQotICAgIGJvb2wg
ZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBl
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHMuaW1w
bCgpKSA6IHMuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5lbmRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQot
ICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAotICAgICAgICB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKGNoYXJhY3RlcikgOiBmYWxzZTsgfQorICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQp
IGNvbnN0OworCisgICAgYm9vbCBjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0
dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMoY29u
c3QgTENoYXIqIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5k
OyB9CisgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1
cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBmaW5kSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsIHN0YXJ0T2Zmc2V0
KSAhPSBub3RGb3VuZDsgfQorCisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgoc3RyaW5nLmlt
cGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5n
LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQorICAg
IHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hh
ciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0Y2hMZW5ndGg7IH0KKyAgICBi
b29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHByZWZpeCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1wbCgpICYmIG1faW1w
bC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydE9mZnNldCk7IH0KKwor
ICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgp
OyB9CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRz
V2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPmVu
ZHNXaXRoKGNoYXJhY3Rlcik7IH0KICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFjdGVyKSBj
b25zdCB7IHJldHVybiBlbmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IH0K
LSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4KLSAgICBib29sIGVuZHNXaXRoKGNv
bnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4LCBjYXNlU2Vuc2l0aXZlKSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSA/IG1f
aW1wbC0+aGFzSW5maXhFbmRpbmdBdCgqc3VmZml4LmltcGwoKSwgZW5kT2Zmc2V0KSA6IGZhbHNl
OyB9CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29u
c3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1hdGNoTGVuZ3RoOyB9Cisg
ICAgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZyYgc3VmZml4LCB1bnNpZ25lZCBl
bmRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXguaW1wbCgpICYmIG1faW1w
bC0+aGFzSW5maXhFbmRpbmdBdCgqc3VmZml4LmltcGwoKSwgZW5kT2Zmc2V0KTsgfQogCiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChMQ2hhcik7Ci0gICAgdm9pZCBhcHBlbmQo
Y2hhciBjKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOyB9OworICAgIHZvaWQgYXBw
ZW5kKGNoYXIgY2hhcmFjdGVyKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVy
KSk7IH07CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKFVDaGFyKTsKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQg
aW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAot
ICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciBhLCBVQ2hhciBiKSB7IGlmIChtX2ltcGwpIG1faW1w
bCA9IG1faW1wbC0+cmVwbGFjZShhLCBiKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3RyaW5nJiBy
ZXBsYWNlKFVDaGFyIGEsIGNvbnN0IFN0cmluZyYgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2UoYSwgYi5pbXBsKCkpOyByZXR1cm4gKnRoaXM7IH0KLSAgICBTdHJpbmcm
IHJlcGxhY2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkg
bV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEuaW1wbCgpLCBiLmltcGwoKSk7IHJldHVybiAqdGhp
czsgfQotICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBj
b25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGlu
ZGV4LCBsZW4sIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9CisgICAgU3RyaW5nJiByZXBsYWNl
KFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIFN0cmluZyYgcmVw
bGFjZShjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7Cisg
ICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQpOworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIg
KCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAotICAgIHRlbXBsYXRlPHVuc2lnbmVk
IGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nJiByZXBsYWNlV2l0aExp
dGVyYWwoVUNoYXIgYSwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkK
LSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwgPSBtX2ltcGwt
PnJlcGxhY2UoYSwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsKKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQg
bGVuZ3RoID0gMSk7CiAKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7Ci0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwot
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKSBjb25zdDsKLSAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW4pOyB9Ci0gICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVk
IGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRp
b24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdWJzdHJpbmdTaGFy
aW5nSW1wbCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKKyAgICBTdHJpbmcgbGVmdCh1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5ndGgpOyB9CisgICAgU3Ry
aW5nIHJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKHRoaXMt
Pmxlbmd0aCgpIC0gbGVuZ3RoLCBsZW5ndGgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgU3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpAQCAt
MzQ3LDcgKzI1NSw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5n
IHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cikgY29uc3Q7CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFy
YWN0ZXIoVUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdDsKIAogICAg
IC8vIFJldHVybnMgdGhlIHN0cmluZyB3aXRoIGNhc2UgZm9sZGVkIGZvciBjYXNlIGluc2Vuc2l0
aXZlIGNvbXBhcmlzb24uCiAgICAgLy8gVXNlIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlIGluc3Rl
YWQgaWYgQVNDSUkgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGlzIGRlc2lyZWQuCkBAIC0z
NTgsMzUgKzI2NSwxOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6
ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB3cml0dGVuCiAgICAgLy8gaW50
byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVmb3JlIHRoZSByZXR1cm5lZCBzdHJpbmcg
aXMgdXNlZC4KLSAgICAvLyBGYWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBoYXZlIHVucHJlZGljdGFi
bGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxv
d0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBz
cGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAg
fQorICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQogCiAg
ICAgdXNpbmcgU3BsaXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZ1Zp
ZXcmKT47CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJh
dG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJv
b2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAg
IHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25z
dAotICAgIHsKLSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKLSAgICB9
Ci0gICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdAotICAgIHsK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgICAgICBzcGxpdChzZXBhcmF0b3Is
IGZhbHNlLCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBWZWN0
b3I8U3RyaW5nPiBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBm
YWxzZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgdm9pZCBz
cGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0IHsgc3Bs
aXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQorICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0
KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CisgICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoY29uc3Qg
U3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGlu
dCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKQEAgLTQzOSwxMSArMzI5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBt
YWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci0gICAgdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZlcikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNh
cGFjaXR5PiBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3Rv
cjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFN0cmluZyBtYWtlMTZCaXRGcm9tOEJpdFNvdXJjZShjb25zdCBMQ2hhciosIHNpemVf
dCk7CiAKQEAgLTQ1MSwyOCArMzM3LDIxIEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW5wdXQgZGF0
YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciosIHNpemVfdCk7CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIq
KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIHMsIHNpemVfdCBsZW5n
dGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwg
bGVuZ3RoKTsgfTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH07Cisg
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Y2hhcmFjdGVycyksIGxlbmd0aCk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25z
dCBjaGFyKiBzdHJpbmcpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihzdHJpbmcpKTsgfTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0
cmluZyBmcm9tVVRGOChjb25zdCBDU3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRG
OChjb25zdCBWZWN0b3I8TENoYXI+JiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIFRyaWVzIHRvIGNv
bnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0
byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNv
bnN0IExDaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGlu
MUZhbGxiYWNrKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4
V2l0aExhdGluMUZhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVu
Z3RoKTsgfTsKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsgfTsKIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9u
IHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KLSAgICBV
Q2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJl
Y3Rpb25hbGl0eSA9IG51bGxwdHIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9pbXBsKQot
ICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkpOwotICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkp
Ci0gICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIFVfTEVGVF9UT19SSUdIVDsKLSAgICB9CisgICAgVUNoYXJEaXJlY3Rpb24gZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRy
KSBjb25zdDsKIAotICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25zdDsKLSAgICBib29s
IGNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5jb250YWluc09ubHlXaGl0
ZXNwYWNlKCk7IH0KKyAgICBib29sIGlzQWxsQVNDSUkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBs
IHx8IG1faW1wbC0+aXNBbGxBU0NJSSgpOyB9CisgICAgYm9vbCBpc0FsbExhdGluMSgpIGNvbnN0
IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5pc0FsbExhdGluMSgpOyB9CisgICAgdGVtcGxh
dGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJh
Y3RlcnMoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KCk7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVs
ZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQg
b3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KQEAgLTQ4NCw0MCArMzYz
LDE2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzaG93KCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIC8vIFdvcmthcm91bmQgZm9yIGEgY29tcGlsZXIgYnVnLiBVc2Ug
b3BlcmF0b3JbXSBpbnN0ZWFkLgotICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwgfHwgaW5kZXggPj0gbV9pbXBsLT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gKCptX2ltcGwp
W2luZGV4XTsKLSAgICB9Ci0KICAgICAvLyBUdXJucyB0aGlzIFN0cmluZyBlbXB0eSBpZiB0aGUg
U3RyaW5nSW1wbCBpcyBub3QgcmVmZXJlbmNlZCBieSBhbnlvbmUgZWxzZS4KICAgICAvLyBUaGlz
IGlzIHVzZWZ1bCBmb3IgY2xlYXJpbmcgU3RyaW5nLWJhc2VkIGNhY2hlcy4KLSAgICB2b2lkIGNs
ZWFySW1wbElmTm90U2hhcmVkKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwgJiYgbV9pbXBs
LT5oYXNPbmVSZWYoKSkKLSAgICAgICAgICAgIG1faW1wbCA9IG51bGxwdHI7Ci0gICAgfQotICAg
IAotICAgIHZvaWQgYXNzZXJ0Q2FnZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1w
bCkKLSAgICAgICAgICAgIG1faW1wbC0+YXNzZXJ0Q2FnZWQoKTsKLSAgICB9CisgICAgdm9pZCBj
bGVhckltcGxJZk5vdFNoYXJlZCgpOwogCi0gICAgdm9pZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgICAgIG1faW1wbC0+cmVs
ZWFzZUFzc2VydENhZ2VkKCk7Ci0gICAgfQorICAgIHZvaWQgYXNzZXJ0Q2FnZWQoKSBjb25zdDsK
KyAgICB2b2lkIHJlbGVhc2VBc3NlcnRDYWdlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotICAgIHZvaWQgcmVtb3ZlSW50ZXJuYWwo
Y29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCBpbnQpOwotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci0gICAgdm9pZCBhcHBlbmRJbnRlcm5hbChDaGFyYWN0ZXJU
eXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHJlbW92ZUlu
dGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCwgdW5zaWduZWQpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kSW50ZXJuYWwoQ2hhcmFj
dGVyVHlwZSk7CiAKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwogfTsKQEAgLTUzMiw3
ICszODcsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZQogdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYi5pbXBsKCks
IGEuZGF0YSgpLCBhLnNpemUoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFy
LCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQogCi0KIGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFl
cXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYik7
IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBi
KSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihiKSk7IH0KQEAgLTU1MCw3ICs0MDQsNyBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJv
b2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmLAogaW5s
aW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEuaW1wbCgpLCBiLmltcGwoKSk7
IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgZXF1YWxJZ25v
cmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0
IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYSwgYi5pbXBsKCkpOyB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yIShjb25zdCBTdHJpbmcmIHN0cikgeyByZXR1cm4gc3Ry
LmlzTnVsbCgpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IHsgcmV0dXJuIHN0cmluZy5pc051bGwoKTsgfQogCiBpbmxpbmUgdm9pZCBzd2FwKFN0cmluZyYg
YSwgU3RyaW5nJiBiKSB7IGEuc3dhcChiKTsgfQogCkBAIC01NjEsODEgKzQxNSwxNzYgQEAgTlNT
dHJpbmcgKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5nJik7CiAKICNlbmRpZgogCitX
VEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7Citib29sIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENoYXJhY3RlclR5cGU+JiwgdW5zaWduZWQgY2hhciBu
dW1iZXIpOworCisvLyBTaGFyZWQgZ2xvYmFsIGVtcHR5IHN0cmluZy4KK1dURl9FWFBPUlRfU1RS
SU5HX0FQSSBjb25zdCBTdHJpbmcmIGVtcHR5U3RyaW5nKCk7CisKK3RlbXBsYXRlPHR5cGVuYW1l
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJp
bmc+IHsgdXNpbmcgSGFzaCA9IFN0cmluZ0hhc2g7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKKworY2xhc3Mg
QVNDSUlMaXRlcmFsIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29uc3Qg
Y2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9CisgICAgb3Bl
cmF0b3IgY29uc3QgY2hhciooKSB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKworcHJpdmF0ZToK
KyAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3RlcnM7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CisgICAgdXNpbmcgUmV0dXJu
VHlwZSA9IFN0cmluZzsKKyAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRUeXBlID0gdm9pZDsK
KyAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9OyB9Cit9OworCiAvLyBE
ZWZpbml0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmco
U3RyaW5nSW1wbCYgaW1wbCkKLSAgICA6IG1faW1wbCgmaW1wbCkKK2lubGluZSBTdHJpbmc6OlN0
cmluZyhTdHJpbmdJbXBsJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoJnN0cmluZykKIHsKIH0KIAot
aW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpCi0gICAgOiBtX2ltcGwoaW1w
bCkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX2lt
cGwoc3RyaW5nKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmPFN0cmluZ0ltcGw+
JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5saW5lIFN0cmluZzo6U3Ry
aW5nKFJlZjxTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1wbChXVEZNb3ZlKHN0cmlu
ZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4mJiBp
bXBsKQotICAgIDogbV9pbXBsKFdURk1vdmUoaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmco
UmVmUHRyPFN0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9pbXBsKFdURk1vdmUoc3RyaW5n
KSkKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxBdG9taWNTdHJpbmdJbXBsPiYm
IGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmlu
ZyhSZWY8QXRvbWljU3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShz
dHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5saW5lIFN0cmlu
Zzo6U3RyaW5nKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1w
bChXVEZNb3ZlKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNT
dHJpbmdJbXBsJiBpbXBsKQotICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1w
bCo+KCZpbXBsKSkKK2lubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsJiBzdHJp
bmcpCisgICAgOiBtX2ltcGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oJnN0cmluZykp
CiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBpbXBsKQot
ICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KGltcGwpKQoraW5saW5l
IFN0cmluZzo6U3RyaW5nKFN0YXRpY1N0cmluZ0ltcGwqIHN0cmluZykKKyAgICA6IG1faW1wbChy
ZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmcpKQogewogfQogCi10ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KLVN0cmluZzo6
U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4mIHZlY3RvcikKLSAgICA6IG1faW1wbCh2ZWN0b3Iuc2l6ZSgpID8gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpIDogUmVmPFN0cmluZ0ltcGw+KCpTdHJp
bmdJbXBsOjplbXB0eSgpKSkKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPiBTdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCisgICAgOiBtX2ltcGwodmVj
dG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6
ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPiB7ICpTdHJpbmdJbXBsOjplbXB0eSgpIH0pCiB7CiB9CiAK
LXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBMQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPExDaGFy
PigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBMQ2hhciogU3RyaW5nOjpjaGFyYWN0
ZXJzPExDaGFyPigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICByZXR1cm4g
Y2hhcmFjdGVyczgoKTsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGNvbnN0IFVDaGFyKiBTdHJp
bmc6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIGNvbnN0IFVD
aGFyKiBTdHJpbmc6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlz
OEJpdCgpKTsKICAgICByZXR1cm4gY2hhcmFjdGVyczE2KCk7CiB9CiAKLWlubGluZSBib29sIFN0
cmluZzo6Y29udGFpbnNPbmx5TGF0aW4xKCkgY29uc3QKK2lubGluZSBVQ2hhciBTdHJpbmc6OmNo
YXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghbV9pbXBsIHx8IGlu
ZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAo
Km1faW1wbClbaW5kZXhdOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkKIHsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2lt
cGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuICp0aGlzOworfQor
CitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50KQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbCA9IG1f
aW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2VtZW50LmltcGwoKSk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6OnJlcGxhY2UoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCit7CisgICAgaWYgKG1faW1wbCkKKyAg
ICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldC5pbXBsKCksIHJlcGxhY2VtZW50
LmltcGwoKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgU3RyaW5nJiBTdHJpbmc6
OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBtX2ltcGwt
PnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CiAKLSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwordGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCit7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBs
ID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAx
KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IGNoYXJhY3RlcnMxNigpOwotICAgIFVDaGFyIG9yZWQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9pbXBsLT5sZW5ndGgoKTsgKytpKQotICAgICAgICBvcmVkIHw9IGNoYXJhY3Rl
cnNbaV07Ci0gICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7CitpbmxpbmUgVmVjdG9yPFN0cmlu
Zz4gU3RyaW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIFZlY3RvcjxTdHJpbmc+IFN0cmluZzo6c3BsaXQo
Y29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVz
dWx0OworICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgU3RyaW5n
IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gbWFrZThCaXRGcm9tMTZCaXRTb3Vy
Y2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cit9CisKK2lubGluZSBVQ2hhckRpcmVj
dGlvbiBTdHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIHJldHVybiBtX2lt
cGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAg
ICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCisgICAgICAgICpoYXNTdHJvbmdEaXJlY3Rp
b25hbGl0eSA9IGZhbHNlOworICAgIHJldHVybiBVX0xFRlRfVE9fUklHSFQ7Cit9CisKK2lubGlu
ZSB2b2lkIFN0cmluZzo6Y2xlYXJJbXBsSWZOb3RTaGFyZWQoKQoreworICAgIGlmIChtX2ltcGwg
JiYgbV9pbXBsLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgbV9pbXBsID0gbnVsbHB0cjsKK30KKwor
aW5saW5lIHZvaWQgU3RyaW5nOjphc3NlcnRDYWdlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1faW1w
bCkKKyAgICAgICAgbV9pbXBsLT5hc3NlcnRDYWdlZCgpOworfQorCitpbmxpbmUgdm9pZCBTdHJp
bmc6OnJlbGVhc2VBc3NlcnRDYWdlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1faW1wbCkKKyAgICAg
ICAgbV9pbXBsLT5yZWxlYXNlQXNzZXJ0Q2FnZWQoKTsKIH0KIAogI2lmZGVmIF9fT0JKQ19fCkBA
IC02NTYsMTkgKzYwNSw2IEBAIGlubGluZSBOU1N0cmluZyAqIG5zU3RyaW5nTmlsSWZFbXB0eShj
b25zdCBTdHJpbmcmIHN0cmluZykKIAogI2VuZGlmCiAKLWlubGluZSBib29sIFN0cmluZzo6Y29u
dGFpbnNPbmx5QVNDSUkoKSBjb25zdAotewotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnM4KCksIG1faW1wbC0+bGVuZ3RoKCkpOwotCi0gICAgcmV0
dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzMTYoKSwgbV9pbXBsLT5sZW5ndGgo
KSk7Ci19Ci0KLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLQogaW5saW5lIGJvb2wgY29kZVBvaW50Q29tcGFy
ZUxlc3NUaGFuKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQogewogICAgIHJldHVy
biBjb2RlUG9pbnRDb21wYXJlKGEuaW1wbCgpLCBiLmltcGwoKSkgPCAwOwpAQCAtNjk3LDQ5ICs2
MzMsNiBAQCBpbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENoYXJhY3RlclR5cGU+JiB2
ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQogICAgIH0KIH0KIAotdGVtcGxhdGU8Ym9vbCBp
c1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotaW5saW5l
IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NwZWNpYWxDaGFyYWN0ZXIoY2hhcmFjdGVyc1tpXSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
Ci10ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+Ci1pbmxpbmUgYm9vbCBT
dHJpbmc6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdAotewotICAgIHNpemVfdCBsZW4g
PSBsZW5ndGgoKTsKLQotICAgIGlmICghbGVuKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVy
czxpc1NwZWNpYWxDaGFyYWN0ZXIsIExDaGFyPihjaGFyYWN0ZXJzOCgpLCBsZW4pOwotICAgIHJl
dHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyLCBVQ2hh
cj4oY2hhcmFjdGVyczE2KCksIGxlbik7Ci19Ci0KLS8vIFN0cmluZ0hhc2ggaXMgdGhlIGRlZmF1
bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhh
c2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJpbmc+IHsKLSAgICB0eXBlZGVm
IFN0cmluZ0hhc2ggSGFzaDsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8
U3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQotY2xhc3MgQVNDSUlMaXRl
cmFsIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBU0NJSUxpdGVyYWwoY29uc3QgY2hhciogY2hh
cmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykgeyB9Ci0gICAgb3BlcmF0b3IgY29u
c3QgY2hhciooKSB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KLQotcHJpdmF0ZToKLSAgICBjb25z
dCBjaGFyKiBtX2NoYXJhY3RlcnM7Ci19OwotCi0vLyBTaGFyZWQgZ2xvYmFsIGVtcHR5IHN0cmlu
Zy4KLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25zdCBTdHJpbmcmIGVtcHR5U3RyaW5nKCk7Ci0K
IGlubGluZSBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOChjb25zdCBWZWN0b3I8TENoYXI+JiBjaGFy
YWN0ZXJzKQogewogICAgIGlmIChjaGFyYWN0ZXJzLmlzRW1wdHkoKSkKQEAgLTc2NywzOCArNjYw
LDMwIEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSwgbG93ZXJjYXNlTGV0dGVycyk7CiB9
CiAKLXRlbXBsYXRlPD4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJp
bmc+IHsKLSAgICB1c2luZyBSZXR1cm5UeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIEFkZGl0aW9u
YWxBcmd1bWVudFR5cGUgPSB2b2lkOwotICAgIHN0YXRpYyBTdHJpbmcgZmx1c2goTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCopIHsgcmV0dXJuIHsgY2hhcmFjdGVycywg
bGVuZ3RoIH07IH0KLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OkNTdHJp
bmc7Cit1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKIHVzaW5nIFdURjo6S2VlcFRyYWlsaW5nWmVy
b3M7CiB1c2luZyBXVEY6OlN0cmluZzsKLXVzaW5nIFdURjo6ZW1wdHlTdHJpbmc7CiB1c2luZyBX
VEY6OmFwcGVuZE51bWJlcjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJOwotdXNp
bmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJ
bnRTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsKK3VzaW5nIFdURjo6Y2hh
cmFjdGVyc1RvRmxvYXQ7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0OwogdXNpbmcgV1RG
OjpjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDY0
U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3Q7CiB1c2luZyBXVEY6
OmNoYXJhY3RlcnNUb0ludDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDsKLXVzaW5nIFdU
Rjo6Y2hhcmFjdGVyc1RvSW50NjQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKIHVz
aW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3Vi
bGU7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb0Zsb2F0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9JbnRQdHJTdHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdDsKK3VzaW5n
IFdURjo6Y2hhcmFjdGVyc1RvVUludDY0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjRT
dHJpY3Q7Cit1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Cit1c2luZyBXVEY6OmNoYXJhY3Rl
cnNUb1VJbnRTdHJpY3Q7Cit1c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNpbmcgV1RGOjplcXVh
bDsKIHVzaW5nIFdURjo6ZmluZDsKIHVzaW5nIFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczsK
IHVzaW5nIFdURjo6aXNTcGFjZU9yTmV3bGluZTsKIHVzaW5nIFdURjo6cmV2ZXJzZUZpbmQ7Ci11
c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
TGF0aW4xLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEu
Y3BwCmluZGV4IDI1YTBlMWU4NjRiMjk3MTQ4MWUzMDljNDM1NGU0MzEwNjFiNDVjN2UuLmI4MTA5
ZDc2MTlhNTQyYmUyZDI5NmNlZDBjMjZiZjM1NWYwY2FlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAg
c3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRl
eCwgVUJvb2wgZm9yd2FyZCkKICAgICB9CiAgICAgdVRleHQtPmNodW5rTGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4odVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB1VGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCk7CiAKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+
KHVUZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1VGV4dC0+
Y29udGV4dCkgKyB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHVUZXh0LT5jaHVua0xlbmd0aCkpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGNv
bnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0
IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKIAogICAgIHVUZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOwogCkBAIC0xNzgsNyArMTc4LDcg
QEAgc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiB1VGV4dCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBsaW1pdCwgVUMKICAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGggPiBk
ZXN0Q2FwYWNpdHkpCiAgICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5Owog
Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBM
Q2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJp
bW1lZExlbmd0aCkpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0LCBz
dGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOwogICAgIH0KIAogICAgIGlmIChsZW5ndGgg
PCBkZXN0Q2FwYWNpdHkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgdm9pZCB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aQogICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKICAg
ICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CiAgICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50
cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5n
dGgpKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhjb25zdF9jYXN0PFVDaGFyKj4o
dGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkg
KyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRl
eHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAppbmRleCBiNDk3YWRjNzdhZDg5MzRhYWZhNzUzMzUzZjhkZmI0MzE0NGRmZjQzLi5j
OTE3MWRjMmEzYjQ2NDI4NDA5NDJlOWU5NTE0NmY1Nzk5MTBhNTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApAQCAtMTc0LDExICsxNzQsNiBAQCBzdGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRWYWx1ZXMoY29uc3QgU3RyaW5nJiBxdQogICAg
IHJldHVybiBxdWVyeURpY3Rpb25hcnk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBoYXNDYXNlSW5z
ZW5zaXRpdmVQcmVmaXgoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgU3RyaW5nJiBwcmVmaXgp
Ci17Ci0gICAgcmV0dXJuIGlucHV0LnN0YXJ0c1dpdGgocHJlZml4LCBmYWxzZSk7Ci19Ci0gICAg
CiBzdGF0aWMgYm9vbCBpc1lvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5n
IGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKQEAgLTI2NCw3ICsyNTksNyBAQCBzdGF0aWMgVVJMIHBy
b2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVT
aG9ydGVuZWRVUgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0gZWxzZSBpZiAoaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KHBhdGgsICIvdi8iKSB8fCBo
YXNDYXNlSW5zZW5zaXRpdmVQcmVmaXgocGF0aCwgIi9lLyIpKSB7CisgICAgfSBlbHNlIGlmIChz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkgewogICAgICAgICBTdHJp
bmcgbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
U3RyaW5nIHZpZGVvSUQ7CiAgICAgICAgIFN0cmluZyBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKaW5kZXggMGVhOTBmNTg5YjJhYmNhMjJhMjliYmY4YTI1NWI4ZTk3ZTll
ODAyMS4uN2VjMjc4NjM4MGQ2YTBhODNiN2MzMGVjYjQ2MDMyOTFiNWEyOGM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAg
ICAgICBpZiAoKGhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldEV4dGVu
c2lvbnMKICAgICAgICAgICAgIHx8IGhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6OlNlY1dl
YlNvY2tldEFjY2VwdAogICAgICAgICAgICAgfHwgaGVhZGVyTmFtZSA9PSBIVFRQSGVhZGVyTmFt
ZTo6U2VjV2ViU29ja2V0UHJvdG9jb2wpCi0gICAgICAgICAgICAmJiAhdmFsdWUuY29udGFpbnNP
bmx5QVNDSUkoKSkgeworICAgICAgICAgICAgJiYgIXZhbHVlLmlzQWxsQVNDSUkoKSkgewogICAg
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gbWFrZVN0cmluZyhuYW1lLCAiIGhlYWRlciB2YWx1
ZSBzaG91bGQgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnMiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCAyOTkyYTA5MjFlNTIzNjQxOGM3MTI3ZGQ2NjViNmQ3
M2E1NWFiN2JmLi4xZGYxZjA1MTJmMTI2N2QwZWIzMGNmMmRjYmIwN2JlMmIxYzcyZjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTc2
LDYgKzc2LDcgQEAKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1ldGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgog
I2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJNYXRoTUxFbGVtZW50Lmgi
CkBAIC0xNjE1LDE0ICsxNjE2LDE0IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgc3BhY2UsIG5ldyBsaW5lLCB0YWcgbm9k
ZS4KICAgICAgICAgICAgIGlmIChjdXJyZW50TGVuZ3RoID09IDEpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNTcGFjZU9yTmV3bGluZShpdGVyYXRvci50ZXh0KClbMF0pKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzSFRNTFNwYWNlKGl0ZXJhdG9yLnRleHQoKVswXSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIEJSIHRhZywgd2Ugd2FudCB0byBzZXQgdGhlIGN1
cnJlbnROb2RlIHRvIGl0LgogICAgICAgICAgICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRl
cmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
Y2hpbGROb2RlID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoY2hpbGROb2RlICYmIGNoaWxkTm9kZS0+cmVuZGVyZXIoKSAmJiBjaGls
ZE5vZGUtPnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudE5vZGUgPSBjaGlsZE5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXBsYWNl
ZE5vZGVPckJSID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChFbGVtZW50
ICpzaGFkb3dIb3N0ID0gY3VycmVudE5vZGUtPnNoYWRvd0hvc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBjdXJyZW50Tm9kZS0+c2hhZG93
SG9zdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgZW50ZXJp
bmcgdGV4dCBjb250cm9scywgd2Ugc2hvdWxkIHNldCB0aGUgY3VycmVudE5vZGUKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRvIGJlIHRoZSBzaGFkb3cgaG9zdCB3aGVuIHRoZXJlJ3Mgbm8g
Y29udGVudC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlSXNUZXh0Q29udHJvbChz
aGFkb3dIb3N0KSAmJiBjdXJyZW50Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKaW5kZXggNmUz
MDFiMGMyNWMzOWMzYTM0Yjc5ZjE4ZTM3OGI1NTM2ZDYyMjExYy4uZDVkYjllMjQ1ZDBkZDQwNTBj
NGFmOGU5YzY2YmE2Yzg5NGM5MTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlMaXN0OjpjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRlbU1hcmtlcnMoUmVu
ZGVyT2JqZWN0KiBsaXN0SQogICAgIC8vIHRob3NlIHJlbmRlcmVycyBhcyAiaWdub3JlZCIgb2Jq
ZWN0cy4KICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIHRleHQgPSBheE9iai0+dGV4dFVu
ZGVyRWxlbWVudCgpOwotICAgIHJldHVybiAhdGV4dC5pc0VtcHR5KCkgJiYgIXRleHQuY29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJldHVybiAhdGV4dC5pc0VtcHR5KCkgJiYgIXRleHQu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDU3ZDBlYWM3MzUzNjBkNzVjMjEz
ZThiZTU1ZTFlNTkwYWQ5OWNkY2YuLmU5NGFhOTQ2ZGNmNzM1NDcyODBmOTNjNDkxMjdlMTJlZDc1
NTEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC00ODEsMTIgKzQ4MSwxMiBAQCBib29sIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkKCkgY29uc3QKIAogICAgIC8vIENoZWNr
IHRoZSBub2RlIG5hbWUgb2YgdGhlIGlucHV0IHR5cGUsIHNvbWV0aW1lcyBpdCdzICJzZWFyY2gi
LgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShu
YW1lQXR0cik7Ci0gICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnMoInNlYXJjaCIsIGZhbHNl
KSkKKyAgICBpZiAobmFtZUF0dHJpYnV0ZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzZWFy
Y2giKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayB0aGUgZm9ybSBhY3Rp
b24gYW5kIHRoZSBuYW1lLCB3aGljaCB3aWxsIHNvbWV0aW1lcyBiZSAic2VhcmNoIi4KICAgICBh
dXRvKiBmb3JtID0gaW5wdXRFbGVtZW50LmZvcm0oKTsKLSAgICBpZiAoZm9ybSAmJiAoZm9ybS0+
bmFtZSgpLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkgfHwgZm9ybS0+YWN0aW9uKCkuY29udGFp
bnMoInNlYXJjaCIsIGZhbHNlKSkpCisgICAgaWYgKGZvcm0gJiYgKGZvcm0tPm5hbWUoKS5jb250
YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJzZWFyY2giKSB8fCBmb3JtLT5hY3Rpb24oKS5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKCJzZWFyY2giKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMjkxOTE0MjA3Nzc3YzU5ZTQ4OTJlMDQ1MTY1
NjRiMzFmNTY2NDkwMi4uYmQ0ZWI4MTk5OTJlMTE4OGMyNjBmODRlMmYzMGI4ODYxMmQ3YjUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCkBAIC0yODksOSArMjg5LDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5T2JqZWN0Q29udGFpbnNUZXh0KFN0cmluZyogdGV4dCkgY29uc3QKICAgICAv
LyBJZiB0ZXh0IGlzIG51bGwgb3IgZW1wdHkgd2UgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJuICF0
ZXh0CiAgICAgICAgIHx8IHRleHQtPmlzRW1wdHkoKQotICAgICAgICB8fCB0aXRsZSgpLmNvbnRh
aW5zKCp0ZXh0LCBmYWxzZSkKLSAgICAgICAgfHwgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCku
Y29udGFpbnMoKnRleHQsIGZhbHNlKQotICAgICAgICB8fCBzdHJpbmdWYWx1ZSgpLmNvbnRhaW5z
KCp0ZXh0LCBmYWxzZSk7CisgICAgICAgIHx8IGZpbmRQbGFpblRleHQodGl0bGUoKSwgKnRleHQs
IENhc2VJbnNlbnNpdGl2ZSkKKyAgICAgICAgfHwgZmluZFBsYWluVGV4dChhY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb24oKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSkKKyAgICAgICAgfHwgZmluZFBs
YWluVGV4dChzdHJpbmdWYWx1ZSgpLCAqdGV4dCwgQ2FzZUluc2Vuc2l0aXZlKTsKIH0KIAogLy8g
QVJJQSBtYXJrcyBlbGVtZW50cyBhcyBoYXZpbmcgdGhlaXIgYWNjZXNzaWJsZSBuYW1lIGRlcml2
ZSBmcm9tIGVpdGhlciB0aGVpciBjb250ZW50cywgb3IgdGhlaXIgYXV0aG9yIHByb3ZpZGUgbmFt
ZS4KQEAgLTgzOCw4ICs4MzgsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0
VGV4dChBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlhKiBjcml0ZXJpYQogICAgICAgICBp
ZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY2xvc2VzdFN0cmluZ1Jhbmdl
LmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKSkgewogICAgICAgICAgICAgc3dpdGNoIChhY3Rpdml0
eSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpG
aW5kQW5kQ2FwaXRhbGl6ZToKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IGNs
b3Nlc3RTdHJpbmc7Ci0gICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZyZXBsYWNlbWVu
dFN0cmluZywgMCk7CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFs
aXplKGNsb3Nlc3RTdHJpbmcsICcgJyk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxvY2FsZSBp
bnRvIGFjY291bnQgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgcmVwbGFjZVNl
bGVjdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRVcHBlcmNhc2U6CkBAIC04
NTYsNyArODU1LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNj
ZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEKICAgICAgICAgICAgICAgICAv
LyAodW5sZXNzIHdlJ3JlIHJlcGxhY2luZyB3aXRoIGFuIGFiYnJldmlhdGlvbi4pCiAgICAgICAg
ICAgICAgICAgaWYgKGNsb3Nlc3RTdHJpbmcubGVuZ3RoKCkgPiAwICYmIHJlcGxhY2VtZW50U3Ry
aW5nLmxlbmd0aCgpID4gMiAmJiByZXBsYWNlbWVudFN0cmluZyAhPSByZXBsYWNlbWVudFN0cmlu
Zy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNsb3Nlc3RTdHJpbmdbMF0gPT0gdV90b3VwcGVyKGNsb3Nlc3RTdHJpbmdbMF0pKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZyZXBsYWNlbWVudFN0cmlu
ZywgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IGNhcGl0
YWxpemUocmVwbGFjZW1lbnRTdHJpbmcsICcgJyk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxv
Y2FsZSBpbnRvIGFjY291bnQgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFj
ZW1lbnRTdHJpbmcuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOyAvLyBGSVhNRTog
TmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCmluZGV4IDExM2ZmZjVjMjNhNTE1ZjJjOTY3Nzk0YTg3ZmJlMWYyMjMzYjM5
ZmMuLjZkYjlmNzcxMTU2Y2NlOTFjMjk1MGFjMmM5ODdhYTI4NGEwYjQ1MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0CiBzdGF0aWMgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBvYmplY3RJbmNsdXNpb25Gcm9tQWx0VGV4dChjb25zdCBTdHJpbmcm
IGFsdFRleHQpCiB7CiAgICAgLy8gRG9uJ3QgaWdub3JlIGFuIGltYWdlIHRoYXQgaGFzIGFuIGFs
dCB0YWcuCi0gICAgaWYgKCFhbHRUZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICBp
ZiAoIWFsdFRleHQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkKICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAg
ICAgCiAgICAgLy8gVGhlIGluZm9ybWFsIHN0YW5kYXJkIGlzIHRvIGlnbm9yZSBpbWFnZXMgd2l0
aCB6ZXJvLWxlbmd0aCBhbHQgc3RyaW5ncy4KQEAgLTEyNTEsNyArMTI1MSw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogICAgICAgICB9CiAKICAgICAgICAgLy8gdGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0
IGVtcHR5IHdoaXRlc3BhY2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5lZAotICAgICAgICByZXR1cm4g
cmVuZGVyVGV4dC50ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0
dXJuIHJlbmRlclRleHQudGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+
KCk7CiAgICAgfQogICAgIAogICAgIGlmIChpc0hlYWRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5j
cHAKaW5kZXggMTc1NjZiMTdjMWU5MmM5OGU2ZGIyZGM5MzM4ZGNkM2UzNDQ3ZTY0Mi4uNTkzM2Ex
OWE3YjhmYWRhMmZhYjgxNmM3ZmY5NmQxNjAwMzQ1N2Q4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5j
cHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRM
ZW5ndGhGb3JUZXh0UmFuZ2UoKSBjb25zdAogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICB0ZXh0
TGVuZ3RoID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKS50ZXh0TGVuZ3RoKCk7Cisg
ICAgICAgIHRleHRMZW5ndGggPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpLnRleHQo
KS5sZW5ndGgoKTsKIAogICAgIC8vIEdldCB0aGUgdGV4dCBsZW5ndGggZnJvbSB0aGUgZWxlbWVu
dHMgdW5kZXIgdGhlCiAgICAgLy8gYWNjZXNzaWJpbGl0eSBvYmplY3QgaWYgdGhlIHZhbHVlIGlz
IHN0aWxsIHplcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFN0cmluZ3MuY3BwCmluZGV4IDY5ZGQ0YmY4MjA0YTE5OTU3ZjhjOGE3MWNhMDk2ZTBkNmMx
MGNmMzAuLmI1NDM4ZjdlMWUwYTU1YWE5ZjA0ZTIwNzYyMWQ3NDFiMzQ2YmZhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCkBA
IC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0YXRpYyBpbmxpbmUgU3Ry
aW5nIHN0cmluZ1RvQnl0ZVN0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlLCBTdHJpbmcmJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFzdHJpbmcuY29udGFpbnNPbmx5
TGF0aW4xKCkpIHsKKyAgICBpZiAoIXN0cmluZy5pc0FsbExhdGluMSgpKSB7CiAgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggMzdjMmNhOGY5OTU2MWRlM2U4MDA4ZDQ3NjBkMTAx
M2Q2OWZmZjMxNS4uMTY2MTRjNWNiZjQ2MDUxZmU3NDBlZTI1ZmRjMWYzYzgzMWFkMjRhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTUxLDkgKzUxLDggQEAgbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zIHsKICAgICAKIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUFTQ0lJV2l0aE5vVXBw
ZXJjYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkb21haW4ubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBVQ2hhciBjID0gZG9tYWluLmF0
KGkpOwotICAgICAgICBpZiAoIWlzQVNDSUkoYykgfHwgaXNBU0NJSVVwcGVyKGMpKQorICAgIGZv
ciAoYXV0byBjaGFyYWN0ZXIgOiBTdHJpbmdWaWV3IHsgZG9tYWluIH0uY29kZVVuaXRzKCkpIHsK
KyAgICAgICAgaWYgKCFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgaXNBU0NJSVVwcGVyKGNoYXJhY3Rl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMzA3MjEwMWYzZmEwMWNkMWNmODJiZTdjODlh
YWYyMTI4MTZlNTIxNi4uYzBkYjFiMTJkYTczYWMwYzUyNzk3M2QwMWI1OTNhZTA2NzhmOTQxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6cGFpcjxW
ZWN0b3I8QWN0aW9uPiwgVmVjdG9yPFN0cmluZz4+IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6
YWN0aW9uc0ZvclJlCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyA9IHJlc291cmNlTG9hZEluZm8ucmVzb3VyY2VVUkwuc3RyaW5nKCk7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSh1cmxTdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSwgIkEgZGVjb2Rl
ZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcg
YWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9u
bHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3Vt
ZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOwogICAgIGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcg
PSB1cmxTdHJpbmcudXRmOCgpOwogCiAgICAgVmVjdG9yPEFjdGlvbj4gZmluYWxBY3Rpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNl
ci5jcHAKaW5kZXggMjJkZmMxM2E4NDZmNDZhODJiZmY2YzA0Nzg3NDk0NWVlZjNkZTk3Ny4uZTM1
MWUxN2Q5ZWE3NjRiNDY4ZGRmZjY1M2E4ZWQwNmM1MTI1ZWE4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCkBAIC0zNDEs
NyArMzQxLDcgQEAgVVJMRmlsdGVyUGFyc2VyOjp+VVJMRmlsdGVyUGFyc2VyKCkgPSBkZWZhdWx0
OwogCiBVUkxGaWx0ZXJQYXJzZXI6OlBhcnNlU3RhdHVzIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0
dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgcGF0dGVybklzQ2FzZVNlbnNpdGl2ZSwg
dWludDY0X3QgcGF0dGVybklkKQogewotICAgIGlmICghcGF0dGVybi5jb250YWluc09ubHlBU0NJ
SSgpKQorICAgIGlmICghcGF0dGVybi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBOb25B
U0NJSTsKICAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFbXB0eVBh
dHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXgg
NjM1NzJjNTE1YmVhNjY1ZjU2Mjc0MTI1YmZmODNjYmE4MjRjMTYxZC4uOGFjZDlhZjFiMDFmMDBi
YTBhMDIzZTdjMzQzOTA0NDA3ZDE4MTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIENTU0ZvbnRGYWNlU3JjVmFs
dWU6OmlzU3VwcG9ydGVkRm9ybWF0KCkgY29uc3QKICAgICAvLyB3ZSB3aWxsIGFsc28gY2hlY2sg
dG8gc2VlIGlmIHRoZSBVUkwgZW5kcyB3aXRoIC5lb3QuIElmIHNvLCB3ZSdsbCBhc3N1bWUgdGhh
dCB3ZSBzaG91bGRuJ3QgbG9hZCBpdC4KICAgICBpZiAobV9mb3JtYXQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIENoZWNrIGZvciAuZW90LgotICAgICAgICBpZiAoIW1fcmVzb3VyY2Uuc3RhcnRz
V2l0aCgiZGF0YToiLCBmYWxzZSkgJiYgbV9yZXNvdXJjZS5lbmRzV2l0aCgiLmVvdCIsIGZhbHNl
KSkKKyAgICAgICAgaWYgKCFwcm90b2NvbElzKG1fcmVzb3VyY2UsICJkYXRhIikgJiYgbV9yZXNv
dXJjZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuZW90IikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU05hbWVzcGFjZS5jcHAKaW5kZXggYzZhYTc4NmVkODIwMjMzMWM4OTAwYzFmY2RkNmM3NmE1
MjAwNmE4OS4uOTEzNTIzNzc2OTY1OTQyZjJmNTA4NjIzZjY1NjcwYThhMGFhZTBjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIHZhbHVlV2l0aG91dEltcG9ydGFudChjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghdmFsdWUuZW5kc1dpdGgoImltcG9ydGFudCIs
IGZhbHNlKSkKKyAgICBpZiAoIXZhbHVlLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoImltcG9y
dGFudCIpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBTdHJpbmcgbmV3VmFsdWUgPSB2
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAKaW5kZXggYzE2Nzg3OWJkOTE0MGMwMTRiZjZlYmYzOGFmMTI5N2RiZWJiMTIwMS4uOTljZWVk
NDg0Mjc5MDc5M2U2NGZhMmFjNDM1MzQzYmYxNmY0ZGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTMyNTQsNyArMzI1NCw3IEBA
IHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzQ29sdW1uTmFtZXMo
Y29uc3QgU3RyaW5nJiBncmlkUm93TmFtCiAKIHN0YXRpYyBib29sIHBhcnNlR3JpZFRlbXBsYXRl
QXJlYXNSb3coY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMsIE5hbWVkR3JpZEFyZWFNYXAmIGdy
aWRBcmVhTWFwLCBjb25zdCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCYgY29sdW1uQ291bnQpCiB7
Ci0gICAgaWYgKGdyaWRSb3dOYW1lcy5pc0VtcHR5KCkgfHwgZ3JpZFJvd05hbWVzLmNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKSkKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNDU1NTcGFjZT4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gY29sdW1uTmFtZXMgPSBwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzQ29sdW1uTmFtZXMo
Z3JpZFJvd05hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBlNmVl
MmFjMjRmMWQ1MzkxMGYxYjI4NTZlOGE4ZTA1ODlhN2U0YzhlLi5jM2Y0YjA5ZmYyMWRhZjQxMDVj
MGI3NzYxYTRmYjcyNjk5MjJjN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CkBAIC0xNzQsMTEgKzE3NCw2IEBAIFN0cmluZyBDaGFyYWN0ZXJEYXRhOjpub2RlVmFsdWUoKSBj
b25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKLWJvb2wgQ2hhcmFjdGVyRGF0YTo6Y29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS5jb250YWluc09u
bHlXaGl0ZXNwYWNlKCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPHZvaWQ+IENoYXJhY3RlckRhdGE6OnNl
dE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIHsKICAgICBzZXREYXRhKG5vZGVW
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCBlNGFkMjIxZWQwZmZlMWEz
ZmUyZDJjNTM0MmExNDZmNGMzZDZiNGEyLi4xYmIxYmJlZGRiMTVlZmEzM2FkNGRjZGZjMGI3MGI3
NzU5ZWQ5Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSw4
ICszOSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBk
ZWxldGVEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VEYXRhKHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCBjb250YWluc09ubHlXaGl0
ZXNwYWNlKCkgY29uc3Q7Ci0KICAgICAvLyBMaWtlIGFwcGVuZERhdGEsIGJ1dCBvcHRpbWl6ZWQg
Zm9yIHRoZSBwYXJzZXIgKGUuZy4sIG5vIG11dGF0aW9uIGV2ZW50cykuCiAgICAgLy8gUmV0dXJu
cyBob3cgbXVjaCBjb3VsZCBiZSBhZGRlZCBiZWZvcmUgbGVuZ3RoIGxpbWl0IHdhcyBtZXQuCiAg
ICAgdW5zaWduZWQgcGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCmluZGV4IGVmYTFlOWE3NzgyZTVmMWQxZjEyZGZhN2ZkYjZlNjk3NTI3OTliNGYuLjZm
MzMzMjY0MWQzODYyN2NlN2Q3ZWRiZTRmNWFjYzQxMzc3N2M1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBzdGF0aWMgU3RyaW5nIG5vcm1h
bGl6ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gdHlwZTsKIAogICAg
IFN0cmluZyBsb3dlcmNhc2VUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgaWYgKGxvd2VyY2FzZVR5cGUg
PT0gInRleHQiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJ0
ZXh0L3BsYWluOyIpKQorICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0ZXh0IiB8fCBsb3dlcmNh
c2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvcGxhaW47IikpCiAgICAgICAgIHJldHVybiAidGV4dC9w
bGFpbiI7Ci0gICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInRleHQvdXJpLWxpc3Q7IikpCisgICAgaWYgKGxv
d2VyY2FzZVR5cGUgPT0gInVybCIgfHwgbG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3Vy
aS1saXN0OyIpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiOwotICAgIGlmIChsb3dl
cmNhc2VUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgidGV4dC9odG1sOyIpKQorICAg
IGlmIChsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGgoInRleHQvaHRtbDsiKSkKICAgICAgICAgcmV0
dXJuICJ0ZXh0L2h0bWwiOwogCiAgICAgcmV0dXJuIGxvd2VyY2FzZVR5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAppbmRleCAwYzZiYzI1ZjRmYTRmZjE0YzI4NTJjYzVmY2Q2Y2RlOGQ3OGJlZmY4
Li44OWE1MDZmZjUwMTdhMzZmZThhZTY5ODExYjUxNWQ0ZTRjNWJiZjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVy
YXRvci5oIgpAQCAtMTE0MSwxMSArMTE0MiwxMSBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGlu
Z1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgY29uc2lkZXJObwog
CiAgICAgUG9zaXRpb24gcHJldiA9IHByZXZpb3VzQ2hhcmFjdGVyUG9zaXRpb24oYWZmaW5pdHkp
OwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1l
bnQoZGVwcmVjYXRlZE5vZGUoKSwgcHJldi5kZXByZWNhdGVkTm9kZSgpKSAmJiBpczxUZXh0Pigq
cHJldi5kZXByZWNhdGVkTm9kZSgpKSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gZG93bmNh
c3Q8VGV4dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkuZGF0YSgpOwotICAgICAgICBVQ2hhciBj
ID0gc3RyaW5nW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07Ci0gICAgICAgIGlmIChj
b25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShj
KSkKKyAgICAgICAgVUNoYXIgYyA9IGRvd25jYXN0PFRleHQ+KCpwcmV2LmRlcHJlY2F0ZWROb2Rl
KCkpLmRhdGEoKVtwcmV2LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCldOworICAgICAgICBpZiAo
Y29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNIVE1MU3BhY2UoYykgfHwgYyA9
PSBub0JyZWFrU3BhY2UpIDogZGVwcmVjYXRlZElzQ29sbGFwc2libGVXaGl0ZXNwYWNlKGMpKSB7
CiAgICAgICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHByZXYpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBwcmV2OworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKQEAg
LTExNjIsNyArMTE2Myw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp0cmFpbGluZ1doaXRlc3BhY2VQ
b3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29uc2lkZXJOb25Db2xsYXBzCiAgICAgVUNoYXIgYyA9
IHYuY2hhcmFjdGVyQWZ0ZXIoKTsKICAgICAvLyBUaGUgc3BhY2UgbXVzdCBub3QgYmUgaW4gYW5v
dGhlciBwYXJhZ3JhcGggYW5kIGl0IG11c3QgYmUgZWRpdGFibGUuCiAgICAgaWYgKCFpc0VuZE9m
UGFyYWdyYXBoKHYpICYmIHYubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkuaXNOb3RO
dWxsKCkpCi0gICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChp
c1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0Nv
bGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKKyAgICAgICAgaWYgKGNvbnNpZGVyTm9uQ29sbGFwc2li
bGVXaGl0ZXNwYWNlID8gKGlzSFRNTFNwYWNlKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRl
cHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShjKSkKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IGJhMDZmNzljYjBkM2U0MTgyNDkwYzA4NjczODgyZTVjZTI1ZWE0MjkuLjhhOTk3ZTRkOWM2
MWY0NDRlNjlkNDFiYmZlOWQ3MzNkMTU0MDNkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTM1NTksNyArMzU1OSw3IEBAIHZvaWQgRWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVy
RmlyZWQoKQogICAgICAgICAgICAgVUNoYXIzMiBjID0gbmV3U3RhcnQuY2hhcmFjdGVyQmVmb3Jl
KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRl
cigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3QgZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQog
ICAgICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRvciwgc28gd2UgZG8gYW4gaXNTdGFydE9m
UGFyYWdyYXBoIGNoZWNrIGhlcmUuCi0gICAgICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShj
KSB8fCBjID09IDB4QTAgfHwgaXNTdGFydE9mUGFyYWdyYXBoKG5ld1N0YXJ0KSkgeworICAgICAg
ICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UgfHwgaXNT
dGFydE9mUGFyYWdyYXBoKG5ld1N0YXJ0KSkgewogICAgICAgICAgICAgICAgIHN0YXJ0V29yZFNp
ZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBu
ZXdBZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChuZXdTdGFydCwg
c3RhcnRXb3JkU2lkZSksIGVuZE9mV29yZChuZXdTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGIyMDcz
YWM0YzU3OTczMTE2ZTJkMDYwZjgyOGIxOWFhNTFhZjZkMGUuLmYzNmUwNWVhZGU3MjRiYmZjN2Rh
OTYwMWUyZWYwOWJlZGEzM2QwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpkZWJ1
Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0ZWQgPyAiPT0+ICIgOiAiICAg
ICIsIGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBl
bHNlIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAgICAgICAgIFJlbmRlclRleHQm
IHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7Ci0gICAgICAg
IGlmICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSB8fCAhdGV4dFJlbmRlcmVyLmZpcnN0VGV4
dEJveCgpKSB7CisgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgpLmlzRW1wdHkoKSB8fCAh
dGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzI3RleHQgKGVtcHR5KVxuIiwgc2VsZWN0ZWQgPyAiPT0+ICIgOiAiICAgICIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNjQxLDcgKzI2NDEsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNvbnN0CiAgICAgICAgIH0KICAg
ICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7CiAgICAgICAgIGlmIChjKSB7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCB8fCAo
dV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYmIGMgIT0gJ1wnJyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNl
IHx8ICh1X2lzcHVuY3QoYykgJiYgYyAhPSAnLCcgJiYgYyAhPSAnLScgJiYgYyAhPSAnXCcnKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjY4Niw3ICsyNjg2LDcg
QEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5p
bmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKIAogICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKGVu
ZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKSB7CiAgICAgICAgIFVDaGFyIGMoZW5kVmlzaWJs
ZVBvc0JlZm9yZUV4cGFuc2lvbi5jaGFyYWN0ZXJCZWZvcmUoKSk7Ci0gICAgICAgIGlmIChpc1Nw
YWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAgICAgLy8gRW5kIG9mIHBh
cmFncmFwaCB3aXRoIHNwYWNlLgogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24o
KTsKICAgICAgICAgfQpAQCAtMjcyOSw3ICsyNzI5LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFt
ZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBW
aXMKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KICAg
ICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAgICAgaWYgKGlz
U3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgIGlmIChpc1NwYWNlT3JO
ZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAvLyBTcGFjZSBh
dCBlbmQgb2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAg
ICAgICAgfQpAQCAtMjc0NCw3ICsyNzQ0LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVj
dGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAg
VUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAgICAgaWYgKGlzU3BhY2VP
ck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5l
KGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAvLyBTcGFjZSBhdCBlbmQg
b2YgbGluZQogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAg
fQpAQCAtMjc2NCw3ICsyNzY0LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6
d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXMKICAgICB3aGls
ZSAoZW5kVmlzaWJsZVBvcyAhPSBzdGFydFZpc2libGVQb3MpIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzKGVuZFZpc2libGVQb3MucHJldmlvdXMoKSk7CiAgICAgICAgIFVDaGFy
IGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlmICghaXNTcGFjZU9yTmV3
bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNTcGFjZU9yTmV3bGluZShjKSAm
JiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBlbmRWaXNp
YmxlUG9zID0gcHJldmlvdXM7CiAgICAgfQpAQCAtMjgwMiw3ICsyODAyLDcgQEAgYm9vbCBGcmFt
ZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbCkKICAgICAgICAgfQogICAgICAgICBVQ2hhciBjKHBvcy5jaGFyYWN0ZXJB
ZnRlcigpKTsKICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXds
aW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUo
YykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgICAgICBzYXdTcGFjZSA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA1YzlmMzYwNTc3NzFmNGU2MmRmYmYwYWFlNzExMGFi
OGY5MmIwZjZjLi4zYWYxYWNmYjMxYWY1MTc1ZWRjNWEyMjkzNzNlNzI4YWI1ZGViOTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1cnlha292LgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXh0Tm9kZU9m
ZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5SYW5nZSkKICAgICB1bnNpZ25l
ZCB0ZXh0T2Zmc2V0ID0gMDsKICAgICBmb3IgKHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3Vz
U2libGluZygpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5n
KCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAgICAg
IHRleHRPZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLT50ZXh0TGVuZ3Ro
KCk7CisgICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRl
cmVyKS0+dGV4dCgpLmxlbmd0aCgpOwogICAgIH0KICAgICByZXR1cm4gdGV4dE9mZnNldDsKIH0K
QEAgLTY0MCw3ICs2NDAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQog
ICAgICAgICBib29sIGlzTmV3VGV4dE5vZGUgPSBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZs
b3cgJiYgbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICE9ICZ0ZXh0Tm9kZTsKICAgICAg
ICAgLy8gU2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBwb3NpdGlvbnMgYXJlIGFsbCBhYnNvbHV0ZSB0
byB0aGUgcGFyZW50IGZsb3cuCiAgICAgICAgIC8vIE9mZnNldHRpbmcgaXMgcmVxdWlyZWQgd2hl
biBtdWx0aXBsZSByZW5kZXJlcnMgYXJlIHByZXNlbnQuCi0gICAgICAgIG1fYWNjdW11bGF0ZWRT
aW1wbGVUZXh0TGVuZ3RoSW5GbG93ICs9IGlzTmV3VGV4dE5vZGUgPyBtX3ByZXZpb3VzU2ltcGxl
VGV4dE5vZGVJbkZsb3ctPnJlbmRlcmVyKCktPnRleHQoKS0+bGVuZ3RoKCkgOiAwOworICAgICAg
ICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBpc05ld1RleHROb2RlID8g
bV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigpLT50ZXh0KCkubGVuZ3Ro
KCkgOiAwOwogICAgICAgICBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3cgPSAmdGV4dE5v
ZGU7CiAKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29u
dGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRl
eHQubGVuZ3RoKCk7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRFbWl0
RXh0cmFOZXdsaW5lRm9yTm9kZShOb2RlJiBub2RlKQogCiBzdGF0aWMgaW50IGNvbGxhcHNlZFNw
YWNlTGVuZ3RoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dEVuZCkKIHsKLSAgICBTdHJp
bmdJbXBsJiB0ZXh0ID0gKnJlbmRlcmVyLnRleHQoKTsKKyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0g
cmVuZGVyZXIudGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdGV4dEVuZDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
IGlmICghcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSh0ZXh0W2ldKSkK
QEAgLTI3NjMsNCArMjc2MywyMCBAQCBSZWY8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFu
Z2UmIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgbwogICAgIHJldHVy
biByYW5nZUZvck1hdGNoKHJhbmdlLCBvcHRpb25zLCBtYXRjaFN0YXJ0LCBtYXRjaExlbmd0aCwg
c2VhcmNoRm9yd2FyZCk7CiB9CiAKK2Jvb2wgZmluZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKK3sKKyAg
ICBTZWFyY2hCdWZmZXIgYnVmZmVyIHsgdGFyZ2V0LCBvcHRpb25zIH07CisgICAgU3RyaW5nVmll
dyByZW1haW5pbmdUZXh0IHsgZG9jdW1lbnQgfTsKKyAgICB3aGlsZSAoIXJlbWFpbmluZ1RleHQu
aXNFbXB0eSgpKSB7CisgICAgICAgIHNpemVfdCBjaGFyYWN0ZXJzQXBwZW5kZWQgPSBidWZmZXIu
YXBwZW5kKGRvY3VtZW50KTsKKyAgICAgICAgcmVtYWluaW5nVGV4dCA9IHJlbWFpbmluZ1RleHQu
c3Vic3RyaW5nKGNoYXJhY3RlcnNBcHBlbmRlZCk7CisgICAgICAgIGlmIChyZW1haW5pbmdUZXh0
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1ZmZlci5yZWFjaGVkQnJlYWsoKTsKKyAgICAgICAg
c2l6ZV90IG1hdGNoU3RhcnRPZmZzZXQ7CisgICAgICAgIGlmIChidWZmZXIuc2VhcmNoKG1hdGNo
U3RhcnRPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXgg
MjNjMGI1ZWM3NWIzNzA2M2FmYzIxY2I4M2RlYWQzYmI1YTc4MGIwZC4uODYwZTc0Y2Y2YTUyMTE5
ZmQ4NGY2ZDFjMjZjMTgyOTNhODMzMTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwg
MjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJU
ZXh0RnJhZ21lbnQ7CisKIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKIGNsYXNzIFJ1blJl
c29sdmVyOwogfQpAQCAtNDcsNiArNDgsNyBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQgogUmVm
PFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMpOwogV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBmaW5kQ2xvc2VzdFBsYWluVGV4dChj
b25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCk7CiBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBSYW5nZSYsIFRleHRJdGVyYXRv
ckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK2Jvb2wgZmluZFBsYWlu
VGV4dChjb25zdCBTdHJpbmcmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7
IC8vIExldHMgdXMgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9uIGEgc3RyaW5nLgogCiAvLyBG
SVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4g
SXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChS
ZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmlu
ZGV4IDk2MjBiZmI3MTI3MGNjZGMzNjM1YWRmZGRhZmVmMzIxYTYwODk0MGYuLmZkNzkwNjZmYmZh
ZTQ2YjhhYzkyMmVkMzZkY2IyMzBkNmZmZTkyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6
bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQog
ICAgICAgICBVQ2hhcjMyIGMgPSBwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpOwogICAgICAgICAv
LyBGSVhNRTogVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigpIGFuZCBjaGFyYWN0ZXJC
ZWZvcmUoKSBkbyBub3QgZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQogICAgICAgICAvLyB3YXkgYXMg
VGV4dEl0ZXJhdG9yLCBzbyB3ZSBkbyBhbiBpc0VuZE9mUGFyYWdyYXBoIGNoZWNrIGhlcmUuCi0g
ICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCB8fCBpc0VuZE9mUGFy
YWdyYXBoKHByZXZpb3VzKSkgeworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBj
ID09IG5vQnJlYWtTcGFjZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHByZXZpb3VzKSkgewogICAgICAg
ICAgICAgc3RhcnRXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKICAgICAgICAgfQog
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChwcmV2aW91cywgc3RhcnRX
b3JkU2lkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggNmFi
Y2Q0Zjk0Y2U1YmFhOWJiYjI2ZjQzNWM4M2E0ZjQyYmRiNzQ3Yy4uY2MxN2RkNjNlZmNkMDY3Mzdh
NjBkZTgwOTYzZGMxNDMzNzg2NjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgTm9kZSogZmluZFN0YXJ0T2ZQYXJhZ3JhcGgo
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBoaWdoZXN0Um9vdCwgTm9kZSogc3RhcnRCbG9jaywKICAg
ICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRleHQ+KCpuKSk7
CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsK
ICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgewotICAgICAgICAgICAg
ICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnIpLnRleHQoKTsK
KyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
KnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQgaSA9IHRleHQubGVuZ3RoKCk7CiAgICAg
ICAgICAgICAgICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKG4gPT0gc3Rh
cnROb2RlICYmIG8gPCBpKQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgTm9kZSogZmluZEVuZE9mUGFy
YWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJvb3QsIE5vZGUqIHN0YXlJbnNp
ZGVCbG8KICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRl
eHQ+KCpuKSk7CiAgICAgICAgICAgICB0eXBlID0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvcjsKICAgICAgICAgICAgIGlmIChzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgewotICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnIp
LnRleHQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKnIpLnRleHQoKTsKICAgICAgICAgICAgICAgICBpbnQgbyA9IG4gPT0gc3RhcnRO
b2RlID8gb2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5n
dGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbzsgaSA8IGxlbmd0aDsgKytpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
MzBhZDZkYmI2NDdjOTg2MzJiOWY5MTA0YWU3ZjdjZDcwOWU0ZGNlZS4uNmIxMzk3ZWJmNzM3YzFl
ZjE3NDkwNDhmZTIxNzY4NTBkNDI2NTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjIyNCw3ICsyMjI0LDcgQEAgdm9pZCBIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKICAgICBi
b29sIHdhc1NwYWNlID0gZmFsc2U7CiAgICAgaWYgKF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JO
b2RlKGNoYXJhY3RlckRhdGEsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSkuc3RhcnRzV2l0aCgicHJl
IikpIHsKICAgICAgICAgaWYgKHRleHRMZW5ndGggJiYgb3JpZ2luYWxTdHJpbmcubGVuZ3RoKCkg
JiYgX2ZsYWdzLmlzU29mdCkgewotICAgICAgICAgICAgdW5pY2hhciBjID0gb3JpZ2luYWxTdHJp
bmcuYXQoMCk7CisgICAgICAgICAgICB1bmljaGFyIGMgPSBvcmlnaW5hbFN0cmluZy5jaGFyYWN0
ZXJBdCgwKTsKICAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0g
TlNQYXJhZ3JhcGhTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgYyA9PSBOU0xpbmVTZXBhcmF0b3JDaGFy
YWN0ZXIgfHwgYyA9PSBOU0Zvcm1GZWVkQ2hhcmFjdGVyIHx8IGMgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpCiAgICAgICAgICAgICAgICAgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0
TGVuZ3RoIC0gMSwgMSk7CiAgICAgICAgIH0KQEAgLTIyMzQsNyArMjIzNCw3IEBAIHZvaWQgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgTENoYXIgbm9CcmVha1NwYWNl
UmVwcmVzZW50YXRpb24gPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewotICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmF0KGkpOwor
ICAgICAgICAgICAgVUNoYXIgYyA9IG9yaWdpbmFsU3RyaW5nLmNoYXJhY3RlckF0KGkpOwogICAg
ICAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UgPSBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9
PSAnXHInIHx8IGMgPT0gJ1x0JyB8fCBjID09IDB4YyB8fCBjID09IDB4MjAwYjsKICAgICAgICAg
ICAgIGlmIChpc1doaXRlc3BhY2UpCiAgICAgICAgICAgICAgICAgd2FzU3BhY2UgPSAoIXdhc0xl
YWRpbmcgfHwgIXN1cHByZXNzTGVhZGluZ1NwYWNlKTsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZv
aWQgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRh
dGEpCiAgICAgaWYgKG91dHB1dFN0cmluZy5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgdGV4
dFRyYW5zZm9ybSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGNoYXJhY3RlckRhdGEs
IENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0ZXh0VHJhbnNmb3JtID09
ICJjYXBpdGFsaXplIikKLSAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmb3V0cHV0U3RyaW5n
LCAwKTsgLy8gRklYTUU6IE5lZWRzIHRvIHRha2UgbG9jYWxlIGludG8gYWNjb3VudCB0byB3b3Jr
IGNvcnJlY3RseS4KKyAgICAgICAgICAgIG91dHB1dFN0cmluZyA9IGNhcGl0YWxpemUob3V0cHV0
U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50
IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICBlbHNlIGlmICh0ZXh0VHJhbnNmb3JtID09ICJ1
cHBlcmNhc2UiKQogICAgICAgICAgICAgb3V0cHV0U3RyaW5nID0gb3V0cHV0U3RyaW5nLmNvbnZl
cnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3
b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAibG93ZXJj
YXNlIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KaW5kZXggZWIyODY2NmU4NTMzODlkNmI2Y2E1NjFlNzE0N2M1NTNhM2Uy
MTJiYy4uNmEzZmU0NjA2ZDY2MGQ3MjE3ODliMmEzNmEwNjk2ODhjYmQ3MGVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwTWljcm9zb2Z0UHJlZml4
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8vIEl0J3MgYSBzaW1wbGUtbWluZGVkIHdheSB0
byBpZ25vcmUgdGhlIENGX0hUTUwgY2xpcGJvYXJkIGZvcm1hdCwganVzdCBza2lwcGluZyBvdmVy
IHRoZQogICAgIC8vIGRlc2NyaXB0aW9uIHBhcnQgYW5kIHBhcnNpbmcgdGhlIGVudGlyZSBjb250
ZXh0IHBsdXMgZnJhZ21lbnQuCiAgICAgaWYgKHN0cmluZy5zdGFydHNXaXRoKCJWZXJzaW9uOiIp
KSB7Ci0gICAgICAgIHNpemVfdCBsb2NhdGlvbiA9IHN0cmluZy5maW5kSWdub3JpbmdDYXNlKCI8
aHRtbCIpOworICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJpbmcuZmluZElnbm9yaW5nQVND
SUlDYXNlKCI8aHRtbCIpOwogICAgICAgICBpZiAobG9jYXRpb24gIT0gbm90Rm91bmQpCiAgICAg
ICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbik7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0F1dG9maWxsLmNwcAppbmRleCBlMzEzNDE5ODQ4MGVkYmZmMTg5OGNiMTY2OWRiZmIyZjVi
YzI4ODAzLi4yZjFkZTliY2VjZWY1MjBjYTExZTgwZDM2MzhmNzAwMWM3Yjg2M2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIEF1dG9maWxsRGF0YSBBdXRv
ZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3Jt
Q29udHJvCiAgICAgLy8gMTcuIElmIHRoZSBmaXJzdCBlaWdodCBjaGFyYWN0ZXJzIG9mIHRoZSBp
bmRleHRoIHRva2VuIGluIHRva2VucyBhcmUgbm90IGFuIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUK
ICAgICAvLyBtYXRjaCBmb3IgdGhlIHN0cmluZyAic2VjdGlvbi0iLCB0aGVuIGp1bXAgdG8gdGhl
IHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgogICAgIGNvbnN0IGF1dG8mIHNlY3Rpb25Ub2tlbiA9IHRv
a2Vuc1tpbmRleF07Ci0gICAgaWYgKCFzZWN0aW9uVG9rZW4uc3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCJzZWN0aW9uLSIpKQorICAgIGlmICghc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzZWN0aW9uVG9rZW4sICJzZWN0aW9uLSIpKQogICAgICAgICByZXR1cm4gZGVmYXVs
dExhYmVsKCk7CiAKICAgICAvLyAxOC4gTGV0IHNlY3Rpb24gYmUgdGhlIGluZGV4dGggdG9rZW4g
aW4gdG9rZW5zLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAppbmRleCA1NmQ2NzA5NzMwNzJmYWFkYzQzNjU1ZDFj
MDVjYzFhY2FmZDllZmRjLi4yYmI0MzMxNTkyNGVjY2EwZmYxY2U1M2ZjZWNiOGEwYjRiYWVmNjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcApAQCAtNDAsMTIg
KzQwLDEyIEBAIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OmlzVGV4dFR5cGUoKSBjb25zdAogYm9v
bCBCYXNlVGV4dElucHV0VHlwZTo6cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByYXdQYXR0ZXJuID0gZWxlbWVudCgp
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocGF0dGVybkF0dHIpOwotICAgIGlmIChy
YXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8fCAhSlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSkuaXNWYWxpZCgpKQor
ICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHkoKSB8fCAhSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbihyYXdQYXR0ZXJuKS5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBTdHJpbmcgcGF0dGVybiA9ICJeKD86IiArIHJhd1BhdHRlcm4gKyAi
KSQiOwogICAgIGludCBtYXRjaExlbmd0aCA9IDA7CiAgICAgaW50IHZhbHVlTGVuZ3RoID0gdmFs
dWUubGVuZ3RoKCk7Ci0gICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbihwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSkubWF0Y2godmFsdWUsIDAsICZtYXRj
aExlbmd0aCk7CisgICAgaW50IG1hdGNoT2Zmc2V0ID0gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbihwYXR0ZXJuKS5tYXRjaCh2YWx1ZSwgMCwgJm1hdGNoTGVuZ3RoKTsKICAgICByZXR1cm4g
bWF0Y2hPZmZzZXQgfHwgbWF0Y2hMZW5ndGggIT0gdmFsdWVMZW5ndGg7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggMzFmOGFhNTViNmZlZDA0ODBlMjU2OGQ1
NDk4ODBiYjA3ZWUyOGRjMS4uMWMyN2Y4OGI0MTBlZDE0ZTRjZWEwMmRkN2YzYzg5N2I0YjMxOTVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmIGFkZHJlc3Mp
CiAgICAgaWYgKCFhZGRyZXNzTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4g
cmVnRXhwKGVtYWlsUGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChl
bWFpbFBhdHRlcm4sIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiAKICAgICBpbnQg
bWF0Y2hMZW5ndGg7CiAgICAgaW50IG1hdGNoT2Zmc2V0ID0gcmVnRXhwLmdldCgpLm1hdGNoKGFk
ZHJlc3MsIDAsICZtYXRjaExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IGM1MjMyMjkyYTExYmNlN2NkZjI3NzkyNjdkZWNiNmIwZTExOTk0MTcu
LjFiYzBlZTQ2YmUyYjJlMWNiY2E1MTdlNmMyZTg2OGVlN2U1MzAzNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBI
VE1MT2JqZWN0RWxlbWVudDo6aGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QKICAgICBmb3IgKFJl
ZlB0cjxOb2RlPiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2Utb25seSB0ZXh0LCBh
bmQgPHBhcmFtPiB0YWdzLCBhbnkgb3RoZXIgY29udGVudCBpcyBmYWxsYmFjayBjb250ZW50Lgog
ICAgICAgICBpZiAoaXM8VGV4dD4oKmNoaWxkKSkgewotICAgICAgICAgICAgaWYgKCFkb3duY2Fz
dDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICAgICAgICAgIGlm
ICghZG93bmNhc3Q8VGV4dD4oKmNoaWxkKS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0hUTUxTcGFjZT4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmICghaXM8SFRNTFBhcmFtRWxlbWVudD4oKmNoaWxkKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNob3Vs
ZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgZm9yIChhdXRvJiBtZXRhRWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRhRWxl
bWVudD4oZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIG1ldGFFbGVtZW50LmNv
bnRlbnQoKS5zdGFydHNXaXRoKCJNYWMgT1MgWCBTZXJ2ZXIgV2ViIFNlcnZpY2VzIFNlcnZlciIs
IGZhbHNlKSkKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFF
bGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWV0YUVsZW1lbnQuY29udGVudCgpLCAibWFjIG9zIHggc2VydmVyIHdlYiBzZXJ2
aWNlcyBzZXJ2ZXIiKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjQ3
LDcgKzI0Nyw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1l
Q2xhc3NJZFF1aXJrKCkKICAgICAKIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6Omhhc1ZhbGlkQ2xh
c3NJZCgpCiB7Ci0gICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBl
KHNlcnZpY2VUeXBlKCkpICYmIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3Np
ZEF0dHIpLnN0YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQorICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSgpKSAmJiBwcm90b2NvbElzKGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NpZEF0dHIpLCAiamF2YSIpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoc2hvdWxkQWxsb3dRdWlja1RpbWVDbGFz
c0lkUXVpcmsoKSkKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVu
dHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgTm9kZSYgY2hpbGQpCiAgICAgaWYgKGlz
PEVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgcmV0dXJuIHByZXZlbnRzUGFyZW50T2JqZWN0RnJv
bUV4cG9zdXJlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKSk7CiAgICAgaWYgKGlzPFRleHQ+KGNo
aWxkKSkKLSAgICAgICAgcmV0dXJuICFkb3duY2FzdDxUZXh0PihjaGlsZCkuY29udGFpbnNPbmx5
V2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gIWRvd25jYXN0PFRleHQ+KGNoaWxkKS5kYXRh
KCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDc3NGFkNTQ3Y2VjNmIzYzRh
YzkxNDJkYWFjZGE0YTJjNTM4YjNmZjguLjc2NGU1MDIyMzBhN2RjOWEzNGQ4N2NiYTY5M2FjZDY2
NTQ5MDFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAgLTQ2LDEzICs0NiwxMSBA
QCBzdGF0aWMgY29uc3QgU2Vjb25kcyB0eXBlQWhlYWRUaW1lb3V0IHsgMV9zIH07CiBzdGF0aWMg
U3RyaW5nIHN0cmlwTGVhZGluZ1doaXRlU3BhY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCiAgICAgdW5zaWduZWQgaTsK
ICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHN0cmluZ1tp
XSAhPSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8PSAweDdGID8gIWlzQVNDSUlTcGFjZShz
dHJpbmdbaV0pIDogKHVfY2hhckRpcmVjdGlvbihzdHJpbmdbaV0pICE9IFVfV0hJVEVfU1BBQ0Vf
TkVVVFJBTCkpKQorICAgICAgICBpZiAoc3RyaW5nW2ldICE9IG5vQnJlYWtTcGFjZSAmJiAhaXNT
cGFjZU9yTmV3bGluZShzdHJpbmdbaV0pKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotCiAg
ICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoaSwgbGVuZ3RoIC0gaSk7CiB9CiAKQEAgLTk1LDEw
ICs5Myw2IEBAIGludCBUeXBlQWhlYWQ6OmhhbmRsZUV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
LCBNYXRjaE1vZGVGbGFncyBtYXRjaE1vZGUpCiAgICAgICAgIGludCBpbmRleCA9IChzZWxlY3Rl
ZCA8IDAgPyAwIDogc2VsZWN0ZWQpICsgc2VhcmNoU3RhcnRPZmZzZXQ7CiAgICAgICAgIGluZGV4
ICU9IG9wdGlvbkNvdW50OwogCi0gICAgICAgIC8vIENvbXB1dGUgYSBjYXNlLWZvbGRlZCBjb3B5
IG9mIHRoZSBwcmVmaXggc3RyaW5nIGJlZm9yZSBiZWdpbm5pbmcgdGhlIHNlYXJjaCBmb3IKLSAg
ICAgICAgLy8gYSBtYXRjaGluZyBlbGVtZW50LiBUaGlzIGNvZGUgdXNlcyBmb2xkQ2FzZSB0byB3
b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0Ci0gICAgICAgIC8vIFN0cmluZzo6c3RhcnRXaXRoIGRv
ZXMgbm90IGZvbGQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFRoaXMgY29kZSBjYW4gYmUgY2hhbmdl
ZAotICAgICAgICAvLyB0byB1c2Ugc3RhcnRXaXRoIG9uY2UgdGhhdCBpcyBmaXhlZC4KICAgICAg
ICAgU3RyaW5nIHByZWZpeFdpdGhDYXNlRm9sZGVkKHByZWZpeC5mb2xkQ2FzZSgpKTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHRpb25Db3VudDsgKytpLCBpbmRleCA9IChpbmRleCAr
IDEpICUgb3B0aW9uQ291bnQpIHsKICAgICAgICAgICAgIC8vIEZvbGQgdGhlIG9wdGlvbiBzdHJp
bmcgYW5kIGNoZWNrIGlmIGl0cyBwcmVmaXggaXMgZXF1YWwgdG8gdGhlIGZvbGRlZCBwcmVmaXgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKaW5kZXggMTIxN2Q5YjU0ZjU4YjNjMzQ4NDI0OWFmNWJhMDQwYjcyN2RjMDUzMC4uMDIz
YzhmZDdmMzU0MGYxYWQ4YzcyYTZkMDU4MjlhMDMzZTE2MmJiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMzM2LDc2
ICszMzYsNzYgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0Q29tcGF0aWJpbGl0eU1v
ZGVGcm9tRG9jdHlwZShjb25zdCBTdHJpbmcmIG5hbWUsIGMKIAogICAgIC8vIENoZWNrIGZvciBR
dWlya3MgTW9kZS4KICAgICBpZiAobmFtZSAhPSAiaHRtbCIKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiKy8vU2lsbWFyaWwvL2R0ZCBodG1sIFBybyB2MHIxMSAxOTk3MDEwMS8vIiwg
ZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0FkdmFTb2Z0IEx0ZC8v
RFREIEhUTUwgMy4wIGFzV2VkaXQgKyBleHRlbnNpb25zLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vQVMvL0RURCBIVE1MIDMuMCBhc1dlZGl0ICsgZXh0ZW5z
aW9ucy8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYv
L0RURCBIVE1MIDIuMCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIExldmVsIDIvLyIsIGZhbHNlKQotICAgICAg
ICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3RyaWN0IExl
dmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRG
Ly9EVEQgSFRNTCAyLjAgU3RyaWN0IExldmVsIDIvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAyLjAgU3RyaWN0Ly8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wLy8i
LCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhU
TUwgMi4xRS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lF
VEYvL0RURCBIVE1MIDMuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMiBGaW5hbC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1
YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMuMi8vIiwgZmFsc2UpCi0gICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDMvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZl
bCAwLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8v
RFREIEhUTUwgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL0lFVEYvL0RURCBIVE1MIExldmVsIDIvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZlbCAzLy8iLCBmYWxzZSkKLSAg
ICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgU3RyaWN0IExl
dmVsIDAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRG
Ly9EVEQgSFRNTCBTdHJpY3QgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIFN0cmljdCBMZXZlbCAyLy8iLCBmYWxzZSkK
LSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgU3RyaWN0
IExldmVsIDMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9J
RVRGLy9EVEQgSFRNTCBTdHJpY3QvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL01ldHJpdXMvL0RURCBNZXRyaXVzIFByZXNlbnRhdGlvbmFsLy8iLCBm
YWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQg
SW50ZXJuZXQgRXhwbG9yZXIgMi4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIg
Mi4wIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9N
aWNyb3NvZnQvL0RURCBJbnRlcm5ldCBFeHBsb3JlciAyLjAgVGFibGVzLy8iLCBmYWxzZSkKLSAg
ICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQg
RXhwbG9yZXIgMy4wIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMy4wIEhUTUwv
LyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9NaWNyb3NvZnQv
L0RURCBJbnRlcm5ldCBFeHBsb3JlciAzLjAgVGFibGVzLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTmV0c2NhcGUgQ29tbS4gQ29ycC4vL0RURCBIVE1MLy8i
LCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTmV0c2NhcGUgQ29t
bS4gQ29ycC4vL0RURCBTdHJpY3QgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5IGFuZCBBc3NvY2lhdGVzLy9EVEQgSFRNTCAyLjAvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9PJ1JlaWxseSBhbmQg
QXNzb2NpYXRlcy8vRFREIEhUTUwgRXh0ZW5kZWQgMS4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTydSZWlsbHkgYW5kIEFzc29jaWF0ZXMvL0RURCBIVE1M
IEV4dGVuZGVkIFJlbGF4ZWQgMS4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vU29mdFF1YWQgU29mdHdhcmUvL0RURCBIb1RNZXRhTCBQUk8gNi4wOjoxOTk5
MDYwMTo6ZXh0ZW5zaW9ucyB0byBIVE1MIDQuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1NvZnRRdWFkLy9EVEQgSG9UTWV0YUwgUFJPIDQuMDo6MTk5NzEw
MTA6OmV4dGVuc2lvbnMgdG8gSFRNTCA0LjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJ
ZC5zdGFydHNXaXRoKCItLy9TcHlnbGFzcy8vRFREIEhUTUwgMi4wIEV4dGVuZGVkLy8iLCBmYWxz
ZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU1EvL0RURCBIVE1MIDIuMCBI
b1RNZXRhTCArIGV4dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9TdW4gTWljcm9zeXN0ZW1zIENvcnAuLy9EVEQgSG90SmF2YSBIVE1MLy8iLCBm
YWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vU3VuIE1pY3Jvc3lzdGVt
cyBDb3JwLi8vRFREIEhvdEphdmEgU3RyaWN0IEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMgMTk5NS0wMy0yNC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMy4y
IERyYWZ0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzND
Ly9EVEQgSFRNTCAzLjIgRmluYWwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMuMi8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgMy4yUyBEcmFmdC8vIiwgZmFsc2UpCi0g
ICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgNC4wIEZyYW1l
c2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9E
VEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCBFeHBlcmltZW50YWwgMTk5NjA3MTIvLyIsIGZh
bHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIEV4
cGVyaW1lbnRhbCA5NzA0MjEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNX
aXRoKCItLy9XM0MvL0RURCBXMyBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNPLy9EVEQgVzMgSFRNTCAzLjAvLyIsIGZhbHNlKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiKy8vc2lsbWFy
aWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2FkdmFzb2Z0IGx0ZC8vZHRk
IGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vYXMvL2R0ZCBodG1sIDMuMCBh
c3dlZGl0ICsgZXh0ZW5zaW9ucy8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAxLy8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAy
LjAgc3RyaWN0IGxldmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVs
IDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVi
bGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0
bWwgMi4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1s
IDMuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
dWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vIikKKyAgICAgICAgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBo
dG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBs
ZXZlbCAwLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vIikKKyAgICAgICAgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBo
dG1sIGxldmVsIDIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAzLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8v
ZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2
ZWwgMS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
dWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy8iKQorICAgICAgICB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8v
ZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QvLyIp
CisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQs
ICItLy9pZXRmLy9kdGQgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL21ldHJpdXMvL2R0ZCBtZXRyaXVzIHByZXNlbnRh
dGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwg
c3RyaWN0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgdGFibGVzLy8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwgc3RyaWN0Ly8iKQor
ICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAi
LS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwvLyIpCisgICAgICAg
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9taWNy
b3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy8iKQorICAgICAgICB8fCBz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbmV0c2NhcGUg
Y29tbS4gY29ycC4vL2R0ZCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBz
dHJpY3QgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCAyLjAv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgMS4wLy8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIHJlbGF4ZWQg
MS4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRhbCBwcm8gNi4wOjoxOTk5
MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NvZnRxdWFkLy9kdGQgaG90bWV0
YWwgcHJvIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLyIpCisgICAgICAg
IHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zcHln
bGFzcy8vZHRkIGh0bWwgMi4wIGV4dGVuZGVkLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3EvL2R0ZCBodG1sIDIuMCBob3Rt
ZXRhbCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zdW4gbWljcm9zeXN0ZW1zIGNvcnAuLy9kdGQgaG90
amF2YSBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgc3Ry
aWN0IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMgMTk5NS0wMy0yNC8vIikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8v
ZHRkIGh0bWwgMy4yIGRyYWZ0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAzLjIgZmluYWwvLyIpCisg
ICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIt
Ly93M2MvL2R0ZCBodG1sIDMuMi8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgMy4ycyBkcmFmdC8vIikK
KyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwg
Ii0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAg
dHJhbnNpdGlvbmFsLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgMTk5NjA3MTIv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEvLyIpCisgICAgICAgIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0
ZCB3MyBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS8vdzNvLy9kdGQgdzMgaHRtbCAzLjAvLyIpCiAgICAgICAgIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNvLy9kdGQgdzMgaHRt
bCBzdHJpY3QgMy4wLy9lbi8vIikKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
V2ViVGVjaHMvL0RURCBNb3ppbGxhIEhUTUwgMi4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVi
bGljSWQuc3RhcnRzV2l0aCgiLS8vV2ViVGVjaHMvL0RURCBNb3ppbGxhIEhUTUwvLyIsIGZhbHNl
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwgMi4wLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vd2VidGVjaHMvL2R0
ZCBtb3ppbGxhIGh0bWwvLyIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHB1YmxpY0lkLCAiLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC9lbiIpCiAgICAg
ICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiaHRtbCIpCiAg
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN5c3RlbUlkLCAiaHR0cDov
L3d3dy5pYm0uY29tL2RhdGEvZHRkL3YxMS9pYm14aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCIpCi0g
ICAgICAgIHx8IChzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly8iLCBmYWxzZSkpCi0gICAgICAgIHx8IChzeXN0
ZW1JZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0
LjAxIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpKSkgeworICAgICAgICB8fCAoc3lzdGVtSWQuaXNF
bXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICIt
Ly93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLyIpKQorICAgICAgICB8fCAoc3lzdGVtSWQu
aXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQs
ICItLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8iKSkpIHsKICAgICAgICAgc2V0
Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3IgTGltaXRlZCBRdWly
a3MgTW9kZS4KLSAgICBpZiAocHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgWEhUTUwg
MS4wIEZyYW1lc2V0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpCi0gICAgICAgIHx8
ICghc3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFRE
IEhUTUwgNC4wMSBGcmFtZXNldC8vIiwgZmFsc2UpKQotICAgICAgICB8fCAoIXN5c3RlbUlkLmlz
RW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJh
bnNpdGlvbmFsLy8iLCBmYWxzZSkpKSB7CisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCB4aHRtbCAxLjAgZnJhbWVzZXQvLyIp
CisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQs
ICItLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFsLy8iKQorICAgICAgICB8fCAoIXN5
c3RlbUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8iKSkKKyAgICAgICAgfHwg
KCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLyIpKSkgewog
ICAgICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpM
aW1pdGVkUXVpcmtzTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAppbmRleCA4
YTg0Njg5MTVmZTkzMjZjOWU3MzZhN2FhNTM1YWU4ZGQzZWI0ZDI0Li44ZDMzZWU2NjNmYjMzMDcw
NGE5ODhhMjExNWMwNDMwY2IxOWUzNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3Rh
dGljIFN0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBsZW5ndGg7ICkgewotICAgICAgICBwb3MgPSB2YWx1ZS5maW5kKCJjaGFyc2V0
IiwgcG9zLCBmYWxzZSk7CisgICAgICAgIHBvcyA9IHZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZSgiY2hhcnNldCIsIHBvcyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApp
bmRleCA5M2ZmYTViYTY0OGVjODhhODhkMzVlZTYwMDMxOTVjNzYzMDM4ZjM0Li5hNzNlZDkzYjk5
N2ZiN2I1ZGExODI4MTgyYjE0ZjdhZTJiYWFlZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcApAQCAtNzE1LDExICs3MTUsMTEgQEAgYm9vbCBYU1NBdWRpdG9y
Ojppc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIGRlY29kZWRTbmlwcGV0KQogewog
ICAgIGlmIChkZWNvZGVkU25pcHBldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAobV9kZWNvZGVkVVJMLmZpbmQoZGVjb2RlZFNuaXBwZXQsIDAsIGZhbHNlKSAhPSBu
b3RGb3VuZCkKKyAgICBpZiAobV9kZWNvZGVkVVJMLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
ZGVjb2RlZFNuaXBwZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobV9kZWNvZGVk
SFRUUEJvZHlTdWZmaXhUcmVlICYmICFtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUtPm1pZ2h0
Q29udGFpbihkZWNvZGVkU25pcHBldCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gbV9kZWNvZGVkSFRUUEJvZHkuZmluZChkZWNvZGVkU25pcHBldCwgMCwgZmFsc2UpICE9IG5v
dEZvdW5kOworICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keS5jb250YWluc0lnbm9yaW5nQVND
SUlDYXNlKGRlY29kZWRTbmlwcGV0KTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjppc0xpa2VseVNh
ZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcAppbmRleCBhY2U2NmU1NDFjMGI4OTMwYmRlZmQzYmQ1OWNiMWM4N2Vh
MjQyMTczLi41MThlZDhiMzA2MGQwNjg5ZTI3NDQ4OTNiNDZkOWFjNDc3NzNlOTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgYm9vbCBXZWJWVFRQYXJzZXI6Omhhc1JlcXVpcmVkRmlsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBsaW5lKQogICAgIC8vIEEgV2ViVlRUIGZpbGUgaWRlbnRpZmllciBjb25zaXN0cyBvZiBh
biBvcHRpb25hbCBCT00gY2hhcmFjdGVyLAogICAgIC8vIHRoZSBzdHJpbmcgIldFQlZUVCIgZm9s
bG93ZWQgYnkgYW4gb3B0aW9uYWwgc3BhY2Ugb3IgdGFiIGNoYXJhY3RlciwKICAgICAvLyBhbmQg
YW55IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsaW5lIHRlcm1pbmF0b3JzIC4u
LgotICAgIGlmICghbGluZS5zdGFydHNXaXRoKGZpbGVJZGVudGlmaWVyLCBmaWxlSWRlbnRpZmll
ckxlbmd0aCkpCisgICAgaWYgKCFsaW5lLnN0YXJ0c1dpdGgoZmlsZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPiBmaWxlSWRlbnRpZmll
ckxlbmd0aCAmJiAhaXNIVE1MU3BhY2UobGluZVtmaWxlSWRlbnRpZmllckxlbmd0aF0pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTm9kZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTm9kZUZpbmRlci5jcHAKaW5kZXggNTk1ODNhOTAyODU0NGJiOTFiMmM0NzVlM2E4NmU1ZTll
OWNmMTE3OC4uZjkyYTVkODkyN2U3NjBiZjRiN2I1ZjA4ODg4ZjZhMDVkM2U1YWM5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcApAQCAt
MTEwLDggKzExMCw4IEBAIGJvb2wgSW5zcGVjdG9yTm9kZUZpbmRlcjo6bWF0Y2hlc0VsZW1lbnQo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBTdHJpbmcgbm9kZU5hbWUgPSBlbGVtZW50Lm5v
ZGVOYW1lKCk7CiAgICAgaWYgKCghbV9zdGFydFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYm
IG5vZGVOYW1lLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkpKQogICAg
ICAgICB8fCAobV9zdGFydFRhZ0ZvdW5kICYmIG1fZW5kVGFnRm91bmQgJiYgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShub2RlTmFtZSwgbV90YWdOYW1lUXVlcnkpKQotICAgICAgICB8fCAobV9zdGFy
dFRhZ0ZvdW5kICYmICFtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLnN0YXJ0c1dpdGgobV90YWdO
YW1lUXVlcnksIGZhbHNlKSkKLSAgICAgICAgfHwgKCFtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRU
YWdGb3VuZCAmJiBub2RlTmFtZS5lbmRzV2l0aChtX3RhZ05hbWVRdWVyeSwgZmFsc2UpKSkKKyAg
ICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkpKQorICAgICAgICB8fCAo
IW1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIG5vZGVOYW1lLmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UobV90YWdOYW1lUXVlcnkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQ3ZTJlOTNkM2Q4MWM3Yzk2
MjcwNWI0MWFkYTRlNWE3N2VmOTc2MWEuLmQyY2Q4NWE3ZjI0OTk5OTliOTM0NmY2NWQyNjdmNjQy
NTAzMDkzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRPYmplY3RGb3JTZWxlY3RvckhlbHBlcihj
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9yc0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVs
ZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0cmluZyYgc2hlZXRUZXh0LCBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVu
dCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0aXZlLCBKU0M6OllhcnI6Ok11bHRpbGlu
ZUVuYWJsZWQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCovIiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNl
bnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKTsKIAogICAgIGF1dG8gcmVzdWx0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9
IHNlbGVjdG9yTGlzdC5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBlNDcwMDE2MjlhYWJkNmYzOTgx
YzU5MGQ5OGYxNGVmYjIyMzU1MjljLi5kMDg2OWVmYWIxZDVjYmI0NmNmOGVmZGExOTU3NDhjMzNh
YWJhMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxT
Y3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKQEAgLTE5NzMsMTAgKzE5NzQsMTYgQEAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3Rv
ckRPTUFnZW50OjpidWkKICAgICByZXR1cm4gV1RGTW92ZSh2YWx1ZSk7CiB9CiAKK3N0YXRpYyBi
b29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklY
TUU6IFJlc3BlY3QgaWdub3JlV2hpdGVzcGFjZSBzZXR0aW5nIGZyb20gaW5zcGVjdG9yIGZyb250
IGVuZD8KKyAgICByZXR1cm4gaXM8VGV4dD4obm9kZSkgJiYgZG93bmNhc3Q8VGV4dD4oKm5vZGUp
LmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOworfQorCiBOb2Rl
KiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKE5vZGUqIG5vZGUpCiB7CiAgICAg
bm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAoaXNXaGl0ZXNwYWNlKG5vZGUp
KQorICAgIHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2RlKSkKICAgICAgICAg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CkBAIC0xOTg1
LDcgKzE5OTIsNyBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhO
b2RlKiBub2RlKQogewogICAgIGRvIHsKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNwYWNlKG5vZGUpKTsKKyAgICB9IHdoaWxlIChjb250
YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2RlKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKQEAg
LTE5OTMsMTggKzIwMDAsMTUgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUHJldmlv
dXNTaWJsaW5nKE5vZGUqIG5vZGUpCiB7CiAgICAgZG8gewogICAgICAgICBub2RlID0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfSB3aGlsZSAoaXNXaGl0ZXNwYWNlKG5vZGUpKTsKKyAg
ICB9IHdoaWxlIChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShub2RlKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKIHVuc2lnbmVkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxkTm9kZUNv
dW50KE5vZGUqIG5vZGUpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgIE5vZGUqIGNo
aWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOwotICAgIHdoaWxlIChjaGlsZCkgewotICAgICAg
ICBjb3VudCsrOwotICAgICAgICBjaGlsZCA9IGlubmVyTmV4dFNpYmxpbmcoY2hpbGQpOwotICAg
IH0KKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsg
Y2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgKytjb3VudDsKICAgICBy
ZXR1cm4gY291bnQ7CiB9CiAKQEAgLTIwMTgsMTMgKzIwMjIsNiBAQCBOb2RlKiBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUtPnBh
cmVudE5vZGUoKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aXNXaGl0ZXNwYWNlKE5v
ZGUqIG5vZGUpCi17Ci0gICAgLy8gRklYTUU6IFJlbmFtZSB0byBjb250YWluc09ubHlIVE1MU3Bh
Y2VzPwotICAgIC8vIEZJWE1FOiBSZXNwZWN0IGlnbm9yZVdoaXRlc3BhY2Ugc2V0dGluZyBmcm9t
IGluc3BlY3RvciBmcm9udCBlbmQ/Ci0gICAgcmV0dXJuIGlzPFRleHQ+KG5vZGUpICYmIGRvd25j
YXN0PFRleHQ+KCpub2RlKS5kYXRhKCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwotfQotCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjptYWluRnJhbWVET01Db250ZW50TG9hZGVkKCkKIHsKICAg
ICAvLyBSZS1wdXNoIGRvY3VtZW50IG9uY2UgaXQgaXMgbG9hZGVkLgpAQCAtMjA1Niw3ICsyMDUz
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9j
dW1lbnQpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSYg
bm9kZSkKIHsKLSAgICBpZiAoaXNXaGl0ZXNwYWNlKCZub2RlKSkKKyAgICBpZiAoY29udGFpbnNP
bmx5SFRNTFdoaXRlc3BhY2UoJm5vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBj
b3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4K
QEAgLTIwODUsNyArMjA4Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERP
TU5vZGUoTm9kZSYgbm9kZSkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlJiBub2RlKQogewotICAgIGlmIChpc1doaXRlc3BhY2UoJm5vZGUpKQorICAgIGlm
IChjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSgmbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4
IDYwZWI2YzdhYjM5NWQ2YmY5NDZkMDM4MTkyMmRhYjhmZTcyY2JhM2YuLjBhZmIyODUwZDJmY2Q3
NDI2ZDA1MWFmYmEzM2FhOTA2NjM0MDdjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTIwMyw3ICsyMDMsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNTaWJsaW5nKE5vZGUqKTsKICAg
ICBzdGF0aWMgdW5zaWduZWQgaW5uZXJDaGlsZE5vZGVDb3VudChOb2RlKik7CiAgICAgc3RhdGlj
IE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKik7Ci0gICAgc3RhdGljIGJvb2wgaXNXaGl0ZXNw
YWNlKE5vZGUqKTsKIAogICAgIE5vZGUqIGFzc2VydE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA3YmU5MWJlNTUzZmRmZjkzZTc3ZDcwMmNhODE0
MTk4OGUyODg5MzE5Li4xNTNlODg0MDIxYmQ3ODMyODU4ODZmYTcyZmM4MmM0ZTU0NjEyNjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyODUsOCArMTI4NSw4IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmRlbGV0ZVRhYmxlcygpCiAgICAgCiBib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlKQogewotICAgIHJldHVybiByZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLnN0YXJ0c1dpdGgoImF1ZGlvLyIsIGZhbHNlKSAKLSAgICAgICAgfHwgcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKS5zdGFydHNXaXRoKCJ2aWRlby8iLCBmYWxzZSk7Cisg
ICAgYXV0byYgdHlwZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCk7CisgICAgcmV0
dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQog
ICAgIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxl
SW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAKaW5kZXggZTA4YTE2YjQwNWY0YTIyYWE4Y2ZjZjU4MTc0
OWIxNGNhMDRkOGRjNS4uMGM2MTNmYTQzMDkwYjc5NjBkMGRlN2I5YWYzNzg3OGY0OTNkOWZkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcApAQCAtMzUsNyArMzUsNyBA
QCBFeGNlcHRpb25PcjxTdHJpbmc+IEJhc2U2NFV0aWxpdGllczo6YnRvYShjb25zdCBTdHJpbmcm
IHN0cmluZ1RvRW5jb2RlKQogICAgIGlmIChzdHJpbmdUb0VuY29kZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFzdHJpbmdUb0VuY29kZS5jb250YWluc09u
bHlMYXRpbjEoKSkKKyAgICBpZiAoIXN0cmluZ1RvRW5jb2RlLmlzQWxsTGF0aW4xKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKIAogICAgIHJl
dHVybiBiYXNlNjRFbmNvZGUoc3RyaW5nVG9FbmNvZGUubGF0aW4xKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCAzYzRkMDA3NzJmYTE3NzkxMDE4Mzg4ODRlN2E2MWMwNjIwN2I0Mjc5Li5lMmUx
MzEwNzVjNDU2NDViZGFkMGYxYzJlZWNkNjgxNThiNTUxMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAvLyBSRVZJ
RVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0
aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2Ug
Y2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJcXHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHdv
cmRSZWdFeHAoIlxcdyIpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVybjsKICAgICBwYXR0ZXJu
LmFwcGVuZCgnKCcpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgp
OwpAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAgICAgICAg
IHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgfQogICAgIHBhdHRlcm4uYXBwZW5k
KCcpJyk7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50
b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6WWFycjo6VGV4dENhc2VJ
bnNlbnNpdGl2ZSk7CiB9CiAKIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxs
KGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCkBA
IC00NTksNyArNDU5LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RTdHJpbmco
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgY29uc3QgU3RyaW4KICAgICBTdHJpbmcgbXV0
YWJsZVN0cmluZ1RvTWF0Y2ggPSBzdHJpbmdUb01hdGNoOwogCiAgICAgLy8gTWFrZSBudW1iZXJz
IGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBlLmcu
LCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOworICAg
IHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24oIlxcZCIpLCAiICIpOwogICAgIG11dGFibGVTdHJpbmdUb01hdGNoLnJlcGxhY2UoJ18nLCAn
ICcpOwogICAgIAogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnRXhwID0gY3Jl
YXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggYzBjNjk3N2JkNzZkYmJlYWIxODAzY2MyNDM0ZWE0OGFlMWQwMThhMC4uZTRlMzUyNTM2NWQx
Y2JkMWJmNzA1YjU2YWVhNzRiYmNlN2MxZWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtMjQ4OCw3ICsyNDg4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50UmVuZGVyZWRDaGFy
YWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhyZXNob2xkKGNvbnN0IFJlbmRlckUKICAgICB1bnNp
Z25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQg
PSAmcmVuZGVyZXI7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT5uZXh0SW5Q
cmVPcmRlcigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqZGVzY2VuZGFudCkpIHsK
LSAgICAgICAgICAgIGNvdW50ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpkZXNjZW5kYW50KS50
ZXh0KCktPmxlbmd0aCgpOworICAgICAgICAgICAgY291bnQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKmRlc2NlbmRhbnQpLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChjb3VudCA+
PSB0aHJlc2hvbGQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNTNjOTljNTc0NzkyNmY0ZjBhZWM0OWYw
Y2VkZWZkMjQyYjhiNWM4NC4uOWQyZTVjY2Q0ZWIxMWQwMmQ5YjQ1N2M1ZDAyNTU4ODQxMWFlYzYy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMzMSwxNCArMzMx
LDE2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlY2VpdmVEcmFnRGF0YShjb25zdCBTZWN1
cml0eU9yaWdpbiYgZHJhZ0luaXRpYXRvcikgY29uCiAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi
ZSByZW1vdmVkIGFzIGFuIG91dGNvbWUgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5MTk2CiBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhU
VFBGYW1pbHkoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcg
PSB1cmwuc3RyaW5nKCk7Ci0gICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZCIsIGZh
bHNlKSkKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZyA9IHVybC5zdHJpbmcoKTsKKyAgICBpZiAo
IXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZCIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZl
ZWQ6Ly8iLCBmYWxzZSkgCi0gICAgICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkOmh0
dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkOmh0dHBzOiIsIGZhbHNl
KQotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHM6aHR0cDoiLCBmYWxzZSkg
fHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzOmh0dHBzOiIsIGZhbHNlKQotICAgICAgICB8
fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwOiIsIGZhbHNlKSB8fCB1cmxT
dHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoiLCBmYWxzZSk7CisgICAgcmV0dXJu
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZDovLyIpCisg
ICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVl
ZDpodHRwOiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nLCAiZmVlZDpodHRwczoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzOmh0dHA6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkczpodHRwczoiKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWRzZWFy
Y2g6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZywgImZlZWRzZWFyY2g6aHR0cHM6Iik7CiB9CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46
OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNGRhYjU0Nzk0YjY3NzNiYzVkOTYzNWE1
OGYwZjM0NDhjNzM2OGUxOS4uZTFmZGM5Yjc1MzlmOWY3NGI3OTJlNGFhZTJmODJhZWFjYmFlYzEx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApA
QCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9z
dChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
Q2hlY2sgaWYgdGhlIGRvbWFpbiBpcyBhIHN1YmRvbWFpbiBvZiBvdXIgaG9zdC4KLSAgICBpZiAo
IWhvc3QuZW5kc1dpdGgobV9ob3N0LCBmYWxzZSkpCisgICAgaWYgKCFob3N0LmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UobV9ob3N0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNT
RVJUKGhvc3QubGVuZ3RoKCkgPiBtX2hvc3QubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXgg
NTk2MDRjNjdhY2U3N2EzNTRkNGRlYThhYWRiNTdmOTk2YmVkYTJjNi4uN2E0MzMzZDVkNmFmODg5
NjI4OGIyMDc5NTY1MDRiNmMzZjc3OWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC02NCw5ICs2NCw3
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpzY2hlbWVNYXRjaGVzKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Omhvc3RN
YXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9
IHVybC5ob3N0KCk7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9ob3N0
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9zdEhhc1dpbGRjYXJkICYm
IGhvc3QuZW5kc1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9ob3N0KSB8fCAobV9ob3N0SGFzV2lsZGNhcmQgJiYgaG9z
dC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIuIiArIG1faG9zdCkpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5jcHAKaW5kZXggOTIwYWQxMmQ5OGFhYTY5ZmI2MDMxOGEzNWNkNWM4YWY2NzIz
Y2Q2Yi4uYmU2ZGM4ODFmNDgzZDhkNThkYTZmZWI5OGUxNDJmM2I1ZjUzZjYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5jcHAKQEAgLTQzNywxMCArNDM3LDEwIEBAIHN0YXRpYyBib29sIGlzTm9uY2VD
aGFyYWN0ZXIoVUNoYXIgYykKIC8vIG5vbmNlLXZhbHVlICAgICA9IGJhc2U2NC12YWx1ZQogYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZU5vbmNlU291cmNlKGNvbnN0
IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBub25jZVByZWZpeCgiJ25vbmNlLSIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIGlmICghU3RyaW5nVmlldyhiZWdpbiwgZW5kIC0gYmVnaW4pLnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShub25jZVByZWZpeC5nZXQoKSkpCisgICAgY29uc3QgdW5z
aWduZWQgbm9uY2VQcmVmaXhMZW5ndGggPSA3OworICAgIGlmICghU3RyaW5nVmlldyhiZWdpbiwg
ZW5kIC0gYmVnaW4pLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiJ25vbmNlLSIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgVUNoYXIqIHBvc2l0aW9uID0gYmVnaW4gKyBu
b25jZVByZWZpeC5nZXQoKS5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSBi
ZWdpbiArIG5vbmNlUHJlZml4TGVuZ3RoOwogICAgIGNvbnN0IFVDaGFyKiBiZWdpbk5vbmNlVmFs
dWUgPSBwb3NpdGlvbjsKICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm9uY2VDaGFyYWN0ZXI+KHBv
c2l0aW9uLCBlbmQpOwogICAgIGlmIChwb3NpdGlvbiA+PSBlbmQgfHwgcG9zaXRpb24gPT0gYmVn
aW5Ob25jZVZhbHVlIHx8ICpwb3NpdGlvbiAhPSAnXCcnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQppbmRleCBiMzNlODY5N2UyOTViODdlOWE5MDQ3MTE5OWM3ZjYwYzk0NTRmNGUzLi41
ODRmNzRiYjU0MTAxMmZmN2M5ZTRmNDQ5OTEyZjUxMjlkZDE2ZDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9GcmFtZUlPUy5tbQpAQCAtMTE5LDcgKzExOSw3IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jk
c0luQ3VycmVudFBhcmFncmFwaCgpIGNvbnN0CiAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgo
ZW5kKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBlbmQucHJldmlvdXMo
KTsKICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAgICAg
aWYgKCFpc3dwdW5jdChjKSAmJiAhaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisg
ICAgICAgIGlmICghaXN3cHVuY3QoYykgJiYgIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBu
b0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBlbmQgPSBzdGFydE9mV29yZChlbmQpOwogICAgIH0K
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc3RhcnRPZlBhcmFncmFwaChlbmQpKTsKQEAgLTE0
MCw3ICsxNDAsNyBAQCBOU0FycmF5ICpGcmFtZTo6d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBj
b25zdAogICAgICAgICBpZiAobGVuZ3RoID4gMSB8fCAhaXNTcGFjZU9yTmV3bGluZSh0ZXh0WzBd
KSkgewogICAgICAgICAgICAgaW50IHN0YXJ0T2ZXb3JkQm91bmRhcnkgPSAwOwogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlm
IChpc1NwYWNlT3JOZXdsaW5lKHRleHRbaV0pIHx8IHRleHRbaV0gPT0gMHhBMCkgeworICAgICAg
ICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKHRleHRbaV0pIHx8IHRleHRbaV0gPT0gbm9C
cmVha1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCB3b3JkTGVuZ3RoID0gaSAtIHN0
YXJ0T2ZXb3JkQm91bmRhcnk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JkTGVuZ3RoID4g
MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjaHVuayA9
IHRleHQuc3Vic3RyaW5nKHN0YXJ0T2ZXb3JkQm91bmRhcnksIHdvcmRMZW5ndGgpLmNyZWF0ZU5T
U3RyaW5nKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgTlNBcnJheSAqRnJhbWU6OndvcmRzSW5DdXJy
ZW50UGFyYWdyYXBoKCkgY29uc3QKICAgICBpZiAoW3dvcmRzIGNvdW50XSA+IDAgJiYgaXNFbmRP
ZlBhcmFncmFwaChwb3NpdGlvbikgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChwb3NpdGlvbikpIHsK
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gcG9zaXRpb24ucHJldmlvdXMoKTsK
ICAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKLSAgICAgICAgaWYg
KCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gMHhBMCkKKyAgICAgICAgaWYgKCFpc1NwYWNl
T3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVha1NwYWNlKQogICAgICAgICAgICAgW3dvcmRzIHJl
bW92ZUxhc3RPYmplY3RdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5
cGUuY3BwCmluZGV4IDk5NjFjZGRkNTBmZjc3YjQ3ZjdjMDM3MzJmOTJlMDllZTllMjNiMDEuLmFj
NzVlNmY5NTExZjFmMWI3ZGUxMDQ5ODEwMzUwNjViNGQ1YmJiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU3RyaW5nIENvbnRlbnRU
eXBlOjpwYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJOYW1lKSBjb25zdAogICAgIC8v
IGEgTUlNRSB0eXBlIGNhbiBoYXZlIG9uZSBvciBtb3JlICJwYXJhbT12YWx1ZSIgYWZ0ZXIgYSBz
ZW1pLWNvbG9uLCBhbmQgc2VwYXJhdGVkIGZyb20gZWFjaCBvdGhlciBieSBzZW1pLWNvbG9ucwog
ICAgIHNpemVfdCBzZW1pID0gc3RyaXBwZWRUeXBlLmZpbmQoJzsnKTsKICAgICBpZiAoc2VtaSAh
PSBub3RGb3VuZCkgewotICAgICAgICBzaXplX3Qgc3RhcnQgPSBzdHJpcHBlZFR5cGUuZmluZChw
YXJhbWV0ZXJOYW1lLCBzZW1pICsgMSwgZmFsc2UpOworICAgICAgICBzaXplX3Qgc3RhcnQgPSBz
dHJpcHBlZFR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNlKHBhcmFtZXRlck5hbWUsIHNlbWkgKyAx
KTsKICAgICAgICAgaWYgKHN0YXJ0ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBzdGFydCA9
IHN0cmlwcGVkVHlwZS5maW5kKCc9Jywgc3RhcnQgKyBwYXJhbWV0ZXJOYW1lLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIGlmIChzdGFydCAhPSBub3RGb3VuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA1YmFiMWJiZTY3NDBlMzI4MjUyZWIx
MDFjOTU3M2M3M2EyOTAxZWE2Li5hNzk5ZTg3MWMwZTM1ZjI5NTBjNTM2OWIyN2I4NWRhN2QwOWY1
OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApA
QCAtNDkxLDE1ICs0OTEsMTUgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZFN0
eWxlU2hlZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkRm9udE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZvbnRMZW4gPSA1OwotICAgIGlmICghbWlt
ZVR5cGUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJmb250LyIpKQorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBmb250TGVuZ3RoID0gNTsKKyAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJmb250LyIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgU3RyaW5nIHN1YlR5cGUgPSBtaW1lVHlwZS5zdWJzdHJpbmcoZm9udExlbik7Ci0g
ICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUsICJ3b2ZmIikK
LSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3ViVHlwZSwgIndvZmYy
IikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3ViVHlwZSwgIm90
ZiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUsICJ0
dGYiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJUeXBlLCAi
c2ZudCIpOworICAgIGF1dG8gc3VidHlwZSA9IFN0cmluZ1ZpZXcgeyBtaW1lVHlwZSB9LnN1YnN0
cmluZyhmb250TGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3VidHlwZSwgIndvZmYiKQorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzdWJ0eXBlLCAid29mZjIiKQorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdWJ0eXBlLCAib3RmIikKKyAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc3VidHlwZSwgInR0ZiIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN1YnR5cGUsICJzZm50Iik7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTUxMSw3
ICs1MTEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
V2hlbiBkZXRlY3RpbmcgK2pzb24gZW5zdXJlIHRoZXJlIGlzIGEgbm9uLWVtcHR5IHR5cGUgLyBz
dWJ0eXBlIHByZWNlZWRpbmcgdGhlIHN1ZmZpeC4KLSAgICBpZiAobWltZVR5cGUuZW5kc1dpdGgo
Iitqc29uIiwgZmFsc2UpICYmIG1pbWVUeXBlLmxlbmd0aCgpID49IDgpIHsKKyAgICBpZiAobWlt
ZVR5cGUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiK2pzb24iKSAmJiBtaW1lVHlwZS5sZW5n
dGgoKSA+PSA4KSB7CiAgICAgICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmlu
ZCgnLycpOwogICAgICAgICBpZiAoc2xhc2hQb3NpdGlvbiAhPSBub3RGb3VuZCAmJiBzbGFzaFBv
c2l0aW9uID4gMCAmJiBzbGFzaFBvc2l0aW9uIDw9IG1pbWVUeXBlLmxlbmd0aCgpIC0gNikKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTU2LDEzICs1NTYsMTIgQEAgYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IHJldHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKICAgICAgICAg
fHwgaXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUobWltZVR5cGUpIC8vIFJlbmRlciBKU09OIGFzIHRl
eHQvcGxhaW4uCi0gICAgICAgIHx8IChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNl
KQorICAgICAgICB8fCAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgInRleHQvIikKICAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCiAgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCiAgICAgICAgICAgICAmJiAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKIH0KIAot
CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihVQ2hhciBjKQogewog
ICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgcGVyIFJGQ3MgMzAyMyBhbmQgMjA0NTogMC05YS16QS1a
Xy0rfiEkXnt9fC4lJ2AjJioKQEAgLTU3NSw3ICs1NzQsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veG1sIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghbWltZVR5cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxz
ZSkpCisgICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIreG1sIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWlt
ZVR5cGUuZmluZCgnLycpOwpAQCAtNTk5LDkgKzU5OCw5IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICAvLyBv
ZiB1c2luZyBhIGhhc2ggc2V0LgogICAgIC8vIEFueSBvZiB0aGUgTUlNRSB0eXBlcyBiZWxvdyBt
YXkgYmUgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUg
SlZNLAogICAgIC8vIHdoaWNoIGlzIHdoeSB3ZSB1c2Ugc3RhcnRzV2l0aCgpCi0gICAgcmV0dXJu
IG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSkK
LSAgICAgICAgfHwgbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1qYXZhLWJlYW4i
LCBmYWxzZSkKLSAgICAgICAgfHwgbWltZVR5cGUuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24veC1q
YXZhLXZtIiwgZmFsc2UpOworICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIpCisgICAgICAgIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94LWphdmEtYmVhbiIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LWphdmEtdm0iKTsKIH0KIAogYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCkBAIC02MjYsNyArNjI1LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBpZiAoaXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKG1pbWVU
eXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0
aCgidGV4dC8iLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0LyIpKQogICAgICAgICByZXR1cm4gIWlzVW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGUobWltZVR5cGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAKaW5kZXggMmVkNDRiMDJkOWE0ZGQzMmVjZTU5OWUxMTM2MjViYjljZGNjNDg4ZS4u
MmYzNTVhOTdlZGQ2ZWEyMWM2NDRhYjcwYjkxMDNkZTJkZTkzOTdjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0
IFN0cmluZyYgcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNP
bmx5QVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJldHVy
biBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3Ru
YW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIC8vIEZvciBo
b3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hp
Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KICAgICBjb25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1
ZmZlckxlbmd0aCA9IDIwNDg7CiAgICAgCi0gICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3Ru
YW1lQnVmZmVyTGVuZ3RoIHx8IGNvbnRhaW5zT25seUFTQ0lJKHN0cmluZykpIHsKKyAgICBpZiAo
c3RyaW5nLmxlbmd0aCgpID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgaXNBbGxBU0NJSShzdHJp
bmcpKSB7CiAgICAgICAgIGFwcGVuZChidWZmZXIsIHN0cmluZyk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCmluZGV4IGVkNTYw
NDUxYWNiMWYzNTVlYjk0NGM1NDM5YWJhY2M0MzA3OTI2MWYuLjY3Mjg2MTJlZDAzMjQ5ZmY5NzYy
ODgyMTVkYzliNDUxM2NhOTdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cApAQCAtMjUzOCwxOSArMjUzOCwxMCBAQCBWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVs
dElubGluZUJ1ZmZlclNpemU+IFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdAogICAgIHJl
dHVybiBvdXRwdXQ7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5
QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxs
KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAg
cmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmlu
Zy5sZW5ndGgoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6
Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVS
TFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKQogewogICAgIFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IGFzY2lp
OwotICAgIGlmIChjb250YWluc09ubHlBU0NJSShkb21haW4pKSB7CisgICAgaWYgKGRvbWFpbi5p
c0FsbEFTQ0lJKCkpIHsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGRvbWFpbi5sZW5ndGgoKTsK
ICAgICAgICAgaWYgKGRvbWFpbi5pczhCaXQoKSkgewogICAgICAgICAgICAgY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMgPSBkb21haW4uY2hhcmFjdGVyczgoKTsKQEAgLTI3NjcsNyArMjc1OCw3IEBA
IGJvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGl0ZXJhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGRvbWFp
biAhPSBTdHJpbmdWaWV3KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6
ZSgpKSkKICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgYXV0byBhc2Np
aURvbWFpbiA9IGRvbWFpblRvQVNDSUkoZG9tYWluLCBob3N0QmVnaW4pOworICAgIGF1dG8gYXNj
aWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOwogICAg
IGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFp
bi52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFZlY3RvcjxMQ2hhciwgZGVm
YXVsdElubGluZUJ1ZmZlclNpemU+JiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlEb21haW4udmFs
dWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKaW5kZXggMWE1M2M4YzdlMDZiMjc1
NzQ0OTAxNDkzMWExNzFlNzU2NWRiOTQzMi4uMDZkMDFjMWNmMjI1MmI3NmFjZTExNDM1OTVjZjY1
MTQwYzViN2QxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKQEAgLTk3LDcgKzk3
LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBl
PiB2b2lkIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSk7CiAg
ICAgdGVtcGxhdGU8Ym9vbCgqaXNJbkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiB2b2lkIHV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCB1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBkb21haW5Ub0FTQ0lJKGNvbnN0
IFN0cmluZyYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZl
clNpemU+PiBkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gVmVjdG9yPExDaGFyLCBkZWZhdWx0
SW5saW5lQnVmZmVyU2l6ZT4gcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCwgY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOwogICAgIHN0YXRpYyBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggNzg4OWQ4YTE0ZGJjODZhOTI1MjRlNTFlOWVlZTlmYWRmNjE5NjZjMS4uNWZmZTNkMjk1
NGZlZThiYzlhNjk1MzVkNzU4YmQ1YTE3OGQyMTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTMzLDggKzkzMyw4IEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBN
ZWRpYUVuZ2luZVN1cHBvcnRQYXJhCiAgICAgLy8gc2xvdyBjb25uZWN0aW9ucy4gPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjQwOT4KICAgICBpZiAoY2xpZW50ICYm
IGNsaWVudC0+bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkpIHsKICAgICAgICAg
U3RyaW5nIGhvc3QgPSBjbGllbnQtPm1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCk7Ci0gICAgICAg
IGlmICgoaG9zdC5lbmRzV2l0aCgiLnlvdXR1YmUuY29tIiwgZmFsc2UpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ5b3V0dWJlLmNvbSIpKQotICAgICAgICAgICAgJiYg
KGNvbnRhaW5lclR5cGUuc3RhcnRzV2l0aCgidmlkZW8vd2VibSIsIGZhbHNlKSB8fCBjb250YWlu
ZXJUeXBlLnN0YXJ0c1dpdGgoInZpZGVvL3gtZmx2IiwgZmFsc2UpKSkKKyAgICAgICAgaWYgKCho
b3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi55b3V0dWJlLmNvbSIpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ5b3V0dWJlLmNvbSIpKQorICAgICAgICAgICAg
JiYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29udGFpbmVyVHlwZSwgInZp
ZGVvL3dlYm0iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5l
clR5cGUsICJ2aWRlby94LWZsdiIpKSkKICAgICAgICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRl
ZDsKICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCBmYmUxMTNjZmI5NTI5Y2YzYjkyMjdhMjZkNzVjOTI2NWQ3
OWMyMjYzLi5kMjc4MGM5OGZjZjI0NDZmYWY5MjA3ZWQ1NTI3ZmJmZWRlMzMxZDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
NDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBSZWd1bGFyRXhwcmVz
c2lvbiYgdmFsaWRLZXlTeXN0ZW1SRSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
Z3VsYXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwuZnBzXFwuWzIzXV9c
XGQrKD86LFxcZCspKiQiLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVndWxhckV4cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29tXFwuYXBwbGVcXC5m
cHNcXC5bMjNdX1xcZCsoPzosXFxkKykqJCIsIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZSk7CiAgICAgcmV0dXJuIGtleVN5c3RlbVJFOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAK
aW5kZXggZmIwZWNlM2M3NGE2OWJjNWVjMmFkNzU3ZTJlNTQ5OWJkZGJhYTFhYS4uMWYyYjVmNWQw
YmE4NTFiMjEzOTU0Zjg0ODQ3ZDkzYTQyYjBhNTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cApAQCAtNjg1LDcgKzY4NSw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnNpbWlsYXJGb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZ2VlemFQbGFpbigiR2VlemFQcm8iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBnZWV6YUJvbGQoIkdlZXphUHJvLUJvbGQiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBmb3IgKFN0cmluZyogbWF0Y2hXb3JkIDogbWF0
Y2hXb3JkcykgewotICAgICAgICBpZiAoZmFtaWx5LmNvbnRhaW5zKCptYXRjaFdvcmQsIGZhbHNl
KSkKKyAgICAgICAgaWYgKGZhbWlseS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCptYXRjaFdv
cmQpKQogICAgICAgICAgICAgcmV0dXJuIGZvbnRGb3JGYW1pbHkoZGVzY3JpcHRpb24sIGlzRm9u
dFdlaWdodEJvbGQoZGVzY3JpcHRpb24ud2VpZ2h0KCkpID8gZ2VlemFCb2xkIDogZ2VlemFQbGFp
bik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCmluZGV4IDI0NmEyOGJjNzYzMjMzYWY2ZDJjMTI0MGUwZThiYmYzY2ZmMGEwZGEuLmYzZGUy
N2YzZThmMzE2ZDFmMzdiYjRkM2YxNzMxYTE3MjQzYmFmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0KQEAgLTEyOTgsNyArMTI5OCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlamVj
dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICAvLyBRVEtpdCB3aWxsIHJldHVy
biBub24tdmlkZW8gTUlNRSB0eXBlcyB3aGljaCBpdCBjbGFpbXMgdG8gc3VwcG9ydCwgYnV0IHdo
aWNoIHdlCiAgICAgLy8gZG8gbm90IHN1cHBvcnQgaW4gdGhlIDx2aWRlbz4gZWxlbWVudC4gRGlz
Y2xhaW0gYWxsIG5vbiB2aWRlby8gb3IgYXVkaW8vIHR5cGVzLgotICAgIHJldHVybiAhdHlwZS5z
dGFydHNXaXRoKCJ2aWRlby8iLCBmYWxzZSkgJiYgIXR5cGUuc3RhcnRzV2l0aCgiYXVkaW8vIiwg
ZmFsc2UpOworICAgIHJldHVybiAhc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0
eXBlLCAidmlkZW8vIikgJiYgIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImF1ZGlvLyIpOwogfQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbGVUeXBlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMjVmNTkz
ZGVjODMzOTgwOTU0ZjI2YmJiMGJiZGZjNmUwNTljMTMuLjBlNGFjNGJiZTFjNDk1Y2MxZGVkZjdk
ZTIzNTM1ZDdhNjdmMGQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcApAQCAtMTY1NSw3ICsxNjU1LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXSwgR0Mz
RHMKIHsKICAgICBMT0coV2ViR0wsICJPcmlnaW5hbCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBsb2cu
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4
cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNkZWZBQkNERUZdKyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsK
KyAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3
ODlhYmNkZWZBQkNERUZdKyIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBwcm9jZXNzZWRMb2c7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpp
bmRleCAzZjQzMTcyMzhlZGUzMzc2ZGVhYjZjYTA5Y2E4YWFhYmY4NDE4MGQ0Li44MTM4MGNjYTM0
NzE0ZGQ0MzdlYzA2ZjFkMThkNWIyOGM3ZjJlZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgU3RyaW5nIHRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pCiAgICAgaWYg
KFtkb21haW4gX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdKQogICAgICAgICByZXR1cm4gZG9tYWlu
OwogCi0gICAgaWYgKCFkb21haW4uY29udGFpbnNPbmx5QVNDSUkoKSkKKyAgICBpZiAoIWRvbWFp
bi5pc0FsbEFTQ0lJKCkpCiAgICAgICAgIHJldHVybiBkb21haW47CiAgICAgCiAgICAgY29uc3Qg
YXV0byYgbG93ZXJjYXNlRG9tYWluID0gZG9tYWluLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQppbmRleCBhODJjNTZiZDEzNjA1ZTYzNjM1ODA5Y2M1MTQwMjBiYWIwZjU3NTZjLi4zZjE0ZjQy
OTdiYzliZjZhMGI2NTU5YWQ1MzAwOWFjMGNkZDYwNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTIzOCw3ICsyMzgsNyBA
QCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgU3RyaW5nJiBjaAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
fQogCi0gICAgYXV0byBjaGFsbGVuZ2UgPSBjaGFsbGVuZ2VTdHJpbmcuY29udGFpbnNPbmx5QVND
SUkoKSA/IGNoYWxsZW5nZVN0cmluZy5hc2NpaSgpIDogIiI7CisgICAgYXV0byBjaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2VTdHJpbmcuaXNBbGxBU0NJSSgpID8gY2hhbGxlbmdlU3RyaW5nLmFzY2lpKCkg
OiAiIjsKIAogICAgIHJldHVybiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5
U2l6ZSwgY2hhbGxlbmdlLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4
IGI4OWZjNmU0MWVmNTZiYjgyZjdiYmZhOTA2NjZkZjYzOGQ4N2FkNWYuLmJmMDQ4Y2VkYWU3NmZh
MDBkZGZmOWNlOTRlNDlkOWE0YTM5M2M5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgU3RyaW5n
IHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIAog
Ym9vbCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IFN0cmluZyYgd2lsZGNhcmRTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVn
dWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcod2lsZGNhcmRTdHJpbmcp
LCBUZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJpbmcpICE9IC0xOworICAgIHJldHVybiBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKHdp
bGRjYXJkU3RyaW5nKSwgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJp
bmcpICE9IC0xOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4
IDQwYTYxNzcyODg4ODNlMzg5NzVkZDJhMWM0ODEzNjE3OTdlYjA1N2YuLmJkMGFhNzlhODM2NDM5
YjAzMmIxN2NjMTU3MDU1MGM0NDBlZDJkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNI
QTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5j
b250YWluc09ubHlBU0NJSSgpKSB7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcu
aXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgbnVsbEJ5dGUgPSAwOwogICAg
ICAgICBzaGExLmFkZEJ5dGVzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OwogICAgICAgICBzaGExLmFkZEJ5dGVzKCZudWxsQnl0ZSwgMSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggN2IyMjNl
Nzg4NTliNjRjZTNkNmU5N2ZhN2Y3ZDQyOGE1MzY3ZjY2ZC4uYzkxMzAxOTc0MDBjOTE4NjkyNmVh
ODYzNjFkODljMmY4MTU3ZTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMzMwLDEwICszMzAsOCBAQCBDYWNoZUNv
bnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzKQogICAgIGlmICghcmVzdWx0Lm5vQ2FjaGUpIHsKICAgICAgICAgLy8g
SGFuZGxlIFByYWdtYTogbm8tY2FjaGUKICAgICAgICAgLy8gVGhpcyBpcyBkZXByZWNhdGVkIGFu
ZCBlcXVpdmFsZW50IHRvIENhY2hlLWNvbnRyb2w6IG5vLWNhY2hlCi0gICAgICAgIC8vIERvbid0
IGJvdGhlciB0b2tlbml6aW5nIHRoZSB2YWx1ZSwgaXQgaXMgbm90IGltcG9ydGFudAotICAgICAg
ICBTdHJpbmcgcHJhZ21hVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6UHJhZ21h
KTsKLQotICAgICAgICByZXN1bHQubm9DYWNoZSA9IHByYWdtYVZhbHVlLmNvbnRhaW5zKCJuby1j
YWNoZSIsIGZhbHNlKTsKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIHRva2VuaXppbmcgdGhlIHZh
bHVlOyBoYW5kbGluZyB0aGF0IGV4YWN0bHkgcmlnaHQgaXMgbm90IGltcG9ydGFudC4KKyAgICAg
ICAgcmVzdWx0Lm5vQ2FjaGUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hKS5j
b250YWluc0lnbm9yaW5nQVNDSUlDYXNlKCJuby1jYWNoZSIpOwogICAgIH0KIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwCmluZGV4IGY2MzliODIyOTFhYzIzNTBiYWY4Yzg2YzFjOWNiOTM0ZjIyNTc4OTkuLjA3
ZmI3MThhMzExNTlmNDRmZjY5ZDIyOWIwZjI3Nzg1NDJkYzY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0yMTksNyArMjE5LDcg
QEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgZG91YmxlJiBk
ZWxheSwgU3RyaW5nJiB1cmwpCiAgICAgICAgICsrcG9zOwogICAgICAgICBza2lwV2hpdGVTcGFj
ZShyZWZyZXNoLCBwb3MpOwogICAgICAgICB1bnNpZ25lZCB1cmxTdGFydFBvcyA9IHBvczsKLSAg
ICAgICAgaWYgKHJlZnJlc2guZmluZCgidXJsIiwgdXJsU3RhcnRQb3MsIGZhbHNlKSA9PSB1cmxT
dGFydFBvcykgeworICAgICAgICBpZiAocmVmcmVzaC5maW5kSWdub3JpbmdBU0NJSUNhc2UoInVy
bCIsIHVybFN0YXJ0UG9zKSA9PSB1cmxTdGFydFBvcykgewogICAgICAgICAgICAgdXJsU3RhcnRQ
b3MgKz0gMzsKICAgICAgICAgICAgIHNraXBXaGl0ZVNwYWNlKHJlZnJlc2gsIHVybFN0YXJ0UG9z
KTsKICAgICAgICAgICAgIGlmIChyZWZyZXNoW3VybFN0YXJ0UG9zXSA9PSAnPScpIHsKQEAgLTM0
Nyw3ICszNDcsNyBAQCB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywgdQogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IG1lZGlhVHlwZS5sZW5ndGgoKTsKICAgICAKICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7
Ci0gICAgICAgIHBvcyA9IG1lZGlhVHlwZS5maW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7Cisg
ICAgICAgIHBvcyA9IG1lZGlhVHlwZS5maW5kSWdub3JpbmdBU0NJSUNhc2UoImNoYXJzZXQiLCBw
b3MpOwogICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kIHx8IHBvcyA9PSAwKSB7CiAgICAgICAg
ICAgICBjaGFyc2V0TGVuID0gMDsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUzMiwxMCArNTMy
LDExIEBAIGJvb2wgcGFyc2VSYW5nZShjb25zdCBTdHJpbmcmIHJhbmdlLCBsb25nIGxvbmcmIHJh
bmdlT2Zmc2V0LCBsb25nIGxvbmcmIHJhbmdlRW5kCiAgICAgcmFuZ2VPZmZzZXQgPSByYW5nZUVu
ZCA9IHJhbmdlU3VmZml4TGVuZ3RoID0gLTE7CiAKICAgICAvLyBUaGUgImJ5dGVzIiB1bml0IGlk
ZW50aWZpZXIgc2hvdWxkIGJlIHByZXNlbnQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZXNT
dGFydFtdID0gImJ5dGVzPSI7IAotICAgIGlmICghcmFuZ2Uuc3RhcnRzV2l0aChieXRlc1N0YXJ0
LCBmYWxzZSkpCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ5dGVzTGVuZ3RoID0gNjsKKyAg
ICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmFuZ2UsICJieXRlcz0i
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBieXRlUmFuZ2UgPSByYW5nZS5z
dWJzdHJpbmcoc2l6ZW9mKGJ5dGVzU3RhcnQpIC0gMSk7CisgICAgLy8gRklYTUU6IFRoZSByZXN0
IG9mIHRoaXMgc2hvdWxkIHVzZSBTdHJpbmdWaWV3LgorICAgIFN0cmluZyBieXRlUmFuZ2UgPSBy
YW5nZS5zdWJzdHJpbmcoYnl0ZXNMZW5ndGgpOwogCiAgICAgLy8gVGhlICctJyBjaGFyYWN0ZXIg
bmVlZHMgdG8gYmUgcHJlc2VudC4KICAgICBpbnQgaW5kZXggPSBieXRlUmFuZ2UuZmluZCgnLScp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcAppbmRleCA1NzU3ODI2ZWZi
MzE3NmEyN2FhMWUxZDdjNzJkMzgxZmU4OWYxZmUzLi5jZWUzNmI0MWIwMTdiNTBhMzlmMGExZWUy
Y2VlMjM1YzE5OTRjZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNw
cApAQCAtNjksNyArNjksNyBAQCBQcm90ZWN0aW9uU3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OnByb3RlY3Rpb25TcGFjZUZyb21IYW5kbGUoY29uc3QgQ3VybFJlcwogICAgIFN0cmluZyBy
ZWFsbTsKICAgICBjb25zdCBTdHJpbmcgcmVhbG1TdHJpbmcoInJlYWxtPSIpOwogICAgIGF1dG8g
YXV0aEhlYWRlciA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChTdHJpbmcoInd3dy1hdXRoZW50
aWNhdGUiKSk7Ci0gICAgYXV0byByZWFsbVBvcyA9IGF1dGhIZWFkZXIuZmluZElnbm9yaW5nQ2Fz
ZShyZWFsbVN0cmluZyk7CisgICAgYXV0byByZWFsbVBvcyA9IGF1dGhIZWFkZXIuZmluZElnbm9y
aW5nQVNDSUlDYXNlKHJlYWxtU3RyaW5nKTsKICAgICBpZiAocmVhbG1Qb3MgIT0gbm90Rm91bmQp
IHsKICAgICAgICAgcmVhbG0gPSBhdXRoSGVhZGVyLnN1YnN0cmluZyhyZWFsbVBvcyArIHJlYWxt
U3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgcmVhbG0gPSByZWFsbS5sZWZ0KHJlYWxtLmZpbmQo
JywnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCmluZGV4IDk3MDAyNzBhYmYxZTJmODQ2NDBhZGMyYmVkNWIwZjI2MDZh
NGIwYjUuLjE0MDBhZjdlNTkxMDhkNjhlMGExZGFiMDU4MTI5OWU2MzUzMjdiNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
Y3BwCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+
JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIC8vIEZpbmQgdGhlIG1hcmt1cCBiZXR3
ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAtLT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50IC0tPiIsIGFj
Y291bnRpbmcgZm9yIGJyb3dzZXIgcXVpcmtzLgogc3RhdGljIFN0cmluZyBleHRyYWN0TWFya3Vw
RnJvbUNGSFRNTChjb25zdCBTdHJpbmcmIGNmaHRtbCkKIHsKLSAgICB1bnNpZ25lZCBtYXJrdXBT
dGFydCA9IGNmaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKLSAgICB1bnNpZ25lZCB0YWdT
dGFydCA9IGNmaHRtbC5maW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsK
KyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
IjxodG1sIik7CisgICAgdW5zaWduZWQgdGFnU3RhcnQgPSBjZmh0bWwuZmluZElnbm9yaW5nQVND
SUlDYXNlKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQpOwogICAgIHVuc2lnbmVkIGZyYWdt
ZW50U3RhcnQgPSBjZmh0bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSArIDE7Ci0gICAgdW5zaWduZWQg
dGFnRW5kID0gY2ZodG1sLmZpbmQoImVuZGZyYWdtZW50IiwgZnJhZ21lbnRTdGFydCwgZmFsc2Up
OworICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kSWdub3JpbmdBU0NJSUNhc2UoImVu
ZGZyYWdtZW50IiwgZnJhZ21lbnRTdGFydCk7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRFbmQgPSBj
Zmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwogICAgIHJldHVybiBjZmh0bWwuc3Vic3Ry
aW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCkuc3RyaXBXaGl0
ZVNwYWNlKCk7CiB9CkBAIC02MzAsOSArNjMwLDkgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGNmaHRtbCkKICAg
ICAvLyBvYnRhaW4gYmFzZVVSTCBpZiBwcmVzZW50CiAgICAgU3RyaW5nIHNyY1VSTFN0cigic291
cmNlVVJMOiIpOwogICAgIFN0cmluZyBzcmNVUkw7Ci0gICAgdW5zaWduZWQgbGluZVN0YXJ0ID0g
Y2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CisgICAgdW5zaWduZWQgbGluZVN0YXJ0
ID0gY2ZodG1sLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzcmNVUkxTdHIpOwogICAgIGlmIChsaW5l
U3RhcnQgIT0gLTEpIHsKLSAgICAgICAgdW5zaWduZWQgc3JjRW5kID0gY2ZodG1sLmZpbmQoIlxu
IiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVuc2lnbmVkIHNyY0VuZCA9IGNmaHRtbC5m
aW5kKCdcbicsIGxpbmVTdGFydCk7CiAgICAgICAgIHVuc2lnbmVkIHNyY1N0YXJ0ID0gbGluZVN0
YXJ0K3NyY1VSTFN0ci5sZW5ndGgoKTsKICAgICAgICAgU3RyaW5nIHJhd1NyY1VSTCA9IGNmaHRt
bC5zdWJzdHJpbmcoc3JjU3RhcnQsIHNyY0VuZC1zcmNTdGFydCk7CiAgICAgICAgIHJlcGxhY2VO
QlNQV2l0aFNwYWNlKHJhd1NyY1VSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQmlkaVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAK
aW5kZXggYmE4M2Y5YzEyYjdmNWMzNmJiOWYzNTY3ODY2ZTI1MzExYTdlZDNkNS4uNGFlY2QxOTk4
MTMyOTAyMGVjNTkyZGVkMTZhNjg1ODQ1ZjFjYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
aWRpUnVuLmNwcApAQCAtNDEsNyArNDEsNyBAQCBCaWRpUnVuOjpCaWRpUnVuKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBzdG9wLCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBCaWRpQ29udAogI2lm
bmRlZiBOREVCVUcKICAgICBiaWRpUnVuQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgotICAg
IEFTU0VSVCghaXM8UmVuZGVyVGV4dD4obV9yZW5kZXJlcikgfHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0b3ApIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpLnRleHRMZW5ndGgo
KSk7CisgICAgQVNTRVJUKCFpczxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKSB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RvcCkgPD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obV9yZW5kZXJlcikudGV4
dCgpLmxlbmd0aCgpKTsKICAgICAvLyBTdG9yZWQgaW4gYmFzZSBjbGFzcyB0byBzYXZlIHNwYWNl
LgogICAgIG1faGFzSHlwaGVuID0gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYWNiOWVkY2MyMmVhYTA5ODE5ZGVmNjE0NzNkZDQ4MWQx
YTY4OWE4NS4uZGVkZWY4ZTVlOGM4ZDA4Yjc2ZDc0NDQ4ZDQ5ZWU3NWU2OTUxNGZkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMzk0LDcgKzM5NCw3
IEBAIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CiAgICAgaWYgKCF1
cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBpZiAoZWxlbWVudC5z
ZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LnNlcnZpY2VUeXBl
KCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkuZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkpKQorICAg
IGlmIChlbGVtZW50LnNlcnZpY2VUeXBlKCkgPT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgKGVsZW1l
bnQuc2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKCIucGRmIikpKQogICAgICAgICByZXR1cm4gdXJsOwogICAgIHJldHVybiBVUkwo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA1
OGViNGRkOTRmODUxNjc2ZWQxMjU1M2RkYTIzOGUzYWVhOTUyNjNmLi42ODI5NmQ0YzRkOGU2ZWZj
ZjM4Mzk1MDc2MDgyMTdkNjQ4YjE3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6
cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5s
aW4KICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkLT5yZW5kZXJlcigpKSkgewogICAg
ICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCk7
CiAgICAgICAgICAgICBSZW5kZXJUZXh0JiByZW5kZXJUZXh0ID0gdGV4dEJveC5yZW5kZXJlcigp
OwotICAgICAgICAgICAgaWYgKHJlbmRlclRleHQudGV4dExlbmd0aCgpKSB7CisgICAgICAgICAg
ICBpZiAocmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
bmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVy
QXQodGV4dEJveC5zdGFydCgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9
IHRleHRCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS53b3JkU3BhY2luZygpOwogICAgICAg
ICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhaXNTcGFjZU9yTmV3bGluZShyZW5kZXJUZXh0
LmNoYXJhY3RlckF0KHRleHRCb3guZW5kKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmgKaW5kZXggMDhlYjJhYjhhNGFhOWZkYWI3MjdiMzcyZWE1NWE4ZjI5NDRl
M2VjZS4uN2Y3OTM0ZDdjYzc0NmFkNjk5YjY1ZWU4ZmQyM2MxYmUyNDRhNzQyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTM0Miw3ICszNDIsNyBAQCBz
dGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZpcnN0SW5jbHVkaW5nRW1wdHlJbmxpbmVz
KFJlbmRlckVsZW1lbnQmIHJvb3QpCiBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRvcjo6ZmFzdElu
Y3JlbWVudEluVGV4dE5vZGUoKQogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKLSAgICBBU1NF
UlQobV9wb3MgPD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpLnRleHRMZW5ndGgo
KSk7CisgICAgQVNTRVJUKG1fcG9zIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVy
KS50ZXh0KCkubGVuZ3RoKCkpOwogICAgICsrbV9wb3M7CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBA
QCBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRvcjo6aW5jcmVtZW50KElubGluZUJpZGlSZXNvbHZl
ciogcmVzb2x2ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1f
cmVuZGVyZXIpKSB7CiAgICAgICAgIGZhc3RJbmNyZW1lbnRJblRleHROb2RlKCk7Ci0gICAgICAg
IGlmIChtX3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0TGVuZ3Ro
KCkpCisgICAgICAgIGlmIChtX3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVy
KS50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIGJp
ZGlOZXh0IGNhbiByZXR1cm4gbnVsbHB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCmluZGV4IDJhMTcwYTk4M2I4MWZkNWQ5NTQzZWU3OTg2ODlkNTg5NGEwMDBk
N2QuLjlkMTM0ODA5ZDQxNjRkNWIzODg0OTZiYzgwYjI0YmNkNTNkZGYyYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBm
bG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9h
dCB2aXNpYmxlTGVmdEVkZ2UsIGZsbwogCiBib29sIElubGluZVRleHRCb3g6OmlzTGluZUJyZWFr
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGlu
ZSgpICYmIGxlbigpID09IDEgJiYgKCpyZW5kZXJlcigpLnRleHQoKSlbc3RhcnQoKV0gPT0gJ1xu
JzsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxl
bigpID09IDEgJiYgcmVuZGVyZXIoKS50ZXh0KClbc3RhcnQoKV0gPT0gJ1xuJzsKIH0KIAogYm9v
bCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0
VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovLApAQCAtNjE3LDcg
KzYxNyw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IElubGluZVRleHRCb3g6OnNl
bGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICBhdXRvIHN0YXJ0ID0gcmVuZGVyZXIoKS52aWV3
KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwogICAgIGF1dG8gZW5kID0gcmVuZGVyZXIo
KS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKLSAgICAgICAgZW5kID0gcmVuZGVy
ZXIoKS50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyKCkudGV4dCgpLmxlbmd0
aCgpOwogICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uRW5kKQogICAgICAgICBzdGFydCA9IDA7CiAgICAgcmV0dXJuIHsgY2xhbXBlZE9mZnNldChz
dGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9OwpAQCAtMTA4MiwxNSArMTA4MiwxNSBAQCBTdHJp
bmcgSW5saW5lVGV4dEJveDo6dGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25v
cmVIeXBoZW4pIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNv
bWJpbmVkVGV4dCgpKSB7CiAgICAgICAgIGlmIChpZ25vcmVDb21iaW5lZFRleHQpCi0gICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7
CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQs
IG1fbGVuKTsKICAgICAgICAgcmV0dXJuIGNvbWJpbmVkVGV4dC0+Y29tYmluZWRTdHJpbmdGb3JS
ZW5kZXJpbmcoKTsKICAgICB9CiAgICAgaWYgKGhhc0h5cGhlbigpKSB7CiAgICAgICAgIGlmIChp
Z25vcmVIeXBoZW4pCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0
cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0
KCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
U3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKSwg
bGluZVN0eWxlKCkuaHlwaGVuU3RyaW5nKCkpOwogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyZXIo
KS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgcmV0dXJuIHJlbmRlcmVy
KCkudGV4dCgpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CiB9CiAKIGlubGluZSBjb25zdCBS
ZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGI5NTU4NjkxOWU3MzMy
MmUxODg4MGMzMDI4Mzc3NzhmODM4MWY0ZTkuLmY0OTJmMTgwMWJjZTYxMTc1MTU4YzBmNWU5M2Zl
OTU3MDNjZDI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMzU0OCw3ICszNTQ4LDcgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYKIFRleHRSdW4gUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQg
KyBsZW5ndGg7Ci0gICAgQVNTRVJUKHN0b3AgPD0gdGV4dC50ZXh0TGVuZ3RoKCkpOworICAgIEFT
U0VSVChzdG9wIDw9IHRleHQudGV4dCgpLmxlbmd0aCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0
VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggNzk3NTdlNzRjNjk3Zjg2MmZhMGY4NjQwOGI3OTJiMmE2Y2NiZGViNi4uYjI2ZDY3MmJhMDhj
NjliZWY5MjJjNzJhYzhlYWRkYmVjMGI1ZGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFt
ZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdExvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgpAQCAtMzY3MSwxMyArMzY3MiwxNCBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB9CiAKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWaXNpYmxlUmVuZGVy
VGV4dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGlmICghaXM8UmVuZGVy
VGV4dD4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpOwotICAgIHJldHVybiAhcmVu
ZGVyVGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5kZXJUZXh0LnRleHQo
KS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJldHVybiAhcmVuZGVyVGV4dC5saW5l
c0JvdW5kaW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5kZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVz
aXplVGV4dFBlcm1pdHRlZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQpAQCAtMzc4Nyw2
ICszNzg5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdENvbXB1dGVkRm9udFNpemVz
KGZsb2F0IHNpemUsIGZsb2F0IHZpc2libGVXaWR0aCkKICAgICAgICAgZGVzY2VuZGFudCA9IFJl
bmRlck9iamVjdFRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4odGV4dCwgdGhpcyk7CiAg
ICAgfQogfQorCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAogdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVu
KQpAQCAtNDI2NCwxOCArNDI2NywxNSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlu
bGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgICAg
ICAgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcuIElmIHRob3NlIGFyZSBnb2luZyB0byBiZSBzdHJp
cHBlZCBvdXQsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB0aGV5IHNob3VsZG4ndCBiZSBjb25z
aWRlcmVkIGluIHRoZSBicmVha2FibGUgY2hhcgogICAgICAgICAgICAgICAgIC8vIGNoZWNrLgot
ICAgICAgICAgICAgICAgIGJvb2wgaGFzQnJlYWthYmxlQ2hhciwgaGFzQnJlYWs7Ci0gICAgICAg
ICAgICAgICAgZmxvYXQgYmVnaW5NaW4sIGVuZE1pbjsKLSAgICAgICAgICAgICAgICBib29sIGJl
Z2luV1MsIGVuZFdTOwotICAgICAgICAgICAgICAgIGZsb2F0IGJlZ2luTWF4LCBlbmRNYXg7CiAg
ICAgICAgICAgICAgICAgYm9vbCBzdHJpcHBpbmdCZWdpbldTID0gc3RyaXBGcm9udFNwYWNlczsK
LSAgICAgICAgICAgICAgICByZW5kZXJUZXh0LnRyaW1tZWRQcmVmV2lkdGhzKGlubGluZU1heCwg
YmVnaW5NaW4sIGJlZ2luV1MsIGVuZE1pbiwgZW5kV1MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGFzQnJlYWthYmxlQ2hhciwgaGFzQnJlYWssIGJlZ2luTWF4LCBlbmRN
YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4sIGNoaWxk
TWF4LCBzdHJpcEZyb250U3BhY2VzKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdpZHRocyA9IHJl
bmRlclRleHQudHJpbW1lZFByZWZlcnJlZFdpZHRocyhpbmxpbmVNYXgsIHN0cmlwRnJvbnRTcGFj
ZXMpOworCisgICAgICAgICAgICAgICAgY2hpbGRNaW4gPSB3aWR0aHMubWluOworICAgICAgICAg
ICAgICAgIGNoaWxkTWF4ID0gd2lkdGhzLm1heDsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMg
dGV4dCBvYmplY3Qgd2lsbCBub3QgYmUgcmVuZGVyZWQsIGJ1dCBpdCBtYXkgc3RpbGwgcHJvdmlk
ZSBhIGJyZWFraW5nIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgICAgIGlmICghaGFzQnJlYWsg
JiYgIWNoaWxkTWF4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvV3JhcCAmJiAoYmVn
aW5XUyB8fCBlbmRXUykpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpZHRocy5oYXNCcmVhayAm
JiAhY2hpbGRNYXgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9XcmFwICYmICh3aWR0
aHMuYmVnaW5XUyB8fCB3aWR0aHMuZW5kV1MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBt
aW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1p
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOwogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC00Mjk0LDE0ICs0Mjk0LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpj
b21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
CiAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQgfHwgaGFzUmVtYWluaW5nTmVn
YXRpdmVUZXh0SW5kZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIHRpID0gdGV4dEluZGVudC5j
ZWlsVG9GbG9hdCgpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbiArPSB0aTsKLSAgICAg
ICAgICAgICAgICAgICAgYmVnaW5NaW4gKz0gdGk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRo
cy5iZWdpbk1pbiArPSB0aTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJdCB0aGUgdGV4dCBp
bmRlbnQgbmVnYXRpdmUgYW5kIGxhcmdlciB0aGFuIHRoZSBjaGlsZCBtaW5pbXVtLCB3ZSByZS11
c2UgdGhlIHJlbWFpbmRlcgogICAgICAgICAgICAgICAgICAgICAvLyBpbiBmdXR1cmUgbWluaW11
bSBjYWxjdWxhdGlvbnMsIGJ1dCB1c2luZyB0aGUgbmVnYXRpdmUgdmFsdWUgYWdhaW4gb24gdGhl
IG1heGltdW0KICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBsZWFkIHRvIHVuZGVyLWNvdW50
aW5nIHRoZSBtYXggcHJlZiB3aWR0aC4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRl
eHRJbmRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9IHRpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYmVnaW5NYXggKz0gdGk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aHMuYmVnaW5NYXggKz0gdGk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRl
ZFRleHRJbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTQzMTYsNDgg
KzQzMTYsNDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRJbmRleCA9IHN0cmlwcGluZ0JlZ2luV1MgPyByZW5kZXJUZXh0LmZpcnN0
Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6IDA7CiAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IGhhbmdTdGFydFdpZHRoID0gcmVuZGVyVGV4dC5oYW5nYWJsZVB1bmN0dWF0aW9uU3Rh
cnRXaWR0aChzdGFydEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gLT0gaGFu
Z1N0YXJ0V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luTWluIC09IGhhbmdTdGFydFdp
ZHRoOworICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NaW4gLT0gaGFuZ1N0YXJ0V2lk
dGg7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4IC09IGhhbmdTdGFydFdpZHRoOwotICAg
ICAgICAgICAgICAgICAgICBiZWdpbk1heCAtPSBoYW5nU3RhcnRXaWR0aDsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGhzLmJlZ2luTWF4IC09IGhhbmdTdGFydFdpZHRoOwogICAgICAgICAgICAg
ICAgICAgICBhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBi
cmVha2FibGUgY2hhcmFjdGVycyBhdCBhbGwsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB0aGlz
IGlzIHRoZSBlYXN5IGNhc2UuIFdlIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIGN1cnJlbnQKICAgICAg
ICAgICAgICAgICAvLyBtaW4gYW5kIG1heCBhbmQgY29udGludWUuCi0gICAgICAgICAgICAgICAg
aWYgKCFoYXNCcmVha2FibGVDaGFyKQorICAgICAgICAgICAgICAgIGlmICghd2lkdGhzLmhhc0Jy
ZWFrYWJsZUNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiArPSBjaGlsZE1pbjsK
ICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBh
IGJyZWFrYWJsZSBjaGFyYWN0ZXIuIE5vdyB3ZSBuZWVkIHRvIGtub3cgaWYKICAgICAgICAgICAg
ICAgICAgICAgLy8gd2Ugc3RhcnQgYW5kIGVuZCB3aXRoIHdoaXRlc3BhY2UuCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChiZWdpbldTKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aHMu
YmVnaW5XUykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIHRoZSBjdXJyZW50IGxp
bmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRX
aWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0gYmVnaW5NaW47Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gKz0gd2lkdGhzLmJlZ2luTWluOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWlu
TG9naWNhbFdpZHRoLCBpbmxpbmVNaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRN
aW4gLT0gdGk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBp
bmxpbmVNaW4gPSBjaGlsZE1pbjsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoZW5kV1MpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRocy5lbmRXUykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgZW5kIGluIHdoaXRlc3BhY2UsIHdoaWNoIG1lYW5zIHdlIGNhbiBlbmQg
b3VyIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0
aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRCcmVha0xpbmVBZnRlclRleHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJl
ZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlubGluZU1pbiA9IGVuZE1pbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1p
biA9IHdpZHRocy5lbmRNaW47CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVha0xp
bmVBZnRlclRleHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGhhc0JyZWFrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlubGluZU1heCArPSBiZWdpbk1heDsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGhzLmhh
c0JyZWFrKSB7CisgICAgICAgICAgICAgICAgICAgIGlubGluZU1heCArPSB3aWR0aHMuYmVnaW5N
YXg7CiAgICAgICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRo
KG1heExvZ2ljYWxXaWR0aCwgaW5saW5lTWF4KTsKICAgICAgICAgICAgICAgICAgICAgbWF4TG9n
aWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBjaGlsZE1heCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IGVuZE1heDsKKyAgICAgICAgICAgICAgICAg
ICAgaW5saW5lTWF4ID0gd2lkdGhzLmVuZE1heDsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRU
ZXh0SW5kZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRTdGFydFB1bmN0dWF0
aW9uSGFuZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC00Mzg4LDggKzQzODgs
OCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgIGlmIChzdHlsZVRvVXNlLmNvbGxhcHNl
V2hpdGVTcGFjZSgpKQogICAgICAgICBzdHJpcFRyYWlsaW5nU3BhY2UoaW5saW5lTWF4LCBpbmxp
bmVNaW4sIHRyYWlsaW5nU3BhY2VDaGlsZCk7CiAgICAgCi0gICAgaWYgKGNhbkhhbmdQdW5jdHVh
dGlvbkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RUZXh0LT50ZXh0TGVuZ3RoKCkgPiAwKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNoaWxkID09IGxhc3RUZXh0
ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDogbGFzdFRl
eHQtPnRleHRMZW5ndGgoKSAtIDE7CisgICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYm
IGxhc3RUZXh0ICYmIGxhc3RUZXh0LT50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgIHVu
c2lnbmVkIGVuZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNoaWxkID09IGxhc3RUZXh0ID8gbGFzdFRl
eHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDogbGFzdFRleHQtPnRleHQo
KS5sZW5ndGgoKSAtIDE7CiAgICAgICAgIGZsb2F0IGVuZEhhbmdXaWR0aCA9IGxhc3RUZXh0LT5o
YW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGgoZW5kSW5kZXgpOwogICAgICAgICBpbmxpbmVNaW4g
LT0gZW5kSGFuZ1dpZHRoOwogICAgICAgICBpbmxpbmVNYXggLT0gZW5kSGFuZ1dpZHRoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApp
bmRleCBiNzM2ZDRjMWRiMjdjZmRlMGY5NWMyMWRlMDI5ZDY4ZWQxZTZlYjA2Li4xMTAwYjZmZTJm
ZmNkMWUyY2E4MTM0MDM5NTlkNDE0MTE3NzMzMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMjQ0LDE1ICsyNDQsMTMg
QEAgSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVy
T2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlbmRzV2l0
aEFTQ0lJU3BhY2VzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBv
cywgdW5zaWduZWQgZW5kKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IGlubGluZSBib29sIGVuZHNXaXRoSFRNTFNwYWNlcyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgZW5kKQogewotICAgIHdoaWxlIChp
c0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1twb3NdKSkgewotICAgICAgICBwb3MrKzsKLSAgICAgICAg
aWYgKHBvcyA+PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBwb3NpdGlvbjsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGlmICghaXNIVE1MU3Bh
Y2UoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgcmVhY2hl
ZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucykK
QEAgLTI2MCwxOCArMjU4LDE0IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJl
cihjb25zdCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMpCiAgICAgQmlkaVJ1biogcnVu
ID0gYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpOwogICAgIGlmICghcnVuKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3MgPSBydW4tPnN0b3AoKTsKLSAgICBjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gcnVuLT5yZW5kZXJlcigpOwotICAgIGlmICghaXM8UmVu
ZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJl
cigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFJlbmRlclRleHQmIHJlbmRl
clRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcik7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKHBvcyA+PSBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHJlbmRlclRleHQuaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQuY2hhcmFjdGVyczgoKSwg
cG9zLCBsZW5ndGgpOwotICAgIHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQu
Y2hhcmFjdGVyczE2KCksIHBvcywgbGVuZ3RoKTsKKyAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKS50ZXh0KCk7CisgICAgdW5zaWduZWQgcG9zaXRp
b24gPSBydW4tPnN0b3AoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwor
ICAgIGlmICh0ZXh0LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZW5kc1dpdGhIVE1MU3BhY2Vz
KHRleHQuY2hhcmFjdGVyczgoKSwgcG9zaXRpb24sIGxlbmd0aCk7CisgICAgcmV0dXJuIGVuZHNX
aXRoSFRNTFNwYWNlcyh0ZXh0LmNoYXJhY3RlcnMxNigpLCBwb3NpdGlvbiwgbGVuZ3RoKTsKIH0K
IAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKEJpZGlSdW5M
aXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvKQpAQCAtODg5
LDcgKzg4Myw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJvCiAgICAgICAgICAgICBpZiAodGV4
dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4pCiAgICAgICAgICAg
ICAgICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoKnRoaXMsIHRleHRCb3gsIHByZXZp
b3VzUnVuLCBydW4tPm5leHQoKSwgcmVuZGVyVGV4dC5zdHJpbmdWaWV3KHJ1bi0+bV9zdGFydCwg
cnVuLT5tX3N0b3ApLCBydW4tPmJveCgpLT5kaXJlY3Rpb24oKSk7CiAKLSAgICAgICAgICAgIGlm
ICh1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkgeworICAgICAgICAg
ICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFydW4tPm1fc3RhcnQgJiYgbmVlZHNXb3JkU3BhY2luZyAmJiBp
c1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQocnVuLT5tX3N0YXJ0KSkpCiAg
ICAgICAgICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGxpbmVTdHlsZSgqcmVuZGVy
VGV4dC5wYXJlbnQoKSwgbGluZUluZm8pLmZvbnRDYXNjYWRlKCkud29yZFNwYWNpbmcoKTsKICAg
ICAgICAgICAgICAgICAvLyBydW4tPm1fc3RhcnQgPT0gcnVuLT5tX3N0b3Agc2hvdWxkIG9ubHkg
YmUgdHJ1ZSBpZmYgdGhlIHJ1biBpcyBhIHJlcGxhY2VkIHJ1biBmb3IgYmlkaTogaXNvbGF0ZS4K
QEAgLTEwNTYsMTAgKzEwNTAsMTAgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6
aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGkKIAogICAgIGNv
bnN0IFJlbmRlclRleHQmIGxhc3RUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obGFzdE9iamVj
dCk7CiAgICAgdW5zaWduZWQgZmlyc3RTcGFjZTsKLSAgICBpZiAobGFzdFRleHQuaXM4Qml0KCkp
Ci0gICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBs
YXN0VGV4dC5jaGFyYWN0ZXJzOCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdGFydCgpLCB0cmFpbGlu
Z1NwYWNlUnVuLT5zdG9wKCkpOworICAgIGlmIChsYXN0VGV4dC50ZXh0KCkuaXM4Qml0KCkpCisg
ICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0
VGV4dC50ZXh0KCkuY2hhcmFjdGVyczgoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJh
aWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKICAgICBlbHNlCi0gICAgICAgIGZpcnN0U3BhY2UgPSBm
aW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0ZXJzMTYoKSwg
dHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKKyAg
ICAgICAgZmlyc3RTcGFjZSA9IGZpbmRGaXJzdFRyYWlsaW5nU3BhY2UobGFzdFRleHQsIGxhc3RU
ZXh0LnRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJh
aWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKIAogICAgIGlmIChmaXJzdFNwYWNlID09IHRyYWlsaW5n
U3BhY2VSdW4tPnN0b3AoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODU0LDcgKzE4
NDgsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9z
aXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdAogICAgICAgICAgICAgICAgIGlmICghZGly
dGllZEJ5RmxvYXQgJiYgKCFwcmV2Um9vdEJveC0+ZW5kc1dpdGhCcmVhaygpCiAgICAgICAgICAg
ICAgICAgICAgIHx8ICFwcmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkKICAgICAgICAgICAgICAg
ICAgICAgfHwgKGlzPFJlbmRlclRleHQ+KCpwcmV2Um9vdEJveC0+bGluZUJyZWFrT2JqKCkpCi0g
ICAgICAgICAgICAgICAgICAgICYmIHByZXZSb290Qm94LT5saW5lQnJlYWtQb3MoKSA+PSBkb3du
Y2FzdDxSZW5kZXJUZXh0PigqcHJldlJvb3RCb3gtPmxpbmVCcmVha09iaigpKS50ZXh0TGVuZ3Ro
KCkpKSkgeworICAgICAgICAgICAgICAgICAgICAmJiBwcmV2Um9vdEJveC0+bGluZUJyZWFrUG9z
KCkgPj0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZSb290Qm94LT5saW5lQnJlYWtPYmooKSku
dGV4dCgpLmxlbmd0aCgpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXZpb3Vz
IGxpbmUgZGlkbid0IGJyZWFrIGNsZWFubHkgb3IgYnJva2UgYXQgYSBuZXdsaW5lCiAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoYXQgaGFzIGJlZW4gZGVsZXRlZCwgc28gdHJlYXQgaXQgYXMgZGly
dHkgdG9vLgogICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGluZSA9IHByZXZSb290Qm94Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKaW5kZXgg
ODM4NmVhZjI4NjM1YjM5M2Y0MzAyNGQ2MWVjOTNhZjY3NDRkZTI0ZS4uOWNmNGZiOGVkYzJhMjU4
NzM3ZDQzMDA2MTdmOGU5YjM2MjE4NmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJD
b21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgpCiAgICAgCiAgICAgR2x5cGhPdmVyZmxv
dyBnbHlwaE92ZXJmbG93OwogICAgIGdseXBoT3ZlcmZsb3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7
Ci0gICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGhv
cml6b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgZmxvYXQgY29t
YmluZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0KCkubGVuZ3RoKCksIGhvcml6b250YWxGb250
LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CiAKICAgICBmbG9hdCBiZXN0Rml0RGVsdGEg
PSBjb21iaW5lZFRleHRXaWR0aCAtIGVtV2lkdGg7CiAgICAgYXV0byBiZXN0Rml0RGVzY3JpcHRp
b24gPSBkZXNjcmlwdGlvbjsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJlbmRlckNvbWJpbmVU
ZXh0Ojpjb21iaW5lVGV4dElmTmVlZGVkKCkKICAgICAgICAgICAgIGNvbXByZXNzZWRGb250LnVw
ZGF0ZShmb250U2VsZWN0b3IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnbHlwaE92ZXJm
bG93LmxlZnQgPSBnbHlwaE92ZXJmbG93LnRvcCA9IGdseXBoT3ZlcmZsb3cucmlnaHQgPSBnbHlw
aE92ZXJmbG93LmJvdHRvbSA9IDA7Ci0gICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9IFJlbmRl
clRleHQ6OndpZHRoKDAsIHRleHRMZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAsIG51bGxwdHIs
ICZnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgIGZsb2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4
dDo6d2lkdGgoMCwgdGV4dCgpLmxlbmd0aCgpLCBjb21wcmVzc2VkRm9udCwgMCwgbnVsbHB0ciwg
JmdseXBoT3ZlcmZsb3cpOwogICAgICAgICAgICAgaWYgKHJ1bldpZHRoIDw9IGVtV2lkdGgpIHsK
ICAgICAgICAgICAgICAgICBjb21iaW5lZFRleHRXaWR0aCA9IHJ1bldpZHRoOwogICAgICAgICAg
ICAgICAgIG1faXNDb21iaW5lZCA9IHRydWU7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5k
ZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgpCiAgICAgICAgICAgICBjb21wcmVz
c2VkRm9udC51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Z2x5cGhPdmVyZmxvdy5sZWZ0ID0gZ2x5cGhPdmVyZmxvdy50b3AgPSBnbHlwaE92ZXJmbG93LnJp
Z2h0ID0gZ2x5cGhPdmVyZmxvdy5ib3R0b20gPSAwOwotICAgICAgICAgICAgZmxvYXQgcnVuV2lk
dGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGNvbXByZXNzZWRGb250LCAw
LCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBmbG9hdCBydW5XaWR0aCA9
IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHQoKS5sZW5ndGgoKSwgY29tcHJlc3NlZEZvbnQsIDAs
IG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKICAgICAgICAgICAgIGlmIChydW5XaWR0aCA8PSBl
bVdpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29tYmluZWRUZXh0V2lkdGggPSBydW5XaWR0aDsK
ICAgICAgICAgICAgICAgICBtX2lzQ29tYmluZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTk4ZmFlOWMzMzQ1NTBlNWJhOTg0Mzc4NTI5YWQ0
NWQ2ZjhiMDg3OS4uMjQwNzdmMjA0YWJkZDA4ZTc3NmJiYjBlZTllMDFkN2E3MmI3NzM1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBA
CiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFt
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2Vy
SWRpb21zLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmgiCkBAIC02NDQ3
LDcgKzY0NDgsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVOb25MYXllckRlc2NlbmRhbnRzUGFp
bnRlZENvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZAogICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLnN0eWxlKCkudXNlclNlbGVjdCgpICE9IFNFTEVDVF9OT05FKQogICAgICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SGFzUGFpbnRlZENvbnRlbnQoKTsKIAotICAgICAgICAgICAgaWYgKCFy
ZW5kZXJUZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIXJlbmRlclRleHQudGV4dCgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3Bh
Y2U+KCkpIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhhc1BhaW50ZWRDb250ZW50KCk7
CiAKICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5uZWVkVG9EZXRlcm1pbmVTdWJwaXhlbEFu
dGlhbGlhc2VkVGV4dFN0YXRlKCkgJiYgc3R5bGVIYXNTbW9vdGhpbmdUZXh0TW9kZShjaGlsZC5z
dHlsZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAwMzYwY2Q3ZTZjZmU2NWU4NTk1ZWExZWIxMWI4MmZjMGIyNzlhOWFhLi40YzRkOWFiY2I1M2Ez
MjY2YWNhYjk2MDMyOTMzM2E2MTc5NmVhODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTYsMzggKzExNiw0NiBAQCBIVE1MU2VsZWN0RWxlbWVu
dCYgUmVuZGVyTGlzdEJveDo6c2VsZWN0RWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxTZWxlY3RFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCitzdGF0
aWMgRm9udENhc2NhZGUgYm9sZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQpCit7CisgICAgYXV0byBkZXNjcmlwdGlvbiA9IGZvbnQuZm9udERlc2NyaXB0aW9u
KCk7CisgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IEZvbnRDYXNjYWRlIHsgZGVzY3JpcHRpb24sIGZvbnQubGV0
dGVyU3BhY2luZygpLCBmb250LndvcmRTcGFjaW5nKCkgfTsKKyAgICByZXN1bHQudXBkYXRlKCZk
b2N1bWVudC5mb250U2VsZWN0b3IoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBS
ZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7CiAgICAgaWYgKG1fb3B0aW9uc0No
YW5nZWQpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9
IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKLSAgICAgICAgaW50IHNpemUgPSBudW1JdGVt
cygpOwotICAgICAgICAKICAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSBsaXN0SXRlbXNbaV07CisgICAgICAgIGF1dG8mIG5vcm1hbEZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGU+IGJvbGRGb250
OworICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1z
KCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0OwotICAgICAgICAgICAgRm9udENhc2NhZGUg
aXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAgICAgICBXVEY6OkZ1bmN0
aW9uPGNvbnN0IEZvbnRDYXNjYWRlJigpPiBzZWxlY3RGb250ID0gWyZub3JtYWxGb250XSAoKSAt
PiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxGb250
OworICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4o
KmVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAg
ICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVu
dCkuZ3JvdXBMYWJlbFRleHQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRlc2NyaXB0aW9uID0g
aXRlbUZvbnQuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24u
c2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBp
dGVtRm9udCA9IEZvbnRDYXNjYWRlKGRlc2NyaXB0aW9uLCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5n
KCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOwotICAgICAgICAgICAgICAgIGl0ZW1Gb250LnVw
ZGF0ZSgmZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBhcHBseVRleHRU
cmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTog
V2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gQ2FuJ3QgdGV4dCBkaXJlY3Rpb24gYWZmZWN0IHRoZSB3
aWR0aD8KLSAgICAgICAgICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVu
KHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwotICAgICAgICAgICAgICAg
IGZsb2F0IHRleHRXaWR0aCA9IGl0ZW1Gb250LndpZHRoKHRleHRSdW4pOwotICAgICAgICAgICAg
ICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIHRleHRXaWR0aCk7CisgICAgICAgICAgICAgICAg
c2VsZWN0Rm9udCA9IFt0aGlzLCAmbm9ybWFsRm9udCwgJmJvbGRGb250XSAoKSAtPiBjb25zdCBG
b250Q2FzY2FkZSYgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWJvbGRGb250KQorICAgICAg
ICAgICAgICAgICAgICAgICAgYm9sZEZvbnQgPSBib2xkZXIoZG9jdW1lbnQoKSwgbm9ybWFsRm9u
dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBib2xkRm9udC52YWx1ZSgpOworICAgICAg
ICAgICAgICAgIH07CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGV4dC5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0ZXh0ID0gYXBwbHlU
ZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7CisgICAgICAgICAgICBhdXRvIHRleHRS
dW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNp
b24pOworICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgc2VsZWN0Rm9udCgpLndp
ZHRoKHRleHRSdW4pKTsKICAgICAgICAgfQotICAgICAgICBtX29wdGlvbnNXaWR0aCA9IHN0YXRp
Y19jYXN0PGludD4oY2VpbGYod2lkdGgpKTsKKyAgICAgICAgLy8gRklYTUU6IElzIGNlaWxpbmcg
cmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdlIGJlIGRvaW5nIHNvbWUga2luZCBvZiByb3VuZGluZyBp
bnN0ZWFkPworICAgICAgICBtX29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oc3RkOjpj
ZWlsKHdpZHRoKSk7CiAgICAgICAgIG1fb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAg
CisKICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAKICAgICAgICAgY29t
cHV0ZUZpcnN0SW5kZXhlc1Zpc2libGVJblBhZGRpbmdUb3BCb3R0b21BcmVhcygpOwpAQCAtNDEy
LDcgKzQyMCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGl0ZW1UZXh0ID0g
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnRleHRJbmRlbnRl
ZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVt
ZW50PigqbGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1M
T3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwotICAg
IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsKKyAgICBpdGVtVGV4
dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAnKTsKIAogICAgIENv
bG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCAmJiBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggOGFlYTczM2ViZmE2N2EyNmRkMGFm
Yzk3ZGEwM2Q5ZjA0N2FlNzEwZC4uMjRjZDMyM2NkZDA2MDE2MjFhMjUwZDFiODU2YTIyOTEyYzNl
OGMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgp
CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1Mg
dGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11
c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVyU3R5bGUuc2V0
VGV4dEFsaWduKExFRlQpOwotICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1
dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKICAg
ICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRl
bUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGk7
CiAgICAgICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVjdGVkT3B0aW9uQ291bnQoKnRoaXMpICE9
IDEpIHsKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25U
ZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZU
KSA/IFJUTCA6IExUUjsKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYg
bV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hU
X1RPX0xFRlQpID8gUlRMIDogTFRSOwogICAgICAgICAgICAgdW5pY29kZUJpZGkgPSBVQk5vcm1h
bDsKICAgICAgICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlKSB7CiAgICAgICAgICAgICBkaXJl
Y3Rpb24gPSBtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKLSAgICAgICAg
YXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7CisgICAgICAgIHRleHQgPSBh
cHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKICAgICAgICAgaWYgKHRoZW1l
KCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSkgewogICAgICAgICAgICAgLy8gQWRk
IGluIHRoZSBvcHRpb24ncyB0ZXh0IGluZGVudC4gIFdlIGNhbid0IGNhbGN1bGF0ZSBwZXJjZW50
YWdlIHZhbHVlcyBmb3Igbm93LgogICAgICAgICAgICAgZmxvYXQgb3B0aW9uV2lkdGggPSAwOwpA
QCAtNDQ2LDE5ICs0NDYsMTggQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZl
T3B0aW9uKGludCBvcHRpb25JbmRleCkKIAogU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4
dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxFbGVt
ZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKKyAgICBhdXRv
JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJ
bmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBTdHJpbmcgaXRlbVN0cmluZzsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xp
c3RJbmRleF07Ci0gICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KSkKLSAg
ICAgICAgaXRlbVN0cmluZyA9IGRvd25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCplbGVtZW50
KS5ncm91cExhYmVsVGV4dCgpOwotICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50Pigq
ZWxlbWVudCkpCi0gICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKLQotICAgIGFw
cGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwotICAgIHJldHVybiBp
dGVtU3RyaW5nOworICAgIGF1dG8mIGVsZW1lbnQgPSAqbGlzdEl0ZW1zW2xpc3RJbmRleF07Cisg
ICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICBpdGVtU3Ry
aW5nID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkuZ3JvdXBMYWJlbFRl
eHQoKTsKKyAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCisgICAg
ICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkudGV4
dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOworCisgICAgcmV0dXJuIGFwcGx5VGV4dFRy
YW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwogfQogCiBTdHJpbmcgUmVuZGVyTWVu
dUxpc3Q6Oml0ZW1MYWJlbCh1bnNpZ25lZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAppbmRleCBkMmNkZjQyNGQwNzYyZGZmMDJmOTJmZTA5YTQwMjkwNmQwOTky
MjFjLi42YWUwNDdjNDY5ZmU5Y2RhYmVmMjFjZGRjYWVjOTY3MzMyNWVkYTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24u
aCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTQ2
LDEzICs0NywxMyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNDEsMzIg
KzE0MiwzMiBAQCBzdGF0aWMgSGFzaE1hcDxjb25zdCBSZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5k
ZXJJbmxpbmU+PiYgaW5saW5lV3JhcHBlckZvckRpc3BsYQogICAgIHJldHVybiBtYXA7CiB9CiAK
LXZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKK1N0
cmluZyBjYXBpdGFsaXplKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBVQ2hhciBwcmV2aW91c0NoYXJh
Y3RlcikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJU
b1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCiAKLSAg
ICBpZiAoc3RyaW5nLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChzdHJpbmcu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdHJpbmc7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJpbmctPmxlbmd0aCgpOwotICAgIGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwgPSAq
c3RyaW5nLT5pbXBsKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGF1dG8mIHN0cmluZ0ltcGwgPSAqc3RyaW5nLmltcGwoKTsKIAogICAgIGlmIChsZW5ndGgg
Pj0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBDUkFTSCgp
OwogCiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzdHJpbmdXaXRoUHJldmlvdXMobGVuZ3RoICsg
MSk7Ci0gICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0gcHJldmlvdXMgPT0gbm9CcmVha1NwYWNl
ID8gJyAnIDogcHJldmlvdXM7CisgICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0gcHJldmlvdXND
aGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlID8gJyAnIDogcHJldmlvdXNDaGFyYWN0ZXI7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxlbmd0aCArIDE7IGkrKykgewotICAgICAgICAvLyBS
ZXBsYWNlICZuYnNwIHdpdGggYSByZWFsIHNwYWNlIHNpbmNlIElDVSBubyBsb25nZXIgdHJlYXRz
ICZuYnNwIGFzIGEgd29yZCBzZXBhcmF0b3IuCisgICAgICAgIC8vIFJlcGxhY2UgTk8gQlJFQUsg
U1BBQ0Ugd2l0aCBhIHJlYWwgc3BhY2Ugc2luY2UgSUNVIGRvZXMgbm90IHRyZWF0IGl0IGFzIGEg
d29yZCBzZXBhcmF0b3IuCiAgICAgICAgIGlmIChzdHJpbmdJbXBsW2kgLSAxXSA9PSBub0JyZWFr
U3BhY2UpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSAnICc7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHN0cmluZ1dpdGhQcmV2aW91c1tpXSA9IHN0cmluZ0ltcGxbaSAt
IDFdOwogICAgIH0KIAotICAgIFVCcmVha0l0ZXJhdG9yKiBib3VuZGFyeSA9IHdvcmRCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nV2l0aFByZXZpb3VzLmNoYXJhY3RlcnMoKSwgbGVuZ3Ro
ICsgMSkpOworICAgIGF1dG8qIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyhzdHJpbmdXaXRoUHJldmlvdXMuY2hhcmFjdGVycygpLCBsZW5ndGggKyAxKSk7CiAgICAgaWYg
KCFib3VuZGFyeSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RyaW5nOwogCiAg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5n
dGgpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3Ry
aW5nLCBVQ2hhciBwcmV2aW91cykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1w
bFtpIC0gMV0pOwogICAgIH0KIAotICAgICpzdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKIGlubGluZSBSZW5kZXJUZXh0OjpSZW5k
ZXJUZXh0KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTE4OCwyNCArMTg5LDE3
IEBAIGlubGluZSBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICAsIG1faGFzVGFiKGZhbHNlKQogICAgICwgbV9saW5lc0RpcnR5KGZhbHNl
KQogICAgICwgbV9jb250YWluc1JldmVyc2VkVGV4dChmYWxzZSkKLSAgICAsIG1faXNBbGxBU0NJ
SSh0ZXh0LmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgLCBtX2lzQWxsQVNDSUkodGV4dC5pbXBs
KCktPmlzQWxsQVNDSUkoKSkKICAgICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxs
YmFja0ZvbnRzKGZhbHNlKQogICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkK
ICAgICAsIG1fb3JpZ2luYWxUZXh0RGlmZmVyc0Zyb21SZW5kZXJlZChmYWxzZSkKICAgICAsIG1f
aGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyhmYWxzZSkKLSNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQotICAgICwgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKDApCi0jZW5k
aWYKLSAgICAsIG1fbWluV2lkdGgoLTEpCi0gICAgLCBtX21heFdpZHRoKC0xKQotICAgICwgbV9i
ZWdpbk1pbldpZHRoKDApCi0gICAgLCBtX2VuZE1pbldpZHRoKDApCiAgICAgLCBtX3RleHQodGV4
dCkKIHsKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgc2V0SXNUZXh0KCk7CiAg
ICAgbV9jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGggPSBjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENv
ZGVQYXRoKCk7Ci0gICAgdmlldygpLmZyYW1lVmlldygpLmluY3JlbWVudFZpc3VhbGx5Tm9uRW1w
dHlDaGFyYWN0ZXJDb3VudCh0ZXh0TGVuZ3RoKCkpOworICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5p
bmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5Q2hhcmFjdGVyQ291bnQodGV4dC5pbXBsKCktPmxlbmd0
aCgpKTsKIH0KIAogUmVuZGVyVGV4dDo6UmVuZGVyVGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0KQpAQCAtNDYwLDcgKzQ1NCw3IEBAIFBvc2l0aW9uIFJlbmRlclRleHQ6OnBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGlmIChzaW1wbGVM
aW5lTGF5b3V0KCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSBwYXJlbnQoKS0+bGFzdENo
aWxkKCkpIHsKICAgICAgICAgYXV0byBvZmZzZXQgPSBTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zm
c2V0Rm9yUG9pbnQocG9pbnQsICp0aGlzLCAqc2ltcGxlTGluZUxheW91dCgpKTsKICAgICAgICAg
Ly8gRGlkIG5vdCBmaW5kIGEgdmFsaWQgb2Zmc2V0LiBGYWxsIGJhY2sgdG8gdGhlIG5vcm1hbCBs
aW5lIGxheW91dCBiYXNlZCBQb3NpdGlvbi4KLSAgICAgICAgaWYgKG9mZnNldCA9PSB0ZXh0TGVu
Z3RoKCkpCisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dCgpLmxlbmd0aCgpKQogICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpLmRlZXBFcXVpdmFsZW50
KCk7CiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBQb3NpdGlvbih0ZXh0Tm9kZSgpLCBvZmZzZXQp
OwogICAgICAgICBBU1NFUlQocG9zaXRpb24gPT0gcG9zaXRpb25Gb3JQb2ludChwb2ludCwgbnVs
bHB0cikuZGVlcEVxdWl2YWxlbnQoKSk7CkBAIC00OTcsMTAgKzQ5MSw4IEBAIEFMV0FZU19JTkxJ
TkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYs
IHVuc2lnbmVkIHN0CiAgICAgICAgIGZsb2F0IG1vbm9zcGFjZUNoYXJhY3RlcldpZHRoID0gZi5z
cGFjZVdpZHRoKCk7CiAgICAgICAgIGZsb2F0IHcgPSAwOwogICAgICAgICBib29sIGlzU3BhY2U7
Ci0gICAgICAgIEFTU0VSVChtX3RleHQpOwotICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1f
dGV4dC5pbXBsKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0OyBpIDwgc3RhcnQg
KyBsZW47IGkrKykgewotICAgICAgICAgICAgY2hhciBjID0gdGV4dFtpXTsKKyAgICAgICAgICAg
IGNoYXIgYyA9IHRleHQoKVtpXTsKICAgICAgICAgICAgIGlmIChjIDw9ICcgJykgewogICAgICAg
ICAgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAg
ICAgdyArPSBtb25vc3BhY2VDaGFyYWN0ZXJXaWR0aDsKQEAgLTU0NCw0MSArNTM2LDMxIEBAIGlu
bGluZSBib29sIGlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZUVuZChVQ2hhciBjKQogCiBmbG9h
dCBSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFs
ZW4gfHwgaW5kZXggPj0gbGVuKQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgo
KTsKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFT
U0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKLSAg
ICAKLSAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRleHRbaW5kZXhd
KSkKKyAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZVN0YXJ0KHRleHQoKVtpbmRl
eF0pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250
Q2FzY2FkZSgpOwotICAgICAgICAKLSAgICByZXR1cm4gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaW5k
ZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7
CisgICAgcmV0dXJuIHdpZHRoRnJvbUNhY2hlKHN0eWxlLmZvbnRDYXNjYWRlKCksIGluZGV4LCAx
LCAwLCAwLCAwLCBzdHlsZSk7CiB9CiAKIGZsb2F0IFJlbmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1
YXRpb25FbmRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBsZW4g
PSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQorICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJ
bXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAKLSAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVh
dGlvbkF0TGluZUVuZCh0ZXh0W2luZGV4XSkpCisgICAgaWYgKCFpc0hhbmdhYmxlUHVuY3R1YXRp
b25BdExpbmVFbmQodGV4dCgpW2luZGV4XSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwotICAgIAotICAgIHJldHVybiB3
aWR0aEZyb21DYWNoZShmb250LCBpbmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOworCisgICAgYXV0
byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShzdHls
ZS5mb250Q2FzY2FkZSgpLCBpbmRleCwgMSwgMCwgMCwgMCwgc3R5bGUpOwogfQogCi1ib29sIFJl
bmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hhciBjKSBjb25zdAorYm9vbCBSZW5k
ZXJUZXh0Ojppc0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNoYXIgYykKIHsKICAgICByZXR1cm4gYyA9
PSAweDAwMkMgfHwgYyA9PSAweDAwMkUgfHwgYyA9PSAweDA2MEMgfHwgYyA9PSAweDA2RDQgfHwg
YyA9PSAweDMwMDEKICAgICAgICAgfHwgYyA9PSAweDMwMDIgfHwgYyA9PSAweEZGMEMgfHwgYyA9
PSAweEZGMEUgfHwgYyA9PSAweEZFNTAgfHwgYyA9PSAweEZFNTEKQEAgLTU4OSwxMyArNTcxLDEw
IEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFj
ZXMoKSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgQVNTRVJUKG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1w
bCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIAorCiAgICAgdW5zaWduZWQgaSA9IDA7Ci0g
ICAgZm9yICggOyBpIDwgdGV4dExlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRbaV0g
IT0gJyAnICYmICh0ZXh0W2ldICE9ICdcbicgfHwgc3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkg
JiYgdGV4dFtpXSAhPSAnXHQnKQorICAgIGZvciAodW5zaWduZWQgbGVuZ3RoID0gdGV4dCgpLmxl
bmd0aCgpIDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0KClbaV0gIT0gJyAn
ICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0
ZXh0KClbaV0gIT0gJ1x0JykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4g
aTsKQEAgLTYwMywxMTAgKzU4Miw5NyBAQCB1bnNpZ25lZCBSZW5kZXJUZXh0OjpmaXJzdENoYXJh
Y3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QKIAogdW5zaWduZWQgUmVuZGVyVGV4dDo6
bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIXRl
eHRMZW5ndGgoKSkKKyAgICBpZiAoIXRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBpZiAoIXN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCi0gICAgICAgIHJldHVy
biB0ZXh0TGVuZ3RoKCkgLSAxOwotICAgIAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmlu
Z0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKKyAgICAgICAgcmV0dXJuIHRleHQoKS5sZW5n
dGgoKSAtIDE7CiAgICAgCi0gICAgaW50IGkgPSB0ZXh0TGVuZ3RoKCkgLSAxOworICAgIGludCBp
ID0gdGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICBmb3IgKCA7IGkgID49IDA7IC0taSkgewotICAg
ICAgICBpZiAodGV4dFtpXSAhPSAnICcgJiYgKHRleHRbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnBy
ZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0W2ldICE9ICdcdCcpCisgICAgICAgIGlmICh0ZXh0KClb
aV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGlu
ZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICByZXR1cm4gaTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZldpZHRocyhmbG9h
dCBsZWFkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBi
ZWdpbk1pblcsIGJvb2wmIGJlZ2luV1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0JiBlbmRNaW5XLCBib29sJiBlbmRXUywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCYgaGFzQnJlYWthYmxlQ2hhciwgYm9vbCYgaGFzQnJlYWssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1heFcsIGZsb2F0JiBl
bmRNYXhXLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgbWluVywg
ZmxvYXQmIG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpCitSZW5kZXJUZXh0OjpXaWR0aHMg
UmVuZGVyVGV4dDo6dHJpbW1lZFByZWZlcnJlZFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIGJvb2wm
IHN0cmlwRnJvbnRTcGFjZXMpCiB7Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhp
cy0+c3R5bGUoKTsKKyAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgYm9vbCBj
b2xsYXBzZVdoaXRlU3BhY2UgPSBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKKwogICAgIGlm
ICghY29sbGFwc2VXaGl0ZVNwYWNlKQogICAgICAgICBzdHJpcEZyb250U3BhY2VzID0gZmFsc2U7
CiAKICAgICBpZiAobV9oYXNUYWIgfHwgcHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpCiAg
ICAgICAgIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGxlYWRXaWR0aCk7CiAKLSAgICBi
ZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOwotICAgIGVuZFdTID0g
bV9oYXNFbmRXUzsKKyAgICBXaWR0aHMgd2lkdGhzOwogCi0gICAgdW5zaWduZWQgbGVuID0gdGV4
dExlbmd0aCgpOworICAgIHdpZHRocy5iZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9o
YXNCZWdpbldTOworICAgIHdpZHRocy5lbmRXUyA9IG1faGFzRW5kV1M7CiAKLSAgICBpZiAoIWxl
biB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2Uo
KSkpIHsKLSAgICAgICAgYmVnaW5NaW5XID0gMDsKLSAgICAgICAgZW5kTWluVyA9IDA7Ci0gICAg
ICAgIGJlZ2luTWF4VyA9IDA7Ci0gICAgICAgIGVuZE1heFcgPSAwOwotICAgICAgICBtaW5XID0g
MDsKLSAgICAgICAgbWF4VyA9IDA7Ci0gICAgICAgIGhhc0JyZWFrID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAK
LSAgICBtaW5XID0gbV9taW5XaWR0aDsKLSAgICBtYXhXID0gbV9tYXhXaWR0aDsKKyAgICBpZiAo
IWxlbmd0aCB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0ZXh0KCkuaXNBbGxTcGVjaWFsQ2hhcmFj
dGVyczxpc0hUTUxTcGFjZT4oKSkpCisgICAgICAgIHJldHVybiB3aWR0aHM7CiAKLSAgICBiZWdp
bk1pblcgPSBtX2JlZ2luTWluV2lkdGg7Ci0gICAgZW5kTWluVyA9IG1fZW5kTWluV2lkdGg7Cisg
ICAgd2lkdGhzLm1pbiA9IG1fbWluV2lkdGg7CisgICAgd2lkdGhzLm1heCA9IG1fbWF4V2lkdGg7
CiAKLSAgICBoYXNCcmVha2FibGVDaGFyID0gbV9oYXNCcmVha2FibGVDaGFyOwotICAgIGhhc0Jy
ZWFrID0gbV9oYXNCcmVhazsKKyAgICB3aWR0aHMuYmVnaW5NaW4gPSBtX2JlZ2luTWluV2lkdGg7
CisgICAgd2lkdGhzLmVuZE1pbiA9IG1fZW5kTWluV2lkdGg7CiAKLSAgICBBU1NFUlQobV90ZXh0
KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgaWYgKHRleHRb
MF0gPT0gc3BhY2UgfHwgKHRleHRbMF0gPT0gbmV3bGluZUNoYXJhY3RlciAmJiAhc3R5bGUucHJl
c2VydmVOZXdsaW5lKCkpIHx8IHRleHRbMF0gPT0gJ1x0JykgewotICAgICAgICBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9y
ZXMgZmlyc3QtbGluZS4KLSAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsKLSAgICAgICAg
ICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKCZzcGFjZSwgMSwgc3R5bGUpKTsKLSAgICAgICAgICAgIG1heFcgLT0gc3BhY2VXaWR0
aDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtYXhXICs9IGZvbnQud29yZFNwYWNpbmco
KTsKKyAgICB3aWR0aHMuaGFzQnJlYWthYmxlQ2hhciA9IG1faGFzQnJlYWthYmxlQ2hhcjsKKyAg
ICB3aWR0aHMuaGFzQnJlYWsgPSBtX2hhc0JyZWFrOworCisgICAgaWYgKHRleHQoKVswXSA9PSAn
ICcgfHwgKHRleHQoKVswXSA9PSAnXG4nICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwg
dGV4dCgpWzBdID09ICdcdCcpIHsKKyAgICAgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNj
YWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KKyAgICAgICAgaWYgKHN0
cmlwRnJvbnRTcGFjZXMpCisgICAgICAgICAgICB3aWR0aHMubWF4IC09IGZvbnQud2lkdGgoUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBzdHlsZSkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB3aWR0aHMubWF4ICs9IGZvbnQud29yZFNwYWNpbmcoKTsKICAgICB9
CiAKICAgICBzdHJpcEZyb250U3BhY2VzID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIG1faGFzRW5k
V1M7CiAKLSAgICBpZiAoIXN0eWxlLmF1dG9XcmFwKCkgfHwgbWluVyA+IG1heFcpCi0gICAgICAg
IG1pblcgPSBtYXhXOworICAgIGlmICghc3R5bGUuYXV0b1dyYXAoKSB8fCB3aWR0aHMubWluID4g
d2lkdGhzLm1heCkKKyAgICAgICAgd2lkdGhzLm1pbiA9IHdpZHRocy5tYXg7CiAKICAgICAvLyBD
b21wdXRlIG91ciBtYXggd2lkdGhzIGJ5IHNjYW5uaW5nIHRoZSBzdHJpbmcgZm9yIG5ld2xpbmVz
LgotICAgIGlmIChoYXNCcmVhaykgewotICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZiA9IHN0
eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KKyAg
ICBpZiAod2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAgIGF1dG8mIGZvbnQgPSBzdHlsZS5mb250
Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUuCiAgICAgICAgIGJv
b2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICAgICAgYmVnaW5NYXhXID0gbWF4VzsKLSAgICAgICAg
ZW5kTWF4VyA9IG1heFc7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47IGkr
KykgewotICAgICAgICAgICAgdW5zaWduZWQgbGluZWxlbiA9IDA7Ci0gICAgICAgICAgICB3aGls
ZSAoaSArIGxpbmVsZW4gPCBsZW4gJiYgdGV4dFtpICsgbGluZWxlbl0gIT0gJ1xuJykKLSAgICAg
ICAgICAgICAgICBsaW5lbGVuKys7Ci0KLSAgICAgICAgICAgIGlmIChsaW5lbGVuKSB7Ci0gICAg
ICAgICAgICAgICAgZW5kTWF4VyA9IHdpZHRoRnJvbUNhY2hlKGYsIGksIGxpbmVsZW4sIGxlYWRX
aWR0aCArIGVuZE1heFcsIDAsIDAsIHN0eWxlKTsKKyAgICAgICAgd2lkdGhzLmJlZ2luTWF4ID0g
d2lkdGhzLm1heDsKKyAgICAgICAgd2lkdGhzLmVuZE1heCA9IHdpZHRocy5tYXg7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdW5z
aWduZWQgbGluZUxlbmd0aCA9IDA7CisgICAgICAgICAgICB3aGlsZSAoaSArIGxpbmVMZW5ndGgg
PCBsZW5ndGggJiYgdGV4dCgpW2kgKyBsaW5lTGVuZ3RoXSAhPSAnXG4nKQorICAgICAgICAgICAg
ICAgIGxpbmVMZW5ndGgrKzsKKworICAgICAgICAgICAgaWYgKGxpbmVMZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICB3aWR0aHMuZW5kTWF4ID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSwgbGluZUxl
bmd0aCwgbGVhZFdpZHRoICsgd2lkdGhzLmVuZE1heCwgMCwgMCwgc3R5bGUpOwogICAgICAgICAg
ICAgICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGxlYWRXaWR0aCA9IDA7Ci0gICAgICAgICAgICAg
ICAgICAgIGJlZ2luTWF4VyA9IGVuZE1heFc7CisgICAgICAgICAgICAgICAgICAgIHdpZHRocy5i
ZWdpbk1heCA9IHdpZHRocy5lbmRNYXg7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGkgKz0gbGluZWxlbjsKKyAgICAgICAgICAgICAgICBpICs9IGxpbmVMZW5ndGg7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGZpcnN0TGluZSkgewotICAgICAgICAgICAgICAgIGJlZ2luTWF4
VyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4ID0gMDsKICAgICAgICAgICAg
ICAgICBmaXJzdExpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBsZWFkV2lkdGggPSAwOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaSA9PSBsZW4gLSAxKQorICAgICAgICAg
ICAgaWYgKGkgPT0gbGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgIC8vIEEgPHByZT4gcnVu
IHRoYXQgZW5kcyB3aXRoIGEgbmV3bGluZSwgYXMgaW4sIGUuZy4sCiAgICAgICAgICAgICAgICAg
Ly8gPHByZT5Tb21lIHRleHRcblxuPHNwYW4+TW9yZSB0ZXh0PC9wcmU+Ci0gICAgICAgICAgICAg
ICAgZW5kTWF4VyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGhzLmVuZE1heCA9IDA7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gd2lkdGhzOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoVUNoYXIgYywgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtODIwLDEyICs3ODYsMTMgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgRm8KICAgICBtX2hhc0JlZ2luV1MgPSBmYWxzZTsKICAgICBtX2hhc0VuZFdTID0gZmFs
c2U7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAg
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8gRklYTUU6
IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgorICAgIGF1dG8mIHN0eWxlID0gdGhpcy0+c3R5bGUo
KTsKKyAgICBhdXRvJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsgLy8gRklYTUU6IFRoaXMg
aWdub3JlcyBmaXJzdC1saW5lLgogICAgIGZsb2F0IHdvcmRTcGFjaW5nID0gZm9udC53b3JkU3Bh
Y2luZygpOwotICAgIHVuc2lnbmVkIGxlbiA9IHRleHRMZW5ndGgoKTsKKyAgICBhdXRvJiBzdHJp
bmcgPSB0ZXh0KCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAg
IGF1dG8gaXRlcmF0b3JNb2RlID0gbWFwTGluZUJyZWFrVG9JdGVyYXRvck1vZGUoc3R5bGUubGlu
ZUJyZWFrKCkpOwotICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0ZXJhdG9yKG1fdGV4
dCwgc3R5bGUubG9jYWxlKCksIGl0ZXJhdG9yTW9kZSk7CisgICAgTGF6eUxpbmVCcmVha0l0ZXJh
dG9yIGJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBzdHlsZS5sb2NhbGUoKSwgaXRlcmF0b3JNb2RlKTsK
ICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKICAgICBib29sIGlnbm9yaW5nU3Bh
Y2VzID0gZmFsc2U7CiAgICAgYm9vbCBpc1NwYWNlID0gZmFsc2U7CkBAIC04NjIsOCArODI5LDgg
QEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBs
ZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBib29sIGtlZXBBbGxXb3JkcyA9IHN0eWxl
LndvcmRCcmVhaygpID09IEtlZXBBbGxXb3JkQnJlYWs7CiAgICAgYm9vbCBjYW5Vc2VMaW5lQnJl
YWtTaG9ydGN1dCA9IGl0ZXJhdG9yTW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1
bHQ7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg
VUNoYXIgYyA9IHVuY2hlY2tlZENoYXJhY3RlckF0KGkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBVQ2hhciBjID0gc3RyaW5nW2ldOwogCiAg
ICAgICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlID0gaXNTcGFjZTsKIApAQCAtODg2
LDcgKzg1Myw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAgICAgaWYgKChpc1Nw
YWNlIHx8IGlzTmV3bGluZSkgJiYgIWkpCiAgICAgICAgICAgICBtX2hhc0JlZ2luV1MgPSB0cnVl
OwotICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNOZXdsaW5lKSAmJiBpID09IGxlbiAtIDEpCisg
ICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc05ld2xpbmUpICYmIGkgPT0gbGVuZ3RoIC0gMSkKICAg
ICAgICAgICAgIG1faGFzRW5kV1MgPSB0cnVlOwogCiAgICAgICAgIGlnbm9yaW5nU3BhY2VzIHw9
IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpICYmIHByZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSAm
JiBpc1NwYWNlOwpAQCAtOTExLDkgKzg3OCw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAg
ICAgICAgIHVuc2lnbmVkIGogPSBpOwogICAgICAgICB3aGlsZSAoYyAhPSAnXG4nICYmICFpc1Nw
YWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYgYyAhPSAnXHQnICYmIChjICE9IHNvZnRI
eXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNOb25lKSkgewogICAgICAgICAgICAg
aisrOwotICAgICAgICAgICAgaWYgKGogPT0gbGVuKQorICAgICAgICAgICAgaWYgKGogPT0gbGVu
Z3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYyA9IHVuY2hlY2tlZENo
YXJhY3RlckF0KGopOworICAgICAgICAgICAgYyA9IHN0cmluZ1tqXTsKICAgICAgICAgICAgIGlm
IChpc0JyZWFrYWJsZShicmVha0l0ZXJhdG9yLCBqLCBuZXh0QnJlYWthYmxlLCBicmVha05CU1As
IGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpICYmIGNoYXJhY3RlckF0KGog
LSAxKSAhPSBzb2Z0SHlwaGVuKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
aWYgKGJyZWFrQWxsKSB7CkBAIC05MjUsNyArODkyLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3Qg
Rm8KICAgICAgICAgdW5zaWduZWQgd29yZExlbiA9IGogLSBpOwogICAgICAgICBpZiAod29yZExl
bikgewogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldpZHRoID0gMDsKLSAgICAgICAgICAgIGJv
b2wgaXNTcGFjZSA9IChqIDwgbGVuKSAmJiBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHls
ZSk7CisgICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbmd0aCkgJiYgaXNTcGFjZUFj
Y29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOwogICAgICAgICAgICAgZmxvYXQgdzsKICAgICAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CiAgICAgICAg
ICAgICBpZiAoaXNTcGFjZSkKQEAgLTk0MCw3ICs5MDcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25z
dCBGbwogCiAgICAgICAgICAgICBpZiAodyA+IG1heFdvcmRXaWR0aCkgewogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHN1ZmZpeFN0YXJ0OwotICAgICAgICAgICAgICAgIGZsb2F0IG1heEZyYWdt
ZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgqdGhpcywgc3R5bGUsIGZvbnQsIFN0cmlu
Z1ZpZXcobV90ZXh0KS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgs
IG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92
ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBmbG9hdCBtYXhGcmFnbWVudFdpZHRoID0gbWF4V29y
ZEZyYWdtZW50V2lkdGgoKnRoaXMsIHN0eWxlLCBmb250LCBTdHJpbmdWaWV3KHN0cmluZykuc3Vi
c3RyaW5nKGksIHdvcmRMZW4pLCBtaW5pbXVtUHJlZml4TGVuZ3RoLCBtaW5pbXVtU3VmZml4TGVu
Z3RoLCBzdWZmaXhTdGFydCwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
c3VmZml4V2lkdGg7CkBAIC05NzMsMTMgKzk0MCwxMyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBG
bwogICAgICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRhcnkgPSBqOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBib29sIGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlID0gKGogPCBsZW4pICYm
IHN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGMpOwotICAgICAgICAgICAgaWYgKGogPCBs
ZW4gJiYgc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAgICAgICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdo
aXRlU3BhY2UgPSAoaiA8IGxlbmd0aCkgJiYgc3R5bGUuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2Uo
Yyk7CisgICAgICAgICAgICBpZiAoaiA8IGxlbmd0aCAmJiBzdHlsZS5hdXRvV3JhcCgpKQogICAg
ICAgICAgICAgICAgIG1faGFzQnJlYWthYmxlQ2hhciA9IHRydWU7CiAKICAgICAgICAgICAgIC8v
IEFkZCBpbiB3b3JkU3BhY2luZyB0byBvdXIgY3Vyck1heFdpZHRoLCBidXQgbm90IGlmIHRoaXMg
aXMgdGhlIGxhc3Qgd29yZCBvbiBhIGxpbmUgb3IgdGhlCiAgICAgICAgICAgICAvLyBsYXN0IHdv
cmQgaW4gdGhlIHJ1bi4KLSAgICAgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc0NvbGxhcHNpYmxl
V2hpdGVTcGFjZSkgJiYgIWNvbnRhaW5zT25seVdoaXRlc3BhY2UoaiwgbGVuLWopKQorICAgICAg
ICAgICAgaWYgKChpc1NwYWNlIHx8IGlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKSAmJiAhY29udGFp
bnNPbmx5SFRNTFdoaXRlc3BhY2UoaiwgbGVuZ3RoIC0gaikpCiAgICAgICAgICAgICAgICAgY3Vy
ck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwogCiAgICAgICAgICAgICBpZiAoZmlyc3RXb3JkKSB7
CkBAIC0xMDIwLDcgKzk4Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAgICAg
ICAgICAgICBjdXJyTWF4V2lkdGggKz0gZm9udC53aWR0aChydW4sICZmYWxsYmFja0ZvbnRzKTsK
ICAgICAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LnJpZ2h0ID0gMDsKLSAgICAgICAgICAgICAg
ICBuZWVkc1dvcmRTcGFjaW5nID0gaXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNl
ICYmIGkgPT0gbGVuIC0gMTsKKyAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gaXNT
cGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGkgPT0gbGVuZ3RoIC0gMTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChsYXN0V29yZEJvdW5kYXJ5ID09IGkpOwog
ICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSsrOwpAQCAtMTAyOSw3ICs5OTYsNyBAQCB2b2lk
IFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0
aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlw
aExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93LmxlZnQpOwogCi0gICAgaWYgKChu
ZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25vcmluZ1NwYWNlcyAmJiAhZmlyc3RX
b3JkKSkKKyAgICBpZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuZ3RoID4gMSkgfHwgKGlnbm9y
aW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNw
YWNpbmc7CiAKICAgICBtX21heFdpZHRoID0gc3RkOjptYXgoY3Vyck1heFdpZHRoLCBtX21heFdp
ZHRoKTsKQEAgLTEwNDYsMzMgKzEwMTMsMzkgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAg
ICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQogCi1ib29sIFJlbmRl
clRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FsbENvbGxhcHNpYmxlV2hp
dGVzcGFjZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHRMZW5ndGgoKTsK
LSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNw
YWNlKGNoYXJhY3RlcnM4KClbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFzdHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVT
cGFjZShjaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVyVGV4dDo6aXNBbGxDb2xsYXBzaWJsZVdo
aXRlc3BhY2UoKSBjb25zdAoreworICAgIGlmICh0ZXh0KCkuaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjppc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZSh0ZXh0KCkuY2hhcmFjdGVy
czgoKSwgdGV4dCgpLmxlbmd0aCgpLCBzdHlsZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aXNB
bGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnMxNigpLCB0ZXh0KCkubGVu
Z3RoKCksIHN0eWxlKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hpdGVzcGFjZShjb25z
dCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghc3R5bGUu
aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoY2hhcmFjdGVyczE2KClbaV0pKQorICAgICAgICBpZiAo
IShjaGFyYWN0ZXJzW2ldID09ICdcbicgfHwgY2hhcmFjdGVyc1tpXSA9PSAnICcgfHwgY2hhcmFj
dGVyc1tpXSA9PSAnXHQnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9Ci0gICAgCi1ib29sIFJlbmRlclRleHQ6OmNvbnRhaW5zT25seVdoaXRl
c3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSBjb25zdAorCitib29sIFJlbmRlclRl
eHQ6OmNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxl
bmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0
ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgdW5zaWduZWQgY3VyclBvczsKLSAgICBmb3IgKGN1cnJQ
b3MgPSBmcm9tOwotICAgICAgICAgY3VyclBvcyA8IGZyb20gKyBsZW4gJiYgKHRleHRbY3VyclBv
c10gPT0gJ1xuJyB8fCB0ZXh0W2N1cnJQb3NdID09ICcgJyB8fCB0ZXh0W2N1cnJQb3NdID09ICdc
dCcpOwotICAgICAgICAgY3VyclBvcysrKSB7IH0KLSAgICByZXR1cm4gY3VyclBvcyA+PSAoZnJv
bSArIGxlbik7CisgICAgQVNTRVJUKGZyb20gPD0gdGV4dCgpLmxlbmd0aCgpKTsKKyAgICBBU1NF
UlQobGVuZ3RoIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGZyb20gKyBsZW5ndGgg
PD0gdGV4dCgpLmxlbmd0aCgpKTsKKyAgICBpZiAodGV4dCgpLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hpdGVzcGFjZSh0ZXh0KCkuY2hhcmFjdGVy
czgoKSArIGZyb20sIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzQWxsUG9zc2libHlDb2xsYXBzaWJs
ZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnMxNigpICsgZnJvbSwgbGVuZ3RoKTsKIH0KIAog
VmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+PiBSZW5kZXJUZXh0OjpkcmFnZ2Vk
Q29udGVudFJhbmdlc0JldHdlZW5PZmZzZXRzKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpIGNvbnN0CkBAIC0xMTIzLDQ0ICsxMDk2LDM2IEBAIHZvaWQgUmVuZGVyVGV4
dDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgICAgIGNvbnRh
aW5pbmdCbG9jay0+c2V0U2VsZWN0aW9uU3RhdGUoc3RhdGUpOwogfQogCi12b2lkIFJlbmRlclRl
eHQ6OnNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9yY2UpCit2b2lkIFJlbmRlclRleHQ6OnNldFRleHRXaXRo
T2Zmc2V0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIGJvb2wgZm9yY2UpCiB7Ci0gICAgaWYgKCFmb3JjZSAmJiBtX3RleHQgPT0gdGV4dCkK
KyAgICBpZiAoIWZvcmNlICYmIHRleHQoKSA9PSBuZXdUZXh0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbnQgZGVsdGEgPSB0ZXh0Lmxlbmd0aCgpIC0gdGV4dExlbmd0aCgpOwotICAgIHVuc2ln
bmVkIGVuZCA9IGxlbiA/IG9mZnNldCArIGxlbiAtIDEgOiBvZmZzZXQ7CisgICAgaW50IGRlbHRh
ID0gbmV3VGV4dC5sZW5ndGgoKSAtIHRleHQoKS5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBlbmQg
PSBsZW5ndGggPyBvZmZzZXQgKyBsZW5ndGggLSAxIDogb2Zmc2V0OwogCiAgICAgbV9saW5lc0Rp
cnR5ID0gc2ltcGxlTGluZUxheW91dCgpIHx8IG1fbGluZUJveGVzLmRpcnR5UmFuZ2UoKnRoaXMs
IG9mZnNldCwgZW5kLCBkZWx0YSk7CiAKLSAgICBzZXRUZXh0KHRleHQsIGZvcmNlIHx8IG1fbGlu
ZXNEaXJ0eSk7CisgICAgc2V0VGV4dChuZXdUZXh0LCBmb3JjZSB8fCBtX2xpbmVzRGlydHkpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbmxpbmVGbG93T3JFbXB0eVRleHQoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJl
cikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nSW1wbCogdGV4dCA9IGRvd25j
YXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCk7Ci0gICAgaWYgKCF0ZXh0KQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIXRleHQtPmxlbmd0aCgpOworICAgIHJldHVybiBp
czxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSB8fCAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYm
IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCkuaXNFbXB0eSgpKTsKIH0KIAog
VUNoYXIgUmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0ZXIoKSBjb25zdAogewogICAgIC8vIGZp
bmQgcHJldmlvdXMgdGV4dCByZW5kZXJlciBpZiBvbmUgZXhpc3RzCiAgICAgY29uc3QgUmVuZGVy
T2JqZWN0KiBwcmV2aW91c1RleHQgPSB0aGlzOwotICAgIHdoaWxlICgocHJldmlvdXNUZXh0ID0g
cHJldmlvdXNUZXh0LT5wcmV2aW91c0luUHJlT3JkZXIoKSkpCisgICAgd2hpbGUgKChwcmV2aW91
c1RleHQgPSBwcmV2aW91c1RleHQtPnByZXZpb3VzSW5QcmVPcmRlcigpKSkgewogICAgICAgICBp
ZiAoIWlzSW5saW5lRmxvd09yRW1wdHlUZXh0KCpwcmV2aW91c1RleHQpKQogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgVUNoYXIgcHJldiA9ICcgJzsKLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocHJl
dmlvdXNUZXh0KSkgewotICAgICAgICBpZiAoU3RyaW5nSW1wbCogcHJldmlvdXNTdHJpbmcgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PigqcHJldmlvdXNUZXh0KS50ZXh0KCkpCi0gICAgICAgICAgICBw
cmV2ID0gKCpwcmV2aW91c1N0cmluZylbcHJldmlvdXNTdHJpbmctPmxlbmd0aCgpIC0gMV07CiAg
ICAgfQotICAgIHJldHVybiBwcmV2OworICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocHJldmlvdXNU
ZXh0KSkKKyAgICAgICAgcmV0dXJuICcgJzsKKyAgICBhdXRvJiBwcmV2aW91c1N0cmluZyA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KCpwcmV2aW91c1RleHQpLnRleHQoKTsKKyAgICByZXR1cm4gcHJl
dmlvdXNTdHJpbmdbcHJldmlvdXNTdHJpbmcubGVuZ3RoKCkgLSAxXTsKIH0KIAogTGF5b3V0VW5p
dCBSZW5kZXJUZXh0Ojp0b3BPZkZpcnN0VGV4dCgpIGNvbnN0CkBAIC0xMTY4LDM3ICsxMTMzLDM0
IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZGaXJzdFRleHQoKSBjb25zdAogICAgIHJl
dHVybiBmaXJzdFRleHRCb3goKS0+cm9vdCgpLmxpbmVUb3AoKTsKIH0KIAotdm9pZCBhcHBseVRl
eHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmcmIHRleHQsIFVDaGFy
IHByZXZpb3VzQ2hhcmFjdGVyKQorU3RyaW5nIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVUNoYXIgcHJldmlvdXNDaGFyYWN0
ZXIpCiB7CiAgICAgc3dpdGNoIChzdHlsZS50ZXh0VHJhbnNmb3JtKCkpIHsKICAgICBjYXNlIFRU
Tk9ORToKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0ZXh0OwogICAgIGNhc2UgQ0FQ
SVRBTElaRToKLSAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZ0ZXh0LCBwcmV2aW91c0NoYXJhY3Rl
cik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY2FwaXRhbGl6ZSh0ZXh0LCBwcmV2
aW91c0NoYXJhY3Rlcik7IC8vIEZJWE1FOiBOZWVkIHRvIHRha2UgbG9jYWxlIGludG8gYWNjb3Vu
dC4KICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAgdGV4dCA9IHRleHQuY29udmVydFRvVXBw
ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgp
KTsKICAgICBjYXNlIExPV0VSQ0FTRToKLSAgICAgICAgdGV4dCA9IHRleHQuY29udmVydFRvTG93
ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdGV4dC5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgp
KTsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHRleHQ7CiB9
CiAKLXZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
K3ZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkK
IHsKLSAgICBBU1NFUlQoIXRleHQuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbmV3VGV4dC5pc051
bGwoKSk7CiAKICAgICBTdHJpbmcgb3JpZ2luYWxUZXh0ID0gdGhpcy0+b3JpZ2luYWxUZXh0KCk7
CiAKLSAgICBtX3RleHQgPSB0ZXh0OworICAgIG1fdGV4dCA9IG5ld1RleHQ7CiAKICAgICBpZiAo
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCkKICAgICAgICAgbV90ZXh0LnJlcGxhY2UoJ1xcJywg
eWVuU2lnbik7CiAKLSAgICBBU1NFUlQobV90ZXh0KTsKLQotICAgIGFwcGx5VGV4dFRyYW5zZm9y
bShzdHlsZSgpLCBtX3RleHQsIHByZXZpb3VzQ2hhcmFjdGVyKCkpOworICAgIG1fdGV4dCA9IGFw
cGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBtX3RleHQsIHByZXZpb3VzQ2hhcmFjdGVyKCkpOwog
CiAgICAgc3dpdGNoIChzdHlsZSgpLnRleHRTZWN1cml0eSgpKSB7CiAgICAgY2FzZSBUU05PTkU6
CkBAIC0xMjI1LDkgKzExODcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAjZW5kaWYKICAgICB9CiAKLSAgICBBU1NFUlQoIW1fdGV4dC5p
c051bGwoKSk7Ci0KLSAgICBtX2lzQWxsQVNDSUkgPSBtX3RleHQuY29udGFpbnNPbmx5QVNDSUko
KTsKKyAgICBtX2lzQWxsQVNDSUkgPSB0ZXh0KCkuaXNBbGxBU0NJSSgpOwogICAgIG1fY2FuVXNl
U2ltcGxlRm9udENvZGVQYXRoID0gY29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpOwog
ICAgIG1fY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgPSBjb21wdXRlQ2FuVXNlU2ltcGxp
ZmllZFRleHRNZWFzdXJpbmcoKTsKICAgICAKQEAgLTEyNDgsNyArMTIwOCw3IEBAIHZvaWQgUmVu
ZGVyVGV4dDo6c2VjdXJlVGV4dChVQ2hhciBtYXNraW5nQ2hhcmFjdGVyKQogICAgIC8vIG9mIHRo
ZSBjaGFyYWN0ZXJzIGFyZSBzdXJyb2dhdGUgcGFpcnMgb3IgY29tYmluaW5nIG1hcmtzLiBUaHVz
LCB0aGlzIGZ1bmN0aW9uCiAgICAgLy8gZG9lcyBub3QgYXR0ZW1wdCB0byBoYW5kbGUgZWl0aGVy
IG9mIHRob3NlLgogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dExlbmd0aCgpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMjYwLDcgKzEyMjAsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnNlY3Vy
ZVRleHQoVUNoYXIgbWFza2luZ0NoYXJhY3RlcikKICAgICAgICAgLy8gSWYgaXQncyBjYWxsZWQg
YSBzZWNvbmQgdGltZSB3ZSBhc3N1bWUgdGhlIHRleHQgaXMgZGlmZmVyZW50IGFuZCBhIGNoYXJh
Y3RlciBzaG91bGQgbm90IGJlIHJldmVhbGVkLgogICAgICAgICByZXZlYWxlZENoYXJhY3RlcnNP
ZmZzZXQgPSB0aW1lci0+dGFrZU9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKCk7CiAgICAg
ICAgIGlmIChyZXZlYWxlZENoYXJhY3RlcnNPZmZzZXQgJiYgcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zm
c2V0IDw9IGxlbmd0aCkKLSAgICAgICAgICAgIGNoYXJhY3RlclRvUmV2ZWFsID0gbV90ZXh0Wy0t
cmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0XTsKKyAgICAgICAgICAgIGNoYXJhY3RlclRvUmV2ZWFs
ID0gdGV4dCgpWy0tcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0XTsKICAgICB9CiAKICAgICBVQ2hh
ciogY2hhcmFjdGVyczsKQEAgLTEyODIsMTQgKzEyNDIsMTQgQEAgYm9vbCBSZW5kZXJUZXh0Ojpj
b21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBmb250IGNvZGVwYXRo
LgotICAgIFRleHRSdW4gcnVuKG1fdGV4dCk7CisgICAgVGV4dFJ1biBydW4odGV4dCgpKTsKICAg
ICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGZhbHNlKTsKICAgICBpZiAoZm9udC5j
b2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8gd2hpdGVzcGFjZUlzQ29sbGFwc2VkID0gc3R5bGUoKS5jb2xsYXBzZVdo
aXRlU3BhY2UoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0Lmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgaWYgKCghd2hpdGVzcGFjZUlzQ29sbGFwc2VkICYmIG1fdGV4dFtp
XSA9PSAnXHQnKSB8fCBtX3RleHRbaV0gPT0gbm9CcmVha1NwYWNlIHx8IG1fdGV4dFtpXSA+PSBI
aXJhZ2FuYUxldHRlclNtYWxsQSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dCgp
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCghd2hpdGVzcGFjZUlzQ29sbGFwc2VkICYm
IHRleHQoKVtpXSA9PSAnXHQnKSB8fCB0ZXh0KClbaV0gPT0gbm9CcmVha1NwYWNlIHx8IHRleHQo
KVtpXSA+PSBIaXJhZ2FuYUxldHRlclNtYWxsQSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzI0LDEwICsxMjg0LDcgQEAgU3RyaW5nIFJl
bmRlclRleHQ6OnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgfHwgc3R5bGUoKS50ZXh0
U2VjdXJpdHkoKSAhPSBUU05PTkUpCiAgICAgICAgIHJldHVybiB0ZXh0KCk7Ci0KLSAgICBTdHJp
bmcgdGV4dCA9IG9yaWdpbmFsVGV4dCgpOwotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgp
LCB0ZXh0LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKLSAgICByZXR1cm4gdGV4dDsKKyAgICByZXR1
cm4gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIG9yaWdpbmFsVGV4dCgpLCBwcmV2aW91c0No
YXJhY3RlcigpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1
bGxMYXlvdXQpCkBAIC0xMzY3LDExICsxMzI0LDExIEBAIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6
OkxheW91dCogUmVuZGVyVGV4dDo6c2ltcGxlTGluZUxheW91dCgpIGNvbnN0CiAKIGZsb2F0IFJl
bmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgZmxvYXQgeFBvcywg
Ym9vbCBmaXJzdExpbmUsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlw
aE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewotICAgIGlmIChmcm9tID49IHRleHRM
ZW5ndGgoKSkKKyAgICBpZiAoZnJvbSA+PSB0ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgaWYgKGZyb20gKyBsZW4gPiB0ZXh0TGVuZ3RoKCkpCi0gICAgICAgIGxlbiA9
IHRleHRMZW5ndGgoKSAtIGZyb207CisgICAgaWYgKGZyb20gKyBsZW4gPiB0ZXh0KCkubGVuZ3Ro
KCkpCisgICAgICAgIGxlbiA9IHRleHQoKS5sZW5ndGgoKSAtIGZyb207CiAKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgbGluZVN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0
eWxlKCk7CiAgICAgcmV0dXJuIHdpZHRoKGZyb20sIGxlbiwgbGluZVN0eWxlLmZvbnRDYXNjYWRl
KCksIHhQb3MsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwpAQCAtMTM3OSwxNCArMTMz
NiwxNCBAQCBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBs
ZW4sIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lLAogCiBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0
aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmLCBmbG9h
dCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxv
dyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKLSAgICBBU1NFUlQoZnJvbSArIGxlbiA8PSB0ZXh0
TGVuZ3RoKCkpOwotICAgIGlmICghdGV4dExlbmd0aCgpKQorICAgIEFTU0VSVChmcm9tICsgbGVu
IDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgaWYgKCF0ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUo
KTsKICAgICBmbG9hdCB3OwogICAgIGlmICgmZiA9PSAmc3R5bGUuZm9udENhc2NhZGUoKSkgewot
ICAgICAgICBpZiAoIXN0eWxlLnByZXNlcnZlTmV3bGluZSgpICYmICFmcm9tICYmIGxlbiA9PSB0
ZXh0TGVuZ3RoKCkgJiYgKCFnbHlwaE92ZXJmbG93IHx8ICFnbHlwaE92ZXJmbG93LT5jb21wdXRl
Qm91bmRzKSkgeworICAgICAgICBpZiAoIXN0eWxlLnByZXNlcnZlTmV3bGluZSgpICYmICFmcm9t
ICYmIGxlbiA9PSB0ZXh0KCkubGVuZ3RoKCkgJiYgKCFnbHlwaE92ZXJmbG93IHx8ICFnbHlwaE92
ZXJmbG93LT5jb21wdXRlQm91bmRzKSkgewogICAgICAgICAgICAgaWYgKGZhbGxiYWNrRm9udHMp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2x5cGhPdmVyZmxvdyk7CiAgICAgICAgICAgICAg
ICAgaWYgKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSgpIHx8ICFtX2tub3duVG9IYXZlTm9P
dmVyZmxvd0FuZE5vRmFsbGJhY2tGb250cykgewpAQCAtMTQ1OCwxMiArMTQxNSwxMiBAQCBMYXlv
dXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyhjb25z
dCBSZW5kZXJMYXllck1vZGVsTwogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlv
bkluc2lkZSkgewogICAgICAgICAvLyBXZSBhcmUgZnVsbHkgc2VsZWN0ZWQuCiAgICAgICAgIHN0
YXJ0UG9zID0gMDsKLSAgICAgICAgZW5kUG9zID0gdGV4dExlbmd0aCgpOworICAgICAgICBlbmRQ
b3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhcnRQb3MgPSB2
aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwogICAgICAgICBlbmRQb3MgPSB2aWV3
KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXRl
KCkgPT0gU2VsZWN0aW9uU3RhcnQpCi0gICAgICAgICAgICBlbmRQb3MgPSB0ZXh0TGVuZ3RoKCk7
CisgICAgICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGVsc2UgaWYg
KHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uRW5kKQogICAgICAgICAgICAgc3RhcnRQb3Mg
PSAwOwogICAgIH0KQEAgLTE1MzksMzUgKzE0OTYsMzMgQEAgYm9vbCBSZW5kZXJUZXh0OjpoYXNS
ZW5kZXJlZFRleHQoKSBjb25zdAogCiBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQoaW50
IGN1cnJlbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQWxsQVNDSUkoKSB8fCBtX3RleHQuaXM4Qml0
KCkpCisgICAgaWYgKG1faXNBbGxBU0NJSSB8fCB0ZXh0KCkuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiBjdXJyZW50IC0gMTsKIAotICAgIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9y
KG1fdGV4dCwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6OkNhcmV0LCBudWxsQXRvbSgpKTsKKyAg
ICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJh
dG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNl
ZGluZyhjdXJyZW50KS52YWx1ZV9vcihjdXJyZW50IC0gMSk7CiB9CiAKIGludCBSZW5kZXJUZXh0
OjpwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKCFtX3RleHQuaXNOdWxsKCkpOwotCi0gICAgQ2FjaGVkVGV4dEJyZWFrSXRl
cmF0b3IgaXRlcmF0b3IobV90ZXh0LCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6RGVsZXRlLCBu
dWxsQXRvbSgpKTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCks
IFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUsIG51bGxBdG9tKCkpOwogICAgIHJldHVy
biBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVfb3IoMCk7CiB9CiAKIGludCBSZW5k
ZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogewotICAgIGlmIChpc0FsbEFT
Q0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVNDSUkgfHwgdGV4dCgp
LmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAKLSAgICBDYWNoZWRUZXh0
QnJlYWtJdGVyYXRvciBpdGVyYXRvcihtX3RleHQsIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpD
YXJldCwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3Io
dGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOwogICAg
IHJldHVybiBpdGVyYXRvci5mb2xsb3dpbmcoY3VycmVudCkudmFsdWVfb3IoY3VycmVudCArIDEp
OwogfQogCiBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgo
KSBjb25zdAogewotICAgIGlmIChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQorICAg
IGlmIChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY2hhcmFj
dGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOworICAgIHJldHVybiBG
b250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCh0ZXh0KCkuY2hhcmFjdGVyczE2KCks
IGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxlOwogfQogCiB2b2lkIFJlbmRlclRleHQ6
Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVy
TGFzdFR5cGVkQ2hhcmFjdGVyKQpAQCAtMTU4MiwxMyArMTUzNywxMyBAQCB2b2lkIFJlbmRlclRl
eHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFm
dGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQg
c3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHRMZW5ndGgoKSk7CisgICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHQoKS5sZW5ndGgoKSk7CiAgICAgQVNT
RVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb24gPD0gbGVuZ3Ro
KCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlvbik7Ci0gICAgaWYgKGlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhjaGFyYWN0ZXJzOCgpICsgc3RhcnQsIGRlc3Rp
bmF0aW9uIC0gc3RhcnQpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KGNoYXJhY3RlcnMxNigpICsg
c3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOworICAgIGlmICh0ZXh0KCkuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiB7IHRleHQoKS5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIGRlc3RpbmF0aW9u
IC0gc3RhcnQgfTsKKyAgICByZXR1cm4geyB0ZXh0KCkuY2hhcmFjdGVyczE2KCkgKyBzdGFydCwg
ZGVzdGluYXRpb24gLSBzdGFydCB9OwogfQogCiBSZW5kZXJJbmxpbmUqIFJlbmRlclRleHQ6Omlu
bGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKaW5kZXggZDg2ZjBiNGI4NGY0YjE0NzQ5YTVkY2I2OGM4Mzc0ZmVkYzVjZWFlZi4u
ZjQ2MjkwZjVkZWFiMGFlYmU5YzdjODI0MGQwZDZmMzk0NTY2ODA0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQzLDggKzQzLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UmVu
ZGVyVGV4dCgpOwogCi0gICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dCogdGV4dE5vZGUoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0OwpAQCAtNjMsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhdHRhY2hUZXh0Qm94KElubGluZVRleHRCb3gmIGJveCkgeyBtX2xpbmVC
b3hlcy5hdHRhY2goYm94KTsgfQogICAgIHZvaWQgcmVtb3ZlVGV4dEJveChJbmxpbmVUZXh0Qm94
JiBib3gpIHsgbV9saW5lQm94ZXMucmVtb3ZlKGJveCk7IH0KIAotICAgIFN0cmluZ0ltcGwqIHRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpOyB9CisgICAgU3RyaW5nSW1wbCYgdGV4
dCgpIGNvbnN0IHsgcmV0dXJuICptX3RleHQuaW1wbCgpOyB9IC8vIFNpbmNlIG1fdGV4dCBjYW4g
bmV2ZXIgYmUgbnVsbCwgcmV0dXJuaW5nIHRoaXMgdHlwZSBtZWFucyBjYWxsZXJzIHdvbid0IG51
bGwgY2hlY2suCiAgICAgU3RyaW5nIHRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVu
U3ltYm9sKCkgY29uc3Q7CiAKICAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94
KCkgeyByZXR1cm4gbV9saW5lQm94ZXMuY3JlYXRlQW5kQXBwZW5kTGluZUJveCgqdGhpcyk7IH0K
QEAgLTcyLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IGZp
bmFsOwogICAgIFZlY3RvcjxJbnRSZWN0PiBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UodW5zaWduZWQg
c3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VT
ZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9y
PFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRP
ZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IGZpbmFs
OwpAQCAtODAsMzUgKzc4LDM4IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFi
c29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNvbnN0OwogCi0gICAgUG9zaXRpb24gcG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwotICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKKyAgICBQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAKLSAgICBib29sIGlzOEJpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgpOyB9Ci0gICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsg
fQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7IHJldHVybiBtX3RleHQu
aW1wbCgpLT5jaGFyYWN0ZXJzMTYoKTsgfQogICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVk
KSBjb25zdDsKLSAgICBVQ2hhciB1bmNoZWNrZWRDaGFyYWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7
Ci0gICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiB1bmNoZWNr
ZWRDaGFyYWN0ZXJBdChpKTsgfQotICAgIHVuc2lnbmVkIHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3RleHQuaW1wbCgpLT5sZW5ndGgoKTsgfSAvLyBub24gdmlydHVhbCBpbXBsZW1lbnRh
dGlvbiBvZiBsZW5ndGgoKQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRleHQoKS5sZW5ndGgoKTsgfQorCiAgICAgdm9pZCBwb3NpdGlvbkxpbmVCb3goSW5saW5l
VGV4dEJveCYpOwogCi0gICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCBsZW4sIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwotICAg
IHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBmbG9hdCB4
UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9h
dCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxs
cHRyLCBHbHlwaE92ZXJmbG93KiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQg
d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCB4UG9zLCBib29sIGZp
cnN0TGluZSA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IG51
bGxwdHIsIEdseXBoT3ZlcmZsb3cqID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICBmbG9hdCBtaW5M
b2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBmbG9hdCBtYXhMb2dpY2FsV2lkdGgoKSBjb25zdDsK
IAotICAgIHZvaWQgdHJpbW1lZFByZWZXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQmIGJlZ2luTWluVywgYm9vbCYgYmVnaW5XUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBlbmRNaW5XLCBib29sJiBlbmRXUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGhhc0JyZWFrYWJsZUNoYXIsIGJvb2wmIGhhc0Jy
ZWFrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGJlZ2luTWF4VywgZmxvYXQm
IGVuZE1heFcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCYgbWluVywgZmxvYXQm
IG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpOworICAgIHN0cnVjdCBXaWR0aHMgeworICAg
ICAgICBmbG9hdCBtaW4geyAwIH07CisgICAgICAgIGZsb2F0IG1heCB7IDAgfTsKKyAgICAgICAg
ZmxvYXQgYmVnaW5NaW4geyAwIH07CisgICAgICAgIGZsb2F0IGVuZE1pbiB7IDAgfTsKKyAgICAg
ICAgZmxvYXQgYmVnaW5NYXggeyAwIH07CisgICAgICAgIGZsb2F0IGVuZE1heCB7IDAgfTsKKyAg
ICAgICAgYm9vbCBiZWdpbldTIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBlbmRXUyB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wgaGFzQnJlYWthYmxlQ2hhciB7IGZhbHNlIH07CisgICAgICAgIGJv
b2wgaGFzQnJlYWsgeyBmYWxzZSB9OworICAgIH07CisgICAgV2lkdGhzIHRyaW1tZWRQcmVmZXJy
ZWRXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBib29sJiBzdHJpcEZyb250U3BhY2VzKTsKKwogICAg
IGZsb2F0IGhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdpZHRoKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKICAgICBmbG9hdCBoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGgodW5zaWduZWQgaW5kZXgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMo
KSBjb25zdDsKICAgICB1bnNpZ25lZCBsYXN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMo
KSBjb25zdDsKLSAgICBib29sIGlzSGFuZ2FibGVTdG9wT3JDb21tYShVQ2hhcikgY29uc3Q7Cisg
ICAgc3RhdGljIGJvb2wgaXNIYW5nYWJsZVN0b3BPckNvbW1hKFVDaGFyKTsKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0Owog
ICAgIExheW91dFJlY3QgbGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7CkBA
IC0xMTksMjIgKzEyMCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0V2l0aE9mZnNldChj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbiwgYm9vbCBmb3JjZSA9
IGZhbHNlKTsKIAogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3Rh
dGUpIGZpbmFsOwotICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlOwotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJl
Y3QoSW5saW5lQm94KiwgdW5zaWduZWQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lk
dGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOwogCi0gICAgTGF5b3V0UmVjdCBjb2xsZWN0U2Vs
ZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVjdG9yPExheW91dFJl
Y3Q+JiByZWN0cyk7CisgICAgTGF5b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5l
Qm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVjdG9yPExheW91dFJlY3Q+Jik7CiAKICAgICBMYXlv
dXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS5tYXJnaW5MZWZ0KCksIDApOyB9CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpblJpZ2h0
KCksIDApOyB9CiAKLSAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IGZp
bmFsOwotCiAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4g
bV9saW5lQm94ZXMuZmlyc3QoKTsgfQogICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgpOyB9CiAKLSAgICBpbnQgY2FyZXRNaW5P
ZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQg
Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBjb3VudFJlbmRlcmVk
Q2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2lnbmVkKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5z
UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQodW5zaWduZWQpIGNvbnN0OwogICAgIGJvb2wgY29udGFp
bnNDYXJldE9mZnNldCh1bnNpZ25lZCkgY29uc3Q7CkBAIC0xNTksMTEgKzE1NSwxMSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpOyAvLyBTdWJjbGFzc2VkIGJ5IFJlbmRl
clNWR0lubGluZVRleHQuCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJv
eD4gY3JlYXRlVGV4dEJveCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBm
bG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYW5kaWRh
dGVDb21wdXRlZFRleHRTaXplOyB9Ci0gICAgdm9pZCBzZXRDYW5kaWRhdGVDb21wdXRlZFRleHRT
aXplKGZsb2F0IHMpIHsgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplID0gczsgfQorICAgIHZv
aWQgc2V0Q2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZShmbG9hdCBzaXplKSB7IG1fY2FuZGlkYXRl
Q29tcHV0ZWRUZXh0U2l6ZSA9IHNpemU7IH0KICNlbmRpZgogCiAgICAgdm9pZCBlbnN1cmVMaW5l
Qm94ZXMoKTsKQEAgLTE3NCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRVbml0IHRv
cE9mRmlyc3RUZXh0KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNw
YWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgY29uc3Q7CisgICAgYm9vbCBjb250YWlu
c09ubHlIVE1MV2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSBjb25zdCB7
IHJldHVybiBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nOyB9CiAKQEAgLTE5NywyMSAr
MTkzLDI0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVuZGVyVGV4dChOb2RlJiwgY29u
c3QgU3RyaW5nJik7CiAKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBmaW5hbDsKKyAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBm
aW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIHVuc2lnbmVk
IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRy
KSBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IGZp
bmFsOworCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFk
V2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93
Jik7CiAKICAgICBib29sIGNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSBjb25zdDsK
ICAgICAKLSAgICAvLyBNYWtlIGxlbmd0aCgpIHByaXZhdGUgc28gdGhhdCBjYWxsZXJzIHRoYXQg
aGF2ZSBhIFJlbmRlclRleHQqCi0gICAgLy8gd2lsbCB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IHRl
eHRMZW5ndGgoKSBpbnN0ZWFkLCB3aGlsZQotICAgIC8vIGNhbGxlcnMgd2l0aCBhIFJlbmRlck9i
amVjdCogY2FuIGNvbnRpbnVlIHRvIHVzZSBsZW5ndGgoKS4KLSAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0TGVuZ3RoKCk7IH0KLQogICAgIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IHdpZHRoRnJv
bUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbiwg
ZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3Zl
cmZsb3cqLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIGJvb2wgaXNBbGxBU0NJSSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBbGxBU0NJSTsgfQogICAgIGJvb2wgY29tcHV0ZVVzZUJhY2tz
bGFzaEFzWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlY3VyZVRleHQoVUNoYXIgbWFz
ayk7CkBAIC0yNDQsMjggKzI0MywyMyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcGFydCBvZiB0
aGUgdGV4dCBzaXppbmcgc3RydWN0dXJlcyBpbiBEb2N1bWVudCBpbnN0ZWFkLiBUaGF0IHdvdWxk
IHNhdmUgc29tZSBtZW1vcnkuCi0gICAgZmxvYXQgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXpl
OworICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSB7IDAgfTsKICNlbmRpZgot
ICAgIGZsb2F0IG1fbWluV2lkdGg7Ci0gICAgZmxvYXQgbV9tYXhXaWR0aDsKLSAgICBmbG9hdCBt
X2JlZ2luTWluV2lkdGg7Ci0gICAgZmxvYXQgbV9lbmRNaW5XaWR0aDsKKyAgICBmbG9hdCBtX21p
bldpZHRoIHsgLTEgfTsKKyAgICBmbG9hdCBtX21heFdpZHRoIHsgLTEgfTsKKyAgICBmbG9hdCBt
X2JlZ2luTWluV2lkdGggeyAwIH07CisgICAgZmxvYXQgbV9lbmRNaW5XaWR0aCB7IDAgfTsKIAog
ICAgIFN0cmluZyBtX3RleHQ7CiB9OwogCi1pbmxpbmUgVUNoYXIgUmVuZGVyVGV4dDo6dW5jaGVj
a2VkQ2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpIDwgdGV4dExlbmd0aCgpKTsKLSAgICByZXR1cm4gaXM4Qml0KCkg
PyBjaGFyYWN0ZXJzOCgpW2ldIDogY2hhcmFjdGVyczE2KClbaV07Ci19CitTdHJpbmcgYXBwbHlU
ZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgU3RyaW5nJiwgVUNoYXIgcHJl
dmlvdXNDaGFyYWN0ZXIpOworU3RyaW5nIGNhcGl0YWxpemUoY29uc3QgU3RyaW5nJiwgVUNoYXIg
cHJldmlvdXNDaGFyYWN0ZXIpOworTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1hcExpbmVCcmVha1Rv
SXRlcmF0b3JNb2RlKExpbmVCcmVhayk7CiAKIGlubGluZSBVQ2hhciBSZW5kZXJUZXh0OjpjaGFy
YWN0ZXJBdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAgIGlmIChpID49IHRleHRMZW5ndGgoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gdW5jaGVja2VkQ2hhcmFjdGVyQXQoaSk7
CisgICAgcmV0dXJuIGkgPj0gbGVuZ3RoKCkgPyAwIDogdGV4dCgpW2ldOwogfQogCiBpbmxpbmUg
Y29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlclRleHQ6OnN0eWxlKCkgY29uc3QKQEAgLTI5OCwxMCAr
MjkyLDYgQEAgaW5saW5lIENvbG9yIFJlbmRlclRleHQ6OnNlbGVjdGlvbkVtcGhhc2lzTWFya0Nv
bG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50KCktPnNlbGVjdGlvbkVtcGhhc2lzTWFya0Nv
bG9yKCk7CiB9CiAKLXZvaWQgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiwg
U3RyaW5nJiwgVUNoYXIpOwotdm9pZCBtYWtlQ2FwaXRhbGl6ZWQoU3RyaW5nKiwgVUNoYXIgcHJl
dmlvdXMpOwotTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1hcExpbmVCcmVha1RvSXRlcmF0b3JNb2Rl
KExpbmVCcmVhayk7Ci0gICAgCiBpbmxpbmUgUmVuZGVyVGV4dCogVGV4dDo6cmVuZGVyZXIoKSBj
b25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihOb2RlOjpyZW5kZXJlcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAK
aW5kZXggZjE1YmVlYzdkYzBkZTNkYWNiMGU3NmViOWU1NDE3MTU5M2I4ODRlNS4uZGQ5YWNjN2Qx
MDMyNzc0NjhkOGM4ZTVjMjY3ZWMwZGQwYjFlZDVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTgwLDEyICs4MCwxMSBAQCB2b2lk
IFJlbmRlclRleHRGcmFnbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJUZXh0Ojp3
aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIGZvcmNlKQordm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6
OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQogewotICAgIFJlbmRl
clRleHQ6OnNldFRleHQodGV4dCwgZm9yY2UpOwotCisgICAgUmVuZGVyVGV4dDo6c2V0VGV4dChu
ZXdUZXh0LCBmb3JjZSk7CiAgICAgbV9zdGFydCA9IDA7Ci0gICAgbV9lbmQgPSB0ZXh0TGVuZ3Ro
KCk7CisgICAgbV9lbmQgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgaWYgKCFtX2ZpcnN0TGV0dGVy
KQogICAgICAgICByZXR1cm47CiAgICAgbV9maXJzdExldHRlci0+cmVtb3ZlRnJvbVBhcmVudEFu
ZERlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0TGluZUJveGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGlu
ZUJveGVzLmNwcAppbmRleCA3NWUyMWM1ZGYzOTQ4MDZiYTg0MzQyMmZmYTg1OGM2MjY3YmU4OGRi
Li5iZDAyNDNhZDk0MGE4ZjgzMjMxOTAxNTJhZTdjMWQyMThmZTg0MTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCkBAIC0yMjQsNyAr
MjI0LDcgQEAgaW50IFJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zmc2V0KGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8gYm94ID0gbV9sYXN0OwogICAg
IGlmICghYm94KQotICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAg
ICByZXR1cm4gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogCiAgICAgaW50IG1heE9mZnNldCA9
IGJveC0+c3RhcnQoKSArIGJveC0+bGVuKCk7CiAgICAgZm9yIChib3ggPSBib3gtPnByZXZUZXh0
Qm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2VGV4dEJveCgpKQpAQCAtMzk1LDcgKzM5NSw3IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3Rp
bmdPZmZzZXRGb3JCaURpKGNvbnN0IEluCiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpcnN0IHx8ICFyZW5k
ZXJlci50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKCFtX2ZpcnN0IHx8ICFyZW5kZXJlci50ZXh0KCku
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci5jcmVhdGVWaXNpYmxlUG9zaXRpb24o
MCwgRE9XTlNUUkVBTSk7CiAKICAgICBMYXlvdXRVbml0IHBvaW50TGluZURpcmVjdGlvbiA9IG1f
Zmlyc3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgpIDogcG9pbnQueSgpOwpAQCAtNDQ5LDcg
KzQ0OSw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6c2V0U2VsZWN0aW9uU3RhdGUoUmVu
ZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6CiAgICAgYXV0byBzdGFydCA9IHJlbmRl
cmVyLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0aW9uKCk7CiAgICAgYXV0byBlbmQgPSBy
ZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc3RhdGUg
PT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkgewotICAgICAgICBlbmQgPSByZW5kZXJl
ci50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsK
ICAgICAgICAgLy8gdG8gaGFuZGxlIHNlbGVjdGlvbiBmcm9tIGVuZCBvZiB0ZXh0IHRvIGVuZCBv
ZiBsaW5lCiAgICAgICAgIGlmIChzdGFydCAmJiBzdGFydCA9PSBlbmQpCiAgICAgICAgICAgICBz
dGFydCA9IGVuZCAtIDE7CkBAIC01NjgsNyArNTY4LDcgQEAgVmVjdG9yPEZsb2F0UXVhZD4gUmVu
ZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJl
ciwKIAogICAgICAgICAvLyBTaG9ydGVuIHRoZSB3aWR0aCBvZiB0aGlzIHRleHQgYm94IGlmIGl0
IGVuZHMgaW4gYW4gZWxsaXBzaXMuCiAgICAgICAgIC8vIEZJWE1FOiBlbGxpcHNpc1JlY3RGb3JC
b3ggc2hvdWxkIHN3aXRjaCB0byByZXR1cm4gRmxvYXRSZWN0IHNvb24gd2l0aCB0aGUgc3VicGl4
ZWxsYXlvdXQgYnJhbmNoLgotICAgICAgICBJbnRSZWN0IGVsbGlwc2lzUmVjdCA9IChvcHRpb24g
PT0gQ2xpcFRvRWxsaXBzaXMpID8gZWxsaXBzaXNSZWN0Rm9yQm94KCpib3gsIDAsIHJlbmRlcmVy
LnRleHRMZW5ndGgoKSkgOiBJbnRSZWN0KCk7CisgICAgICAgIEludFJlY3QgZWxsaXBzaXNSZWN0
ID0gKG9wdGlvbiA9PSBDbGlwVG9FbGxpcHNpcykgPyBlbGxpcHNpc1JlY3RGb3JCb3goKmJveCwg
MCwgcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpKSA6IEludFJlY3QoKTsKICAgICAgICAgaWYgKCFl
bGxpcHNpc1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMu
c2V0V2lkdGgoZWxsaXBzaXNSZWN0Lm1heFgoKSAtIGJvdW5kYXJpZXMueCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCAxZWI0Njc3Nzgx
ZTEzZTY3OTQ4NzBkNzBlMmFmNWIyYzc2YzUxMDBiLi5jODM2ZDFlYzVmNDY5NGRmZWQ2Y2FhMTMx
M2YyZjg0NjhhYzljYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIEF2b2lkYW5jZVJlYXNvbkZs
YWdzIGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW4K
ICAgICBib29sIGZsb3dJc0p1c3RpZmllZCA9IHN0eWxlLnRleHRBbGlnbigpID09IEpVU1RJRlk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5k
ZXJUZXh0PihmbG93KSkgewogICAgICAgICAvLyBGSVhNRTogRG8gbm90IHJldHVybiB1bnRpbCBh
ZnRlciBjaGVja2luZyBhbGwgY2hpbGRyZW4uCi0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyLnRl
eHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKHRleHRSZW5kZXJlci50ZXh0KCkuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93VGV4dElzRW1w
dHksIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAgICAgaWYgKHRleHRSZW5kZXJlci5p
c0NvbWJpbmVUZXh0KCkpCiAgICAgICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVF
REVEKEZsb3dUZXh0SXNDb21iaW5lVGV4dCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdl
LmNwcAppbmRleCBhOTE2MDQ1ZTRiYWU4NTY5MGM1MjA2YjY3ZjUyNTBiN2YyNThiZjVmLi5iMjky
MzViNjM3NGM3YzM1ODBlZDUzYTIwYzNhOGM5OTY1YWUwZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcApAQCAtMjM3
LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIHByaW50VGV4dEZvclN1YnRyZWUoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQmIGNoYXJhY3RlCiBzdGF0aWMgdW5zaWduZWQgdGV4
dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBp
ZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgaWYgKCFpczxSZW5k
ZXJFbGVtZW50PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVkIHRl
eHRMZW5ndGggPSAwOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXh0TGVu
Z3RoRm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogc3RhdGljIHZvaWQg
Y29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVhZlJlbmRlcmVycykK
IHsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmICghZG93
bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKCFk
b3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAvLyBGaW5kIFJlbmRlckJsb2NrRmxvdyBhbmNlc3Rvci4KICAg
ICAgICAgZm9yIChjb25zdCBhdXRvKiBjdXJyZW50ID0gcmVuZGVyZXIucGFyZW50KCk7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCmluZGV4
IDE4ZTViNjRiZDk3NjFkZTE5ZjEyOWYwZDhjY2ZhM2JhYWRjNDNjNzcuLjI5YjM2YTBmMzI3NWE1
ZTYwMDBjMjMwNzk4ZjIxNTA4OTRkZGVhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RhdGljIFZlY3RvcjxGbG93Q29udGVudHM6OlNlZ21lbnQ+IGluaXRpYWxpemVT
ZWdtZW50cyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGYKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihmbG93KSkgewogICAgICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q2hpbGQgPSBkb3duY2Fz
dDxSZW5kZXJUZXh0PihjaGlsZCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0g
dGV4dENoaWxkLnRleHQoKS0+bGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0TGVu
Z3RoID0gdGV4dENoaWxkLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgICAgIHNlZ21lbnRzLmFw
cGVuZChGbG93Q29udGVudHM6OlNlZ21lbnQgeyBzdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9u
ICsgdGV4dExlbmd0aCwgdGV4dENoaWxkLnRleHQoKSwKICAgICAgICAgICAgICAgICB0ZXh0Q2hp
bGQsIHRleHRDaGlsZC5jYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpIH0pOwogICAgICAg
ICAgICAgc3RhcnRQb3NpdGlvbiArPSB0ZXh0TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDA2YjYx
Y2M3NTY1ZjFiOWQyN2UwZmYyNTA4YWMwNjI4NjM3ZGM2MzIuLmU1NDM1MmRmYjZiOTBjYzI5NGY4
YTQxMGM4ZDU5YmEyYzViNTg4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB1
bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlcgogICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZlcihm
bG93LCBsYXlvdXQpOwogICAgIGF1dG8gaXQgPSByZXNvbHZlci5ydW5Gb3JQb2ludChwb2ludCk7
CiAgICAgaWYgKGl0ID09IHJlc29sdmVyLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVuZGVyZXIu
dGV4dExlbmd0aCgpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpOwog
ICAgIGF1dG8gcnVuID0gKml0OwogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5zdHlsZSgpOwogICAg
IFRleHRSdW4gdGV4dFJ1bihydW4udGV4dCgpLCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmV4cGFu
c2lvbigpLCBydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAppbmRleCAwNjQxZjM3N2Mw
Mzc0YTI3NDE5MjJkMDcyYjJlMGU1NTI3YzAzZmM2Li4zZThiODdjYmE1NDczNmVmYzk2NDU2MDBi
MGE5ODc0MTI3ZWI0ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBpbmxpbmUgdW5z
aWduZWQgZmluZENhcmV0TWluaW11bU9mZnNldChjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5
b3V0JiBsYXlvdXQpCiBpbmxpbmUgdW5zaWduZWQgZmluZENhcmV0TWF4aW11bU9mZnNldChjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYg
KCFsYXlvdXQucnVuQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgo
KTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKICAgICBhdXRvJiBs
YXN0ID0gbGF5b3V0LnJ1bkF0KGxheW91dC5ydW5Db3VudCgpIC0gMSk7CiAgICAgcmV0dXJuIGxh
c3QuZW5kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0Nv
bnRleHQuaAppbmRleCAwNTY2MDFlNWRmNWRkNTM5MzQ3MjRlYTdkZWI4YzgzZGRiMjAwNDJjLi43
ZjFiYTFjNGU0YTVjMjYwZWQ2OGI0NDBmM2VkZDg0NzkyYjlhZDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtMzg5LDcgKzM4OSw3
IEBAIGlubGluZSBib29sIHNob3VsZEFkZEJvcmRlclBhZGRpbmdNYXJnaW4oUmVuZGVyT2JqZWN0
KiBjaGlsZCkKICAgICBpZiAoIWNoaWxkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBX
aGVuIGRlY2lkaW5nIHdoZXRoZXIgd2UncmUgYXQgdGhlIGVkZ2Ugb2YgYW4gaW5saW5lLCBhZGph
Y2VudCBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpcyB0aGUgc2FtZSBhcyBubyBzaWJsaW5nIGF0IGFs
bC4KLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmNoaWxkKSAmJiAhZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKmNoaWxkKS50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpjaGlsZCkg
JiYgIWRvd25jYXN0PFJlbmRlclRleHQ+KCpjaGlsZCkudGV4dCgpLmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQogICAg
IGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KCpjaGlsZCkgJiYgY2hpbGQtPnBhcmVudCgpLT5zdHls
ZSgpLmJveERlY29yYXRpb25CcmVhaygpID09IERDTE9ORSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBp
bmxpbmUgYm9vbCBzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmplY3QoUmVuZGVyQmxv
Y2tGbG93JiBibG9jaywgUmVuZGVyTwogICAgIHdoaWxlIChuZXh0ICYmIG5leHQtPmlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgbmV4dCA9IGJpZGlOZXh0U2tpcHBp
bmdFbXB0eUlubGluZXMoYmxvY2ssIG5leHQpOwogCi0gICAgaWYgKGlzPFJlbmRlclRleHQ+KG5l
eHQpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0KS50ZXh0TGVuZ3RoKCkgPiAwKSB7Cisg
ICAgaWYgKGlzPFJlbmRlclRleHQ+KG5leHQpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0
KS50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIFJlbmRlclRleHQmIG5leHRUZXh0ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpOwogICAgICAgICBVQ2hhciBuZXh0Q2hhciA9IG5l
eHRUZXh0LmNoYXJhY3RlckF0KDApOwogICAgICAgICBpZiAobmV4dFRleHQuc3R5bGUoKS5pc0Nv
bGxhcHNpYmxlV2hpdGVTcGFjZShuZXh0Q2hhcikpIHsKQEAgLTU5Miw3ICs1OTIsNyBAQCBpbmxp
bmUgZmxvYXQgZmlyc3RQb3NpdGl2ZVdpZHRoKGNvbnN0IFdvcmRNZWFzdXJlbWVudHMmIHdvcmRN
ZWFzdXJlbWVudHMpCiAKIGlubGluZSBib29sIGl0ZXJhdG9ySXNCZXlvbmRFbmRPZlJlbmRlckNv
bWJpbmVUZXh0KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyLCBSZW5kZXJDb21iaW5lVGV4dCYg
cmVuZGVyZXIpCiB7Ci0gICAgcmV0dXJuIGl0ZXIucmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIgJiYg
aXRlci5vZmZzZXQoKSA+PSByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgcmV0dXJuIGl0ZXIu
cmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIgJiYgaXRlci5vZmZzZXQoKSA+PSByZW5kZXJlci50ZXh0
KCkubGVuZ3RoKCk7CiB9CiAKIGlubGluZSB2b2lkIG5leHRDaGFyYWN0ZXIoVUNoYXImIGN1cnJl
bnRDaGFyYWN0ZXIsIFVDaGFyJiBsYXN0Q2hhcmFjdGVyLCBVQ2hhciYgc2Vjb25kVG9MYXN0Q2hh
cmFjdGVyKQpAQCAtNjIxLDcgKzYyMSw3IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgdGV4dFdpZHRo
KFJlbmRlclRleHQmIHRleHQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29uCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGV4dC5zdHlsZSgpOwogCiAgICAgR2x5cGhPdmVy
ZmxvdyBnbHlwaE92ZXJmbG93OwotICAgIGlmIChpc0ZpeGVkUGl0Y2ggfHwgKCFmcm9tICYmIGxl
biA9PSB0ZXh0LnRleHRMZW5ndGgoKSkgfHwgc3R5bGUuaGFzVGV4dENvbWJpbmUoKSkKKyAgICBp
ZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAmJiBsZW4gPT0gdGV4dC50ZXh0KCkubGVuZ3RoKCkp
IHx8IHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCiAgICAgICAgIHJldHVybiB0ZXh0LndpZHRoKGZy
b20sIGxlbiwgZm9udCwgeFBvcywgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93KTsKIAog
ICAgIGlmIChsYXlvdXQpCkBAIC03NjUsNyArNzY1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdD
b250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJv
b2wKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgPSBzdHlsZS5oYW5naW5nUHVu
Y3R1YXRpb24oKSAmIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1B1
bmN0dWF0aW9uQXRFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIExhc3RIYW5naW5n
UHVuY3R1YXRpb247CiAgICAgYm9vbCBjYW5IYW5nU3RvcE9yQ29tbWFBdExpbmVFbmQgPSBzdHls
ZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9uOwotICAg
IGludCBlbmRQdW5jdHVhdGlvbkluZGV4ID0gY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgJiYgbV9j
b2xsYXBzZVdoaXRlU3BhY2UgPyByZW5kZXJUZXh0Lmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGlu
Z1NwYWNlcygpIDogcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSAxOworICAgIGludCBlbmRQdW5j
dHVhdGlvbkluZGV4ID0gY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgJiYgbV9jb2xsYXBzZVdoaXRl
U3BhY2UgPyByZW5kZXJUZXh0Lmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDog
cmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSAxOwogICAgIHVuc2lnbmVkIGxhc3RTcGFjZSA9
IG1fY3VycmVudC5vZmZzZXQoKTsKICAgICBmbG9hdCB3b3JkU3BhY2luZyA9IG1fY3VycmVudFN0
eWxlLT5mb250Q2FzY2FkZSgpLndvcmRTcGFjaW5nKCk7CiAgICAgZmxvYXQgbGFzdFNwYWNlV29y
ZFNwYWNpbmcgPSAwOwpAQCAtODEwLDcgKzgxMCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29u
dGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29s
CiAgICAgLy8gd29yZHMgd2l0aCB0aGVpciB0cmFpbGluZyBzcGFjZSwgdGhlbiBzdWJ0cmFjdCBp
dHMgd2lkdGguCiAgICAgVGV4dExheW91dCogdGV4dExheW91dCA9IG1fcmVuZGVyVGV4dEluZm8u
bGF5b3V0LmdldCgpOwogICAgIFdvcmRUcmFpbGluZ1NwYWNlIHdvcmRUcmFpbGluZ1NwYWNlKHN0
eWxlLCAhdGV4dExheW91dCk7Ci0gICAgZm9yICg7IG1fY3VycmVudC5vZmZzZXQoKSA8IHJlbmRl
clRleHQudGV4dExlbmd0aCgpOyBtX2N1cnJlbnQuZmFzdEluY3JlbWVudEluVGV4dE5vZGUoKSkg
eworICAgIGZvciAoOyBtX2N1cnJlbnQub2Zmc2V0KCkgPCByZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKTsgbV9jdXJyZW50LmZhc3RJbmNyZW1lbnRJblRleHROb2RlKCkpIHsKICAgICAgICAgYm9v
bCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlOwog
ICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNXUyA9IG1fY3VycmVudENoYXJhY3Rlcklz
V1M7CiAgICAgICAgIFVDaGFyIGMgPSBtX2N1cnJlbnQuY3VycmVudCgpOwpAQCAtODQwLDcgKzg0
MCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3Vy
ZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAKICAgICAgICAgaWYgKChicmVha0FsbCB8
fCBicmVha1dvcmRzKSAmJiAhbWlkV29yZEJyZWFrICYmICghbV9jdXJyZW50Q2hhcmFjdGVySXNT
cGFjZSB8fCBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gUFJFX1dSQVApKSB7CiAgICAgICAgICAgICB3
cmFwVyArPSBjaGFyV2lkdGg7Ci0gICAgICAgICAgICBib29sIG1pZFdvcmRCcmVha0lzQmVmb3Jl
U3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYmIG1fY3VycmVudC5vZmZzZXQoKSArIDEg
PCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4dFttX2N1
cnJlbnQub2Zmc2V0KCkgKyAxXSk7CisgICAgICAgICAgICBib29sIG1pZFdvcmRCcmVha0lzQmVm
b3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYmIFUxNl9JU19UUkFJTChyZW5kZXJU
ZXh0LmNoYXJhY3RlckF0KG1fY3VycmVudC5vZmZzZXQoKSArIDEpKTsKICAgICAgICAgICAgIGNo
YXJXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBtX2N1cnJlbnQub2Zmc2V0KCksIG1pZFdv
cmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA/IDIgOiAxLCBmb250LCBtX3dpZHRoLmNvbW1p
dHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwg
ZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CiAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgPSBt
X3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVyArIGNoYXJXaWR0aCA+IG1fd2lkdGguYXZh
aWxhYmxlV2lkdGgoKTsKICAgICAgICAgfQpAQCAtOTI5LDcgKzkyOSw3IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHRyeSB0byBoeXBoZW5h
dGUgYXQgdGhlIGZpbmFsIGJyZWFrIG9mIGEgYmxvY2ssIHNpbmNlIHRoaXMgbWVhbnMgdGhlcmUg
aXMKICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbW9yZSBjb250ZW50LCBhbmQgYSBoeXBoZW5h
dGVkIHNpbmdsZSB3b3JkIHdvdWxkIGVuZCB1cCBvbiBhIGxpbmUgYnkgaXRzZWxmLiBUaGlzIGxv
b2tzCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhZCBzbyBqdXN0IGRvbid0IGFsbG93IGl0Lgot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVuYXRlICYmICFtX3dpZHRoLmZpdHNPbkxp
bmUoKSAmJiAobV9uZXh0T2JqZWN0IHx8ICFyZW5kZXJUZXh0LmNvbnRhaW5zT25seVdoaXRlc3Bh
Y2UobV9jdXJyZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAtIG1fY3VycmVu
dC5vZmZzZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
YW5IeXBoZW5hdGUgJiYgIW1fd2lkdGguZml0c09uTGluZSgpICYmIChtX25leHRPYmplY3QgfHwg
IXJlbmRlclRleHQuY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UobV9jdXJyZW50Lm9mZnNldCgp
LCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIG1fY3VycmVudC5vZmZzZXQoKSkgfHwgaXNM
aW5lRW1wdHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xpbmVCcmVha0hpc3Rvcnku
cHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5SHlwaGVuYXRpbmcocmVuZGVyVGV4dCwgZm9udCwgc3R5bGUubG9jYWxlKCks
IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBtX2Jsb2NrU3R5bGUuaHlwaGVuYXRpb25MaW1p
dExpbmVzKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSwgc3R5bGUuaHlwaGVuYXRp
b25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgbV9jdXJyZW50Lm9mZnNldCgpLCBtX3dpZHRoLmN1
cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRlbXBXaWR0aCwgbV93aWR0aC5hdmFpbGFibGVXaWR0
aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBsYXN0U3BhY2VXb3JkU3Bh
Y2luZywgbW9kaWZ5TWUsIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSwgbV9saW5l
QnJlYWtlci5tX2h5cGhlbmF0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC05
NjUsNyArOTY1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IGxhc3RDaGFy
YWN0ZXJGcm9tUHJldmlvdXNSZW5kZXJUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyQXRCcmVha2luZ1Bvc2l0aW9uKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGFzdEJyZWFraW5nUG9zaXRvbi52
YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSA+IChsYXN0QnJlYWtpbmdQ
b3NpdG9uLnZhbHVlKCkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgPj0gMSAmJiB0ZXh0UmVuZGVyZXIudGV4
dCgpLmxlbmd0aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSAtIDEpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlv
biA9IHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkg
LSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb24pCkBAIC0xMDczLDcg
KzEwNzMsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgaWYgKG1fbmV4
dE9iamVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNldCgpICYmIG1fbmV4dE9iamVj
dC0+aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gUklHSFQgfHwgbV9ibG9j
a1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpIHsKICAgICAgICAgICAgICAgICBt
X3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLnNldE9mZnNldChtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9m
ZnNldCgpIC0gMSk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBqdXN0IGEgc2luZ2xl
IHRyYWlsaW5nIHNwYWNlIHN0YXJ0IGlnbm9yaW5nIGl0IG5vdyBzbyBpdCBjb2xsYXBzZXMgYXdh
eS4KLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50Lm9mZnNldCgpID09IHJlbmRlclRleHQu
dGV4dExlbmd0aCgpIC0gMSkKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50Lm9mZnNldCgp
ID09IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0gMSkKICAgICAgICAgICAgICAgICAgICAg
bV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdGFydElnbm9yaW5nU3BhY2VzKG1fc3Rh
cnRPZklnbm9yZWRTcGFjZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzEzLDEz
ICsxMzEzLDEzIEBAIGlubGluZSBJbmxpbmVJdGVyYXRvciBCcmVha2luZ0NvbnRleHQ6Om9wdGlt
YWxMaW5lQnJlYWtMb2NhdGlvbkZvclRyYWlsaW5nV29yZCgpCiAgICAgICAgIHJldHVybiBsaW5l
QnJlYWs7CiAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KCpsaW5lQnJlYWsucmVuZGVyZXIoKSk7CiAgICAgLy8gRG9uJ3QgZXZlbiBib3RoZXIgbWVhc3Vy
aW5nIGlmIG91ciByZW1haW5pbmcgbGluZSBoYXMgbWFueSBjaGFyYWN0ZXJzCi0gICAgaWYgKHJl
bmRlclRleHQudGV4dExlbmd0aCgpID09IGxpbmVCcmVhay5vZmZzZXQoKSB8fCByZW5kZXJUZXh0
LnRleHRMZW5ndGgoKSAtIGxpbmVCcmVhay5vZmZzZXQoKSA+IGxvbmdUcmFpbGluZ1dvcmRMZW5n
dGgpCisgICAgaWYgKHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpID09IGxpbmVCcmVhay5vZmZz
ZXQoKSB8fCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIGxpbmVCcmVhay5vZmZzZXQoKSA+
IGxvbmdUcmFpbGluZ1dvcmRMZW5ndGgpCiAgICAgICAgIHJldHVybiBsaW5lQnJlYWs7CiAgICAg
Ym9vbCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCA9IG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFr
SXRlcmF0b3IubW9kZSgpID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdDsKICAgICBi
b29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYgbV9jdXJyZW50U3R5bGUtPm5ic3BNb2RlKCkg
PT0gU1BBQ0U7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOwogICAgIGlzQnJlYWthYmxl
KG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIGxpbmVCcmVhay5vZmZzZXQoKSAr
IDEsIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtOQlNQLCBjYW5Vc2VMaW5lQnJlYWtTaG9y
dGN1dCwgbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09IEtlZXBBbGxXb3JkQnJlYWspOwot
ICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVha2FibGVQb3NpdGlvbi52
YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dExlbmd0aCgpKQorICAgIGlmICghbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uIHx8IG5leHRCcmVha2FibGVQb3NpdGlvbi52YWx1ZSgpICE9IHJlbmRlclRleHQu
dGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IGxpbmVTdHlsZShyZW5kZXJUZXh0LCBtX2xpbmVJbmZvKTsKICAg
ICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CkBAIC0xMzI5
LDcgKzEzMjksNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRp
bWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICBjb25zdCBJbmxp
bmVJdGVyYXRvciYgY2FuZGlkYXRlID0gbV9saW5lQnJlYWtIaXN0b3J5LmdldChpKTsKICAgICAg
ICAgaWYgKGNhbmRpZGF0ZS5yZW5kZXJlcigpICE9IGxpbmVCcmVhay5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIGJlc3Q7Ci0gICAgICAgIGZsb2F0IHdpZHRoID0gdGV4dFdpZHRoKHJl
bmRlclRleHQsIGNhbmRpZGF0ZS5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSBj
YW5kaWRhdGUub2Zmc2V0KCksIGZvbnQsIDAsIGZvbnQuaXNGaXhlZFBpdGNoKCksIG1fY29sbGFw
c2VXaGl0ZVNwYWNlLCBkdW1teUZvbnRzKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSB0ZXh0V2lk
dGgocmVuZGVyVGV4dCwgY2FuZGlkYXRlLm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKSAtIGNhbmRpZGF0ZS5vZmZzZXQoKSwgZm9udCwgMCwgZm9udC5pc0ZpeGVkUGl0Y2goKSwg
bV9jb2xsYXBzZVdoaXRlU3BhY2UsIGR1bW15Rm9udHMpOwogICAgICAgICBpZiAod2lkdGggPiBt
X3dpZHRoLmF2YWlsYWJsZVdpZHRoKCkpCiAgICAgICAgICAgICByZXR1cm4gYmVzdDsKICAgICAg
ICAgaWYgKHdpZHRoIC8gbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpID4gb3B0aW1hbFRyYWlsaW5n
TGluZVJhdGlvKSAvLyBTdWJzZXF1ZW50IGxpbmUgaXMgbG9uZyBlbm91Z2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuY3BwCmluZGV4IDExY2Uy
YjZmNjE0MDhlODc1OWJlOWQ3YmZlNGRlY2IxMzcxNzhiZjUuLjU0ZjBiNTM0MDM0MmY4MDNjYThm
YjY0MDg4ZGQ5NGE0Mjc1MDQyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFRyYWlsaW5n
T2JqZWN0czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9uc0ZvclRyYWlsaW5n
Qm94ZXMoTGluZQogICAgICAgICBBU1NFUlQobV93aGl0ZXNwYWNlLT5pc1RleHQoKSk7CiAgICAg
ICAgIEFTU0VSVChjb2xsYXBzZUZpcnN0U3BhY2UgPT0gQ29sbGFwc2VGaXJzdFNwYWNlKTsKICAg
ICAgICAgLy8gQWRkIGEgbmV3IGVuZCB0cmFuc2l0aW9uIHRoYXQgc3RvcHMgcmlnaHQgYXQgdGhl
IHZlcnkgZW5kLgotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRlc3BhY2UtPnRleHRM
ZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV93aGl0ZXNwYWNlLT50ZXh0KCku
bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBvcyA9IGxlbmd0aCA+PSAyID8gbGVuZ3RoIC0g
MiA6IFVJTlRfTUFYOwogICAgICAgICBJbmxpbmVJdGVyYXRvciBlbmRNaWQoMCwgbV93aGl0ZXNw
YWNlLCBwb3MpOwogICAgICAgICBsaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdGFydEln
bm9yaW5nU3BhY2VzKGVuZE1pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXggZWMxYTAxMjVmMDA5MTQ5NzI5
NDBkM2ZiZTdlODNjODU4NTQ3ZTIyMi4uMjhmYWZkYjUzZjM3MjE2MGVmNDk3ZjlhY2Y3Y2JiODhk
MDU2ZDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbmRlck1hdGhN
TEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIGF1dG8mIHNlcGFyYXRvcnMgPSBmZW5j
ZWQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihNYXRoTUxOYW1lczo6c2VwYXJhdG9y
c0F0dHIpOwogICAgIGlmICghc2VwYXJhdG9ycy5pc051bGwoKSkgewogICAgICAgICBTdHJpbmdC
dWlsZGVyIGNoYXJhY3RlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
c2VwYXJhdG9ycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzZXBhcmF0b3JzLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgIGlmICghaXNTcGFj
ZU9yTmV3bGluZShzZXBhcmF0b3JzW2ldKSkKICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLmFw
cGVuZChzZXBhcmF0b3JzW2ldKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggMjlmZGE0NjE0MTlj
MDJlMmJiOTFkMThlMTZjZGUyZjhiZDE4MTUxOS4uM2JhYzljYTVkMGFlMzNhNTA1ODIzOTczZDEx
M2Y0NjVmYmQ5OTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSW50UmVjdCBSZW5k
ZXJTVkdJbmxpbmVUZXh0OjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIGJvb2wgUmVuZGVyU1ZH
SW5saW5lVGV4dDo6Y2hhcmFjdGVyU3RhcnRzTmV3VGV4dENodW5rKGludCBwb3NpdGlvbikgY29u
c3QKIHsKICAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7Ci0gICAgQVNTRVJUKHBvc2l0aW9uIDwg
c3RhdGljX2Nhc3Q8aW50Pih0ZXh0TGVuZ3RoKCkpKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPCBz
dGF0aWNfY2FzdDxpbnQ+KHRleHQoKS5sZW5ndGgoKSkpOwogCiAgICAgLy8gRWFjaCA8dGV4dFBh
dGg+IGVsZW1lbnQgc3RhcnRzIGEgbmV3IHRleHQgY2h1bmssIHJlZ2FyZGxlc3Mgb2YgYW55IHgv
eSB2YWx1ZXMuCiAgICAgaWYgKCFwb3NpdGlvbiAmJiBwYXJlbnQoKS0+aXNTVkdUZXh0UGF0aCgp
ICYmICFwcmV2aW91c1NpYmxpbmcoKSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIFJlbmRlclNW
R0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQgcG9zaXRpb24pIGNv
bnN0CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIqKQogewotICAgIGlmICghZmlyc3RUZXh0Qm94KCkgfHwgIXRleHRMZW5ndGgoKSkKKyAgICBp
ZiAoIWZpcnN0VGV4dEJveCgpIHx8IHRleHQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBj
cmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKICAgICBmbG9hdCBiYXNlbGlu
ZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggMmMwNjhiOWMzOThhNjM0NjlmNzdiNzBjNDliODg1Y2Y1
MDk1OTkwMC4uNWU5OTkzODYyOWRiMzljMzBmNjYxNTIzMmJlODI3NGY0Mjc1ODdjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtODAsMTcgKzgwLDIwIEBAIHZvaWQgU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxkTWV0cmljc0ZvclRleHRSZW5kZXJlcihS
ZW5kZXJTVkdJbmxpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzUmVuZGVyU1ZHSW5saW5l
VGV4dChjb25zdCBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1bnNpZ25lZCYgYXRDaGFyYWN0
ZXIsIGJvb2wmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkKIHsKKyAgICBhdXRvJiBzdHJpbmcgPSB0
ZXh0LnRleHQoKTsKKyAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBpZiAo
dGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkUpIHsKLSAgICAgICAgYXRDaGFyYWN0ZXIg
Kz0gdGV4dC50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGF0Q2hhcmFjdGVyICs9IGxlbmd0aDsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgdGV4dFBvc2l0aW9uID0g
MCwgdGV4dExlbmd0aCA9IHRleHQudGV4dExlbmd0aCgpOyB0ZXh0UG9zaXRpb24gPCB0ZXh0TGVu
Z3RoOyArK3RleHRQb3NpdGlvbikgewotICAgICAgICBjb25zdCBVQ2hhciBjdXJyZW50Q2hhcmFj
dGVyID0gdGV4dFt0ZXh0UG9zaXRpb25dOwotICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9
PSAnICcgJiYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5v
dCBhIGNvbXBsZXRlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBpbXBsZW1lbnRhdGlvbjsgaXQgZG9l
c24ndCBoYW5kbGUgbmV3bGluZXMgb3IgdGFicy4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gc3RyaW5nW2ldOwor
ICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcgJyAmJiBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UgPSBj
dXJyZW50Q2hhcmFjdGVyID09ICcgJzsKKyAgICAgICAgbGFzdENoYXJhY3Rlcldhc1NwYWNlID0g
Y2hhcmFjdGVyID09ICcgJzsKICAgICAgICAgKythdENoYXJhY3RlcjsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNw
cAppbmRleCA2NjBlODZhMzJhODFkNGRlNGMzY2I1MjYzMjYyYWUyM2ZiY2E1NThjLi4yMzMzNzAx
ZDI0MzZkMTA0MDg3Mjk2Y2UyOTM3ZjMxYzFhNDA2NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKQEAgLTMxNiw3ICsz
MTYsNyBAQCBib29sIFNWR1RleHRMYXlvdXRFbmdpbmU6OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVy
QXR0cmlidXRlcyhTVkdUZXh0TGF5b3V0QXR0cmlidQogICAgIGxvZ2ljYWxBdHRyaWJ1dGVzID0g
bV9sYXlvdXRBdHRyaWJ1dGVzW21fbGF5b3V0QXR0cmlidXRlc1Bvc2l0aW9uXTsKICAgICBBU1NF
UlQobG9naWNhbEF0dHJpYnV0ZXMpOwogCi0gICAgaWYgKG1fbG9naWNhbENoYXJhY3Rlck9mZnNl
dCAhPSBsb2dpY2FsQXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHRMZW5ndGgoKSkKKyAgICBpZiAo
bV9sb2dpY2FsQ2hhcmFjdGVyT2Zmc2V0ICE9IGxvZ2ljYWxBdHRyaWJ1dGVzLT5jb250ZXh0KCku
dGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICsrbV9sYXlvdXRB
dHRyaWJ1dGVzUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRRdWVyeS5jcHAKaW5kZXggODZlNGJmMmYzZDUxZWNmZGMyZjg4YWMwNTU4NDgyOGI3MmVlYWY3
Ni4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4NmY1N2FiYTY0NGI2ZTAzZTVlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdM
aWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgdW5zaWduZWQgdGV4dE1ldHJpY3NTaXpl
ID0gdGV4dE1ldHJpY3NWYWx1ZXMuc2l6ZSgpOwogCiAgICAgdW5zaWduZWQgcG9zaXRpb25PZmZz
ZXQgPSAwOwotICAgIHVuc2lnbmVkIHBvc2l0aW9uU2l6ZSA9IGxheW91dEF0dHJpYnV0ZXMtPmNv
bnRleHQoKS50ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQgcG9zaXRpb25TaXplID0gbGF5b3V0
QXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHQoKS5sZW5ndGgoKTsKIAogICAgIGJvb2wgYWx0ZXJT
dGFydFBvc2l0aW9uID0gdHJ1ZTsKICAgICBib29sIGFsdGVyRW5kUG9zaXRpb24gPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDczMzExMDlh
ZjVhMDVmYTczODE0ZmUzNmJiZTI3NjExNzM0NjQ0YmMuLmNjMzlmMjIzZGYxZTc3ODk4OWQzMjYy
ZTFlNTQ5MmI1ZWYzNDc4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBk
YXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVy
U3R5bGUuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgICAgICAgICBhdXRvJiB0ZXh0
ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7CiAgICAgICAgICAgICBhdXRvKiB0ZXh0VXBkYXRlID0g
bV9zdHlsZVVwZGF0ZS0+dGV4dFVwZGF0ZSh0ZXh0KTsKICAgICAgICAgICAgIGJvb2wgZGlkQ3Jl
YXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlcyAmJiBwYXJlbnQoKS51cGRhdGVzLT51cGRhdGUu
Y2hhbmdlID09IFN0eWxlOjpEZXRhY2g7Ci0gICAgICAgICAgICBib29sIG1heU5lZWRVcGRhdGVX
aGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0
cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICAg
ICAgICAgIGJvb2wgbWF5TmVlZFVwZGF0ZVdoaXRlc3BhY2VPbmx5UmVuZGVyZXIgPSByZW5kZXJp
bmdQYXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyICYmIHRleHQuZGF0YSgp
LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAgICAgICAgICAgICBpZiAo
ZGlkQ3JlYXRlUGFyZW50IHx8IHRleHRVcGRhdGUgfHwgbWF5TmVlZFVwZGF0ZVdoaXRlc3BhY2VP
bmx5UmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dFJlbmRlcmVyKHRleHQsIHRl
eHRVcGRhdGUpOwogCkBAIC00MDgsNyArNDA5LDcgQEAgYm9vbCBSZW5kZXJUcmVlVXBkYXRlcjo6
dGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVGV4dCYgdGV4dE5vZGUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGlmICghdGV4dE5vZGUubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIXRleHROb2RlLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKKyAgICBpZiAo
IXRleHROb2RlLmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyaW5nUGFy
ZW50LnByZXZpb3VzQ2hpbGRSZW5kZXJlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXN0cy5jcHAKaW5kZXggODM0YzBlM2Q5OGU4YjJkZTVkOTgwYWZhZmU3NjM1ZjI0Mzdl
MWYwZC4uNTk3Y2VkZDdjMGFhZDNlNjczMGZiMzgwNTE1NmE1NTA3OTMwMzg1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuY3BwCkBAIC0yNTEsOCArMjUxLDggQEAgYm9vbCBTVkdUZXN0czo6aGFzRmVh
dHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5n
JgogICAgIC8vIFRoaXMgaXMgd2hhdCB0aGUgRE9NSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gbm93
IGRvZXMgaW4gSmF2YVNjcmlwdCBhcyBpcyBub3cgc3VnZ2VzdGVkIGluIHRoZSBET00gc3BlY2lm
aWNhdGlvbi4KICAgICAvLyBUaGUgYmVoYXZpb3IgaW1wbGVtZW50ZWQgYmVsb3cgaXMgcXVpcmt5
LCBidXQgcHJlc2VydmVzIHdoYXQgV2ViS2l0IGhhcyBkb25lIGZvciBhdCBsZWFzdCB0aGUgbGFz
dCBmZXcgeWVhcnMuCiAKLSAgICBib29sIGhhc1NWRzEwRmVhdHVyZVByZWZpeCA9IGZlYXR1cmUu
c3RhcnRzV2l0aCgib3JnLnczYy5kb20uc3ZnIiwgZmFsc2UpIHx8IGZlYXR1cmUuc3RhcnRzV2l0
aCgib3JnLnczYy5zdmciLCBmYWxzZSk7Ci0gICAgYm9vbCBoYXNTVkcxMUZlYXR1cmVQcmVmaXgg
PSBmZWF0dXJlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3JnL3RyL3N2ZyIsIGZhbHNlKTsK
KyAgICBib29sIGhhc1NWRzEwRmVhdHVyZVByZWZpeCA9IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9yZy53M2MuZG9tLnN2ZyIpIHx8IHN0YXJ0c1dpdGhMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9yZy53M2Muc3ZnIik7CisgICAgYm9vbCBo
YXNTVkcxMUZlYXR1cmVQcmVmaXggPSBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGZlYXR1cmUsICJodHRwOi8vd3d3LnczLm9yZy90ci9zdmciKTsKIAogICAgIC8vIFdlIGRvbid0
IGV2ZW4gdHJ5IHRvIGhhbmRsZSBmZWF0dXJlIG5hbWVzIHRoYXQgZG9uJ3QgbG9vayBsaWtlIHRo
ZSBTVkcgb25lcywgc28ganVzdCByZXR1cm4gdHJ1ZSBmb3IgYWxsIG9mIHRob3NlLgogICAgIGlm
ICghKGhhc1NWRzEwRmVhdHVyZVByZWZpeCB8fCBoYXNTVkcxMUZlYXR1cmVQcmVmaXgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCmluZGV4IGMzMTMxMzVhZWUwODdmNjgxY2VjNjBkNGI1YmJlZDk5NzRjMWEzNGEuLmEz
N2Q2MTUxNmE2MjgwMGY1YTQzMWI4OTFjNzI3MzRmMDkwMzViY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAg
LTM5OSwyMiArMzk5LDIwIEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAK
LSAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMgbGlieG1sIGFza3MgZm9yIHRoaXMgVVJM
LCB0aGUKLSAgICAvLyAiWE1MX1hNTF9ERUZBVUxUX0NBVEFMT0ciLCBvbiBpbml0aWFsaXphdGlv
bi4KKyAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMgbGlieG1sIGFza3MgZm9yIHRoaXMg
VVJMLCB0aGUgIlhNTF9YTUxfREVGQVVMVF9DQVRBTE9HIiwgb24gaW5pdGlhbGl6YXRpb24uCiAg
ICAgaWYgKHVybFN0cmluZyA9PSAiZmlsZTovLy9ldGMveG1sL2NhdGFsb2ciKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBPbiBXaW5kb3dzLCBsaWJ4bWwgY29tcHV0ZXMgYSBVUkwg
cmVsYXRpdmUgdG8gd2hlcmUgaXRzIERMTCByZXNpZGVzLgotICAgIGlmICh1cmxTdHJpbmcuc3Rh
cnRzV2l0aCgiZmlsZTovLy8iLCBmYWxzZSkgJiYgdXJsU3RyaW5nLmVuZHNXaXRoKCIvZXRjL2Nh
dGFsb2ciLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodXJsU3RyaW5nLCAiZmlsZTovLy8iKSAmJiB1cmxTdHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZSgiL2V0Yy9jYXRhbG9nIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
IFRoZSBtb3N0IGNvbW1vbiBEVEQuICBUaGVyZSBpc24ndCBtdWNoIHBvaW50IGluIGhhbW1lcmlu
ZyB3d3cudzNjLm9yZwotICAgIC8vIGJ5IHJlcXVlc3RpbmcgdGhpcyBVUkwgZm9yIGV2ZXJ5IFhI
VE1MIGRvY3VtZW50LgotICAgIGlmICh1cmxTdHJpbmcuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy53
My5vcmcvVFIveGh0bWwiLCBmYWxzZSkpCisgICAgLy8gVGhlIG1vc3QgY29tbW9uIERURC4gVGhl
cmUgaXNuJ3QgbXVjaCBwb2ludCBpbiBoYW1tZXJpbmcgd3d3LnczYy5vcmcgYnkgcmVxdWVzdGlu
ZyB0aGlzIGZvciBldmVyeSBYSFRNTCBkb2N1bWVudC4KKyAgICBpZiAoc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJodHRwOi8vd3d3LnczLm9yZy90ci94aHRt
bCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBTaW1pbGFybHksIHRoZXJlIGlz
bid0IG11Y2ggcG9pbnQgaW4gcmVxdWVzdGluZyB0aGUgU1ZHIERURC4KLSAgICBpZiAodXJsU3Ry
aW5nLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRyIsIGZhbHNlKSkK
KyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJo
dHRwOi8vd3d3LnczLm9yZy9ncmFwaGljcy9zdmciKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gVGhlIGxpYnhtbCBkb2Vzbid0IGdpdmUgdXMgYSBsb3Qgb2YgY29udGV4dCBmb3Ig
ZGVjaWRpbmcgd2hldGhlciB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDFlYjc5M2Q5ZWZlMjdlYzM2MDQ4ZjE1ZTRh
ZGExMDBhNTBmYzg4OTQuLmZkN2JhNzhiNjM3OTg0NzgzMGVkY2RlOWVkZDQ3MzliNDdmZDk4NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKQEAgLTIyMSwxMyArMjIxLDkgQEAgc3RhdGljIFJldHJpZXZlRGVjaXNpb24gbWFr
ZVJldHJpZXZlRGVjaXNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXEKICAg
ICByZXR1cm4gUmV0cmlldmVEZWNpc2lvbjo6WWVzOwogfQogCi1zdGF0aWMgYm9vbCBpc01lZGlh
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyBib29sIGlzTWVkaWFNSU1F
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgo
InZpZGVvLyIsIC8qY2FzZVNlbnNpdGl2ZSovIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIsIC8qY2FzZVNlbnNpdGl2ZSov
IGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKSB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKTsKIH0K
IAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZFRvdGFsUmVzb3VyY2VTaXpl
RnJvbUNvbnRlbnRSYW5nZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlS2V5LmNwcAppbmRleCAzYzQ5OTFjYzc1OWQyZmI3NTg0ZDNkYWNjNDEwNDUzNmIyMDFh
NmU0Li44ZmE4MWQxMDlhNGM3M2NkMGIzMTk1Yjg4ZmY1ZTNkYjE1N2MzOGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXku
Y3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGhhc2hTdHJpbmcoU0hBMSYgc2hhMSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuY29udGFpbnNPbmx5
QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUko
KSkgewogICAgICAgICBjb25zdCB1aW50OF90IG51bGxCeXRlID0gMDsKICAgICAgICAgc2hhMS5h
ZGRCeXRlcyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAg
c2hhMS5hZGRCeXRlcygmbnVsbEJ5dGUsIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCmluZGV4IDAxY2U4MTNjM2JjOTEyNGNm
MjJlMmZkNzM0NTA1MGNiODcyYzYzMzYuLjI3NDI5MzRiZDRmNGE0OWMyZTMyNDkzMzg2NmM4NmZm
MDQ3ZGYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVQb2xpY2llcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlUG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vi
c2kKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFdL
U3RyaW5nUmVmIG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1B
dEluZGV4KGtleXMuZ2V0KCksIGkpKTsKICAgICAgICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhU
VFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHRvSW1wbChuYW1lKS0+c3RyaW5nKCksIHRvSW1wbChzdGF0
aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5
LCBuYW1lKSkpLT5zdHJpbmcoKSk7Ci0gICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC0+bmFtZSgp
LnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiWC0iKSkKKyAgICAgICAgaWYgKGZpZWxkICYm
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmllbGQtPm5hbWUoKSwgIngtIikp
CiAgICAgICAgICAgICBmaWVsZHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmZpZWxkKSk7CiAg
ICAgfQogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5zZXRDdXN0b21IZWFkZXJGaWVsZHMo
V1RGTW92ZShmaWVsZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IGNiMmU1NjY4ZTYyYTRjN2MwMWVh
ZmY4ZmQ0MjE5MWViZjYwY2FhZWIuLmQ3YWEyNWE0ZWQ1Y2YwNjk0NWIxNmNhNDNiY2JlYjcxZGVm
YmFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIC0gKHZvaWQpc2V0Q3Vz
dG9tSGVhZGVyRmllbGRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilm
aWVsZHMKICAgICAKICAgICBmb3IgKE5TU3RyaW5nKiBuYW1lIGluIGZpZWxkcykgewogICAgICAg
ICBhdXRvIGZpZWxkID0gV2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkOjpjcmVhdGUobmFtZSwgW2Zp
ZWxkcyBvYmplY3RGb3JLZXk6bmFtZV0pOwotICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQtPm5h
bWUoKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIlgtIikpCisgICAgICAgIGlmIChmaWVs
ZCAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpZWxkLT5uYW1lKCksICJ4
LSIpKQogICAgICAgICAgICAgcGFyc2VkRmllbGRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpm
aWVsZCkpOwogICAgIH0KICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRDdXN0b21IZWFkZXJGaWVs
ZHMoV1RGTW92ZShwYXJzZWRGaWVsZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDViMDVhYWYyZTA5Y2M5MzcyOTMxNWNmYWU0MzE2ZjM3NmFiYmJkMTAu
Ljc1OTBkNTE3ZGQ3NjcyY2RmZWJlM2E2ZmZhOTU3ZmE2NWMwYmY2OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjI1Miw3ICs2MjUyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFMKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMJiYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKLSAgICBp
ZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKQorICAgIGlmICgh
c3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdURk1v
dmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL3BkZiIpLCBX
VEZNb3ZlKG9yaWdpbmF0aW5nVVJMKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmNwcAppbmRleCBjYmQ1NDQ5NGZlZTJhN2E1OWMxODYxYzIyNjU1YjBiYTUyMzc1YTlm
Li44MzBlMGQ3YmRlOGYxZmNlMGU5MGNiZjVjMWQwZmVlN2NmMmUyYzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC02NSw3ICs2NSw4IEBAIFdlYlBy
ZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYga2V5UHJlZml4CiB9CiAKIFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlcyYgb3RoZXIpCi0gICAgOiBtX2tleVByZWZpeChvdGhlci5tX2tl
eVByZWZpeCkKKyAgICA6IG1faWRlbnRpZmllcigpCisgICAgLCBtX2tleVByZWZpeChvdGhlci5t
X2tleVByZWZpeCkKICAgICAsIG1fZ2xvYmFsRGVidWdLZXlQcmVmaXgob3RoZXIubV9nbG9iYWxE
ZWJ1Z0tleVByZWZpeCkKICAgICAsIG1fc3RvcmUob3RoZXIubV9zdG9yZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGRmZWY1OGIw
ODU5YmE1N2VjYTYyZmRkMTc4YTFlNGUxYjNkNjA2NWIuLjAwYzFhNzI5YWUyODgyNjhlNzRmMmVi
MDM4MzhkYzY3ZGZkYTY1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
YXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNv
bnN0CiAgICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxl
J3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnNldE1ldGFkYXRhVVJMKCk/KS4KICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJp
bmcpOwogCi0gICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNl
KSkgeworICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgiLnBkZiIpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHNhdmUgZmlsZSB3aXRo
b3V0IC5wZGYgZXh0ZW5zaW9uIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpv
cGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJp
bmcmCiB7CiAgICAgU3RyaW5nIHBkZkZpbGVuYW1lID0gbV90ZW1wb3JhcnlQREZGaWxlcy5nZXQo
cGRmVVVJRCk7CiAKLSAgICBpZiAoIXBkZkZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2Up
KQorICAgIGlmICghcGRmRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIp
KQogICAgICAgICByZXR1cm47CiAKICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0g
b3BlbkZpbGU6cGRmRmlsZW5hbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCA1YzcwOTI0Y2U5MTgzMDVmZjZhZTBlODMyY2U5NjM2ZjVlY2Yw
MjliLi5hYTJmZWY5OGNhODVjZmJhNGVhNTQ0MWYwYWRkNGNkMWIxZjk1YTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAwLDcgKzgwMCw3
IEBAIFJlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUs
IEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FCiAgICAgaWYgKGlzQmxvY2tlZFBsdWdpbiB8fCAh
cGx1Z2luUHJvY2Vzc1Rva2VuKSB7CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAg
IFN0cmluZyBwYXRoID0gcGFyYW1ldGVycy51cmwucGF0aCgpOwotICAgICAgICBpZiAoc2hvdWxk
VXNlUERGUGx1Z2luKCkgJiYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlN
RVR5cGUocGFyYW1ldGVycy5taW1lVHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0
eSgpICYmIChwYXRoLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5w
cyIsIGZhbHNlKSkpKSkgeworICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5taW1l
VHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSB8fCBwYXRoLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoIi5wcyIpKSkpKSB7CiAgICAgICAgICAgICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6
Y3JlYXRlKGZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggMjAyNDYyNTI5ZDRhZDc4YTRlOWY2Zjc1ZDNmZjEzYzlmYzU0ZTVj
NS4uOGJkOTdmNmE0MWI0ZWYwZWZkY2I5NDBhOTg4MGE1ZTcwZDA4NzIwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIy
OCw3ICsyMjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZy
YW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogICAgICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHNlbGVjdGVkVGV4dDsKICAgICAgICAgfQog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2FsbG93IHJlcGxhY2Ugd2hlbiB0aGUgc3Ry
aW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4KLSAgICAgICAgcG9zdExheW91dERhdGEu
aXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0Lmlz
SW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
OworICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29u
dGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4
dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIH0KICAgICBwb3N0
TGF5b3V0RGF0YS5pbnNpZGVGaXhlZFBvc2l0aW9uID0gc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBv
c2l0aW9uIHx8IGVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb247CiAgICAgaWYgKCFzZWxlY3Rp
b24uaXNOb25lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCAxZjliYWVjZTA2OTUwZDk2MjVmNDdiNzlj
MDYwNjBjMDY2OGI2YjljLi42ZDQ3NGEyNmM1MjJhZTcxN2Q5YmI3YTIwOGQyMzZhYjM4ZTU3OTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3Bl
cnR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxp
c3RQbGFuOjp3cml0ZVN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgbV9ieXRlQ291bnQgKz0gbWFy
a2VyUGx1c0xlbmd0aEJ5dGVDb3VudChsZW5ndGgpICsgbGVuZ3RoOwotICAgIGlmICghc3RyaW5n
LmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgaWYgKCFzdHJpbmcuaXNBbGxBU0NJSSgpKQogICAg
ICAgICBtX2J5dGVDb3VudCArPSBsZW5ndGg7CiB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lk
IEJpbmFyeVByb3BlcnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVjdChjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBzdGFydE9iamVjdCgpOwogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkp
IHsKKyAgICBpZiAoc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBpZiAobGVuZ3RoIDw9
IG1heExlbmd0aEluTWFya2VyQnl0ZSkKICAgICAgICAgICAgIGFwcGVuZEJ5dGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oYXNjaWlTdHJpbmdNYXJrZXJCeXRlIHwgbGVuZ3RoKSk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA1NmY2ZGVjMGI3ZjUyZWVlYWZlZGE2NzE1
N2MzNmU3NmE5YjZjYWY0Li5iN2JjYTQ1YjE2MDlhNzgxNGM3MjA3ZGIyZjBjYjU0MWVlMDZiOGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyBSZWd1bGFyRXhw
cmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7CiAgICAgc3RhdGljIE5TTXV0YWJs
ZUFycmF5KiByZWdFeHBMYWJlbHMgPSBuaWw7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZl
Y3RvcjxSZWd1bGFyRXhwcmVzc2lvbio+PiByZWdFeHBzOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3IiwgVGV4dENhc2VTZW5zaXRp
dmUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJl
Z0V4cCgiXFx3Iik7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICgh
cmVnRXhwTGFiZWxzKQpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lv
biogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVscykKICAgICAgICAgICAgICAgICBwYXR0
ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwogICAgICAgICB9CiAgICAgICAgIHBhdHRlcm4uYXBw
ZW5kKCcpJyk7Ci0gICAgICAgIHJlc3VsdCA9IG5ldyBSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJu
LnRvU3RyaW5nKCksIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAgICAgICByZXN1bHQgPSBuZXcg
UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygpLCBKU0M6OllhcnI6OlRleHRDYXNl
SW5zZW5zaXRpdmUpOwogICAgIH0KIAogICAgIC8vIGFkZCByZWdleHAgdG8gdGhlIGNhY2hlLCBt
YWtpbmcgc3VyZSBpdCBpcyBhdCB0aGUgZnJvbnQgZm9yIExSVSBvcmRlcmluZwpAQCAtNDg4LDcg
KzQ4OCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKE5TQXJy
YXkgKmxhYmVscywgY29uc3QgU3RyaW5nJiBzdHJpbmdUCiAgICAgU3RyaW5nIG11dGFibGVTdHJp
bmdUb01hdGNoID0gc3RyaW5nVG9NYXRjaDsKICAgICAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5k
IF8ncyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJh
ZGRyZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBSZWd1bGFyRXhwcmVz
c2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJs
ZVN0cmluZ1RvTWF0Y2gsIFJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiKSwgIiAiKTsKICAgICBtdXRh
YmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKICAgICBSZWd1bGFyRXhw
cmVzc2lvbiogcmVnRXhwID0gcmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IGU4NmQzMDQ3MDdmYWM2NjY5MjNmNzU4MWFlODY2ZmRmM2Y2ZTM5MzAuLjVmMWNhNGIzNGMwMTg2
NDk0NjEwZDA2MDgyOWJjNzc0NGY1NjA5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC05NCw4ICs5NCw4IEBA
IHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0
PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxlRGF0YS5jRmls
ZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7Ci0gICAgICAgICAgICBpZiAo
KCFmaWxlbmFtZS5zdGFydHNXaXRoKCJucCIsIGZhbHNlKSB8fCAhZmlsZW5hbWUuZW5kc1dpdGgo
ImRsbCIsIGZhbHNlKSkgJiYKLSAgICAgICAgICAgICAgICAoIWVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpIHx8ICFpdC0+ZW5kc1dpdGgoIlNob2Nr
d2F2ZSAxMCIsIGZhbHNlKSkpCisgICAgICAgICAgICBpZiAoKCFzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAibnAiKSB8fCAhZmlsZW5hbWUuZW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZSgiZGxsIikpICYmCisgICAgICAgICAgICAgICAgKCFlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwgInBsdWdpbi5kbGwiKSB8fCAhaXQtPmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoIlNob2Nrd2F2ZSAxMCIpKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gKml0ICsgIlxcIiArIGZpbGVu
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRl
eCBlZDFkNTlhMWMzMjBhZDNmYjUxZTRlNmMwMzU3NWM3NjczNDg0MGM5Li4yNmVmNWQ5ZDc0ZDQ0
N2JhYmRlYzc1MzYxNmQ4MThiZWZlMzU3MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIEhSRVNVTFQgV2ViRG93
bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRsZVBhdGgsIF9Jbl9v
cHRfIElXZWJECiAgICAgbV9idW5kbGVQYXRoID0gU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmlu
Z0xlbihidW5kbGVQYXRoKSk7CiAgICAgLy8gQXR0ZW1wdCB0byByZW1vdmUgdGhlICIuZG93bmxv
YWQiIGV4dGVuc2lvbiBmcm9tIHRoZSBidW5kbGUgZm9yIHRoZSBmaW5hbCBmaWxlIGRlc3RpbmF0
aW9uCiAgICAgLy8gRmFpbGluZyB0aGF0LCB3ZSBjbGVhciBtX2Rlc3RpbmF0aW9uIGFuZCB3aWxs
IGFzayB0aGUgZGVsZWdhdGUgbGF0ZXIgb25jZSB0aGUgZG93bmxvYWQgc3RhcnRzCi0gICAgaWYg
KG1fYnVuZGxlUGF0aC5lbmRzV2l0aChEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpLCBm
YWxzZSkpIHsKKyAgICBpZiAobV9idW5kbGVQYXRoLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
RG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNpb24oKSkpIHsKICAgICAgICAgbV9kZXN0aW5hdGlv
biA9IG1fYnVuZGxlUGF0aC5pc29sYXRlZENvcHkoKTsKICAgICAgICAgbV9kZXN0aW5hdGlvbi50
cnVuY2F0ZShtX2Rlc3RpbmF0aW9uLmxlbmd0aCgpIC0gRG93bmxvYWRCdW5kbGU6OmZpbGVFeHRl
bnNpb24oKS5sZW5ndGgoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IDBlZDNlMzM1ODA2MzRiNzhjZTI1M2Q1ZmFhZWNkZGY4MTA3YjgzNTguLmY2YmU4
ZTEyNDkwY2ZjYzE3M2E3Mzc4YjFhNzQ0ZTg4ZGY1M2FkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCkBAIC0zODg3LDcgKzM4ODcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om1hcmtB
bGxNYXRjaGVzRm9yVGV4dChfSW5fIEJTVFIgc3RyLCBCT09MIGNhc2VTZW5zaXRpdmUsIEJPT0wg
aAogICAgIGlmICghc3RyIHx8ICFTeXNTdHJpbmdMZW4oc3RyKSkKICAgICAgICAgcmV0dXJuIEVf
SU5WQUxJREFSRzsKIAotICAgICptYXRjaGVzID0gbV9wYWdlLT5tYXJrQWxsTWF0Y2hlc0ZvclRl
eHQodG9TdHJpbmcoc3RyKSwgY2FzZVNlbnNpdGl2ZSA/IFRleHRDYXNlU2Vuc2l0aXZlIDogVGV4
dENhc2VJbnNlbnNpdGl2ZSwgaGlnaGxpZ2h0LCBsaW1pdCk7CisgICAgKm1hdGNoZXMgPSBtX3Bh
Z2UtPm1hcmtBbGxNYXRjaGVzRm9yVGV4dCh0b1N0cmluZyhzdHIpLCBjYXNlU2Vuc2l0aXZlID8g
MCA6IFdlYkNvcmU6OkNhc2VJbnNlbnNpdGl2ZSwgaGlnaGxpZ2h0LCBsaW1pdCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBiOThkNTU5OGJlNDRiMWEyZmY5NDQ3MTQ3M2M4YWVjYTAxOTdmMTJlLi4zNmQ4
ZGExYzhmNGI1ODk0MjBhNDJjOTZhMTZjNGI2N2Q3ZjQ4MWQxIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTEt
MjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBXVEY6
OlN0cmluZyBvcGVyYXRpb25zIHRoYXQgZG8gdW5uZWNlc3NhcnkgVW5pY29kZSBvcGVyYXRpb25z
IGluc3RlYWQgb2YgQVNDSUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3OTkwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICAoY2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlD
YXNlLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6dXJsQ29udGFpbnMgY29uc3QpOiBEaXR0by4KKwog
MjAxNy0xMS0yMSAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IEZpeCBXZWJLaXRHVEsrIGNvbXBpbGF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KaW5kZXggNTE2OWU2OTZjNzIyMmY1YTJmZTQ4ZWNlZTdiNWRiYmUyYTBl
NTNhMy4uNGQxYzZlZTlmMTZiOGFjNGM4YTQzOGY5NGE3OGI0YjkwMDVkMzcwYiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTU5Miw5ICsxNTkyLDkg
QEAgc3RhdGljIHZvaWQgY2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZChjb25zdCBjaGFyKiB0ZXN0
UGF0aE9yVVIpCiAgICAgV1RGOjpTdHJpbmcgbG9jYWxQYXRoT3JVcmwgPSBTdHJpbmcodGVzdFBh
dGhPclVSKTsKICAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0b3IgPSBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gd2luZG93XSBiYWNraW5nU2NhbGVGYWN0b3JdOwogICAgIGZsb2F0IHJlcXVpcmVkU2Nh
bGVGYWN0b3IgPSAxOwotICAgIGlmIChsb2NhbFBhdGhPclVybC5maW5kSWdub3JpbmdDYXNlKCIv
aGlkcGktM3gtIikgIT0gbm90Rm91bmQpCisgICAgaWYgKGxvY2FsUGF0aE9yVXJsLmNvbnRhaW5z
SWdub3JpbmdBU0NJSUNhc2UoIi9oaWRwaS0zeC0iKSkKICAgICAgICAgcmVxdWlyZWRTY2FsZUZh
Y3RvciA9IDM7Ci0gICAgZWxzZSBpZiAobG9jYWxQYXRoT3JVcmwuZmluZElnbm9yaW5nQ2FzZSgi
L2hpZHBpLSIpICE9IG5vdEZvdW5kKQorICAgIGVsc2UgaWYgKGxvY2FsUGF0aE9yVXJsLmNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoIi9oaWRwaS0iKSkKICAgICAgICAgcmVxdWlyZWRTY2FsZUZh
Y3RvciA9IDI7CiAgICAgaWYgKGN1cnJlbnRTY2FsZUZhY3RvciA9PSByZXF1aXJlZFNjYWxlRmFj
dG9yKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCmluZGV4IGM4OGJiMTg1NTllMTUwZGM4Y2M2MmEyZjk3MmViYTJmMzM1MjM3NzMuLjJj
YTdlNTIzY2MyZTM3YmRkMDgzNjZhMTRmMmFlZTgyNDRmYTNmZjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIFdLVVJMUmVmIFRl
c3RJbnZvY2F0aW9uOjp1cmwoKSBjb25zdAogCiBib29sIFRlc3RJbnZvY2F0aW9uOjp1cmxDb250
YWlucyhjb25zdCBjaGFyKiBzZWFyY2hTdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJs
U3RyaW5nLmNvbnRhaW5zKHNlYXJjaFN0cmluZywgZmFsc2UpOworICAgIHJldHVybiBtX3VybFN0
cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKHNlYXJjaFN0cmluZyk7CiB9CiAKIHZvaWQg
VGVzdEludm9jYXRpb246OnNldElzUGl4ZWxUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3Rl
ZFBpeGVsSGFzaCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327412</attachid>
            <date>2017-11-21 08:36:21 -0800</date>
            <delta_ts>2017-11-22 17:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179907-20171121083620.patch</filename>
            <type>text/plain</type>
            <size>436795</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZTA5NzY3MzEwZjZlNzAzNDFkN2FlMDA2MDNhZjkwMTQ0ODI4NWUxLi5kYWFjZGViMTViZGMwZWZj
NjkxYTVhYjFkYmVlYzE4ZDc3ZDY2YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2Fy
eSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkSWRlbnRpZmllcnM6OmF0IGNvbnN0KTog
VXNlIFN0cmluZ0ltcGw6OnJlZkNvdW50IHRvIGFzc2VydCB0aGlzIGhhcworICAgICAgICBhdCBs
ZWFzdCBvbmUgcmVmZXJlbmNlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZnVuY3Rpb24gb25seSB1c2Vk
IGluIHRoaXMgZmlsZSwgYWxsb3dpbmcKKyAgICAgICAgdXMgdG8gcmVtb3ZlIFN0cmluZ0ltcGw6
Omhhc0F0TGVhc3RPbmVSZWYuCisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQpOiBEaXR0by4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBSZW1v
dmVkIGV4cGxpY2l0IFRleHRDYXNlU2Vuc2l0aXZlIGJlY2F1c2UgUmVndWxhckV4cHJlc3Npb24g
bm93CisgICAgICAgIGRlZmF1bHRzIHRvIHRoYXQuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0luY2x1ZGVzSW1wbCk6IFVzZSBT
dHJpbmc6OmZpbmQgc2luY2UgdGhlcmUgaXMgbm8gb3ZlcmxvYWQgb2YKKyAgICAgICAgU3RyaW5n
Ojpjb250YWlucyB0aGF0IHRha2VzIGEgc3RhcnQgb2Zmc2V0IG5vdyB0aGF0IHdlIHJlbW92ZWQg
dGhlIG9uZSB0aGF0IHRvb2sgYQorICAgICAgICBjYXNlU2Vuc2l0aXZlIGJvb2xlYW4uIFdlIGNh
biBhZGQgb25lIGxhdGVyIGlmIHdlIGxpa2UsIGJ1dCB0aGlzIHNob3VsZCBkbyBmb3Igbm93Lgor
CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCB0aGUgVGV4dENhc2VT
ZW5zaXRpdml0eSBlbnVtZXJhdGlvbiBoZXJlIGZyb20KKyAgICAgICAgdGhlIFN0cmluZ0ltcGwu
aCBoZWFkZXIgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgaGVyZS4KKwogMjAxNy0xMS0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXVtGVExd
IFN1cHBvcnQgTWFwU2V0IC8gU2V0QWRkIGludHJpbnNpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjE2MTM1NDUxYmExMjE2
NTY5YWFmNWRmMzdhMzFhNDQwMjY0NGZiMy4uZjNlMTkzNTA0NmJkN2I3NzViODM0MDIwODAxZTlh
ZjQ3YWZmMWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxNy0xMS0yMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlv
bnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
dGV4dC9BU0NJSUZhc3RQYXRoLmg6IE1vdmVkIHRoZSB1c2luZyBmb3IgY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJIGhlcmUgc2luY2UKKyAgICAgICAgdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgaGVyZS4K
KworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOiBSZW1vdmVkIG92ZXJsb2FkcyBv
ZiBjb250YWlucywgZmluZCwgc3RhcnRzV2l0aCwgYW5kCisgICAgICAgIGVuZHNXaXRoIHRoYXQg
dGFrZSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZXkgc2hvdWxkIGJlICJjYXNlIHNl
bnNpdGl2ZSIuCisgICAgICAgIFdoZW4gZmFsc2UsIHRoaXMgd2FzIGRvaW5nIFVuaWNvZGUgY2Fz
ZSBmb2xkaW5nLCBhbmQgbm8gY2FsbGVycyBuZWVkZWQgdGhhdC4KKyAgICAgICAgQWxzbyB0d2Vh
a2VkIGZvcm1hdHRpbmcgYW5kIGFyZ3VtZW50IG5hbWVzLgorCisgICAgICAgICogd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOiBBZGRlZCBhbiBpbmNsdWRlIG9mIExDaGFyLmgg
c2luY2UgdGhpcyBmaWxlCisgICAgICAgIHVzZXMgdGhhdC4gQWxzbyB0d2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSk6IERlbGV0ZWQuIERlc3Bp
dGUgaXRzIG5hbWUgc291bmRpbmcgbGlrZQorICAgICAgICBpdCB1c2VkIHRoZSBmdWxsIFVuaWNv
ZGUgd2hpdGVzcGFjZSBkZWZpbml0aW9uLCB0aGlzIGFjdHVhbGx5IGNoZWNrZWQgaXNBU0NJSVNw
YWNlLgorICAgICAgICBDYWxsZXJzIG5vdyBhbGwgdXNlIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMg
aW5zdGVhZCB3aXRoIHRoZSB3aGl0ZXNwYWNlIGRlZmluaXRpb24KKyAgICAgICAgdGhhdCBpcyBh
cHByb3ByaWF0ZSB0byBlYWNoIGNhbGwgc2l0ZS4KKyAgICAgICAgKFdURjo6bGF0aW4xQ2FzZUZv
bGRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsQ29tcGF0aWJpbGl0eUNhc2Vs
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2Fz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmZpbmRJZ25vcmluZ0Nhc2VJbm5lcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5uZXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OmVxdWFsSW5uZXIpOiBSZW1vdmVkIGJvb2xlYW4gY2FzZVNl
bnNpdGl2ZSBhcmd1bWVudC4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RhcnRzV2l0aCk6
IERpdHRvLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCk6IERpdHRvLgorCisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBNb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2aXR5
IG91dCBpbnRvIGEgZGlmZmVyZW50IGhlYWRlci4KKyAgICAgICAgTW92ZWQgQVNDSUlGYXN0UGF0
aC5oIGluY2x1ZGUgaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3ZlZCBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzCisgICAgICAgIGZyZWUgZnVuY3Rpb24gaGVyZSBmcm9tIFdURlN0cmluZy5oLiBNb3Zl
ZCBsb3RzIG9mIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xhc3MKKyAgICAgICAgZGVmaW5pdGlv
bnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyIHRvIHJlYWQuIFNvcnRlZCB0
aGluZ3MgYSBiaXQuCisgICAgICAgIFR3ZWFrZWQgZm9ybWF0dGluZy4gTWFya2VkIGNvbnN0cnVj
dG9yIHRoYXQgdGFrZXMgb25lIGFyZ3VtZW50IGV4cGxpY2l0LiBBZGRlZAorICAgICAgICBhbiBp
c0VtcHR5IGZ1bmN0aW9uIGxpa2UgdGhlIG9uZSBpbiBTdHJpbmcuIFJlbW92ZWQgdGhlIGhhc0F0
TGVhc3RPbmVSZWYKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgZG9lc24ndCBvZmZlciBhIGJl
bmVmaXQgb3ZlciB0aGUgcmVmQ291bnQgZnVuY3Rpb24uIFJlbmFtZWQKKyAgICAgICAgY29weUNo
YXJzIHRvIGNvcHlDaGFyYWN0ZXJzLiBBZGRlZCBpc0FsbEFTQ0lJLCBpc0FsbExhdGluMSBhbmQK
KyAgICAgICAgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyBmdW5jdGlvbnMuIFJlbW92ZWQgYm9vbGVh
biBjYXNlU2Vuc2l0aXZlIGFyZ3VtZW50cworICAgICAgICBmcm9tIHZhcmlvdXMgZnVuY3Rpb25z
LiBSZW1vdmVkIGZpbmRJZ25vcmluZ0Nhc2UgYW5kIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLgor
ICAgICAgICBBZGRlZCBhIEZJWE1FIHRvIGNvZGVQb2ludENvbXBhcmUgYWJvdXQgdGhlIHdheSBp
dCB0cmVhdHMgbnVsbCBhbmQgZW1wdHkgc3RyaW5ncworICAgICAgICBhcyBlcXVhbC4gQ2hhbmdl
ZCBsZW5ndGggYXJndW1lbnQgaW4gcmVtb3ZlIHRvIHVuc2lnbmVkIHRvIG1hdGNoIG90aGVyIGxl
bmd0aHMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnJlbW92ZUludGVybmFsKTogQ2hhbmdlZCBsZW5ndGggYXJndW1lbnQgdG8gYmUg
dW5zaWduZWQuCisgICAgICAgIChXVEY6OmNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMpOiBV
c2UgZW1wdHlTdHJpbmcuCisgICAgICAgIChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkIGNvbnN0KTogUmV3cm90ZSB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBNb3ZlZCBBU0NJSUZhc3RQYXRoLmggdG8gU3RyaW5n
SW1wbC5oLiBNb3ZlZCBsb3RzIG9mCisgICAgICAgIGZ1bmN0aW9uIGJvZGllcyBvdXQgb2YgY2xh
c3MgZGVmaW5pdGlvbnMgdG8gbWFrZSB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgZWFzaWVyCisgICAg
ICAgIHRvIHJlYWQsIG1hZGUgb3RoZXJzIG9uZS1saW5lcnMuIFJlbW92ZWQgdGhlIFN0cmluZzo6
YXQgZnVuY3Rpb24gYnV0IGtlcHQgdGhlCisgICAgICAgIFN0cmluZzo6Y2hhcmFjdGVyQXQgZnVu
Y3Rpb247IHRoZSB0d28gd2VyZSBpZGVudGljYWwuIFJlbW92ZWQgYm9vbGVhbgorICAgICAgICBj
YXNlU2Vuc2l0aXZlIGFyZ3VtZW50cyBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zLiBSZW1vdmVkIGZp
bmRJZ25vcmluZ0Nhc2UgYW5kCisgICAgICAgIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlLiBSZW5h
bWVkIGNvbnRhaW5zT25seUFTQ0lJIHRvIGlzQWxsQVNDSUkgYW5kCisgICAgICAgIGNvbnRhaW5z
T25seUxhdGluMSB0byBpc0FsbExhdGluMSB0byBtYXRjaCB0aGUgbmFtaW5nIG9mIGlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnMuCisgICAgICAgIE1vdmVkIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25z
IG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbmVkIGFib3ZlIGZ1cnRoZXIKKyAgICAgICAgZG93
biwgYWZ0ZXIgdGhpbmdzIGxpa2UgdGhlIEFTQ0lJTGl0ZXJhbCBjbGFzcyBhbmQgdmFyaW91cyBm
dW5jdGlvbnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6IFVwZGF0ZWQgbmFtZSBvZiBjb3B5Q2hhcnMuCisKIDIwMTctMTEtMTkgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBUT1VD
SF9JQ09OX0xPQURJTkcgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxY2VkNDNmMjU4ZThh
M2JhMGIyZDVhMTJlNTQzNDdmY2ExNTU0YS4uYjBkNTkzNTIwNzY1NmNmNDM1ODFmYzk5YWJiZmZh
NGY1ZTVmZWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzOSBAQAorMjAxNy0xMS0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5n
IG9wZXJhdGlvbnMgdGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVh
ZCBvZiBBU0NJSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5OTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Omhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6IFVzZSBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyk6IFVzZSBpc0FsbEFTQ0lJLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRMZW5ndGhGb3JUZXh0UmFuZ2UgY29uc3QpOiBVc2Ug
dGV4dCgpLmxlbmd0aCgpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJ
blJhbmdlKTogVXNlIGlzSFRNTFNwYWNlIGluc3RlYWQgb2YKKyAgICAgICAgaXNTcGFjZU9yTmV3
bGluZSBzaW5jZSB0aGUgY29kZSBpcyB0cnlpbmcgdG8gc2tpcCBjb2xsYXBzaWJsZSBIVE1MIHNw
YWNlcywgbm90CisgICAgICAgIGFyYml0cmFyeSBVbmljb2RlIHdoaXRlc3BhY2UuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJz
KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+IGZvciB0
aGUgc2FtZSByZWFzb24gYXMgYWJvdmUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KTogVXNlIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eU9i
amVjdENvbnRhaW5zVGV4dCBjb25zdCk6IFVzZQorICAgICAgICBuZXcgZmluZFBsYWluVGV4dCBm
dW5jdGlvbiBleHBvcnRlZCBmcm9tIFRleHRJdGVyYXRvciBzbyB0aGlzIGNhbiBzaGFyZSB0aGUK
KyAgICAgICAgc2FtZSBzZWFyY2ggbWF0Y2hpbmcgbG9naWMgdXNlZCB0byBmaW5kIHRleHQgaW4g
d2VicGFnZXMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RU
ZXh0KTogVXNlIGNhcGl0YWxpemUgYW5kIGl0cyByZXR1cm4gdmFsdWUKKyAgICAgICAgcmF0aGVy
IHRoYW4gbWFrZUNhcGl0YWxpemUgbW9kaWZ5aW5nIGEgc3RyaW5nIGluIHBsYWNlLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KTogVXNlIGlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+CisgICAgICAgIGZvciB0aGUgc2FtZSByZWFzb24gYXMg
YWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdUb0J5dGVTdHJpbmcpOiBVc2UgaXNBbGxMYXRpbjEuCisKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpjb250YWluc09ubHlBU0NJSVdpdGhOb1VwcGVyY2FzZSk6IFVzZQor
ICAgICAgICBTdHJpbmdWaWV3Ojpjb2RlVW5pdHMgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorCisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICBVc2UgaXNBbGxB
U0NJSS4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6YWRk
UGF0dGVybik6IERpdHRvLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3Jt
YXQgY29uc3QpOiBVc2UgcHJvdG9jb2xJcyBhbmQKKyAgICAgICAgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIGNzcy9ET01DU1NOYW1lc3BhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dmFsdWVXaXRob3V0SW1wb3J0YW50KTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3cpOiBVc2UgaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0NTU1NwYWNlPiwKKyAgICAgICAgZm9yIHRoZSBwcmVmbGlnaHQsIHdo
aWNoIG1hdGNoZXMgd2hhdCB0aGUgYWN0dWFsIHBhcnNpbmcgY29kZSB1c2VzLgorCisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSBjb25zdCk6IERlbGV0ZWQuIENhbGxlcnMgY2FuCisg
ICAgICAgIGVmZmljaWVudGx5IGdldCBhdCB0aGUgZGF0YSBhbmQgZG8gdGhpcyBraW5kIG9mIGNo
ZWNrIG9uIHRoZSBkYXRhIGRpcmVjdGx5LgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6
IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplVHlwZSk6IFVzZSBzdGFydHNXaXRoIHNpbmNl
IHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBjb252ZXJ0ZWQKKyAgICAgICAgdG8gQVNDSUkgbG93ZXJj
YXNlLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGNvbnN0KTogVXNlIGlzSFRNTFNwYWNl
IHNpbmNlCisgICAgICAgIHNpbmNlIHRoZSBjb2RlIGlzIHRyeWluZyB0byBjaGVjayBmb3IgY29s
bGFwc2libGUgSFRNTCBzcGFjZXMsIG5vdCBnZW5lcmFsCisgICAgICAgIFVuaWNvZGUgc3BhY2Vz
LiBPdGhlciBjYWxsIHNpdGVzIG9mIGlzU3BhY2VPck5ld2xpbmUgbmVlZCB0byBiZSBjaGVja2Vk
IGZvcgorICAgICAgICB0aGlzLCBidXQgSSBkaWQgbm90IGZpeCB0aGVtIGFsbCBhdCB0aGlzIHRp
bWUuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRp
b24gY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKTogVXNlIG5vQnJl
YWtTcGFjZS4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlYnVnUmVuZGVyZXIgY29uc3QpOiBVc2UgdGV4
dCgpLmxlbmd0aCgpIGluc3RlYWQKKyAgICAgICAgb2YgdGV4dExlbmd0aC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCBjb25zdCk6IFVzZSBu
b0JyZWFrU3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVj
dGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCBjb25zdCk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dE5vZGVPZmZzZXRJbkZsb3cpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGFwc2VkU3BhY2VMZW5ndGgpOiBVcGRhdGVkIHNpbmNlIFJlbmRlclRl
eHQ6OnRleHQgbm93IHJldHVybnMKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6IEFkZGVkLiBVc2VzIFNl
YXJjaEJ1ZmZlciB0byBzZWFyY2ggZm9yIG9uZSBzdHJpbmcKKyAgICAgICAgd2l0aGluIGFub3Ro
ZXIuIEV4cG9ydGVkIHNvIGFjY2Vzc2liaWxpdHkgY29kZSBjYW4gZG8gdGhpcyBvcGVyYXRpb24u
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDogVXBkYXRlZCBmb3IgdGhlIGFib3Zl
LgorCisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6IFVzZSBub0Jy
ZWFrU3BhY2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kU3RhcnRPZlBhcmFncmFwaCk6IFVwZGF0ZWQgc2luY2UgUmVuZGVyVGV4
dDo6dGV4dCBub3cgcmV0dXJucworICAgICAgICBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRFbmRPZlBhcmFncmFwaCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0
KTogVXNlIFN0cmluZzo6Y2hhcmFjdGVyQXQgaW5zdGVhZCBvZiBTdHJpbmc6OmF0LgorICAgICAg
ICBVc2UgY2FwaXRhbGl6ZSBpbnN0ZWFkIG9mIG1ha2VDYXBpdGFsaXplZC4KKworICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaXBNaWNyb3NvZnRQcmVmaXgpOiBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogaHRtbC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERh
dGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KTogVXNlCisgICAgICAgIHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL0Jhc2VUZXh0
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0SW5wdXRUeXBlOjpwYXR0
ZXJuTWlzbWF0Y2ggY29uc3QpOiBSZW1vdmVkIGV4cGxpY2l0CisgICAgICAgIFRleHRDYXNlU2Vu
c2l0aXZlIHNpbmNlIGl0IG5vdyBpcyB0aGUgZGVmYXVsdCwgYW5kIG5lZWRlZCB0byB0b3VjaCB0
aGlzIGFueXdheQorICAgICAgICBiZWNhdXNlIHRoZSBlbnVtZXJhdGlvbiBpcyBub3cgaW4gYSBk
aWZmZXJlbnQgbmFtZXNwYWNlLgorCisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkRW1haWxBZGRyZXNzKTogVXBkYXRlZCB0byB1c2Ug
SlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aGFz
RmFsbGJhY2tDb250ZW50IGNvbnN0KTogVXNlCisgICAgICAgIGlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnNo
b3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6aGFzVmFsaWRDbGFzc0lkKTogVXNlIHByb3RvY29sSXMuCisgICAgICAgIChXZWJDb3Jl
OjpwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSk6IFVzZSBpc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPi4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpz
ZXRDb21wYXRpYmlsaXR5TW9kZUZyb21Eb2N0eXBlKToKKyAgICAgICAgVXNlIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdENoYXJzZXQpOiBV
c2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjppc0NvbnRhaW5lZEluUmVx
dWVzdCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpo
YXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKTogRG9uJ3QgcGFzcyB0aGUgbGVuZ3RoIHRvCisgICAg
ICAgIHRoZSBTdHJpbmc6OnN0YXJ0c1dpdGggZnVuY3Rpb24uIFRoZXJlIGhhcyBuZXZlciBiZWVu
IGEgdmVyc2lvbiBvZiB0aGF0IGZ1bmN0aW9uCisgICAgICAgIHRoYXQgdGFrZXMgdGhlIGxlbmd0
aCwgdGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzIHRoZSBsZW5ndGggc2luY2UgdGhlIGZ1bmN0aW9u
CisgICAgICAgIGhhbmRsZXMgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MgbGlrZSB0aGUgb25lIGhl
cmUsIGFuZCBpbiB0aGUgcGFzdCB0aGUgbGVuZ3RoCisgICAgICAgIGhhcyBiZWVuIGdldHRpbmcg
Y29udmVydGVkIHRvIGEgYm9vbGVhbiBtYWtpbmcgdGhlIGNvbXBhcmlzb24gYmUgY2FzZSBzZW5z
aXRpdmUuCisgICAgICAgIFJlbW92aW5nIHRoZSBhcmd1bWVudCBlbnRpcmVseSBsZWF2ZXMgaXQg
Y2FzZSBzZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOb2RlRmluZGVyOjptYXRjaGVzRWxl
bWVudCk6IFVzZSBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UKKyAgICAgICAgYW5kIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKTogVXNl
IEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zT25s
eUhUTUxXaGl0ZXNwYWNlKTogTWFkZSB0aGlzIGEgbm9uLW1lbWJlciBmdW5jdGlvbgorICAgICAg
ICBhbmQgcmVpbXBsZW1lbnRlZCB1c2luZyBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPigpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RD
aGlsZCk6IFVzZSBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQcmV2aW91c1NpYmxpbmcpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckNoaWxkTm9kZUNvdW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0
RE9NTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZFJlbW92ZURPTU5vZGUpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZp
bGUpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKwor
ICAgICAgICAqIHBhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2U2NFV0aWxpdGllczo6YnRvYSk6IFVzZSBpc0FsbExhdGluMS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKTogUmVt
b3ZlZCBUZXh0Q2FzZVNlbnNpdGl2ZSBhcmd1bWVudCBzaW5jZQorICAgICAgICB0aGF0IGlzIG5v
dyB0aGUgZGVmYXVsdCBhbmQgYWxzbyB1c2VkIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6IE1vcmUgb2Yg
dGhlIHNhbWUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCk6
IFVzZQorICAgICAgICB0ZXh0KCkubGVuZ3RoKCkuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbElu
SFRUUEZhbWlseSk6IFVzZQorICAgICAgICBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlLgorCisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzSG9zdCBjb25zdCk6Cisg
ICAgICAgIFVzZSBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzIGNvbnN0KTogRGl0dG8uCisKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlTm9u
Y2VTb3VyY2UpOgorICAgICAgICBVc2Ugc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorCisg
ICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGggY29uc3QpOiBVc2Ugbm9CcmVha1NwYWNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFR5cGU6OnBhcmFtZXRlciBjb25zdCk6IFVzZSBmaW5kSWdub3JpbmdBU0NJSUNhc2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkRm9udE1JTUVUeXBlKTogVXNlCisgICAgICAg
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1FVHlwZSk6IFVzZQorICAgICAgICBt
aW1lVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUpOiBVc2UKKyAgICAgICAgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKTogVXNl
CisgICAgICAgIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0FsbEFTQ0lJKTog
UmVuYW1lZCBmcm9tIGNvbnRhaW5zT25seUFTQ0lJLgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RW5jb2RlZEhvc3RuYW1lKTogVXNlIGlzQWxsQVNDSUkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNPbmx5QVNDSUkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKTogVXNlIFN0
cmluZ0ltcGw6OmlzQWxsQVNDSUkuIENoYW5nZWQKKyAgICAgICAgdG8gdGFrZSBTdHJpbmdJbXBs
JiB0byBndWFyYW50ZWUgd2Ugd29uJ3Qga2VlcCBkb2luZyBudWxsIGNoZWNrcyBzaW5jZQorICAg
ICAgICB0aGUgY2FsbGVyIGFscmVhZHkgY2hlY2tzIGZvciBudWxsLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KTogUGFzcyBTdHJpbmdJbXBsJi4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UK
KyAgICAgICAgYW5kIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkS2V5U3lzdGVtUkUpOiBVc2UgSlND
OjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpzaW1pbGFyRm9udCk6IFVzZSBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlIGZvcgorICAg
ICAgICB0aGUgR2VlemEgZm9udCBzcGVjaWFsIGNhc2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkUmVqZWN0TUlNRVR5cGUpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyk6IFJlbW92ZWQKKyAgICAgICAgVGV4dENhc2VTZW5z
aXRpdmUgc2luY2UgaXQgbm93IGlzIHRoZSBkZWZhdWx0LgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4pOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOiBVc2UgaXNBbGxBU0NJSS4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgor
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOiBVc2UgaXNBbGxBU0NJ
SS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyk6IFVzZSBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoKTogVXNlIGZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRDaGFyc2V0SW5NZWRpYVR5
cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmFuZ2UpOiBVc2Ugc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZUZyb21IYW5kbGUpOgorICAg
ICAgICBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9NdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlwYXJ0
SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmhhbmRsZURhdGFVUkwpOiBVc2UKKyAgICAg
ICAgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6aXNBcHBlbmRhYmxlSGVhZGVyKTogVXNlCisgICAgICAgIHN0YXJ0c1dpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlOjphcHBlbmRIVFRQSGVhZGVyRmllbGQpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dE1hcmt1cEZyb21DRkhUTUwpOiBVc2UgZmluZElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhZ21lbnRGcm9tQ0ZIVE1MKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJp
bmcvQmlkaVJ1bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVuKTogVXNl
IHRleHQoKS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCBjb25zdCk6
IFVzZQorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgorICAgICAgICAqIHJlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6IFVzZSB0ZXh0KCkubGVuZ3RoKCkuCisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjppbmNyZW1lbnQpOiBEdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OmlzTGluZUJyZWFrIGNvbnN0KTogVXBkYXRlZCBzaW5jZSBSZW5kZXJUZXh0Ojp0ZXh0Cisg
ICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZCBjb25zdCk6IFVzZSB0ZXh0KCkubGVuZ3RoKCku
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojp0ZXh0IGNvbnN0KTogVXBkYXRlZCBz
aW5jZSBSZW5kZXJUZXh0Ojp0ZXh0CisgICAgICAgIG5vdyByZXR1cm5zIGEgU3RyaW5nSW1wbCYu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKTogVXNlIHRleHQoKS5sZW5ndGgoKS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzVmlzaWJsZVJlbmRlclRleHQpOiBVc2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxT
cGFjZT4oKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyB0cmlt
bWVkUHJlZmVycmVkV2lkdGhzIHRoYXQgcmV0dXJucyBhIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHRo
ZQorICAgICAgICBvbGQgb25lIHdpdGggbG90cyBvZiBhcmd1bWVudHMuIEFsc28gdXNlIHRleHQo
KS5sZW5ndGgoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuZHNXaXRoSFRNTFNwYWNlcyk6IFJlbmFtZWQgYW5kIGNo
YW5nZWQgdG8gdXNlIGlzSFRNTFNwYWNlCisgICAgICAgIGluc3RlYWQgb2YgaXNBU0NJSVNwYWNl
LgorICAgICAgICAoV2ViQ29yZTo6cmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKTogVXNlIGVuZHNX
aXRoSFRNTFNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICBVcGRhdGVkIGZv
ciBoY2FuZ2VzIHRvIFJlbmRlclRleHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24pOiBEaXR0by4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCk6IFVzZQorICAgICAgICBpc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBS
ZWN0cyBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Ym9sZGVyKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KTogUmV3
cm90ZSB0bworICAgICAgICBvbmx5IGNvbXB1dGUgdGhlIGJvbGRlciBmb250IG9uY2UgcmF0aGVy
IHRoYW4gZm9yIGV2ZXJ5IGl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpw
YWludEl0ZW1Gb3JlZ3JvdW5kKTogVXBkYXRlZCBmb3IKKyAgICAgICAgY2hhbmdlIHRvIGFwcGx5
VGV4dFRyYW5zZm9ybS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSk6IFVw
ZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBSZW5kZXJUZXh0Ojp0ZXh0LgorICAgICAgICAo
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0
bworICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0uCisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6
aXRlbVRleHQgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxpemUpOiBSZW5hbWVkIGZyb20gbWFrZUNh
cGl0YWxpemVkLiBDaGFuZ2VkIHRvCisgICAgICAgIHRha2UgYW5kIHJldHVybiBhIFN0cmluZyBp
bnN0ZWFkIG9mIHRha2luZyBhIFN0cmluZyouCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
OjpSZW5kZXJUZXh0KTogVXNlIGlzQWxsQVNDSUkuIEFsc28gbW92ZWQKKyAgICAgICAgaW5pdGlh
bGl6YXRpb24gb2YgbW9zdCBub24tYml0ZmllbGQgbWVtYmVycyB0byB0aGUgY2xhc3MgZGVmaW5p
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBV
c2UgdGV4dCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmhhbmdhYmxlUHVu
Y3R1YXRpb25TdGFydFdpZHRoIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Zmlyc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGlu
Z1NwYWNlcyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bGFz
dENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZmVycmVkV2lkdGhzKTogQ2hhbmdlZCB0byBy
ZXR1cm4gdmFsdWVzCisgICAgICAgIGluIGEgc3RydWN0dXJlIGluc3RlYWQgb2YgdGFraW5nIGxv
dHMgb2YgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMpOiBVcGRhdGVkIHRvIHVzZQorICAgICAgICB0aGUgdGV4dCgp
IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2Up
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2libGVX
aGl0ZXNwYWNlIGNvbnN0KTogVXBkYXRlZCB0bworICAgICAgICB1c2UgYSB0aWdodGVyIGxvb3Au
CisgICAgICAgIChXZWJDb3JlOjppc0FsbFBvc3NpYmx5Q29sbGFwc2libGVXaGl0ZXNwYWNlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb250YWluc09ubHlIVE1MV2hp
dGVzcGFjZSBjb25zdCk6IFVwZGF0ZWQgdG8KKyAgICAgICAgdXNlIGEgdGlnaHRlciBsb29wLiBS
ZW5hbWVkIGZyb20gY29udGFpbnNPbmx5V2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KTogVXBkYXRlZCB0byAgdXNlIHRleHQoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzSW5saW5lRmxvd09yRW1wdHlUZXh0KTogUmV3cm90ZSB0byBiZSBl
YXNpZXIgdG8gcmVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzQ2hh
cmFjdGVyIGNvbnN0KTogR290IHJpZCBvZiB1bm5lZWRlZAorICAgICAgICBudWxsIGNoZWNrIGFu
ZCBzaW1wbGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNmb3JtKTogQ2hh
bmdlZCB0byByZXR1cm4gYSBTdHJpbmcgcmF0aGVyCisgICAgICAgIHRoYW4gbW9kaWZ5aW5nIG9u
ZSB0aGF0IGlzIHBhc3NlZCBpbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFJl
bmRlcmVkVGV4dCk6IFVwZGF0ZWQgdXNlIG9mIGFwcGx5VGV4dFRyYW5zZm9ybS4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlY3VyZVRleHQpOiBNb3JlIG9mIHRoZSBzYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVh
c3VyaW5nIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0ZXh0
V2l0aG91dENvbnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGggY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvckxpbmVCb3hlcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQgY29u
c3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0
Rm9yQmFja3dhcmREZWxldGlvbiBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6bmV4dE9mZnNldCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyBjb25zdCk6IERpdHRvLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDogTWFkZSBzb21lIG1vcmUgbWVtYmVy
cyBwcml2YXRlIGFuZCBmaW5hbC4KKyAgICAgICAgVXBkYXRlZCBmb3IgYWJvdmUsIGluY2x1ZGlu
ZyBhZGRpbmcgdGhlIFdpZHRocyBzdHJ1Y3R1cmUuIEdvdCByaWQgb2YgdGhlCisgICAgICAgIHRl
eHRMZW5ndGggZnVuY3Rpb24sIHdoaWNoIGV4aXN0ZWQgYXMgYSB3b3JrYXJvdW5kIGJlZm9yZSB3
ZSBjb3VsZCBtYXJrCisgICAgICAgIGEgZnVuY3Rpb24gbGlrZSBsZW5ndGggZmluYWwuIE1hZGUg
dGhlIHRleHQgZnVuY3Rpb24gcmV0dXJuIGEgU3RyaW5nSW1wbCYsCisgICAgICAgIHdoaWNoIGlz
IGdvb2Qgc2luY2UgdGhlIG1fdGV4dCBzdHJpbmcgaXMgbmV2ZXIgbnVsbCwgYW5kIHNvIGNhbGxl
cnMgZW5kCisgICAgICAgIHVwIHVzaW5nIFN0cmluZ0ltcGwgZGlyZWN0bHkgYW5kIHNhdmluZyBu
dWxsIGNoZWNrcy4gUmVtb3ZlZCBmdW5jdGlvbnMKKyAgICAgICAgdGhhdCBhcmUgbm90IG5lZWRl
ZCwgaW5jbHVkaW5nIGlzOEJpdCwgY2hhcmFjdGVyczgsIGNoYXJhY3RlcnMxNiwKKyAgICAgICAg
dW5jaGVja2VkQ2hhcmFjdGVyQXQsIG9wZXJhdG9yW10sIGFuZCBpc0FsbEFTQ0lJLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQpOiBVc2UgdGV4dCgpLmxlbmd0aCgpLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50IGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpzZXRT
ZWxlY3Rpb25TdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVC
b3hlczo6YWJzb2x1dGVRdWFkcyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OmNhblVzZUZvckZvbnRBbmRUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0Ojp0ZXh0TGVuZ3RoRm9yU3VidHJlZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6Y29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojppbml0aWFsaXplU2VnbWVudHMp
OiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9p
bnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6ZmluZENhcmV0TWF4aW11
bU9mZnNldCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0T2Jq
ZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppdGVyYXRvcklzQmV5b25kRW5kT2ZSZW5k
ZXJDb21iaW5lVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFdpZHRoKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVha0xv
Y2F0aW9uRm9yVHJhaWxpbmdXb3JkKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUv
VHJhaWxpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWlsaW5nT2JqZWN0czo6
dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9uc0ZvclRyYWlsaW5nQm94ZXMpOiBE
aXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1l
bnQpOiBSZW1vdmVkIHN0cmF5IHVzZSBvZiAidW5zaWduZWQgaW50Ii4KKworICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmsgY29uc3QpOiBV
c2UgdGV4dCgpLmxlbmd0aCgpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4
dDo6cG9zaXRpb25Gb3JQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nl
c3NSZW5kZXJTVkdJbmxpbmVUZXh0KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRF
bmdpbmU6OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1cmVzIGNv
bnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZSk6IFVz
ZSBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPi4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjp0ZXh0UmVuZGVyZXJJc05lZWRlZCk6IERpdHRvLgorCisgICAg
ICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpoYXNG
ZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZS4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBbGxvd0V4dGVybmFsTG9hZCk6IERpdHRvLgor
CiAyMDE3LTExLTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbQ2Fpcm9dIGRyYXdOYXRpdmVJbWFnZSgpLCBkcmF3UGF0dGVybigpIGluIENhaXJvT3Bl
cmF0aW9ucyBzaG91bGQgb3BlcmF0ZSBkaXJlY3RseSB3aXRoIGNhaXJvX3N1cmZhY2VfdCBvYmpl
Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGFhOTA3NmU0ZWRhOTA4MjYyMDM2NDA1N2U5ZTkxMWJhNGZhNDk4MGQu
LjNhMzVjZGZiNmUzYThkOTllMTEzNThjY2Q2MTI4ZDE1ODY4M2Y3NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTctMTEtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBXVEY6OlN0cmluZyBvcGVyYXRpb25zIHRoYXQgZG8gdW5uZWNlc3Nh
cnkgVW5pY29kZSBvcGVyYXRpb25zIGluc3RlYWQgb2YgQVNDSUkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTkwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjppc01lZGlhTUlN
RVR5cGUpOiBVc2Ugc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6Omhhc2hTdHJpbmcpOiBVc2UgaXNBbGxBU0NJSS4uCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZVBvbGljaWVzU2V0Q3VzdG9tSGVhZGVyRmllbGRzKTogVXNlIHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UuLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgc2V0Q3VzdG9t
SGVhZGVyRmllbGRzOl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUERGVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIpOiBVc2UgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlczo6V2ViUHJlZmVyZW5jZXMpOiBJbml0aWFsaXplIG1faWRlbnRpZmllciBleHBsaWNpdGx5
LiBTb21laG93CisgICAgICAgIGNoYW5naW5nIHRoZSBTdHJpbmcgZGVmYXVsdCBjb25zdHJ1Y3Rv
ciB0byBiZSAiPSBkZWZhdWx0IiBsZWQgdG8gYSB3YXJuaW5nIHRoYXQgd2UKKyAgICAgICAgb3Ro
ZXJ3aXNlIGRpZCBub3QgZ2V0IGFib3V0IG5vdCBpbml0aWFsaXppbmcgbV9pZGVudGlmaWVyLiBB
cmd1YWJseSBhIGNvbXBpbGVyIGJ1ZywKKyAgICAgICAgYnV0IGxlZ2l0aW1hdGVseSBzdHJhbmdl
IHRoYXQgdGhlIGNvcHkgY29uc3RydWN0b3IgZG9lcyBub3QgY29weSBtX2lkZW50aWZpZXIgYW5k
IHNvCisgICAgICAgIG5pY2UgdG8gYmUgZXhwbGljaXQgYWJvdXQgaXQsIEkgZ3Vlc3MuCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVB
cHBsaWNhdGlvblJhdyk6IFVzZQorICAgICAgICBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVy
V2l0aE5hdGl2ZUFwcGxpY2F0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4p
OiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOiBV
c2UgaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4uCisKIDIwMTctMTEtMjEgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IFdQRVdlYlByb2Nlc3M6IENvdWxkbid0IGZpbmQgY3VycmVudCBHTFggb3IgRUdMIGNvbnRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZGU0YzE3NzVkMzcwNDg4ZDgxODU5OTNh
MmM0YzI2OTg3MTA0MGEzLi5jMTg1YzY3NzcwMzVlNzU5MDU2OGI0OWQ3NzYxMTEyYjliY2U3NWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEt
MjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBXVEY6
OlN0cmluZyBvcGVyYXRpb25zIHRoYXQgZG8gdW5uZWNlc3NhcnkgVW5pY29kZSBvcGVyYXRpb25z
IGluc3RlYWQgb2YgQVNDSUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3OTkwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoQmlu
YXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVTdHJpbmdPYmplY3QpOiBVc2UgaXNBbGxBU0NJSS4K
KyAgICAgICAgKEJpbmFyeVByb3BlcnR5TGlzdFNlcmlhbGl6ZXI6OmFwcGVuZFN0cmluZ09iamVj
dCk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgor
ICAgICAgICAocmVnRXhwRm9yTGFiZWxzKTogUmVtb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2ZSBzaW5j
ZSBpdCBpcyBub3cgdGhlIGRlZmF1bHQuCisgICAgICAgIChtYXRjaExhYmVsc0FnYWluc3RTdHJp
bmcpOiBVc2UgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlLgorCiAyMDE3LTExLTE5ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1
bnVzZWQgVE9VQ0hfSUNPTl9MT0FESU5HIGZlYXR1cmUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCmluZGV4IDVhOGViYzUzMTZhMmRhYzE5OTBlMjBlZDg1NzFhODJkZmQxZGQ2MmIuLjMx
NTIyNTg5NjFkYWQzN2VmOWQ0ZjY0YWZkYjU2OGRkNjAyMGU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0xMS0yMSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIFdURjo6U3RyaW5nIG9wZXJhdGlvbnMg
dGhhdCBkbyB1bm5lY2Vzc2FyeSBVbmljb2RlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBBU0NJSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5OTA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOiBVc2UKKyAgICAgICAgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSBhbmQgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZS4KKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2Fk
Ojppbml0VG9SZXN1bWVXaXRoQnVuZGxlKTogVXNlIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uu
CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om1hcmtBbGxNYXRj
aGVzRm9yVGV4dCk6IEZpeCBvbGQgY29kZSB0aGF0IHdhcyBwYXNzaW5nIFRleHRDYXNlU2Vuc2l0
aXZpdHkKKyAgICAgICAgdG8gYSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHRha2VzIEZpbmRPcHRp
b25zLiBCeSBsdWNrLCBUZXh0Q2FzZVNlbnNpdGl2ZSBoYXBwZW5zIHRvCisgICAgICAgIGJlIDAs
IHdoaWNoIGlzIGNvcnJlY3QgRmluZE9wdGlvbnMgZm9yIGNhc2Ugc2Vuc2l0aXZlIG1hdGNoaW5n
LCBhbmQgVGV4dENhc2VJbnNlbnNpdGl2ZQorICAgICAgICBoYXBwZW5zIHRvIGJlIDEsIHdoaWNo
IGlzIGNvcnJlY3QgRmluZE9wdGlvbnMgZm9yIGNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmcsIHNv
IGZpeGluZworICAgICAgICB0aGUgY29kZSBkb2VzIG5vdCBjYXVzZSBhbnkgY2hhbmdlIGluIGJl
aGF2aW9yLgorCiAyMDE3LTExLTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgb2xkIFVSTCBwYXJzZXIgcmVtbmFudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cAppbmRleCBiNGNlYzZiNGU5OTgwODg5OTJmYWYxNWI3NzhmODc4MWFjZTRiNjI3Li43OTRlN2Zh
NzNjYTJmOTNiN2NkOWU4NWE1ZWY5MjVhMzZmOTAwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCkBAIC04MSwxNCArODEs
MTQgQEAgVW5pcXVlZFN0cmluZ0ltcGwqIERlc2lyZWRJZGVudGlmaWVyczo6YXQodW5zaWduZWQg
aW5kZXgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlu
ZGV4KS5pbXBsKCk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBtX2FkZGVkSWRlbnRpZmll
cnNbaW5kZXggLSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpXTsKLSAgICBBU1NF
UlQocmVzdWx0LT5oYXNBdExlYXN0T25lUmVmKCkpOworICAgIEFTU0VSVChyZXN1bHQtPnJlZkNv
dW50KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGVzaXJlZElkZW50aWZpZXJz
OjpyZWFsbHlBZGQoVk0mIHZtLCBDb21tb25EYXRhKiBjb21tb25EYXRhKQogewogICAgIGZvciAo
YXV0byByZXAgOiBtX2FkZGVkSWRlbnRpZmllcnMpIHsKLSAgICAgICAgQVNTRVJUKHJlcC0+aGFz
QXRMZWFzdE9uZVJlZigpKTsKKyAgICAgICAgQVNTRVJUKHJlcC0+cmVmQ291bnQoKSk7CiAgICAg
ICAgIGNvbW1vbkRhdGEtPmRmZ0lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlk
KCZ2bSwgcmVwKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA4NDM3MGIxYWNkZWJlY2Y4M2NlZjRkOTY4MDNkYzEwOGJmYjZkMGQ4Li4zYjM2N2ZmN2Fl
MjJkMDAwOGJlZTlkZWMzMzE2ODliNDVmMmZiZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGluCiBz
dGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIGJvb2wgaXNSZWdleCkKIHsKICAgICBpZiAoaXNSZWdleCkgewotICAgICAgICBKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZlKTsK
KyAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChwYXR0ZXJuKTsKICAg
ICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHVybCkgIT0gLTE7CiAgICAgfQogICAgIHJldHVybiB1
cmwgPT0gcGF0dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cAppbmRleCBmZGVkYTFkMTM4NTk4ZGIwZTAyOGQ2YjI1NWNhYjE3NTA2OTE2YzQ4Li4yMDY1Mjc1
NmZlOGViY2M1MDk3MWIxYTg1MWZkM2Q2OTc5ZjRkMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMTcsOCArMTE3LDcgQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlID0gMjA0ODsKIHZvaWQgSlNSb3Bl
U3RyaW5nOjpyZXNvbHZlUm9wZUludGVybmFsOChMQ2hhciogYnVmZmVyKSBjb25zdAogewogICAg
IGlmIChpc1N1YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycygKLSAg
ICAgICAgICAgIGJ1ZmZlciwgc3Vic3RyaW5nQmFzZSgpLT5tX3ZhbHVlLmNoYXJhY3RlcnM4KCkg
KyBzdWJzdHJpbmdPZmZzZXQoKSwgbGVuZ3RoKCkpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhidWZmZXIsIHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzOCgp
ICsgc3Vic3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKQEAgLTEzOCw3ICsxMzcsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVJ
bnRlcm5hbDhOb1N1YnN0cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgZmliZXIoaSk7ICsraSkgewog
ICAgICAgICBjb25zdCBTdHJpbmdJbXBsJiBmaWJlclN0cmluZyA9ICpmaWJlcihpKS0+bV92YWx1
ZS5pbXBsKCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpYmVyU3RyaW5nLmxlbmd0aCgp
OwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJz
KHBvc2l0aW9uLCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgICAgICBw
b3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogICAgIEFTU0VSVCgoYnVmZmVyICsgbGVuZ3RoKCkp
ID09IHBvc2l0aW9uKTsKQEAgLTE0Nyw3ICsxNDYsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVz
b2x2ZVJvcGVJbnRlcm5hbDhOb1N1YnN0cmluZyhMQ2hhciogYnVmZmVyKSBjb25zdAogdm9pZCBK
U1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNihVQ2hhciogYnVmZmVyKSBjb25zdAog
ewogICAgIGlmIChpc1N1YnN0cmluZygpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cygKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoCiAgICAgICAgICAgICBidWZm
ZXIsIHN1YnN0cmluZ0Jhc2UoKS0+bV92YWx1ZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09m
ZnNldCgpLCBsZW5ndGgoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjksOSArMTY4
LDkgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlSW50ZXJuYWwxNk5vU3Vic3RyaW5n
KFVDaGFyKiBidWZmZXIpIGNvbnN0CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwmIGZpYmVyU3Ry
aW5nID0gKmZpYmVyKGkpLT5tX3ZhbHVlLmltcGwoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gZmliZXJTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIGlmIChmaWJlclN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhwb3NpdGlvbiwgZmliZXJTdHJp
bmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlD
aGFyYWN0ZXJzKHBvc2l0aW9uLCBmaWJlclN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMocG9zaXRpb24s
IGZpYmVyU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIGZpYmVyU3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBsZW5ndGgpOwogICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogICAgIEFTU0VS
VCgoYnVmZmVyICsgbGVuZ3RoKCkpID09IHBvc2l0aW9uKTsKQEAgLTMzNSw3ICszMzQsNyBAQCB2
b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqIGJ1ZmZlcikgY29u
c3QKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlci0+bGVu
Z3RoKCk7CiAgICAgICAgIHBvc2l0aW9uIC09IGxlbmd0aDsKLSAgICAgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKHBvc2l0aW9uLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICB9
CiAKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsKQEAgLTM2Myw5ICszNjIsOSBAQCB2
b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciogYnVmZmVyKSBjb25z
dAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGN1cnJlbnRGaWJlckFzUm9wZS0+
bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgcG9zaXRpb24gLT0gbGVuZ3RoOwogICAgICAgICAg
ICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMo
cG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMocG9zaXRpb24sIHN0
cmluZy0+Y2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoICYmIGN1cnJlbnRGaWJlckFzUm9wZS0+ZmliZXIo
aSk7ICsraSkKQEAgLTM3Nyw5ICszNzYsOSBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJv
cGVTbG93Q2FzZShVQ2hhciogYnVmZmVyKSBjb25zdAogICAgICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJpbmctPmxlbmd0aCgpOwogICAgICAgICBwb3NpdGlvbiAtPSBsZW5ndGg7CiAgICAgICAg
IGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJz
KHBvc2l0aW9uLCBzdHJpbmctPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgICAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cnMocG9zaXRpb24sIHN0cmluZy0+Y2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CisgICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhwb3NpdGlvbiwgc3RyaW5nLT5jaGFyYWN0ZXJz
MTYoKSwgbGVuZ3RoKTsKICAgICB9CiAKICAgICBBU1NFUlQoYnVmZmVyID09IHBvc2l0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CmluZGV4IGFkYmZhZDIxMTllMGM2OTQ3MTg1ZjIxYzljMmMzNDIxZDc0MzcxMTUuLjhlMmE2ZWJh
NDVkMDE0ZmYxNzI2ZWFkYWE5ODE2NTI5MmZiNGE3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0
ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICAgICAg
aWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc291cmNlRGF0
YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKKyAgICAgICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZURh
dGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAg
ICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzYw
LDcgKzM2MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJp
bmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAgICAgaW50IGJ1ZmZlclBvcyA9
IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKICAgICAgICAg
aWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsg
c3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAgICAgICAgICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vi
c3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgYnVmZmVyUG9z
ICs9IHNyY0xlbjsKICAgICAgICAgfQogICAgIH0KQEAgLTQxMywxMyArNDEzLDEzIEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMo
RXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4Q291bnQ7
IGkrKykgewogICAgICAgICAgICAgaWYgKGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNv
dXJjZURhdGEgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBv
cywgc291cmNlRGF0YSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGludCBzZXBMZW4gPSBzZXBhcmF0b3JzW2ldLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZm
ZXJQb3MsIHNlcGFyYXRvcnNbaV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVyICsgYnVmZmVyUG9zLCBz
ZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnM4KCksIHNlcExlbik7CiAgICAgICAgICAgICAgICAgICAg
IGJ1ZmZlclBvcyArPSBzZXBMZW47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpA
QCAtNDQwLDE4ICs0NDAsMTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGlj
ZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaWYg
KGkgPCByYW5nZUNvdW50KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmlu
Z1Jhbmdlc1tpXS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzOEJpdCgp
KQotICAgICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVm
ZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlv
biwgc3JjTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczgoKSArIHN1YnN0cmluZ1Jh
bmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3JjTGVu
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoYnVmZmVy
ICsgYnVmZmVyUG9zLCBzb3VyY2UuY2hhcmFjdGVyczE2KCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0u
cG9zaXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50
KSB7CiAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoc2VwYXJhdG9yc1tpXS5pczhCaXQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2Vw
YXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAgICAgICAgICBT
dHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNb
aV0uY2hhcmFjdGVyczgoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNl
cGFyYXRvcnNbaV0uY2hhcmFjdGVyczE2KCksIHNlcExlbik7CisgICAgICAgICAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGJ1ZmZlciArIGJ1ZmZlclBvcywgc2VwYXJhdG9y
c1tpXS5jaGFyYWN0ZXJzMTYoKSwgc2VwTGVuKTsKICAgICAgICAgICAgICAgICBidWZmZXJQb3Mg
Kz0gc2VwTGVuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzk5LDcgKzE3OTksNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3RyaW5nLCB0cnVl
LCBzdGFydCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdU
b1NlYXJjaEluLmZpbmQoc2VhcmNoU3RyaW5nLCBzdGFydCkgIT0gbm90Rm91bmQpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVj
U3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJl
c3Npb24uaAppbmRleCAyODQyNzc0M2NkZjZhMzhhOWE3YTBkMmViNzEyMzYxZmMxMTdiODgzLi4y
MDczOTBiNWU5ZTcxYWE2NmE4MmVhNDUxNjMxYjFlYzQ0ODVjYjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgKQEAgLTI5LDE1ICsyOSwxMyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCi1lbnVtIE11bHRpbGluZU1v
ZGUgewotICAgIE11bHRpbGluZURpc2FibGVkLAotICAgIE11bHRpbGluZUVuYWJsZWQKLX07Citl
bnVtIE11bHRpbGluZU1vZGUgeyBNdWx0aWxpbmVEaXNhYmxlZCwgTXVsdGlsaW5lRW5hYmxlZCB9
OworZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNl
SW5zZW5zaXRpdmUgfTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVndWxhckV4cHJlc3Np
b24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFJlZ3VsYXJF
eHByZXNzaW9uKGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIE11bHRpbGluZU1v
ZGUgPSBNdWx0aWxpbmVEaXNhYmxlZCk7CisgICAgZXhwbGljaXQgUmVndWxhckV4cHJlc3Npb24o
Y29uc3QgU3RyaW5nJiwgVGV4dENhc2VTZW5zaXRpdml0eSA9IFRleHRDYXNlU2Vuc2l0aXZlLCBN
dWx0aWxpbmVNb2RlID0gTXVsdGlsaW5lRGlzYWJsZWQpOwogICAgIH5SZWd1bGFyRXhwcmVzc2lv
bigpOwogCiAgICAgUmVndWxhckV4cHJlc3Npb24oY29uc3QgUmVndWxhckV4cHJlc3Npb24mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKaW5kZXggZWI1NDgyOGEyOGVhZGE0MDk3NDVj
ODFkZWQzNzFkYjI2NjJmYjU3Ni4uMjY0MmE1YmJlYjJkMGI2MzQ1NzU4ZjJmNDFiOGFjZGZmYjY4
ZjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgKQEAgLTE5NCw0ICsxOTQsNiBA
QCBpbmxpbmUgdm9pZCBjb3B5TENoYXJzRnJvbVVDaGFyU291cmNlKExDaGFyKiBkZXN0aW5hdGlv
biwgY29uc3QgVUNoYXIqIHNvdXJjZSwgcwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcg
V1RGOjpjaGFyYWN0ZXJzQXJlQWxsQVNDSUk7CisKICNlbmRpZiAvLyBBU0NJSUZhc3RQYXRoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDc2NThlMDUxMjU1OTQwZjE5OTk5YTIy
OWM2MjNkOThlYmVmMzJhODIuLmI4NjNhYjAzMzE2OGFkODUyMjU0OGVhNTFkNGJkZWQwNzk1NWJl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiwgMjAwOCwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzIsOCArNzIsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
ckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFy
YWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKQorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIEF0b21pY1N0cmlu
Zyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBDb25zdHJ1Y3RGcm9t
TGl0ZXJhbFRhZykKICAgICAgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGRMaXRl
cmFsKGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSkpCiAgICAgewogICAgICAgICBDT01Q
SUxFX0FTU0VSVChjaGFyYWN0ZXJDb3VudCA+IDEsIEF0b21pY1N0cmluZ0Zyb21MaXRlcmFsTm90
RW1wdHkpOwpAQCAtMTEyLDUxICsxMTEsMjcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIG51bWJlcihkb3VibGUpOwogICAgIC8vIElmIHdl
IG5lZWQgbW9yZSBvdmVybG9hZHMgb2YgdGhlIG51bWJlciBmdW5jdGlvbiwgd2UgY2FuIGFkZCBh
bGwgdGhlIG90aGVycyB0aGF0IFN0cmluZyBoYXMsIGJ1dCB0aGVzZSBzZWVtIHRvIGRvIGZvciBu
b3cuCiAKLSAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmNvbnRhaW5zKGMpOyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hhciogcywgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29u
dGFpbnMocywgY2FzZVNlbnNpdGl2ZSk7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmlu
ZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuY29udGFpbnMocyk7IH0KLSAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25z
dAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzLCBjYXNlU2Vuc2l0aXZlKTsg
fQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNv
bnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2Uo
cyk7IH0KLQotICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChjLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChj
b25zdCBMQ2hhciogcywgdW5zaWduZWQgc3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0
cnVlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNl
U2VudGl0aXZlKTsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQg
c3RhcnQgPSAwLCBib29sIGNhc2VTZW50aXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX3N0cmluZy5maW5kKHMsIHN0YXJ0LCBjYXNlU2VudGl0aXZlKTsgfQotICAgIHNpemVf
dCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7
IHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLSAgICBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzLCBzdGFydE9mZnNldCk7IH0KLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0
aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCk7IH0KLQotICAgIGJv
b2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
c3RyaW5nLnN0YXJ0c1dpdGgocyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0
YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKLSAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgc3RhcnRz
V2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLnN0
YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
PgotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0s
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3Ry
aW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSk7IH0KLQot
ICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzKSBjb25zdAotICAgICAgICB7IHJldHVy
biBtX3N0cmluZy5lbmRzV2l0aChzKTsgfQotICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uocyk7IH0KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0
cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0
cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChj
aGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9v
bCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRo
PG1hdGNoTGVuZ3RoPihwcmVmaXgsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgYm9vbCBjb250YWlu
cyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKGNoYXJh
Y3Rlcik7IH0KKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNvbnRhaW5zKHN0cmluZyk7IH0KKyAgICBib29sIGNvbnRhaW5zKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJp
bmcpOyB9CisgICAgYm9vbCBjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYg
c3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZyk7IH0KKworICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQg
c3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKGNoYXJhY3Rlciwgc3RhcnQp
OyB9CisgICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKHN0cmluZywgc3RhcnQpOyB9CisgICAg
c2l6ZV90IGZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsgfQorICAgIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcsIHN0YXJ0T2Zmc2V0KTsgfQorICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rp
b25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQorCisgICAgYm9vbCBzdGFydHNX
aXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNX
aXRoKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFj
dGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRz
V2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KTsgfQorCisgICAgYm9vbCBlbmRzV2l0aChjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgoc3RyaW5nKTsg
fQorICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcpOyB9CisgICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBt
YXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0
aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgp
OyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQXRvbWljU3RyaW5nIGNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIEF0b21pY1N0
cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpAQCAtMTcyLDEzICsxNDcsMTMg
QEAgcHVibGljOgogI2lmIFVTRShDRikKICAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYpOwog
I2VuZGlmCisKICNpZmRlZiBfX09CSkNfXwogICAgIEF0b21pY1N0cmluZyhOU1N0cmluZyopOwog
ICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5k
aWYKIAotICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0
cmluZyBpZgotICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2Vx
dWVuY2VzLgorICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxs
IHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNl
cy4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3Qp
OwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCkBAIC0y
MjksNTMgKzIwNCw1MyBAQCBpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoKQogewog
fQogCi1pbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMpCi0g
ICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocykpCitpbmxpbmUgQXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKEF0
b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5n
OjpBdG9taWNTdHJpbmcoY29uc3QgY2hhciogcykKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmlu
Z0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBj
aGFyKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5n
KSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IExDaGFy
KiBzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjph
ZGQocywgbGVuZ3RoKSkKK2lubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBM
Q2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3N0cmluZyhBdG9taWNTdHJp
bmdJbXBsOjphZGQoc3RyaW5nLCBsZW5ndGgpKQogewogfQogCi1pbmxpbmUgQXRvbWljU3RyaW5n
OjpBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1f
c3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzLCBsZW5ndGgpKQoraW5saW5lIEF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpCiB7
CiB9CiAKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykK
LSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzKSkKK2lubGluZSBBdG9taWNT
dHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogc3RyaW5nKQorICAgIDogbV9zdHJpbmco
QXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAKLWlubGluZSBBdG9taWNTdHJp
bmc6OkF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApCi0gICAgOiBtX3N0cmluZyhp
bXApCitpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCog
c3RyaW5nKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQogewogfQogCi1pbmxpbmUgQXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYgaW1wKQotICAgIDog
bV9zdHJpbmcoV1RGTW92ZShpbXApKQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5n
KFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKFdURk1v
dmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFN0
cmluZ0ltcGwqIGltcCkKLSAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChpbXAp
KQoraW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykK
KyAgICA6IG1fc3RyaW5nKEF0b21pY1N0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQogewogfQogCi1p
bmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCog
aW1wKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKGltcCkpCitpbmxpbmUg
QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5n
KQorICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpCiB7CiB9CiAK
LWlubGluZSBBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpCi0gICAg
OiBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQocy5pbXBsKCkpKQoraW5saW5lIEF0b21p
Y1N0cmluZzo6QXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJp
bmcoQXRvbWljU3RyaW5nSW1wbDo6YWRkKHN0cmluZy5pbXBsKCkpKQogewogfQogCkBAIC0yOTAs
MTcgKzI2NSwyMSBAQCBpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKIH0KIAogI2lmIFVTRShDRikKLWlubGluZSBBdG9taWNTdHJpbmc6OkF0
b21pY1N0cmluZyhDRlN0cmluZ1JlZiBzKQotICAgIDogIG1fc3RyaW5nKEF0b21pY1N0cmluZ0lt
cGw6OmFkZChzKSkKKworaW5saW5lIEF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKENGU3RyaW5n
UmVmIHN0cmluZykKKyAgICA6ICBtX3N0cmluZyhBdG9taWNTdHJpbmdJbXBsOjphZGQoc3RyaW5n
KSkKIHsKIH0KKwogI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwotaW5saW5lIEF0b21pY1N0cmlu
Zzo6QXRvbWljU3RyaW5nKE5TU3RyaW5nKiBzKQotICAgIDogbV9zdHJpbmcoQXRvbWljU3RyaW5n
SW1wbDo6YWRkKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzKSkKKworaW5saW5lIEF0b21pY1N0cmlu
Zzo6QXRvbWljU3RyaW5nKE5TU3RyaW5nKiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhBdG9taWNT
dHJpbmdJbXBsOjphZGQoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZykpCiB7CiB9CisKICNl
bmRpZgogCiAvLyBEZWZpbmUgZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1v
bmx5IHVzZWQgYXRvbWljIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oCmluZGV4IDYxOTQyZTdmYzRiMjVjYTFiOTA1NjI0MDE3OWQ4
MTdmYWFmNWI5YmYuLjlkYjgzMDNjODMwMWI5N2M0MzA4MjA4MjZmYTQ2YTkyY2U5Y2U5MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCkBA
IC0yMiwxNCArMjIsMTMgQEAKICNpZm5kZWYgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAj
ZGVmaW5lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25faAogCisjaW5jbHVkZSA8d3RmL3RleHQv
TENoYXIuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gUG9zaXRpdmVPck5lZ2F0aXZlTnVt
YmVyIHsKLSAgICBQb3NpdGl2ZU51bWJlciwKLSAgICBOZWdhdGl2ZU51bWJlcgotfTsKK2VudW0g
UG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsgUG9zaXRpdmVOdW1iZXIsIE5lZ2F0aXZlTnVtYmVy
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uVHJhaXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb25UcmFpdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVW5zaWduZWRJbnRl
Z2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIE51bWJlclR5cGUsIHR5cGVuYW1lIEFk
ZGl0aW9uYWxBcmd1bWVudFR5cGU+CiBzdGF0aWMgdHlwZW5hbWUgSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZElu
dGVnZXJUeXBlIG51bWJlciwgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSBhZGRpdGlvbmFsQXJndW1l
bnQpCkBAIC02Myw3ICs2Miw2IEBAIGlubGluZSB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpCiAgICAgcmV0dXJu
IG51bWJlclRvU3RyaW5nSW1wbDxULCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51bWJl
cj4obnVtYmVyLCBhZGRpdGlvbmFsQXJndW1lbnQpOwogfQogCi0KIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlT3JO
ZWdhdGl2ZU51bWJlciBOdW1iZXJUeXBlPgogc3RhdGljIHZvaWQgd3JpdGVOdW1iZXJUb0J1ZmZl
ckltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cGUqIGRlc3RpbmF0
aW9uKQogewpAQCAtOTcsNyArOTUsNiBAQCBpbmxpbmUgdm9pZCB3cml0ZU51bWJlclRvQnVmZmVy
VW5zaWduZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cAogICAgIHJl
dHVybiB3cml0ZU51bWJlclRvQnVmZmVySW1wbDxDaGFyYWN0ZXJUeXBlLCBVbnNpZ25lZEludGVn
ZXJUeXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7CiB9CiAKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVPck5lZ2F0aXZlTnVt
YmVyIE51bWJlclR5cGU+CiBzdGF0aWMgdW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0lt
cGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCiB7CkBAIC0xMjgsNyArMTI1LDYgQEAgaW5s
aW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVtYmVyQXNTdHJpbmdVbnNpZ25lZChVbnNpZ25lZEludGVn
ZXJUeXBlIG51bWJlcikKICAgICByZXR1cm4gbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGw8VW5z
aWduZWRJbnRlZ2VyVHlwZSwgUG9zaXRpdmVOdW1iZXI+KG51bWJlcik7CiB9CiAKLQogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQxN2YzOWI0YjY4OTRmZWViNWIyYzczMjMx
OWQyY2U3ZDAyNWI1NDAuLmZhZDUwNzUwZGFmY2NlZDRiMWI1YjEzNjhmYTkyMmUxMGFlOWUwOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTYyLDcgKzE2Miw2IEBAIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAq
ZW1wdHkoKTsKLQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoY2hhcmFjdGVy
cywgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZykpOwogfQogCkBAIC0xNzAsMTIgKzE2
OSwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmco
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbgogewogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gKmVtcHR5KCk7Ci0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJ
bXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLCBDaGFy
VHlwZSomIGRhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNp
Z25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBkYXRhKQogewogICAgIGlmICghbGVuZ3RoKSB7
CiAgICAgICAgIGRhdGEgPSAwOwpAQCAtMTg0LDIwICsxODEsMTkgQEAgaW5saW5lIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQg
bGVuZ3RoLAogICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShs
ZW5ndGgsIGRhdGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5v
bkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rl
clR5cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChsZW5ndGgpOwogCiAgICAgLy8gQWxsb2NhdGUg
YSBzaW5nbGUgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBTdHJpbmdJbXBsCiAg
ICAgLy8gc3RydWN0IGFzIHdlbGwgYXMgdGhlIGRhdGEgd2hpY2ggaXQgY29udGFpbnMuIFRoaXMg
cmVtb3ZlcyBvbmUKICAgICAvLyBoZWFwIGFsbG9jYXRpb24gZnJvbSB0aGlzIGNhbGwuCi0gICAg
aWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6
ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAgIGlmIChsZW5ndGggPiAo
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBs
KSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwotICAgIFN0cmlu
Z0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihzdHJpbmdNYWxsb2MoYWxs
b2NhdGlvblNpemU8Q2hhclR5cGU+KGxlbmd0aCkpKTsKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmcg
PSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPENo
YXJhY3RlclR5cGU+KGxlbmd0aCkpKTsKIAotICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVy
PENoYXJUeXBlPigpOwotICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyVHlwZT4oc3Ry
aW5nLCBsZW5ndGgpOworICAgIGRhdGEgPSBzdHJpbmctPnRhaWxQb2ludGVyPENoYXJhY3RlclR5
cGU+KCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KHN0cmlu
ZywgbGVuZ3RoKTsKIH0KIAogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCkBAIC0yMTAsOCArMjA2LDcg
QEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpCiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJ
bnRlcm5hbChsZW5ndGgsIGRhdGEpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+
Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChS
ZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlw
ZSomIGRhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4m
JiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlKiYgZGF0YSkK
IHsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmctPmhhc09uZVJlZigpKTsKICAgICBBU1NFUlQo
b3JpZ2luYWxTdHJpbmctPmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsKTsKQEAg
LTIyMiwxNCArMjE3LDE0IEBAIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVh
bGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsCiAgICAgfQogCiAgICAg
Ly8gU2FtZSBhcyBjcmVhdGVVbmluaXRpYWxpemVkKCkgZXhjZXB0IGhlcmUgd2UgdXNlIHN0cmlu
Z1JlYWxsb2MuCi0gICAgaWYgKGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyVHlwZSkpKQorICAg
IGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNp
emVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQogICAgICAgICBDUkFT
SCgpOwogCiAgICAgb3JpZ2luYWxTdHJpbmctPn5TdHJpbmdJbXBsKCk7Ci0gICAgYXV0byogc3Ry
aW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ1JlYWxsb2MoJm9yaWdpbmFsU3Ry
aW5nLmxlYWtSZWYoKSwgYWxsb2NhdGlvblNpemU8Q2hhclR5cGU+KGxlbmd0aCkpKTsKKyAgICBh
dXRvKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nUmVhbGxvYygmb3Jp
Z2luYWxTdHJpbmcubGVha1JlZigpLCBhbGxvY2F0aW9uU2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5n
dGgpKSk7CiAKLSAgICBkYXRhID0gc3RyaW5nLT50YWlsUG9pbnRlcjxDaGFyVHlwZT4oKTsKLSAg
ICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhclR5cGU+KHN0cmluZywgbGVuZ3RoKTsKKyAg
ICBkYXRhID0gc3RyaW5nLT50YWlsUG9pbnRlcjxDaGFyYWN0ZXJUeXBlPigpOworICAgIHJldHVy
biBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPihzdHJpbmcsIGxlbmd0aCk7CiB9CiAK
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYm
IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTI0NCwx
NSArMjM5LDEzIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFJlZjxT
dHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lCiAgICAgcmV0dXJuIHJlYWxsb2Nh
dGVJbnRlcm5hbChXVEZNb3ZlKG9yaWdpbmFsU3RyaW5nKSwgbGVuZ3RoLCBkYXRhKTsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXJzIHx8
ICFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKLQotICAgIENoYXJUeXBlKiBkYXRh
OworICAgIENoYXJhY3RlclR5cGUqIGRhdGE7CiAgICAgYXV0byBzdHJpbmcgPSBjcmVhdGVVbmlu
aXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIGRhdGEpOwotICAgIG1lbWNweShkYXRh
LCBjaGFyYWN0ZXJzLCBsZW5ndGggKiBzaXplb2YoQ2hhclR5cGUpKTsKKyAgICBjb3B5Q2hhcmFj
dGVycyhkYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAK
QEAgLTI3NSw3ICsyNjgsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJp
dElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbgogICAgIGF1dG8gc3Ry
aW5nID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobGVuZ3RoLCBkYXRhKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYg
KGNoYXJhY3RlcnNbaV0gJiAweGZmMDApCisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldICYgMHhG
RjAwKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAg
ICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlcnNbaV0pOwogICAgIH0K
QEAgLTI5OCwyOSArMjkxLDYgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShj
b25zdCBMQ2hhciogc3RyaW5nKQogICAgIHJldHVybiBjcmVhdGUoc3RyaW5nLCBsZW5ndGgpOwog
fQogCi1ib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKQotewotICAgIC8v
IEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMgdG8gY29udGFpbnNPbmx5QVNDSUlXaGl0ZXNwYWNl
LgotICAgIC8vIE1vc3QgV2ViS2l0IGNhbGxlcnMgaW5zdGVhZCB3YW50IGNvbnRhaW5zT25seUhU
TUxXaGl0ZXNwYWNlIHdoaWNoLCB1bmxpa2UgdGhpcywKLSAgICAvLyB3b3VsZCAqbm90KiB0cmVh
dCBVKzAwMEIgTElORSBUQUJVTEFUSU9OIGFzIGEgc3BhY2UuCi0KLSAgICBpZiAoaXM4Qml0KCkp
IHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIFVDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
U3BhY2UoYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2xlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBtX2RhdGExNltpXTsKLSAgICAgICAg
aWYgKCFpc0FTQ0lJU3BhY2UoYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Vic3Ry
aW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKHN0YXJ0ID49
IG1fbGVuZ3RoKQpAQCAtMzgxLDExICszNTEsOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgaWYgKCEob3JlZCAmIH4w
eDdGKSkgewogICAgICAgICBVQ2hhciogZGF0YTE2OwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBj
cmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBVQ2hhciBjID0gbV9kYXRhMTZbaV07Ci0gICAgICAgICAgICBkYXRhMTZb
aV0gPSB0b0FTQ0lJTG93ZXIoYyk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJ
TG93ZXIobV9kYXRhMTZbaV0pOwogICAgICAgICByZXR1cm4gbmV3SW1wbDsKICAgICB9CiAKQEAg
LTQ1Miw5ICs0MTksOSBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBw
ZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIC8vIERvIGEgZmFzdGVyIGxvb3AgZm9yIHRo
ZSBjYXNlIHdoZXJlIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUgQVNDSUkuCiAgICAgICAgIHVuc2ln
bmVkIG9yZWQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBMQ2hhciBjID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgIG9yZWQgfD0g
YzsKLSAgICAgICAgICAgIGRhdGE4W2ldID0gdG9BU0NJSVVwcGVyKGMpOworICAgICAgICAgICAg
TENoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIG9yZWQgfD0gY2hhcmFj
dGVyOworICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoIShvcmVkICYgfjB4N0YpKQogICAgICAgICAgICAgcmV0dXJu
IG5ld0ltcGw7CkBAIC00NjYsMTEgKzQzMywxMSBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgICAgIC8vICAxLiBTb21l
IExhdGluLTEgY2hhcmFjdGVycyB3aGVuIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIGFyZSAxNiBi
aXQgY2hhcmFjdGVycy4KICAgICAgICAgLy8gIDIuIExvd2VyIGNhc2Ugc2hhcnAtUyBjb252ZXJ0
cyB0byAiU1MiICh0d28gY2hhcmFjdGVycykKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGMgPT0gc21hbGxMZXR0ZXJTaGFycFMpKQorICAgICAgICAg
ICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShjaGFyYWN0ZXIgPT0gc21hbGxMZXR0ZXJTaGFycFMpKQogICAgICAgICAgICAgICAgICsrbnVt
YmVyU2hhcnBTQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIEFTU0VSVCh1X3RvdXBwZXIoYykgPD0g
MHhGRkZGKTsKLSAgICAgICAgICAgIFVDaGFyIHVwcGVyID0gdV90b3VwcGVyKGMpOworICAgICAg
ICAgICAgQVNTRVJUKHVfdG91cHBlcihjaGFyYWN0ZXIpIDw9IDB4RkZGRik7CisgICAgICAgICAg
ICBVQ2hhciB1cHBlciA9IHVfdG91cHBlcihjaGFyYWN0ZXIpOwogICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHVwcGVyID4gMHhGRikpIHsKICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIHVw
cGVyLWNhc2VkIGNoYXJhY3RlciBkb2VzIG5vdCBmaXQgaW4gYW4gOC1iaXQgc3RyaW5nLCB3ZSBu
ZWVkIHRvIHRha2UgdGhlIDE2LWJpdCBwYXRoLgogICAgICAgICAgICAgICAgIGdvdG8gdXBjb252
ZXJ0OwpAQCAtNDg3LDEzICs0NTQsMTMgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICBMQ2hhciogZGVzdCA9IGRh
dGE4OwogCiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBMQ2hhciBjID0gbV9kYXRhOFtpXTsKLSAgICAgICAgICAgIGlmIChjID09IHNt
YWxsTGV0dGVyU2hhcnBTKSB7CisgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGE4
W2ldOworICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBzbWFsbExldHRlclNoYXJwUykgewog
ICAgICAgICAgICAgICAgICpkZXN0KysgPSAnUyc7CiAgICAgICAgICAgICAgICAgKmRlc3QrKyA9
ICdTJzsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHVfdG91
cHBlcihjKSA8PSAweEZGKTsKLSAgICAgICAgICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8
TENoYXI+KHVfdG91cHBlcihjKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihj
aGFyYWN0ZXIpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgICpkZXN0KysgPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4odV90b3VwcGVyKGNoYXJhY3RlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTUxMCw5ICs0NzcsOSBAQCB1cGNvbnZlcnQ6CiAgICAgLy8gRG8gYSBmYXN0ZXIgbG9v
cCBmb3IgdGhlIGNhc2Ugd2hlcmUgYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBBU0NJSS4KICAgICB1
bnNpZ25lZCBvcmVkID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIFVDaGFyIGMgPSBzb3VyY2UxNltpXTsKLSAgICAgICAgb3JlZCB8PSBjOwotICAg
ICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJVXBwZXIoYyk7CisgICAgICAgIFVDaGFyIGNoYXJhY3Rl
ciA9IHNvdXJjZTE2W2ldOworICAgICAgICBvcmVkIHw9IGNoYXJhY3RlcjsKKyAgICAgICAgZGF0
YTE2W2ldID0gdG9BU0NJSVVwcGVyKGNoYXJhY3Rlcik7CiAgICAgfQogICAgIGlmICghKG9yZWQg
JiB+MHg3RikpCiAgICAgICAgIHJldHVybiBuZXdJbXBsOwpAQCAtNjM0LDggKzYwMSw3IEBAIFNs
b3dQYXRoOgogICAgICAgICBpZiAoIW5lZWQxNkJpdENoYXJhY3RlcnMpIHsKICAgICAgICAgICAg
IExDaGFyKiBkYXRhODsKICAgICAgICAgICAgIGF1dG8gZm9sZGVkID0gY3JlYXRlVW5pbml0aWFs
aXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGE4KTsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmYWlsaW5nSW5kZXg7ICsraSkKLSAgICAgICAgICAgICAgICBk
YXRhOFtpXSA9IG1fZGF0YThbaV07CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhOCwg
bV9kYXRhOCwgZmFpbGluZ0luZGV4KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGZh
aWxpbmdJbmRleDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNo
YXJhY3RlciA9IG1fZGF0YThbaV07CiAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUkoY2hhcmFj
dGVyKSkKQEAgLTcwNyw4ICs2NzMsNyBAQCBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpjb252ZXJ0QVNDSUlDYXNlKFN0cmluZ0ltcGwmIGltcGwsIGNvbgogU2xvd1Bh
dGg6CiAgICAgQ2hhcmFjdGVyVHlwZSogbmV3RGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShsZW5ndGgsIG5ld0RhdGEpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYWlsaW5nSW5kZXg7ICsraSkKLSAgICAgICAgbmV3RGF0
YVtpXSA9IGRhdGFbaV07CisgICAgY29weUNoYXJhY3RlcnMobmV3RGF0YSwgZGF0YSwgZmFpbGlu
Z0luZGV4KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmYWlsaW5nSW5kZXg7IGkgPCBsZW5ndGg7
ICsraSkKICAgICAgICAgbmV3RGF0YVtpXSA9IHR5cGUgPT0gQ2FzZUNvbnZlcnRUeXBlOjpMb3dl
ciA/IHRvQVNDSUlMb3dlcihkYXRhW2ldKSA6IHRvQVNDSUlVcHBlcihkYXRhW2ldKTsKICAgICBy
ZXR1cm4gbmV3SW1wbDsKQEAgLTc2MCw5ICs3MjUsOSBAQCBjbGFzcyBVQ2hhclByZWRpY2F0ZSB7
CiBwdWJsaWM6CiAgICAgaW5saW5lIFVDaGFyUHJlZGljYXRlKENoYXJhY3Rlck1hdGNoRnVuY3Rp
b25QdHIgZnVuY3Rpb24pOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKSB7IH0KIAotICAgIGlubGluZSBi
b29sIG9wZXJhdG9yKCkoVUNoYXIgY2gpIGNvbnN0CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3Io
KShVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlv
bihjaCk7CisgICAgICAgIHJldHVybiBtX2Z1bmN0aW9uKGNoYXJhY3Rlcik7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtNzcxLDkgKzczNiw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNwYWNlT3JOZXds
aW5lUHJlZGljYXRlIHsKIHB1YmxpYzoKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKFVDaGFy
IGNoKSBjb25zdAorICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoVUNoYXIgY2hhcmFjdGVyKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOworICAgICAg
ICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShjaGFyYWN0ZXIpOwogICAgIH0KIH07CiAKQEAgLTc4
NywxMSArNzUyLDEwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3Bh
Y2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlCiAgICAgcmV0dXJuIHN0cmlw
TWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUoaXNXaGl0ZVNwYWNlKSk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMs
IENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoKQordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBDaGFyYWN0
ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJv
bSA9IGNoYXJhY3RlcnM7Ci0gICAgY29uc3QgQ2hhclR5cGUqIGZyb21lbmQgPSBmcm9tICsgbV9s
ZW5ndGg7CisgICAgYXV0byogZnJvbSA9IGNoYXJhY3RlcnM7CisgICAgYXV0byogZnJvbWVuZCA9
IGZyb20gKyBtX2xlbmd0aDsKICAgICAKICAgICAvLyBBc3N1bWUgdGhlIGNvbW1vbiBjYXNlIHdp
bGwgbm90IHJlbW92ZSBhbnkgY2hhcmFjdGVycwogICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQg
JiYgIWZpbmRNYXRjaCgqZnJvbSkpCkBAIC03OTksMTIgKzc2MywxMiBAQCBBTFdBWVNfSU5MSU5F
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJU
eXBlKiBjaGFyYQogICAgIGlmIChmcm9tID09IGZyb21lbmQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICAKLSAgICBTdHJpbmdCdWZmZXI8Q2hhclR5cGU+IGRhdGEobV9sZW5ndGgpOwotICAg
IENoYXJUeXBlKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOworICAgIFN0cmluZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKKyAgICBhdXRvKiB0byA9IGRhdGEuY2hhcmFjdGVy
cygpOwogICAgIHVuc2lnbmVkIG91dGMgPSBmcm9tIC0gY2hhcmFjdGVyczsKICAgICAKICAgICBp
ZiAob3V0YykKLSAgICAgICAgbWVtY3B5KHRvLCBjaGFyYWN0ZXJzLCBvdXRjICogc2l6ZW9mKENo
YXJUeXBlKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKHRvLCBjaGFyYWN0ZXJzLCBvdXRjKTsK
IAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYg
ZmluZE1hdGNoKCpmcm9tKSkKQEAgLTgyNywxNyArNzkxLDE2IEBAIFJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmlu
ZE1hdGNoCiAgICAgcmV0dXJuIHJlbW92ZUNoYXJhY3RlcnMoY2hhcmFjdGVyczE2KCksIGZpbmRN
YXRjaCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVk
aWNhdGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hl
ZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBpbmxpbmUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVD
aGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKLSAgICBTdHJpbmdCdWZmZXI8Q2hhclR5cGU+IGRh
dGEobV9sZW5ndGgpOworICAgIFN0cmluZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBkYXRhKG1fbGVu
Z3RoKTsKIAotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tID0gY2hhcmFjdGVyczxDaGFyVHlwZT4o
KTsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbWVuZCA9IGZyb20gKyBtX2xlbmd0aDsKKyAgICBh
dXRvKiBmcm9tID0gY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpOworICAgIGF1dG8qIGZyb21l
bmQgPSBmcm9tICsgbV9sZW5ndGg7CiAgICAgaW50IG91dGMgPSAwOwogICAgIGJvb2wgY2hhbmdl
ZFRvU3BhY2UgPSBmYWxzZTsKICAgICAKLSAgICBDaGFyVHlwZSogdG8gPSBkYXRhLmNoYXJhY3Rl
cnMoKTsKKyAgICBhdXRvKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOwogICAgIAogICAgIHdoaWxl
ICh0cnVlKSB7CiAgICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgcHJlZGljYXRlKCpm
cm9tKSkgewpAQCAtOTYyLDU0ICs5MjUsNiBAQCBmbG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJv
b2wqIG9rKQogICAgIHJldHVybiBjaGFyYWN0ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9s
ZW5ndGgsIG9rKTsKIH0KIAotLy8gVGFibGUgaXMgYmFzZWQgb24gZnRwOi8vZnRwLnVuaWNvZGUu
b3JnL1B1YmxpYy9VTklEQVRBL0Nhc2VGb2xkaW5nLnR4dAotc3RhdGljIGNvbnN0IFVDaGFyIGxh
dGluMUNhc2VGb2xkVGFibGVbMjU2XSA9IHsKLSAgICAweDAwMDAsIDB4MDAwMSwgMHgwMDAyLCAw
eDAwMDMsIDB4MDAwNCwgMHgwMDA1LCAweDAwMDYsIDB4MDAwNywgMHgwMDA4LCAweDAwMDksIDB4
MDAwYSwgMHgwMDBiLCAweDAwMGMsIDB4MDAwZCwgMHgwMDBlLCAweDAwMGYsCi0gICAgMHgwMDEw
LCAweDAwMTEsIDB4MDAxMiwgMHgwMDEzLCAweDAwMTQsIDB4MDAxNSwgMHgwMDE2LCAweDAwMTcs
IDB4MDAxOCwgMHgwMDE5LCAweDAwMWEsIDB4MDAxYiwgMHgwMDFjLCAweDAwMWQsIDB4MDAxZSwg
MHgwMDFmLAotICAgIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAw
MjUsIDB4MDAyNiwgMHgwMDI3LCAweDAwMjgsIDB4MDAyOSwgMHgwMDJhLCAweDAwMmIsIDB4MDAy
YywgMHgwMDJkLCAweDAwMmUsIDB4MDAyZiwKLSAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAw
eDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4
MDAzYSwgMHgwMDNiLCAweDAwM2MsIDB4MDAzZCwgMHgwMDNlLCAweDAwM2YsCi0gICAgMHgwMDQw
LCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcs
IDB4MDA2OCwgMHgwMDY5LCAweDAwNmEsIDB4MDA2YiwgMHgwMDZjLCAweDAwNmQsIDB4MDA2ZSwg
MHgwMDZmLAotICAgIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAw
NzUsIDB4MDA3NiwgMHgwMDc3LCAweDAwNzgsIDB4MDA3OSwgMHgwMDdhLCAweDAwNWIsIDB4MDA1
YywgMHgwMDVkLCAweDAwNWUsIDB4MDA1ZiwKLSAgICAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAw
eDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4
MDA2YSwgMHgwMDZiLCAweDAwNmMsIDB4MDA2ZCwgMHgwMDZlLCAweDAwNmYsCi0gICAgMHgwMDcw
LCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcs
IDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4MDA3YiwgMHgwMDdjLCAweDAwN2QsIDB4MDA3ZSwg
MHgwMDdmLAotICAgIDB4MDA4MCwgMHgwMDgxLCAweDAwODIsIDB4MDA4MywgMHgwMDg0LCAweDAw
ODUsIDB4MDA4NiwgMHgwMDg3LCAweDAwODgsIDB4MDA4OSwgMHgwMDhhLCAweDAwOGIsIDB4MDA4
YywgMHgwMDhkLCAweDAwOGUsIDB4MDA4ZiwKLSAgICAweDAwOTAsIDB4MDA5MSwgMHgwMDkyLCAw
eDAwOTMsIDB4MDA5NCwgMHgwMDk1LCAweDAwOTYsIDB4MDA5NywgMHgwMDk4LCAweDAwOTksIDB4
MDA5YSwgMHgwMDliLCAweDAwOWMsIDB4MDA5ZCwgMHgwMDllLCAweDAwOWYsCi0gICAgMHgwMGEw
LCAweDAwYTEsIDB4MDBhMiwgMHgwMGEzLCAweDAwYTQsIDB4MDBhNSwgMHgwMGE2LCAweDAwYTcs
IDB4MDBhOCwgMHgwMGE5LCAweDAwYWEsIDB4MDBhYiwgMHgwMGFjLCAweDAwYWQsIDB4MDBhZSwg
MHgwMGFmLAotICAgIDB4MDBiMCwgMHgwMGIxLCAweDAwYjIsIDB4MDBiMywgMHgwMGI0LCAweDAz
YmMsIDB4MDBiNiwgMHgwMGI3LCAweDAwYjgsIDB4MDBiOSwgMHgwMGJhLCAweDAwYmIsIDB4MDBi
YywgMHgwMGJkLCAweDAwYmUsIDB4MDBiZiwKLSAgICAweDAwZTAsIDB4MDBlMSwgMHgwMGUyLCAw
eDAwZTMsIDB4MDBlNCwgMHgwMGU1LCAweDAwZTYsIDB4MDBlNywgMHgwMGU4LCAweDAwZTksIDB4
MDBlYSwgMHgwMGViLCAweDAwZWMsIDB4MDBlZCwgMHgwMGVlLCAweDAwZWYsCi0gICAgMHgwMGYw
LCAweDAwZjEsIDB4MDBmMiwgMHgwMGYzLCAweDAwZjQsIDB4MDBmNSwgMHgwMGY2LCAweDAwZDcs
IDB4MDBmOCwgMHgwMGY5LCAweDAwZmEsIDB4MDBmYiwgMHgwMGZjLCAweDAwZmQsIDB4MDBmZSwg
MHgwMGRmLAotICAgIDB4MDBlMCwgMHgwMGUxLCAweDAwZTIsIDB4MDBlMywgMHgwMGU0LCAweDAw
ZTUsIDB4MDBlNiwgMHgwMGU3LCAweDAwZTgsIDB4MDBlOSwgMHgwMGVhLCAweDAwZWIsIDB4MDBl
YywgMHgwMGVkLCAweDAwZWUsIDB4MDBlZiwKLSAgICAweDAwZjAsIDB4MDBmMSwgMHgwMGYyLCAw
eDAwZjMsIDB4MDBmNCwgMHgwMGY1LCAweDAwZjYsIDB4MDBmNywgMHgwMGY4LCAweDAwZjksIDB4
MDBmYSwgMHgwMGZiLCAweDAwZmMsIDB4MDBmZCwgMHgwMGZlLCAweDAwZmYsCi19OwotCi1zdGF0
aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgTENoYXIqIGEs
IGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgd2hpbGUgKGxlbmd0aC0t
KSB7Ci0gICAgICAgIGlmIChsYXRpbjFDYXNlRm9sZFRhYmxlWyphKytdICE9IGxhdGluMUNhc2VG
b2xkVGFibGVbKmIrK10pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2Fz
ZWxlc3MoY29uc3QgVUNoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVf
Rk9MRF9DQVNFX0RFRkFVTFQpICE9IGxhdGluMUNhc2VGb2xkVGFibGVbKmIrK10pCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg
aW5saW5lIGJvb2wgZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3MoY29uc3QgTENoYXIqIGEsIGNv
bnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGVxdWFsQ29tcGF0
aWJpbGl0eUNhc2VsZXNzKGIsIGEsIGxlbmd0aCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBl
cXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIs
IHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gIXVfbWVtY2FzZWNtcChhLCBiLCBsZW5n
dGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQpOwotfQotCiBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChD
aGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0KQog
ewogICAgIGlmIChpczhCaXQoKSkKQEAgLTEwODksNTAgKzEwMDQsNiBAQCBzaXplX3QgU3RyaW5n
SW1wbDo6ZmluZChjb25zdCBMQ2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAg
IHJldHVybiBpbmRleCArIGk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdD
YXNlKGNvbnN0IExDaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8g
Q2hlY2sgZm9yIG51bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKLSAgICBpZiAo
IW1hdGNoU3RyaW5nKQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgc2l6ZV90IG1hdGNo
U3RyaW5nTGVuZ3RoID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1hdGNo
U3RyaW5nKSk7Ci0gICAgaWYgKG1hdGNoU3RyaW5nTGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBDUkFTSCgpOwotICAgIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoID0gbWF0Y2hTdHJpbmdMZW5ndGg7Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4LCBsZW5ndGgoKSk7Ci0KLSAgICAvLyBDaGVjayBpbmRl
eCAmIG1hdGNoTGVuZ3RoIGFyZSBpbiByYW5nZS4KLSAgICBpZiAoaW5kZXggPiBsZW5ndGgoKSkK
LSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgIHVuc2lnbmVkIHNlYXJjaExlbmd0aCA9IGxl
bmd0aCgpIC0gaW5kZXg7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gc2VhcmNoTGVuZ3RoKQotICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgLy8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRp
dGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRhID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0g
ICAgdW5zaWduZWQgZGVsdGEgPSBzZWFyY2hMZW5ndGggLSBtYXRjaExlbmd0aDsKLQotICAgIGlm
IChpczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogc2VhcmNoQ2hhcmFjdGVycyA9IGNo
YXJhY3RlcnM4KCkgKyBpbmRleDsKLQotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAg
d2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzZWFyY2hDaGFyYWN0ZXJzICsgaSwg
bWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICAgICAgaWYgKGkgPT0gZGVsdGEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAgICAgICAgKytpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBpbmRleCArIGk7Ci0gICAgfQotCi0gICAgY29uc3QgVUNo
YXIqIHNlYXJjaENoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzMTYoKSArIGluZGV4OwotCi0gICAgdW5z
aWduZWQgaSA9IDA7Ci0gICAgd2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzZWFy
Y2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKSkgewotICAgICAgICBp
ZiAoaSA9PSBkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgKytp
OwotICAgIH0KLSAgICByZXR1cm4gaW5kZXggKyBpOwotfQotCiBzaXplX3QgU3RyaW5nSW1wbDo6
ZmluZChTdHJpbmdJbXBsKiBtYXRjaFN0cmluZykKIHsKICAgICAvLyBDaGVjayBmb3IgbnVsbCBz
dHJpbmcgdG8gbWF0Y2ggYWdhaW5zdApAQCAtMTE4MSw1MCArMTA1Miw2IEBAIHNpemVfdCBTdHJp
bmdJbXBsOjpmaW5kKFN0cmluZ0ltcGwqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAg
ICByZXR1cm4gZmluZENvbW1vbigqdGhpcywgKm1hdGNoU3RyaW5nLCBpbmRleCk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBzaXplX3QgZmluZElnbm9yaW5nQ2FzZUlu
bmVyKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1h
dGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWdu
ZWQgc2VhcmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKLXsKLSAgICAvLyBkZWx0YSBp
cyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFu
cyB0ZXN0IG9ubHkgb25jZS4KLSAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1h
dGNoTGVuZ3RoOwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgLy8ga2VlcCBsb29waW5nIHVu
dGlsIHdlIG1hdGNoCi0gICAgd2hpbGUgKCFlcXVhbENvbXBhdGliaWxpdHlDYXNlbGVzcyhzZWFy
Y2hDaGFyYWN0ZXJzICsgaSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsKLSAgICAg
ICAgaWYgKGkgPT0gZGVsdGEpCi0gICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgICAg
ICsraTsKLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4ICsgaTsKLX0KLQotc2l6ZV90IFN0cmluZ0lt
cGw6OmZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGlu
ZGV4KQotewotICAgIC8vIENoZWNrIGZvciBudWxsIG9yIGVtcHR5IHN0cmluZyB0byBtYXRjaCBh
Z2FpbnN0Ci0gICAgaWYgKCFtYXRjaFN0cmluZykKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwot
ICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmctPmxlbmd0aCgpOwotICAgIGlm
ICghbWF0Y2hMZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKCkp
OwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFuZ2UuCi0gICAg
aWYgKGluZGV4ID4gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICB1bnNp
Z25lZCBzZWFyY2hMZW5ndGggPSBsZW5ndGgoKSAtIGluZGV4OwotICAgIGlmIChtYXRjaExlbmd0
aCA+IHNlYXJjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotCi0gICAgaWYgKGlz
OEJpdCgpKSB7Ci0gICAgICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmluZElnbm9yaW5nQ2FzZUlubmVyKGNoYXJhY3RlcnM4KCkgKyBpbmRleCwgbWF0
Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2VJbm5lcihjaGFyYWN0ZXJzOCgpICsg
aW5kZXgsIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIHNlYXJjaExlbmd0aCwg
bWF0Y2hMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChtYXRjaFN0cmluZy0+aXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2KCkgKyBpbmRl
eCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KCksIGluZGV4LCBzZWFyY2hMZW5ndGgsIG1hdGNo
TGVuZ3RoKTsKLQotICAgIHJldHVybiBmaW5kSWdub3JpbmdDYXNlSW5uZXIoY2hhcmFjdGVyczE2
KCkgKyBpbmRleCwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpLCBpbmRleCwgc2VhcmNoTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Ci19Ci0KIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIDo6V1RGOjpmaW5kSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIG1hdGNoU3RyaW5nLCAwKTsK
QEAgLTEyNDksMTEgKzEwNzYsMTEgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBtYXRjaFN0cmluZywgdW5zaWduZWQKICAgICByZXR1
cm4gOjpXVEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKm1hdGNoU3RyaW5nLCBzdGFy
dE9mZnNldCk7CiB9CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBjLCB1
bnNpZ25lZCBpbmRleCkKK3NpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChVQ2hhciBjaGFy
YWN0ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGMsIGluZGV4KTsK
LSAgICByZXR1cm4gV1RGOjpyZXZlcnNlRmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGMs
IGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgsIGNoYXJhY3RlciwgaW5kZXgpOworICAgIHJldHVybiBXVEY6OnJldmVyc2VGaW5k
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBpbmRleCk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3Rl
clR5cGU+CkBAIC0xMzE2LDEwMCArMTE0Myw0OCBAQCBzaXplX3QgU3RyaW5nSW1wbDo6cmV2ZXJz
ZUZpbmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVy
biByZXZlcnNlRmluZElubmVyKGNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVy
czE2KCksIGluZGV4LCBvdXJMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFjdGVyVHlwZT4K
LUFMV0FZU19JTkxJTkUgc3RhdGljIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVy
KGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNlYXJjaENoYXJhY3RlcnMsIGNvbnN0IE1hdGNo
Q2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKK0FMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
ZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpCiB7Ci0gICAg
Ly8gZGVsdGEgaXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRpbWVzIHRvIHRlc3Q7IGRlbHRh
ID09IDAgbWVhbnMgdGVzdCBvbmx5IG9uY2UuCi0gICAgdW5zaWduZWQgZGVsdGEgPSBzdGQ6Om1p
bihpbmRleCwgbGVuZ3RoIC0gbWF0Y2hMZW5ndGgpOworICAgIEFTU0VSVChtYXRjaExlbmd0aCA8
PSBzdHJpbmcubGVuZ3RoKCkpOworICAgIEFTU0VSVChzdGFydE9mZnNldCArIG1hdGNoTGVuZ3Ro
IDw9IHN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICAvLyBrZWVwIGxvb3BpbmcgdW50aWwgd2UgbWF0
Y2gKLSAgICB3aGlsZSAoIWVxdWFsQ29tcGF0aWJpbGl0eUNhc2VsZXNzKHNlYXJjaENoYXJhY3Rl
cnMgKyBkZWx0YSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsKLSAgICAgICAgaWYg
KCFkZWx0YSkKLSAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsKLSAgICAgICAgLS1kZWx0YTsK
LSAgICB9Ci0gICAgcmV0dXJuIGRlbHRhOworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAg
ICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7Cisg
ICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hTdHJpbmcpLCBtYXRjaExlbmd0aCk7CiB9
CiAKLXNpemVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBs
KiBtYXRjaFN0cmluZywgdW5zaWduZWQgaW5kZXgpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgY29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcpCiB7Ci0gICAgLy8gQ2hlY2sgZm9yIG51
bGwgb3IgZW1wdHkgc3RyaW5nIHRvIG1hdGNoIGFnYWluc3QKLSAgICBpZiAoIW1hdGNoU3RyaW5n
KQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgdW5zaWduZWQgbWF0Y2hMZW5ndGggPSBt
YXRjaFN0cmluZy0+bGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgb3VyTGVuZ3RoID0gbGVuZ3RoKCk7
Ci0gICAgaWYgKCFtYXRjaExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGluZGV4LCBv
dXJMZW5ndGgpOwotCi0gICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4gcmFu
Z2UuCi0gICAgaWYgKG1hdGNoTGVuZ3RoID4gb3VyTGVuZ3RoKQotICAgICAgICByZXR1cm4gbm90
Rm91bmQ7Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5p
czhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVy
KGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzOCgpLCBpbmRleCwgb3VyTGVu
Z3RoLCBtYXRjaExlbmd0aCk7Ci0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2Fz
ZUlubmVyKGNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgs
IG91ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwotICAgIH0KLQotICAgIGlmIChtYXRjaFN0cmluZy0+
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZUlubmVyKGNo
YXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy0+Y2hhcmFjdGVyczgoKSwgaW5kZXgsIG91ckxlbmd0
aCwgbWF0Y2hMZW5ndGgpOwotCi0gICAgcmV0dXJuIHJldmVyc2VGaW5kSWdub3JpbmdDYXNlSW5u
ZXIoY2hhcmFjdGVyczE2KCksIG1hdGNoU3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSwgaW5kZXgsIG91
ckxlbmd0aCwgbWF0Y2hMZW5ndGgpOwotfQotCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVx
dWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBj
YXNlU2Vuc2l0aXZlKQotewotICAgIEFTU0VSVChzdHJpbmdJbXBsKTsKLSAgICBBU1NFUlQobWF0
Y2hMZW5ndGggPD0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOwotICAgIEFTU0VSVChzdGFydE9mZnNl
dCArIG1hdGNoTGVuZ3RoIDw9IHN0cmluZ0ltcGwtPmxlbmd0aCgpKTsKLQotICAgIGlmIChjYXNl
U2Vuc2l0aXZlKSB7Ci0gICAgICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3Rh
cnRPZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1h
dGNoTGVuZ3RoKTsKLSAgICB9Ci0gICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gZXF1YWxDb21wYXRpYmlsaXR5Q2FzZWxlc3Moc3RyaW5nSW1wbC0+Y2hhcmFjdGVy
czgoKSArIHN0YXJ0T2Zmc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obWF0Y2hT
dHJpbmcpLCBtYXRjaExlbmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsQ29tcGF0aWJpbGl0eUNhc2Vs
ZXNzKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmluZyksIG1hdGNoTGVuZ3RoKTsKLX0KLQotQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmlu
Z0ltcGwsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBTdHJpbmdJbXBsJiBtYXRjaFN0cmlu
ZykKLXsKLSAgICBpZiAoc3RhcnRPZmZzZXQgPiBzdHJpbmdJbXBsLmxlbmd0aCgpKQorICAgIGlm
IChzdGFydE9mZnNldCA+IHN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChtYXRjaFN0cmluZy5sZW5ndGgoKSA+IHN0cmluZ0ltcGwubGVuZ3RoKCkpCisgICAg
aWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1hdGNoU3RyaW5nLmxlbmd0aCgpICsgc3RhcnRPZmZzZXQgPiBz
dHJpbmdJbXBsLmxlbmd0aCgpKQorICAgIGlmIChtYXRjaFN0cmluZy5sZW5ndGgoKSArIHN0YXJ0
T2Zmc2V0ID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoc3RyaW5nSW1wbC5pczhCaXQoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAg
ICAgICAgaWYgKG1hdGNoU3RyaW5nLmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFs
KHN0cmluZ0ltcGwuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBlcXVhbChz
dHJpbmdJbXBsLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgbWF0Y2hTdHJpbmcuY2hhcmFj
dGVyczE2KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBlcXVh
bChzdHJpbmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBlcXVhbChzdHJp
bmcuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KICAgICBpZiAobWF0Y2hTdHJpbmcuaXM4
Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChzdHJpbmdJbXBsLmNoYXJhY3RlcnMxNigpICsg
c3RhcnRPZmZzZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4gZXF1YWwoc3RyaW5nSW1wbC5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0
T2Zmc2V0LCBtYXRjaFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkp
OworICAgICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZz
ZXQsIG1hdGNoU3RyaW5nLmNoYXJhY3RlcnM4KCksIG1hdGNoU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIG1hdGNo
U3RyaW5nLmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wg
U3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHIpIGNvbnN0Citib29s
IFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSBjb25zdAog
ewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIDo6V1RG
OjpzdGFydHNXaXRoKCp0aGlzLCAqc3RyKTsKKyAgICByZXR1cm4gc3RyaW5nICYmIDo6V1RGOjpz
dGFydHNXaXRoKCp0aGlzLCAqc3RyaW5nKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNX
aXRoKGNvbnN0IFN0cmluZ0ltcGwmIHN0cikgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3RhcnRz
V2l0aChjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RG
OjpzdGFydHNXaXRoKCp0aGlzLCBzdHIpOworICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aCgq
dGhpcywgc3RyaW5nKTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogcHJlZml4KSBjb25zdAogewotICAgIGlmICghcHJl
Zml4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gOjpXVEY6OnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnByZWZpeCk7CisgICAgcmV0dXJuIHByZWZpeCAm
JiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKIH0K
IAogYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCYgcHJlZml4KSBjb25zdApAQCAtMTQyMiwxMiArMTE5Nyw5IEBAIGJvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGVu
Z3RoICYmICgqdGhpcylbMF0gPT0gY2hhcmFjdGVyOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OnN0
YXJ0c1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoLCBi
b29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29u
c3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdAogewotICAg
IEFTU0VSVChtYXRjaExlbmd0aCk7Ci0gICAgaWYgKG1hdGNoTGVuZ3RoID4gbGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZXF1YWxJbm5lcih0aGlzLCAwLCBtYXRj
aFN0cmluZywgbWF0Y2hMZW5ndGgsIGNhc2VTZW5zaXRpdmUpOworICAgIHJldHVybiBtYXRjaExl
bmd0aCA8PSBsZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCAwLCBtYXRjaFN0cmluZywgbWF0
Y2hMZW5ndGgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6Omhhc0luZml4U3RhcnRpbmdBdChjb25z
dCBTdHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CkBA
IC0xNDM3LDEwICsxMjA5LDcgQEAgYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQo
Y29uc3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXIKIAogYm9vbCBTdHJp
bmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsKiBzdWZmaXgpCiB7Ci0gICAgaWYgKCFzdWZmaXgp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRo
aXMsICpzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlz
LCAqc3VmZml4KTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBz
dWZmaXgpCkBAIC0xNDQ4LDIyICsxMjE3LDkgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChT
dHJpbmdJbXBsJiBzdWZmaXgpCiAgICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3Vm
Zml4KTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsKiBtYXRjaFN0
cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlKQotewotICAgIEFTU0VSVChtYXRjaFN0cmluZyk7Ci0g
ICAgaWYgKG1fbGVuZ3RoID49IG1hdGNoU3RyaW5nLT5tX2xlbmd0aCkgewotICAgICAgICB1bnNp
Z25lZCBzdGFydCA9IG1fbGVuZ3RoIC0gbWF0Y2hTdHJpbmctPm1fbGVuZ3RoOwotICAgICAgICBy
ZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyBmaW5kKG1hdGNoU3RyaW5nLCBzdGFydCkgOiBmaW5kSWdu
b3JpbmdDYXNlKG1hdGNoU3RyaW5nLCBzdGFydCkpID09IHN0YXJ0OwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsKiBzdWZmaXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzdWZmaXgpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CiB9CiAKIGJvb2wgU3Ry
aW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZm
aXgpIGNvbnN0CkBAIC0xNDc2LDY2ICsxMjMyLDU5IEBAIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dp
dGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogICAgIHJldHVybiBtX2xlbmd0aCAmJiAoKnRoaXMp
W21fbGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVuZHNX
aXRoKGNvbnN0IGNoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwgYm9vbCBj
YXNlU2Vuc2l0aXZlKSBjb25zdAorYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChjb25zdCBjaGFy
KiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KG1hdGNoTGVuZ3RoKTsKLSAgICBpZiAobWF0Y2hMZW5ndGggPiBsZW5ndGgoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbGVuZ3RoKCkgLSBtYXRj
aExlbmd0aDsKLSAgICByZXR1cm4gZXF1YWxJbm5lcih0aGlzLCBzdGFydE9mZnNldCwgbWF0Y2hT
dHJpbmcsIG1hdGNoTGVuZ3RoLCBjYXNlU2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gbWF0Y2hMZW5n
dGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgbGVuZ3RoKCkgLSBtYXRjaExlbmd0
aCwgbWF0Y2hTdHJpbmcsIG1hdGNoTGVuZ3RoKTsKIH0KIAogYm9vbCBTdHJpbmdJbXBsOjpoYXNJ
bmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBlbmRP
ZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGVuZE9mZnNldCA8IG1hdGNoU3RyaW5nLmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIGVu
ZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZyk7CisgICAgcmV0dXJu
IGVuZE9mZnNldCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCBl
bmRPZmZzZXQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcpOwogfQogCi1SZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciBy
ZXBsYWNlbWVudCkKIHsKLSAgICBpZiAob2xkQyA9PSBuZXdDKQorICAgIGlmICh0YXJnZXQgPT0g
cmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB1bnNpZ25lZCBpOwogICAg
IGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjID0gaXM4
Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV07Ci0gICAgICAgIGlmIChjID09IG9sZEMp
CisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1fZGF0
YTE2W2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyID09IHRhcmdldCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBpZiAoaSA9PSBtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlz
OwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChvbGRDID4gMHhmZikKLSAgICAg
ICAgICAgIC8vIExvb2tpbmcgZm9yIGEgMTYgYml0IGNoYXIgaW4gYW4gOCBiaXQgc3RyaW5nLCB3
ZSdyZSBkb25lLgorICAgICAgICBpZiAodGFyZ2V0ID4gMHhGRikgeworICAgICAgICAgICAgLy8g
TG9va2luZyBmb3IgYSAxNi1iaXQgY2hhcmFjdGVyIGluIGFuIDgtYml0IHN0cmluZywgc28gd2Un
cmUgZG9uZS4KICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogCi0gICAgICAg
IGlmIChuZXdDIDw9IDB4ZmYpIHsKKyAgICAgICAgaWYgKHJlcGxhY2VtZW50IDw9IDB4RkYpIHsK
ICAgICAgICAgICAgIExDaGFyKiBkYXRhOwotICAgICAgICAgICAgTENoYXIgb2xkQ2hhciA9IHN0
YXRpY19jYXN0PExDaGFyPihvbGRDKTsKLSAgICAgICAgICAgIExDaGFyIG5ld0NoYXIgPSBzdGF0
aWNfY2FzdDxMQ2hhcj4obmV3Qyk7CisgICAgICAgICAgICBMQ2hhciBvbGRDaGFyID0gc3RhdGlj
X2Nhc3Q8TENoYXI+KHRhcmdldCk7CisgICAgICAgICAgICBMQ2hhciBuZXdDaGFyID0gc3RhdGlj
X2Nhc3Q8TENoYXI+KHJlcGxhY2VtZW50KTsKIAogICAgICAgICAgICAgYXV0byBuZXdJbXBsID0g
Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGEpOwogCiAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpICE9IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBMQ2hhciBjaCA9IG1fZGF0YThbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09IG9s
ZENoYXIpCi0gICAgICAgICAgICAgICAgICAgIGNoID0gbmV3Q2hhcjsKLSAgICAgICAgICAgICAg
ICBkYXRhW2ldID0gY2g7CisgICAgICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gbV9kYXRh
OFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IG9sZENoYXIpCisgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlciA9IG5ld0NoYXI7CisgICAgICAgICAgICAgICAgZGF0YVtp
XSA9IGNoYXJhY3RlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBuZXdJbXBs
OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHdlIG5l
ZWQgdG8gdXAgY29udmVydCBmcm9tIDggdG8gMTYgYml0LAotICAgICAgICAvLyBjcmVhdGUgYSAx
NiBiaXQgc3RyaW5nIGZvciB0aGUgcmVzdWx0LgogICAgICAgICBVQ2hhciogZGF0YTsKICAgICAg
ICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9s
ZW5ndGgsIGRhdGEpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgVUNoYXIgY2ggPSBtX2RhdGE4W2ldOwotICAgICAgICAgICAgaWYgKGNo
ID09IG9sZEMpCi0gICAgICAgICAgICAgICAgY2ggPSBuZXdDOwotICAgICAgICAgICAgZGF0YVtp
XSA9IGNoOworICAgICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhOFtpXTsKKyAgICAg
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQorICAgICAgICAgICAgICAgIGNoYXJhY3Rl
ciA9IHJlcGxhY2VtZW50OworICAgICAgICAgICAgZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsOwpAQCAtMTU0NSw1NiArMTI5NCw1MCBAQCBS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdD
KQogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5
KG1fbGVuZ3RoLCBkYXRhKTsKIAogICAgIGZvciAoaSA9IDA7IGkgIT0gbV9sZW5ndGg7ICsraSkg
ewotICAgICAgICBVQ2hhciBjaCA9IG1fZGF0YTE2W2ldOwotICAgICAgICBpZiAoY2ggPT0gb2xk
QykKLSAgICAgICAgICAgIGNoID0gbmV3QzsKLSAgICAgICAgZGF0YVtpXSA9IGNoOworICAgICAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSBtX2RhdGExNltpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSB0YXJnZXQpCisgICAgICAgICAgICBjaGFyYWN0ZXIgPSByZXBsYWNlbWVudDsKKyAgICAgICAg
ZGF0YVtpXSA9IGNoYXJhY3RlcjsKICAgICB9CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNp
Z25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1Jl
cGxhY2UsIFN0cmluZ0ltcGwqIHN0cmluZykKIHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBv
c2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3Ro
VG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0lu
c2VydCA9IHN0ciA/IHN0ci0+bGVuZ3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5z
ZXJ0ID0gc3RyaW5nID8gc3RyaW5nLT5sZW5ndGgoKSA6IDA7CiAgICAgaWYgKCFsZW5ndGhUb1Jl
cGxhY2UgJiYgIWxlbmd0aFRvSW5zZXJ0KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBp
ZiAoKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlKSA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoVG9JbnNlcnQpKQogICAgICAgICBDUkFTSCgpOwogCi0g
ICAgaWYgKGlzOEJpdCgpICYmICghc3RyIHx8IHN0ci0+aXM4Qml0KCkpKSB7CisgICAgaWYgKGlz
OEJpdCgpICYmICghc3RyaW5nIHx8IHN0cmluZy0+aXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFy
KiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgICAgICBt
ZW1jcHkoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24gKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAg
aWYgKHN0cikKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0ci0+bV9kYXRh
OCwgbGVuZ3RoVG9JbnNlcnQgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgbWVtY3B5KGRhdGEg
KyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24gKyBsZW5ndGhU
b1JlcGxhY2UsCi0gICAgICAgICAgICAgICAobGVuZ3RoKCkgLSBwb3NpdGlvbiAtIGxlbmd0aFRv
UmVwbGFjZSkgKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSwg
bV9kYXRhOCwgcG9zaXRpb24pOworICAgICAgICBpZiAoc3RyaW5nKQorICAgICAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5z
ZXJ0KTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9J
bnNlcnQsIG1fZGF0YTggKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVwbGFjZSwgbGVuZ3RoKCkgLSBw
b3NpdGlvbiAtIGxlbmd0aFRvUmVwbGFjZSk7CiAgICAgICAgIHJldHVybiBuZXdJbXBsOwogICAg
IH0KICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwog
ICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBvc2l0
aW9uOyArK2kpCi0gICAgICAgICAgICBkYXRhW2ldID0gbV9kYXRhOFtpXTsKKyAgICAgICAgY29w
eUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
bWVtY3B5KGRhdGEsIG1fZGF0YTE2LCBwb3NpdGlvbiAqIHNpemVvZihVQ2hhcikpOwotICAgIGlm
IChzdHIpIHsKLSAgICAgICAgaWYgKHN0ci0+aXM4Qml0KCkpCi0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoVG9JbnNlcnQ7ICsraSkKLSAgICAgICAgICAgICAgICBk
YXRhW2kgKyBwb3NpdGlvbl0gPSBzdHItPm1fZGF0YThbaV07CisgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEsIG1fZGF0YTE2LCBwb3NpdGlvbik7CisgICAgaWYgKHN0cmluZykgeworICAgICAg
ICBpZiAoc3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEg
KyBwb3NpdGlvbiwgc3RyaW5nLT5tX2RhdGE4LCBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24sIHN0ci0+bV9kYXRhMTYsIGxl
bmd0aFRvSW5zZXJ0ICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgfQotICAgIGlmIChpczhCaXQoKSkg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoKCkgLSBwb3NpdGlvbiAt
IGxlbmd0aFRvUmVwbGFjZTsgKytpKQotICAgICAgICAgICAgZGF0YVtpICsgcG9zaXRpb24gKyBs
ZW5ndGhUb0luc2VydF0gPSBtX2RhdGE4W2kgKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVwbGFjZV07
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRv
SW5zZXJ0LCBjaGFyYWN0ZXJzMTYoKSArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLAotICAg
ICAgICAgICAgKGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2UpICogc2l6ZW9m
KFVDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0
cmluZy0+bV9kYXRhMTYsIGxlbmd0aFRvSW5zZXJ0KTsKICAgICB9CisgICAgaWYgKGlzOEJpdCgp
KQorICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2Vy
dCwgbV9kYXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsKKyAgICBlbHNlCisgICAgICAgIGNvcHlDaGFyYWN0ZXJz
KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGExNiArIHBvc2l0aW9uICsg
bGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9SZXBsYWNlKTsK
ICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIApAQCAtMTYwMiwxMCArMTM0NSw4IEBAIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJl
cGxhY2VtZW50KQogewogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhp
czsKLQogICAgIGlmIChyZXBsYWNlbWVudC0+aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiByZXBs
YWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkp
OwotCiAgICAgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCBy
ZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwogfQogCkBAIC0xNjQ4LDE1ICsxMzg5LDE1IEBAIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFy
KiByZXBsYWNlbWVudCwgdW5zCiAKICAgICAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmlu
ZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAg
c3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAg
ICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3Jj
U2VnbWVudExlbmd0aCk7CiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gc3JjU2VnbWVudExlbmd0
aDsKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVw
U3RyTGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhk
YXRhICsgZHN0T2Zmc2V0LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgICAg
IGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgICAgICBzcmNTZWdtZW50U3RhcnQg
PSBzcmNTZWdtZW50RW5kICsgMTsKICAgICAgICAgfQogCiAgICAgICAgIHNyY1NlZ21lbnRMZW5n
dGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgbWVtY3B5KGRhdGEgKyBk
c3RPZmZzZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGggKiBz
aXplb2YoTENoYXIpKTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
bV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAg
QVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5n
dGgoKSk7CiAKQEAgLTE2NjgsMTggKzE0MDksMTcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJlcGxhY2VtZW50LCB1bnMK
IAogICAgIHdoaWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2VnbWVudFN0
YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21l
bnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0
LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihV
Q2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGEx
NiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zm
c2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZXBTdHJMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBy
ZXBsYWNlbWVudFtpXTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
cmVwbGFjZW1lbnQsIHJlcFN0ckxlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zmc2V0ICs9IHJlcFN0
ckxlbmd0aDsKICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAg
ICAgfQogCiAgICAgc3JjU2VnbWVudExlbmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0
OwotICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFy
dCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJz
KGRhdGEgKyBkc3RPZmZzZXQsIG1fZGF0YTE2ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50
TGVuZ3RoKTsKIAogICAgIEFTU0VSVChkc3RPZmZzZXQgKyBzcmNTZWdtZW50TGVuZ3RoID09IG5l
d0ltcGwuZ2V0KCkubGVuZ3RoKCkpOwogCkBAIC0xNzI1LDE5ICsxNDY1LDE3IEBAIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IFVDaGFyKiBy
ZXBsYWNlbWVudCwgdW5zCiAKICAgICAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0gZmluZChw
YXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgc3Jj
U2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3JjU2VnbWVudExlbmd0aDsgKytpKQotICAg
ICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSBtX2RhdGE4W2kgKyBzcmNTZWdtZW50
U3RhcnRdOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9k
YXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgICAg
IGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEg
KyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsK
KyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50
LCByZXBTdHJMZW5ndGgpOwogCiAgICAgICAgICAgICBkc3RPZmZzZXQgKz0gcmVwU3RyTGVuZ3Ro
OwogICAgICAgICAgICAgc3JjU2VnbWVudFN0YXJ0ID0gc3JjU2VnbWVudEVuZCArIDE7CiAgICAg
ICAgIH0KIAogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50
U3RhcnQ7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsgc3Jj
U2VnbWVudFN0YXJ0XTsKKyAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwg
bV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAg
QVNTRVJUKGRzdE9mZnNldCArIHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5n
dGgoKSk7CiAKQEAgLTE3NDksMTcgKzE0ODcsMTcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxhY2VtZW50LCB1bnMK
IAogICAgIHdoaWxlICgoc3JjU2VnbWVudEVuZCA9IGZpbmQocGF0dGVybiwgc3JjU2VnbWVudFN0
YXJ0KSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21l
bnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0
LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihV
Q2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGEx
NiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICAgICAgZHN0T2Zm
c2V0ICs9IHNyY1NlZ21lbnRMZW5ndGg7Ci0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0
LCByZXBsYWNlbWVudCwgcmVwU3RyTGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIGNv
cHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LCByZXBTdHJMZW5ndGgp
OwogCiAgICAgICAgIGRzdE9mZnNldCArPSByZXBTdHJMZW5ndGg7CiAgICAgICAgIHNyY1NlZ21l
bnRTdGFydCA9IHNyY1NlZ21lbnRFbmQgKyAxOwogICAgIH0KIAogICAgIHNyY1NlZ21lbnRMZW5n
dGggPSBtX2xlbmd0aCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICBtZW1jcHkoZGF0YSArIGRzdE9m
ZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGggKiBzaXpl
b2YoVUNoYXIpKTsKKyAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGEx
NiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAKICAgICBBU1NFUlQoZHN0
T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxlbmd0aCgpKTsKIApA
QCAtMTgxOCwxNSArMTU1NiwxNSBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFj
ZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudAogICAgICAgICBh
dXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKG5ld1NpemUsIGRhdGEpOwogICAgICAg
ICB3aGlsZSAoKHNyY1NlZ21lbnRFbmQgPSBmaW5kKHBhdHRlcm4sIHNyY1NlZ21lbnRTdGFydCkp
ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVu
dEVuZCAtIHNyY1NlZ21lbnRTdGFydDsKLSAgICAgICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zm
c2V0LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoICogc2l6ZW9m
KExDaGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBt
X2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAg
IGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEg
KyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGggKiBzaXplb2Yo
TENoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJl
cGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOwogICAgICAgICAgICAgZHN0T2Zmc2V0
ICs9IHJlcFN0ckxlbmd0aDsKICAgICAgICAgICAgIHNyY1NlZ21lbnRTdGFydCA9IHNyY1NlZ21l
bnRFbmQgKyBwYXR0ZXJuTGVuZ3RoOwogICAgICAgICB9CiAKICAgICAgICAgc3JjU2VnbWVudExl
bmd0aCA9IG1fbGVuZ3RoIC0gc3JjU2VnbWVudFN0YXJ0OwotICAgICAgICBtZW1jcHkoZGF0YSAr
IGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAq
IHNpemVvZihMQ2hhcikpOworICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0
LCBtX2RhdGE4ICsgc3JjU2VnbWVudFN0YXJ0LCBzcmNTZWdtZW50TGVuZ3RoKTsKIAogICAgICAg
ICBBU1NFUlQoZHN0T2Zmc2V0ICsgc3JjU2VnbWVudExlbmd0aCA9PSBuZXdJbXBsLmdldCgpLmxl
bmd0aCgpKTsKIApAQCAtMTgzOSwyMCArMTU3NywxOCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVu
dAogICAgICAgICBzcmNTZWdtZW50TGVuZ3RoID0gc3JjU2VnbWVudEVuZCAtIHNyY1NlZ21lbnRT
dGFydDsKICAgICAgICAgaWYgKHNyY0lzOEJpdCkgewogICAgICAgICAgICAgLy8gQ2FzZSAzLgot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNyY1NlZ21lbnRMZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsgc3Jj
U2VnbWVudFN0YXJ0XTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZz
ZXQsIG1fZGF0YTggKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5ndGgpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQ2FzZSAyICYgNC4KLSAgICAgICAgICAgIG1lbWNw
eShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRTdGFydCwgc3JjU2VnbWVu
dExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIGRzdE9mZnNldCwgbV9kYXRhMTYgKyBzcmNTZWdtZW50U3RhcnQsIHNyY1NlZ21lbnRMZW5n
dGgpOwogICAgICAgICB9CiAgICAgICAgIGRzdE9mZnNldCArPSBzcmNTZWdtZW50TGVuZ3RoOwog
ICAgICAgICBpZiAocmVwbGFjZW1lbnRJczhCaXQpIHsKICAgICAgICAgICAgIC8vIENhc2VzIDIg
JiAzLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlcFN0ckxlbmd0aDsg
KytpKQotICAgICAgICAgICAgICAgIGRhdGFbaSArIGRzdE9mZnNldF0gPSByZXBsYWNlbWVudC0+
bV9kYXRhOFtpXTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQs
IHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBTdHJMZW5ndGgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gQ2FzZSA0Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIGRzdE9mZnNl
dCwgcmVwbGFjZW1lbnQtPm1fZGF0YTE2LCByZXBTdHJMZW5ndGggKiBzaXplb2YoVUNoYXIpKTsK
KyAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBkc3RPZmZzZXQsIHJlcGxhY2VtZW50
LT5tX2RhdGExNiwgcmVwU3RyTGVuZ3RoKTsKICAgICAgICAgfQogICAgICAgICBkc3RPZmZzZXQg
Kz0gcmVwU3RyTGVuZ3RoOwogICAgICAgICBzcmNTZWdtZW50U3RhcnQgPSBzcmNTZWdtZW50RW5k
ICsgcGF0dGVybkxlbmd0aDsKQEAgLTE4NjEsMTEgKzE1OTcsMTAgQEAgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5nSW1wbCogcmVw
bGFjZW1lbnQKICAgICBzcmNTZWdtZW50TGVuZ3RoID0gbV9sZW5ndGggLSBzcmNTZWdtZW50U3Rh
cnQ7CiAgICAgaWYgKHNyY0lzOEJpdCkgewogICAgICAgICAvLyBDYXNlIDMuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNTZWdtZW50TGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICBkYXRhW2kgKyBkc3RPZmZzZXRdID0gbV9kYXRhOFtpICsgc3JjU2VnbWVudFN0YXJ0XTsKKyAg
ICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIGRzdE9mZnNldCwgbV9kYXRhOCArIHNyY1NlZ21l
bnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2Fz
ZXMgMiAmIDQuCi0gICAgICAgIG1lbWNweShkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNy
Y1NlZ21lbnRTdGFydCwgc3JjU2VnbWVudExlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgZHN0T2Zmc2V0LCBtX2RhdGExNiArIHNyY1NlZ21lbnRT
dGFydCwgc3JjU2VnbWVudExlbmd0aCk7CiAgICAgfQogCiAgICAgQVNTRVJUKGRzdE9mZnNldCAr
IHNyY1NlZ21lbnRMZW5ndGggPT0gbmV3SW1wbC5nZXQoKS5sZW5ndGgoKSk7CkBAIC0xODc4LDgg
KzE2MTMsNyBAQCBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0lt
cGwqIGIpCiAgICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIpOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgYm9vbCBlcXVhbEludGVybmFsKGNvbnN0IFN0cmluZ0lt
cGwqIGEsIGNvbnN0IENoYXJUeXBlKiBiLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbEludGVybmFsKGNvbnN0IFN0cmlu
Z0ltcGwqIGEsIGNvbnN0IENoYXJhY3RlclR5cGUqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAg
ICBpZiAoIWEpCiAgICAgICAgIHJldHVybiAhYjsKQEAgLTE5NTQsMTEgKzE2ODgsNyBAQCBib29s
IGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCiAKIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJp
bmdJbXBsKiBiKQogewotICAgIGlmIChhID09IGIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmICghYSB8fCAhYikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlQ29tbW9uKCphLCAqYik7CisgICAgcmV0dXJuIGEgPT0gYiB8fCAoYSAm
JiBiICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoKmEsICpiKSk7CiB9CiAKIGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5n
SW1wbCogYikKQEAgLTE5NzEsNyArMTcwMSw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZU5vbk51bGwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKIFVDaGFy
RGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xl
bmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2No
YXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOworICAgICAg
ICBhdXRvIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4
W2ldIDogbV9kYXRhMTZbaV0pOwogICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRf
VE9fUklHSFQpIHsKICAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAg
ICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVlOwpAQCAtMjAxMywx
MyArMTc0MywxMyBAQCBzaXplX3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAg
IHJldHVybiBzaXplICsgc2l6ZW9mKCp0aGlzKTsKIH0KIAotLy8gSGVscGVyIHRvIHdyaXRlIGEg
dGhyZWUtYnl0ZSBVVEYtOCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0IGNo
ZWNrIHJvb20gaXMgYXZhaWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlwbGUo
Y2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCisvLyBIZWxwZXIgdG8gd3JpdGUgYSB0aHJlZS1ieXRl
IFVURi04IGNvZGUgcG9pbnQgaW50byB0aGUgYnVmZmVyOyBjYWxsZXIgbXVzdCBlbnN1cmUgcm9v
bSBpcyBhdmFpbGFibGUuCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYg
YnVmZmVyLCBVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7Ci0g
ICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8IDB4
RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAweDNG
KSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4M0Yp
IHwgMHg4MCk7CisgICAgQVNTRVJUKGNoYXJhY3RlciA+PSAweDA4MDApOworICAgICpidWZmZXIr
KyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2hhcmFjdGVyID4+IDEyKSAmIDB4MEYpIHwgMHhFMCk7
CisgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaGFyYWN0ZXIgPj4gNikgJiAw
eDNGKSB8IDB4ODApOworICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaGFyYWN0
ZXIgJiAweDNGKSB8IDB4ODApOwogfQogCiBib29sIFN0cmluZ0ltcGw6OnV0ZjhJbXBsKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNoYXIqJiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCBDb252ZXJzaW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAppbmRleCAxMzA4NjZjZjJhMGQwZjRhMThkNjE4MjMyZjZlYTE1YTQyMWY3MmYwLi4zZmJlZTA0
YmE1NDFkZTMyZWRiNGUwOTM5OWE1ZmZhMGRkZWRhNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ29udmVy
c2lvbk1vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdNYWxsb2MuaD4KQEAgLTU3LDcgKzU4LDYgQEAgY2xhc3MgU3ltYm9s
SW1wbDsKIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7
Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRv
cjsKIHN0cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogc3RydWN0IExDaGFy
QnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBTdHJpbmdIYXNoOwpAQCAtNjYsMjIgKzY2LDIxIEBA
IHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBSZXRhaW5QdHI7CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQnVmZmVyRnJvbVN0YXRp
Y0RhdGFUcmFuc2xhdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoQW5kQ2hhcmFj
dGVyc1RyYW5zbGF0b3I7CiAKLWVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7Ci0gICAgVGV4dENh
c2VTZW5zaXRpdmUsCi0gICAgVGV4dENhc2VJbnNlbnNpdGl2ZQotfTsKKy8vIERlZmluZSBTVFJJ
TkdfU1RBVFMgdG8gMSB0dXJuIG9uIHJ1bnRpbWUgc3RhdGlzdGljcyBmb3Igc3RyaW5nIHNpemVz
IGFuZCBtZW1vcnkgdXNhZ2UuCisjZGVmaW5lIFNUUklOR19TVEFUUyAwCiAKIHR5cGVkZWYgYm9v
bCAoKkNoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpKFVDaGFyKTsKIHR5cGVkZWYgYm9vbCAoKklz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKShVQ2hhcik7CiAKLS8vIERlZmluZSBTVFJJTkdfU1RBVFMg
dG8gMSB0dXJuIG9uIHJ1biB0aW1lIHN0YXRpc3RpY3Mgb2Ygc3RyaW5nIHNpemVzIGFuZCBtZW1v
cnkgdXNhZ2UKLSNkZWZpbmUgU1RSSU5HX1NUQVRTIDAKK3RlbXBsYXRlPGJvb2wgaXNTcGVjaWFs
Q2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBzaXplX3QgbGVuZ3RoKTsKIAogI2lm
IFNUUklOR19TVEFUUworCiBzdHJ1Y3QgU3RyaW5nU3RhdHMgewotICAgIGlubGluZSB2b2lkIGFk
ZDhCaXRTdHJpbmcodW5zaWduZWQgbGVuZ3RoLCBib29sIGlzU3ViU3RyaW5nID0gZmFsc2UpCisg
ICAgdm9pZCBhZGQ4Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1N1YlN0cmluZyA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgKyttX3RvdGFsTnVtYmVyU3RyaW5nczsKICAgICAgICAg
KyttX251bWJlcjhCaXRTdHJpbmdzOwpAQCAtODksNyArODgsNyBAQCBzdHJ1Y3QgU3RyaW5nU3Rh
dHMgewogICAgICAgICAgICAgbV90b3RhbDhCaXREYXRhICs9IGxlbmd0aDsKICAgICB9CiAKLSAg
ICBpbmxpbmUgdm9pZCBhZGQxNkJpdFN0cmluZyh1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNTdWJT
dHJpbmcgPSBmYWxzZSkKKyAgICB2b2lkIGFkZDE2Qml0U3RyaW5nKHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCBpc1N1YlN0cmluZyA9IGZhbHNlKQogICAgIHsKICAgICAgICAgKyttX3RvdGFsTnVtYmVy
U3RyaW5nczsKICAgICAgICAgKyttX251bWJlcjE2Qml0U3RyaW5nczsKQEAgLTEyMCw3ICsxMTks
OSBAQCBzdHJ1Y3QgU3RyaW5nU3RhdHMgewogI2RlZmluZSBTVFJJTkdfU1RBVFNfUkVNT1ZFX1NU
UklORyhzdHJpbmcpIFN0cmluZ0ltcGw6OnN0cmluZ1N0YXRzKCkucmVtb3ZlU3RyaW5nKHN0cmlu
ZykKICNkZWZpbmUgU1RSSU5HX1NUQVRTX1JFRl9TVFJJTkcoc3RyaW5nKSArK1N0cmluZ0ltcGw6
OnN0cmluZ1N0YXRzKCkubV9yZWZDYWxsczsKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0RFUkVGX1NU
UklORyhzdHJpbmcpICsrU3RyaW5nSW1wbDo6c3RyaW5nU3RhdHMoKS5tX2RlcmVmQ2FsbHM7CisK
ICNlbHNlCisKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhsZW5ndGgpICgo
dm9pZCkwKQogI2RlZmluZSBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihsZW5ndGgsIGlz
U3ViU3RyaW5nKSAoKHZvaWQpMCkKICNkZWZpbmUgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJ
TkcobGVuZ3RoKSAoKHZvaWQpMCkKQEAgLTEyOSw0MiArMTMwLDE4IEBAIHN0cnVjdCBTdHJpbmdT
dGF0cyB7CiAjZGVmaW5lIFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKHN0cmluZykgKCh2b2lk
KTApCiAjZGVmaW5lIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKHN0cmluZykgKCh2b2lkKTApCiAj
ZGVmaW5lIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoc3RyaW5nKSAoKHZvaWQpMCkKKwogI2Vu
ZGlmCiAKIGNsYXNzIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RyaW5nSW1wbFNoYXBlKTsKIHByb3RlY3RlZDoKLSAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWdu
ZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25l
ZCBoYXNoQW5kRmxhZ3MpCi0gICAgICAgIDogbV9yZWZDb3VudChyZWZDb3VudCkKLSAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwgbV9kYXRhOChkYXRhOCkKLSAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9Ci0KLSAgICBTdHJpbmdJbXBsU2hh
cGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIGRhdGEx
NiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQotICAgICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQp
Ci0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICAgICAsIG1fZGF0YTE2KGRhdGExNikK
LSAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgU3Ry
aW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IExD
aGFyKiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKTsKKyAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWdu
ZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBoYXNo
QW5kRmxhZ3MpOwogCiAgICAgZW51bSBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnIHsgQ29uc3Ry
dWN0V2l0aENvbnN0RXhwciB9OwotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3Rl
ckNvdW50PgotICAgIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50
XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKQotICAg
ICAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQot
ICAgICAgICAsIG1fZGF0YThDaGFyKGNoYXJhY3RlcnMpCi0gICAgICAgICwgbV9oYXNoQW5kRmxh
Z3MoaGFzaEFuZEZsYWdzKQotICAgIHsgfQotICAgIAotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlckNvdW50PgotICAgIGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFy
YWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhw
clRhZykKLSAgICAgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQotICAgICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKLSAgICAgICAgLCBtX2RhdGExNkNoYXIoY2hhcmFjdGVycykKLSAgICAgICAgLCBt
X2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCi0gICAgeyB9CisgICAgdGVtcGxhdGU8dW5zaWdu
ZWQgY2hhcmFjdGVyQ291bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3Rl
ckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFn
KTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmlu
Z0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFy
MTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdz
LCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKIAogICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7
CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CkBAIC0xODEsMjYgKzE1OCwyNSBAQCBwcm90ZWN0ZWQ6
CiAKIGNsYXNzIFN0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nSW1wbCk7IFdURl9NQUtFX1NUUklOR19BTExPQ0FURUQ7
CisKKyAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKKyAgICBmcmllbmQgY2xhc3Mg
SlNDOjpMTEludDo6RGF0YTsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgZnJpZW5kIGNsYXNzIFByaXZhdGVTeW1ib2xJbXBsOworICAgIGZyaWVuZCBj
bGFzcyBSZWdpc3RlcmVkU3ltYm9sSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsK
KwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFuZENoYXJh
Y3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJh
Y3RlcnNUcmFuc2xhdG9yOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGZy
aWVuZCBzdHJ1Y3QgV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CiAgICAgZnJp
ZW5kIHN0cnVjdCBXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0
IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJC
dWZmZXJUcmFuc2xhdG9yOwotICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOwotICAg
IGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICBmcmllbmQgY2xh
c3MgQXRvbWljU3RyaW5nSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKLSAgICBm
cmllbmQgY2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVy
ZWRTeW1ib2xJbXBsOwotICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBzdHJ1
Y3QgV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CisK
IHB1YmxpYzoKLSAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7Ci0gICAgICAgIEJ1ZmZlckludGVy
bmFsLAotICAgICAgICBCdWZmZXJPd25lZCwKLSAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAotICAg
IH07CisgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgeyBCdWZmZXJJbnRlcm5hbCwgQnVmZmVyT3du
ZWQsIEJ1ZmZlclN1YnN0cmluZyB9OwogCiAgICAgLy8gVGhlIGJvdHRvbSA2IGJpdHMgaW4gdGhl
IGhhc2ggYXJlIGZsYWdzLgogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19m
bGFnQ291bnQgPSA2OwpAQCAtMjIyLDk0ICsxOTgsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgU3Ry
aW5nU3ltYm9sID0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc1N5bWJvbCwgLy8gc3ltYm9sLCBub24t
YXRvbWljCiAgICAgfTsKIAotICAgIC8vIEZJWE1FOiB0aGVyZSBoYXMgdG8gYmUgYSBsZXNzIGhh
Y2t5IHdheSB0byBkbyB0aGlzLgogICAgIGVudW0gRm9yY2U4Qml0IHsgRm9yY2U4Qml0Q29uc3Ry
dWN0b3IgfTsKLSAgICAvLyBDcmVhdGUgYSBub3JtYWwgOC1iaXQgc3RyaW5nIHdpdGggaW50ZXJu
YWwgc3RvcmFnZSAoQnVmZmVySW50ZXJuYWwpCi0gICAgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5n
dGgsIEZvcmNlOEJpdCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3Jl
bWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxMQ2hhcj4oKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIg
fCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5hbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKIAotICAgICAgICBTVFJJTkdfU1RB
VFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgLy8gQ3JlYXRlIGEgbm9y
bWFsIDgtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQor
ICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpOwogCiAgICAgLy8gQ3Jl
YXRlIGEgbm9ybWFsIDE2LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJ
bnRlcm5hbCkKLSAgICBTdHJpbmdJbXBsKHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJp
bmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9pbnRlcjxVQ2hh
cj4oKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAgIFNUUklO
R19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgZXhwbGljaXQg
U3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1w
bCBhZG9wdGluZyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQp
Ci0gICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVu
Z3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdO
b3JtYWwgfCBCdWZmZXJPd25lZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAg
ICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRf
U1RSSU5HKG1fbGVuZ3RoKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8TENoYXI+
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICBlbnVtIENvbnN0cnVjdFdpdGhv
dXRDb3B5aW5nVGFnIHsgQ29uc3RydWN0V2l0aG91dENvcHlpbmcgfTsKLSAgICBTdHJpbmdJbXBs
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhv
dXRDb3B5aW5nVGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVt
ZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKLQotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORyhtX2xlbmd0aCk7Ci0g
ICAgfQotCi0gICAgU3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykKLSAgICAgICAgOiBTdHJpbmdJbXBs
U2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFn
OEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fZGF0YTgpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgpOwotCi0gICAgICAg
IFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOwotICAgIH0KKyAgICBTdHJp
bmdJbXBsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29w
eWluZ1RhZyk7CisgICAgU3RyaW5nSW1wbChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwg
Q29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpOwogCiAgICAgLy8gQ3JlYXRlIGEgU3RyaW5nSW1w
bCBhZG9wdGluZyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZlciAoQnVmZmVyT3duZWQp
Ci0gICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8VUNoYXI+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVu
Z3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwotICAgICAgICBBU1NFUlQobV9sZW5ndGgp
OwotCi0gICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKLSAg
ICB9CisgICAgU3RyaW5nSW1wbChNYWxsb2NQdHI8VUNoYXI+LCB1bnNpZ25lZCBsZW5ndGgpOwog
CiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN0cmluZ3MgdGhhdCBhcmUgYSBzdWJzdHJpbmcg
b2YgYW4gZXhpc3RpbmcgOC1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vic3RyaW5nKQotICAgIFN0
cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0
cmluZ0ltcGw+JiYgYmFzZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmlu
Z05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpczhCaXQo
KSk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsK
LSAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmlu
Zyk7Ci0KLSAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAg
ICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAg
IH0KKyAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3Ry
aW5nSW1wbD4mJik7CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFy
ZSBhIHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyAxNi1iaXQgU3RyaW5nSW1wbCAoQnVmZmVyU3Vi
c3RyaW5nKQotICAgIFN0cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hh
cGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAg
ICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKLSAgICAgICAgQVNTRVJUKG1fbGVuZ3RoKTsKLSAgICAg
ICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Ci0K
LSAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSAmYmFzZS5sZWFrUmVmKCk7Ci0KLSAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9Cisg
ICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0lt
cGw+JiYpOwogCiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyB2b2lk
IGRlc3Ryb3koU3RyaW5nSW1wbCopOwpAQCAtMzE3LDcxICsyMjgsMjYgQEAgcHVibGljOgogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdGVt
cGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgotICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0
b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5PiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxl
KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29u
c3QgVUNoYXIqKTsKIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9CisgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsKLSAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9Ci0KLSAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hh
cmluZ0ltcGwoU3RyaW5nSW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLmxlbmd0aCgpKTsKKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHN0
cmluZykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJp
bmcpKTsgfQogCi0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuICplbXB0
eSgpOworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0lt
cGwoU3RyaW5nSW1wbCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAg
ICAgICBhdXRvKiBvd25lclJlcCA9ICgocmVwLmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1
YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwKTsKKyAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9t
TGl0ZXJhbChjb25zdCBjaGFyICgmKVtjaGFyYWN0ZXJDb3VudF0pOwogCi0gICAgICAgIC8vIFdl
IGFsbG9jYXRlIGEgYnVmZmVyIHRoYXQgY29udGFpbnMgYm90aCB0aGUgU3RyaW5nSW1wbCBzdHJ1
Y3QgYXMgd2VsbCBhcyB0aGUgcG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nLgotICAgICAgICBh
dXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhh
bGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMSkpKTsKLSAgICAgICAgaWYgKHJlcC5pczhCaXQo
KSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBs
KSBTdHJpbmdJbXBsKHJlcC5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOwot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5n
SW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVG
cm9tTGl0ZXJhbCB0byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKIAot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
Y2hhcmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7Ci0gICAg
ICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkg
LSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxp
dGVyYWxDYW5ub3RPdmVyZmxvdyk7Ci0KLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVy
Q291bnQgLSAxKTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVHJhbnNpdGlvbiBvZmYgb2YgdGhl
c2UgZnVuY3Rpb25zIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGluc3RlYWQuCi0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzKTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExD
aGFyKiYgZGF0YSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZlB0cjxT
dHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVComIG91
dHB1dCkKLSAgICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgICAgICBvdXRwdXQg
PSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKFQpKSkgewotICAgICAgICAgICAgb3V0cHV0
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAg
ICAgIFN0cmluZ0ltcGwqIHJlc3VsdEltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4odHJ5
U3RyaW5nTWFsbG9jKGFsbG9jYXRpb25TaXplPFQ+KGxlbmd0aCkpKTsKLSAgICAgICAgaWYgKCFy
ZXN1bHRJbXBsKSB7Ci0gICAgICAgICAgICBvdXRwdXQgPSBudWxscHRyOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+
dGFpbFBvaW50ZXI8VD4oKTsKLQotICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4o
cmVzdWx0SW1wbCwgbGVuZ3RoKTsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJik7CisgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJik7CiAKICAgICAvLyBSZWFsbG9jYXRl
IHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5
IHRoZSBSZWYsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVmZmVy
SW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCkBAIC0z
OTYsODMgKzI2MiwzMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tTdHJpbmdL
aW5kKCkgeyByZXR1cm4gc19oYXNoTWFza1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWdu
ZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2Rh
dGE4KTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+Ci0g
ICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhclR5cGUsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYmIHZlY3RvcikKLSAg
ICB7Ci0gICAgICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgpKTsKLSAgICAgICAgICAgIGlmIChzaXplID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKHZlY3Rvci5yZWxl
YXNlQnVmZmVyKCksIHNpemUpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKmVtcHR5KCk7
Ci0gICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVy
VHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYpOwog
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQo
U3RyaW5nQnVmZmVyPFVDaGFyPiYmKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiYpOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IGxlbmd0aE1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJp
bmdJbXBsLCBtX2xlbmd0aCk7IH0KLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9sZW5ndGg7IH0KIAorICAgIGJvb2wgaXM4Qml0KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQogICAgIEFM
V0FZU19JTkxJTkUgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyBBU1NFUlQoaXM4
Qml0KCkpOyByZXR1cm4gbV9kYXRhODsgfQogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgQVNTRVJUKCFpczhCaXQoKSk7IHJldHVybiBtX2RhdGEx
NjsgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJ
TkUgY29uc3QgQ2hhclR5cGUgKmNoYXJhY3RlcnMoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29u
c3Q7CiAKLSAgICBzaXplX3QgY29zdCgpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBGb3Igc3Vi
c3RyaW5ncywgcmV0dXJuIHRoZSBjb3N0IG9mIHRoZSBiYXNlIHN0cmluZy4KLSAgICAgICAgaWYg
KGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVy
biBzdWJzdHJpbmdCdWZmZXIoKS0+Y29zdCgpOwotCi0gICAgICAgIC8vIE5vdGU6IHdlIG11c3Qg
bm90IGFsdGVyIHRoZSBtX2hhc2hBbmRGbGFncyBmaWVsZCBpbiBpbnN0YW5jZXMgb2YgU3RhdGlj
U3RyaW5nSW1wbC4KLSAgICAgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhl
IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCi0gICAgICAg
IC8vIFN0YXRpY1N0cmluZ0ltcGwuIEFzIGEgcmVzdWx0LCBTdGF0aWNTdHJpbmdJbXBsIGluc3Rh
bmNlcyB3aWxsIGFsd2F5cyByZXR1cm4gYSBjb3N0IG9mCi0gICAgICAgIC8vIDAgaGVyZSBhbmQg
YXZvaWQgbW9kaWZ5aW5nIG1faGFzaEFuZEZsYWdzLgotICAgICAgICBpZiAobV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0g
ICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0OwotICAgICAg
ICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlmICghaXM4Qml0KCkpCi0gICAg
ICAgICAgICByZXN1bHQgPDw9IDE7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAg
IAotICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKQotICAgIHsKLSAgICAgICAgaWYgKGlzU3RhdGlj
KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIGlmIChidWZmZXJP
d25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gZGl2aWRl
Um91bmRlZFVwKHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7
Ci0gICAgICAgIAotICAgICAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7Ci0gICAgICAgIGlm
ICghaXM4Qml0KCkpCi0gICAgICAgICAgICByZXN1bHQgPDw9IDE7Ci0gICAgICAgIHJldHVybiBk
aXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsKLSAgICB9CisgICAgc2l6ZV90IGNv
c3QoKSBjb25zdDsKKyAgICBzaXplX3QgY29zdER1cmluZ0dDKCk7CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBTdHJpbmdLaW5k
IHN0cmluZ0tpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihtX2hh
c2hBbmRGbGFncyAmIHNfaGFzaE1hc2tTdHJpbmdLaW5kKTsgfQogICAgIGJvb2wgaXNTeW1ib2wo
KSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNT
eW1ib2w7IH0KICAgICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxh
Z3MgJiBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbWljOyB9Ci0KLSAgICB2b2lkIHNldElzQXRv
bWljKGJvb2wgaXNBdG9taWMpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwot
ICAgICAgICBBU1NFUlQoIWlzU3ltYm9sKCkpOwotICAgICAgICBpZiAoaXNBdG9taWMpIHsKLSAg
ICAgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7
Ci0gICAgICAgICAgICBBU1NFUlQoc3RyaW5nS2luZCgpID09IFN0cmluZ0F0b21pYyk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0
cmluZ0tpbmRJc0F0b21pYzsKLSAgICAgICAgICAgIEFTU0VSVChzdHJpbmdLaW5kKCkgPT0gU3Ry
aW5nTm9ybWFsKTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldElzQXRvbWljKGJvb2wp
OwogCiAjaWYgU1RSSU5HX1NUQVRTCiAgICAgYm9vbCBpc1N1YlN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZzsgfQpAQCAtNDg5LDQ0ICsz
MDMsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgaGlnaCBiaXRzIG9mICdoYXNoJyBhcmUgYWx3
YXlzIGVtcHR5LCBidXQgd2UgcHJlZmVyIHRvIHN0b3JlIG91ciBmbGFncwogICAgIC8vIGluIHRo
ZSBsb3cgYml0cyBiZWNhdXNlIGl0IG1ha2VzIHRoZW0gc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQg
dG8gYWNjZXNzLgogICAgIC8vIFNvLCB3ZSBzaGlmdCBsZWZ0IGFuZCByaWdodCB3aGVuIHNldHRp
bmcgYW5kIGdldHRpbmcgb3VyIGhhc2ggY29kZS4KLSAgICB2b2lkIHNldEhhc2godW5zaWduZWQg
aGFzaCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaGFzSGFzaCgpKTsKLSAgICAgICAg
QVNTRVJUKCFpc1N0YXRpYygpKTsKLSAgICAgICAgLy8gTXVsdGlwbGUgY2xpZW50cyBhc3N1bWUg
dGhhdCBTdHJpbmdIYXNoZXIgaXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgaGFzaCBmdW5jdGlvbi4K
LSAgICAgICAgQVNTRVJUKGhhc2ggPT0gKGlzOEJpdCgpID8gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGE4LCBtX2xlbmd0aCkgOiBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTE2LCBtX2xlbmd0aCkpKTsKLSAgICAgICAg
QVNTRVJUKCEoaGFzaCAmIChzX2ZsYWdNYXNrIDw8ICg4ICogc2l6ZW9mKGhhc2gpIC0gc19mbGFn
Q291bnQpKSkpOyAvLyBWZXJpZnkgdGhhdCBlbm91Z2ggaGlnaCBiaXRzIGFyZSBlbXB0eS4KLSAg
ICAgICAgCi0gICAgICAgIGhhc2ggPDw9IHNfZmxhZ0NvdW50OwotICAgICAgICBBU1NFUlQoISho
YXNoICYgbV9oYXNoQW5kRmxhZ3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFy
ZSBlbXB0eSBhZnRlciBzaGlmdC4KLSAgICAgICAgQVNTRVJUKGhhc2gpOyAvLyBWZXJpZnkgdGhh
dCAwIGlzIGEgdmFsaWQgc2VudGluZWwgaGFzaCB2YWx1ZS4KLQotICAgICAgICBtX2hhc2hBbmRG
bGFncyB8PSBoYXNoOyAvLyBTdG9yZSBoYXNoIHdpdGggZmxhZ3MgaW4gbG93IGJpdHMuCi0gICAg
fQorICAgIHZvaWQgc2V0SGFzaCh1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCByYXdI
YXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2hhc2hBbmRGbGFncyA+PiBzX2Zs
YWdDb3VudDsKLSAgICB9CisgICAgdW5zaWduZWQgcmF3SGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaEFuZEZsYWdzID4+IHNfZmxhZ0NvdW50OyB9CiAKIHB1YmxpYzoKLSAgICBib29sIGhhc0hh
c2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhd0hhc2goKSAhPSAwOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQoaGFzSGFzaCgpKTsKLSAgICAgICAgcmV0dXJuIHJhd0hhc2goKTsKLSAgICB9CisgICAgYm9v
bCBoYXNIYXNoKCkgY29uc3QgeyByZXR1cm4gISFyYXdIYXNoKCk7IH0KIAotICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGhhc0hhc2goKSkKLSAgICAgICAgICAg
IHJldHVybiBleGlzdGluZ0hhc2goKTsKLSAgICAgICAgcmV0dXJuIGhhc2hTbG93Q2FzZSgpOwot
ICAgIH0KKyAgICB1bnNpZ25lZCBleGlzdGluZ0hhc2goKSBjb25zdCB7IEFTU0VSVChoYXNIYXNo
KCkpOyByZXR1cm4gcmF3SGFzaCgpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0
dXJuIGhhc0hhc2goKSA/IHJhd0hhc2goKSA6IGhhc2hTbG93Q2FzZSgpOyB9CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY29uY3VycmVudEhhc2goKSBjb25zdDsKIApAQCAtNTM1
LDQwICszMjAsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmQ291bnQgJiBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nOyB9CiAKLSAgICBp
bmxpbmUgc2l6ZV90IHJlZkNvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Jl
ZkNvdW50IC8gc19yZWZDb3VudEluY3JlbWVudDsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIGJv
b2wgaGFzT25lUmVmKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09
IHNfcmVmQ291bnRJbmNyZW1lbnQ7Ci0gICAgfQorICAgIHNpemVfdCByZWZDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVmQ291bnQgLyBzX3JlZkNvdW50SW5jcmVtZW50OyB9CisgICAgYm9vbCBo
YXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50ID09IHNfcmVmQ291bnRJbmNyZW1l
bnQ7IH0KICAgICAKLSAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGFzc2VydGlvbnMu
Ci0gICAgaW5saW5lIGJvb2wgaGFzQXRMZWFzdE9uZVJlZigpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISFtX3JlZkNvdW50OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHJlZigpCi0g
ICAgewotICAgICAgICBTVFJJTkdfU1RBVFNfUkVGX1NUUklORygqdGhpcyk7Ci0KLSAgICAgICAg
bV9yZWZDb3VudCArPSBzX3JlZkNvdW50SW5jcmVtZW50OwotICAgIH0KLQotICAgIGlubGluZSB2
b2lkIGRlcmVmKCkKLSAgICB7Ci0gICAgICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJTkcoKnRo
aXMpOwotCi0gICAgICAgIHVuc2lnbmVkIHRlbXBSZWZDb3VudCA9IG1fcmVmQ291bnQgLSBzX3Jl
ZkNvdW50SW5jcmVtZW50OwotICAgICAgICBpZiAoIXRlbXBSZWZDb3VudCkgewotICAgICAgICAg
ICAgU3RyaW5nSW1wbDo6ZGVzdHJveSh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBtX3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OwotICAgIH0KKyAgICB2b2lk
IHJlZigpOworICAgIHZvaWQgZGVyZWYoKTsKIAogICAgIGNsYXNzIFN0YXRpY1N0cmluZ0ltcGwg
OiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN0YXRpY1N0cmluZ0ltcGwpOwpAQCAtNjAwLDY0ICszNTYsMjkgQEAgcHVibGljOgogICAgICAg
ICAvLyAgICAgICBTdHJpbmdJbXBsOjpoYXNoKCkgb25seSBzZXRzIGEgbmV3IGhhc2ggaWZmICFo
YXNIYXNoKCkuCiAgICAgICAgIC8vICAgICAgIEFkZGl0aW9uYWxseSwgU3RyaW5nSW1wbDo6c2V0
SGFzaCgpIGFzc2VydHMgaGFzSGFzaCgpIGFuZCAhaXNTdGF0aWMoKS4KIAotICAgICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICAgICAgY29uc3RleHByIFN0YXRpY1N0
cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5n
S2luZCBzdHJpbmdLaW5kID0gU3RyaW5nTm9ybWFsKQotICAgICAgICAgICAgOiBTdHJpbmdJbXBs
U2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBj
aGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNo
RmxhZ0RpZFJlcG9ydENvc3QgfCBzdHJpbmdLaW5kIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5n
SGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwg
c19mbGFnQ291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByKQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICAgICAg
Y29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCkKLSAg
ICAgICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcs
IGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdI
YXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBz
X2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIG9wZXJhdG9yIFN0cmluZ0ltcGwmKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPih0aGlzKTsKLSAgICAgICAg
fQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0
YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwg
U3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7
CisgICAgICAgIG9wZXJhdG9yIFN0cmluZ0ltcGwmKCk7CiAgICAgfTsKIAogICAgIFdURl9FWFBP
UlREQVRBIHN0YXRpYyBTdGF0aWNTdHJpbmdJbXBsIHNfYXRvbWljRW1wdHlTdHJpbmc7CiAgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PFN0cmluZ0ltcGwqPigmc19hdG9taWNFbXB0eVN0cmluZyk7IH0KIAogICAgIC8v
IEZJWE1FOiBEb2VzIHRoaXMgcmVhbGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVCogZGVzdGluYXRpb24sIGNv
bnN0IFQqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIGlm
IChudW1DaGFyYWN0ZXJzID09IDEpIHsKLSAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3Vy
Y2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG51bUNoYXJhY3RlcnMgKiBzaXplb2YoVCkpOwotICAgIH0KLQotICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwg
Y29uc3QgTENoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKLSAgICB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpCi0gICAgICAg
ICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoQ2hhcmFjdGVy
VHlwZSogZGVzdGluYXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIHNvdXJjZSwgdW5zaWduZWQg
bnVtQ2hhcmFjdGVycyk7CisgICAgc3RhdGljIHZvaWQgY29weUNoYXJhY3RlcnMoVUNoYXIqIGRl
c3RpbmF0aW9uLCBjb25zdCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsK
IAogICAgIC8vIFNvbWUgc3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUg
YXRvbWljaXR5IGZsYWcsIGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0
aHJlYWQgc2FmZXR5IGJ5IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRz
IG93biBjb3B5IG9mIHRoZSBzdHJpbmcuCiAgICAgUmVmPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29w
eSgpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBz
dWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSk7CiAKLSAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKLSAgICAgICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZGF0YThbaV07Ci0gICAgICAgIHJl
dHVybiBtX2RhdGExNltpXTsKLSAgICB9CisgICAgVUNoYXIgYXQodW5zaWduZWQpIGNvbnN0Owog
ICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0K
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVu
c2lnbmVkKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKTsKLQogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwpAQCAtNjkyLDQ5ICs0MTMsNDQgQEAgcHVibGljOgogICAgIFJlZjxTdHJpbmdJbXBs
PiBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwogCiAgICAgUmVm
PFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUmVm
PFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMs
IENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3Rl
clR5cGUqLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKworICAgIGJvb2wgaXNBbGxBU0NJ
SSgpIGNvbnN0OworICAgIGJvb2wgaXNBbGxMYXRpbjEoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxi
b29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cygpIGNvbnN0OwogCiAgICAgc2l6ZV90IGZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBz
dGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFy
dCA9IDApOwogICAgIHNpemVfdCBmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQg
PSAwKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0
Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmluZChjb25z
dCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAgQUxXQVlTX0lOTElORSBzaXplX3Qg
ZmluZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7
IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRl
eCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCop
OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5z
aWduZWQgaW5kZXgpOwotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kSWdub3Jp
bmdDYXNlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZEln
bm9yaW5nQ2FzZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfQot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBs
KikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsK
IAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVu
c2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXpl
X3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uo
U3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBj
b25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vu
c2l0aXZlKSB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gc3RhcnRzV2l0aChzdHIpIDogKHJldmVy
c2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkgPT0gMCk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwg
Ym9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExl
bmd0aD4KLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5n
dGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBzdGFydHNXaXRo
KHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxLCBjYXNlU2Vuc2l0aXZlKTsgfQorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNo
TGVuZ3RoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBz
dGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1
cm4gc3RhcnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBi
b29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9v
bCBlbmRzV2l0aChTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5k
c1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSk7CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCwg
Ym9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExl
bmd0aD4KLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3Ro
XSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJl
Zml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3Ro
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0
aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIGVuZHNX
aXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9m
ZnNldCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+
IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKQEAgLTc0MywxMyArNDU5LDE0IEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNv
bnN0IExDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgIFJlZjxTdHJpbmdJ
bXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVu
Z3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
U3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5n
SW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CiAKICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKTsKIAogI2lmIFVTRShD
RikKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYK
KwogI2lmZGVmIF9fT0JKQ19fCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIG9wZXJhdG9yIE5T
U3RyaW5nICooKTsKICNlbmRpZgpAQCAtNzYwLDEyICs0NzcsNyBAQCBwdWJsaWM6CiAKICAgICBC
dWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QnVmZmVyT3duZXJzaGlwPihtX2hhc2hBbmRGbGFncyAmIHNfaGFzaE1hc2tCdWZmZXJPd25l
cnNoaXApOyB9CiAgICAgCi0gICAgdm9pZCBhc3NlcnRDYWdlZCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKLSAgICAgICAgICAgIHJlbGVhc2VBc3NlcnRDYWdl
ZCgpOwotICAgIH0KLSAgICAKKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUFzc2VydENhZ2VkKCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKQEAgLTc3NCw5NiArNDg2LDM1IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIENyZWF0ZVN5
bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9OwogCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5
bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0
cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCi0gICAgU3RyaW5n
SW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCi0gICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxl
bmd0aCwgY2hhcmFjdGVycywgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBC
dWZmZXJTdWJzdHJpbmcpCi0gICAgewotICAgICAgICBBU1NFUlQoaXM4Qml0KCkpOwotICAgICAg
ICBBU1NFUlQobV9kYXRhOCk7Ci0gICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcy
KG1fbGVuZ3RoLCB0cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcs
IGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRl
IG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4aXN0aW5nIDE2LWJpdCBbW0Rlc2NyaXB0
aW9uXV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KLSAg
ICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3Jl
bWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fZGF0
YTE2KTsKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0
cnVlKTsKLSAgICB9CisgICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIE51bGwgc3ltYm9sLgotICAgIFN0cmluZ0lt
cGwoQ3JlYXRlU3ltYm9sVGFnKQotICAgICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50
SW5jcmVtZW50LCAwLCBlbXB0eSgpLT5jaGFyYWN0ZXJzOCgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZl
ciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpczhCaXQoKSk7Ci0gICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAgICAgICAgU1RSSU5HX1NU
QVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwotICAgIH0KKyAgICBTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbFRhZyk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291
bnQpCi0gICAgewotICAgICAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4oKSArIHRhaWxFbGVtZW50
Q291bnQgKiBzaXplb2YoVCkpLnVuc2FmZUdldCgpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0YWls
RWxlbWVudENvdW50KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHNp
emVfdCB0YWlsT2Zmc2V0KCkKLSAgICB7Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgLy8g
TVNWQyBkb2Vzbid0IHN1cHBvcnQgYWxpZ25vZiB5ZXQuCi0gICAgICAgIHJldHVybiByb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihUKT4oc2l6ZW9mKFN0cmluZ0ltcGwpKTsKLSNlbHNlCi0gICAg
ICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG9mZnNldG9mKFN0cmlu
Z0ltcGwsIG1faGFzaEFuZEZsYWdzKSArIHNpemVvZihTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFn
cykpOwotI2VuZGlmCi0gICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzaXpl
X3QgdGFpbE9mZnNldCgpOwogCiBwcml2YXRlOgotICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5h
bCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChpczhCaXQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBtX2RhdGE4ID09IHRhaWxQb2ludGVyPExDaGFyPigpOwotICAgICAg
ICByZXR1cm4gbV9kYXRhMTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+KCk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjb25zdCBUKiB0YWlsUG9pbnRlcigpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNldDxUPigpKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIHRhaWxQb2ludGVyKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxUKj4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4odGhpcykgKyB0YWlsT2Zmc2V0PFQ+KCkpOwotICAgIH0KLQotICAgIFN0
cmluZ0ltcGwqIGNvbnN0JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyk7Ci0KLSAgICAgICAg
cmV0dXJuICp0YWlsUG9pbnRlcjxTdHJpbmdJbXBsKj4oKTsKLSAgICB9Ci0KLSAgICBTdHJpbmdJ
bXBsKiYgc3Vic3RyaW5nQnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChidWZmZXJPd25l
cnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOwotCi0gICAgICAgIHJldHVybiAqdGFpbFBvaW50
ZXI8U3RyaW5nSW1wbCo+KCk7Ci0gICAgfQorICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogdGFpbFBvaW50ZXIoKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB0YWlsUG9pbnRlcigpOworICAgIFN0cmluZ0lt
cGwqIGNvbnN0JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdDsKKyAgICBTdHJpbmdJbXBsKiYgc3Vi
c3RyaW5nQnVmZmVyKCk7CiAKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVy
LCBMb3dlciB9OwotICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSB0eXBlLCB0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRBU0NJSUNhc2UoU3Ry
aW5nSW1wbCYsIGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCk7Ci0KLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFy
YWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUs
IGNsYXNzIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hh
cmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQsIENo
YXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCwg
Q2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChSZWY8U3RyaW5nSW1wbD4mJiwgdW5zaWdu
ZWQsIENoYXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVk
KTsKKyAgICB0ZW1wbGF0ZTxDYXNlQ29udmVydFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29udmVydEFTQ0lJQ2FzZShTdHJpbmdJbXBsJiwgY29u
c3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVD
aGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hh
clByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5h
bWUgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0
ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJ
bXBsKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVk
LCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1w
dHkodW5zaWduZWQsIENoYXJhY3RlclR5cGUqJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlSW50ZXJuYWwoUmVm
PFN0cmluZ0ltcGw+JiYsIHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50
ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkKTsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNvbnN0OwogCiAgICAg
Ly8gVGhlIGJvdHRvbSBiaXQgaW4gdGhlIHJlZiBjb3VudCBpbmRpY2F0ZXMgYSBzdGF0aWMgKGlt
bW9ydGFsKSBzdHJpbmcuCkBAIC04NzUsMTMgKzUyNiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
cHVibGljOgotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGFzc2VydEhhc2hJc0NvcnJlY3QoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0hhc2goKSk7Ci0gICAgICAgIEFTU0VSVChl
eGlzdGluZ0hhc2goKSA9PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpKSk7Ci0gICAgfQotI2VuZGlmCisgICAgdm9pZCBhc3Nl
cnRIYXNoSXNDb3JyZWN0KCkgY29uc3Q7CiB9OwogCiB1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0g
U3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDsKQEAgLTkwMCwxNyArNTQ1LDYgQEAgVmFsdWVD
aGVjazxTdHJpbmdJbXBsKj4gewogfTsKICNlbmRpZgogCi10ZW1wbGF0ZSA8PgotQUxXQVlTX0lO
TElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+
KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9y
KSk7IH0KLXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBs
KGxlbmd0aCkpOyB9Ci0KLXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4
KCk7IH0KLQotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIqIFN0cmluZ0lt
cGw6OmNoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczE2KCk7IH0K
LQogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNv
bnN0IFN0cmluZ0ltcGwqKTsKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3Ry
aW5nSW1wbCogYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQpAQCAtOTM0LDcgKzU2OCwzMSBAQCBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJp
bmdJbXBsKiwgY29ucwogdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmLCBjb25zdCBjaGFyICgmbG93ZXJj
YXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIg
KCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIAotaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rp
b25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKQorc2l6ZV90IGZpbmQoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVu
c2lnbmVkIGluZGV4ID0gMCk7CitzaXplX3QgZmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kTGluZVRl
cm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
aW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3Rl
clR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVu
c2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3Np
emVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0
Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKK3NpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKwordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFj
aXR5PiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5l
Q2FwYWNpdHk+JiwgU3RyaW5nSW1wbCopOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+IGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0
IENoYXJhY3RlclR5cGUxKiwgdW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIq
LCB1bnNpZ25lZCBsZW5ndGgyKTsKK2ludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CisKKy8vIEZJWE1FOiBTaG91bGQgcmVuYW1lIHRoaXMg
dG8gbWFrZSBjbGVhciBpdCB1c2VzIHRoZSBVbmljb2RlIGRlZmluaXRpb24gb2Ygd2hpdGVzcGFj
ZS4KKy8vIE1vc3QgV2ViS2l0IGNhbGxlcnMgZG9uJ3Qgd2FudCB0aGF0IHdvdWxkIHVzZSBpc0FT
Q0lJU3BhY2Ugb3IgaXNIVE1MU3BhY2UgaW5zdGVhZC4KK2Jvb2wgaXNTcGFjZU9yTmV3bGluZShV
Q2hhcik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHVuc2lnbmVkIGxlbmd0
aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSopOworCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdElu
dGVybmFsPExDaGFyPihTdHJpbmdJbXBsKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9y
Y2U4Qml0Q29uc3RydWN0b3IpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCog
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGws
IHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0
dXJuIGNoYXJhY3RlcnM4KCk7IH0KK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBjb25zdCBVQ2hh
ciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0
ZXJzMTYoKTsgfQorCitpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9u
LCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAg
ICAgaWYgKG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTQ0LDcgKzYwMiw3
IEBAIGlubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0CiAgICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCi1p
bmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRl
eCA9IDApCitpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9uLCB1bnNp
Z25lZCBpbmRleCkKIHsKICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgaWYg
KG1hdGNoRnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQpAQCAtOTU0LDI0ICs2MTIsMjIgQEAg
aW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3Rlck1hdGNoRnVuY3QKICAgICByZXR1cm4gbm90Rm91bmQ7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGlu
ZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICBpZiAo
aW5kZXggPj0gbGVuZ3RoKQogICAgICAgICBpbmRleCA9IGxlbmd0aCAtIDE7Ci0gICAgQ2hhcmFj
dGVyVHlwZSBjID0gY2hhcmFjdGVyc1tpbmRleF07Ci0gICAgd2hpbGUgKChjICE9ICdcbicpICYm
IChjICE9ICdccicpKSB7CisgICAgYXV0byBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsK
KyAgICB3aGlsZSAoY2hhcmFjdGVyICE9ICdcbicgJiYgY2hhcmFjdGVyICE9ICdccicpIHsKICAg
ICAgICAgaWYgKCFpbmRleC0tKQogICAgICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwotICAgICAg
ICBjID0gY2hhcmFjdGVyc1tpbmRleF07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNb
aW5kZXhdOwogICAgIH0KICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1pbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCkKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFj
dGVyLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwpAQCAtOTg0LDEyICs2NDAsMTIgQEAgaW5saW5lIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXIK
ICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLUFMV0FZU19JTkxJTkUgc2l6ZV90IHJldmVyc2VGaW5k
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hh
cmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQorQUxXQVlTX0lOTElORSBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENo
YXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQogewogICAgIHJldHVybiByZXZlcnNl
RmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3Rl
ciksIGluZGV4KTsKIH0KIAotaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCkKK2lubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVu
c2lnbmVkIGluZGV4KQogewogICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQogICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7CkBAIC0xMDIxLDQ1ICs2NzcsMzAgQEAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBW
ZWN0b3I8VUMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1l
IENoYXJhY3RlclR5cGUyPgotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKHVuc2lnbmVkIGwx
LCB1bnNpZ25lZCBsMiwgY29uc3QgQ2hhcmFjdGVyVHlwZTEqIGMxLCBjb25zdCBDaGFyYWN0ZXJU
eXBlMiogYzIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwy
OwotICAgIHVuc2lnbmVkIHBvcyA9IDA7Ci0gICAgd2hpbGUgKHBvcyA8IGxtaW4gJiYgKmMxID09
ICpjMikgewotICAgICAgICArK2MxOwotICAgICAgICArK2MyOwotICAgICAgICArK3BvczsKK2lu
bGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBDaGFyYWN0ZXJUeXBlMSogY2hhcmFjdGVy
czEsIHVuc2lnbmVkIGxlbmd0aDEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiBjaGFyYWN0ZXJzMiwg
dW5zaWduZWQgbGVuZ3RoMikKK3sKKyAgICB1bnNpZ25lZCBjb21tb25MZW5ndGggPSBzdGQ6Om1p
bihsZW5ndGgxLCBsZW5ndGgyKTsKKworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB3
aGlsZSAocG9zaXRpb24gPCBjb21tb25MZW5ndGggJiYgKmNoYXJhY3RlcnMxID09ICpjaGFyYWN0
ZXJzMikgeworICAgICAgICArK2NoYXJhY3RlcnMxOworICAgICAgICArK2NoYXJhY3RlcnMyOwor
ICAgICAgICArK3Bvc2l0aW9uOwogICAgIH0KIAotICAgIGlmIChwb3MgPCBsbWluKQotICAgICAg
ICByZXR1cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOworICAgIGlmIChwb3NpdGlvbiA8IGNv
bW1vbkxlbmd0aCkKKyAgICAgICAgcmV0dXJuIChjaGFyYWN0ZXJzMVswXSA+IGNoYXJhY3RlcnMy
WzBdKSA/IDEgOiAtMTsKIAotICAgIGlmIChsMSA9PSBsMikKKyAgICBpZiAobGVuZ3RoMSA9PSBs
ZW5ndGgyKQogICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiAobDEgPiBsMikgPyAxIDog
LTE7Ci19Ci0KLWlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZTgoY29uc3QgU3RyaW5nSW1wbCog
c3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMikKLXsKLSAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZShzdHJpbmcxLT5sZW5ndGgoKSwgc3RyaW5nMi0+bGVuZ3RoKCksIHN0cmluZzEt
PmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCkpOwotfQotCi1pbmxpbmUgaW50
IGNvZGVQb2ludENvbXBhcmUxNihjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJp
bmdJbXBsKiBzdHJpbmcyKQotewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEt
Pmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczE2KCksIHN0
cmluZzItPmNoYXJhY3RlcnMxNigpKTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJl
OFRvMTYoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
MikKLXsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5sZW5ndGgoKSwgc3Ry
aW5nMi0+bGVuZ3RoKCksIHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmNoYXJhY3Rl
cnMxNigpKTsKKyAgICByZXR1cm4gKGxlbmd0aDEgPiBsZW5ndGgyKSA/IDEgOiAtMTsKIH0KIAog
aW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNv
bnN0IFN0cmluZ0ltcGwqIHN0cmluZzIpCiB7CisgICAgLy8gRklYTUU6IFNob3VsZCBudWxsIHN0
cmluZ3MgY29tcGFyZSBhcyBsZXNzIHRoYW4gZW1wdHkgc3RyaW5ncyByYXRoZXIgdGhhbiBlcXVh
bCB0byB0aGVtPwogICAgIGlmICghc3RyaW5nMSkKICAgICAgICAgcmV0dXJuIChzdHJpbmcyICYm
IHN0cmluZzItPmxlbmd0aCgpKSA/IC0xIDogMDsKLQogICAgIGlmICghc3RyaW5nMikKICAgICAg
ICAgcmV0dXJuIHN0cmluZzEtPmxlbmd0aCgpID8gMSA6IDA7CiAKQEAgLTEwNjcsMjMgKzcwOCwy
MiBAQCBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
MSwgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMgogICAgIGJvb2wgc3RyaW5nMklzOEJpdCA9IHN0
cmluZzItPmlzOEJpdCgpOwogICAgIGlmIChzdHJpbmcxSXM4Qml0KSB7CiAgICAgICAgIGlmIChz
dHJpbmcySXM4Qml0KQotICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmU4KHN0cmlu
ZzEsIHN0cmluZzIpOwotICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZThUbzE2KHN0cmlu
ZzEsIHN0cmluZzIpOworICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5n
MS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnM4
KCksIHN0cmluZzItPmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUo
c3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcyLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIGlmIChzdHJpbmcySXM4
Qml0KQotICAgICAgICByZXR1cm4gLWNvZGVQb2ludENvbXBhcmU4VG8xNihzdHJpbmcyLCBzdHJp
bmcxKTsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZTE2KHN0cmluZzEsIHN0cmluZzIpOwor
ICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYoKSwg
c3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnM4KCksIHN0cmluZzItPmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShzdHJpbmcxLT5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpLCBzdHJpbmcyLT5s
ZW5ndGgoKSk7CiB9CiAKLWlubGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKK2lu
bGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIFVz
ZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYmFzaWMgTGF0aW4tMS4KICAgICAvLyBUaGlzIHdpbGwgaW5j
bHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1MuCi0g
ICAgcmV0dXJuIGMgPD0gMHg3RiA/IGlzQVNDSUlTcGFjZShjKSA6IHVfY2hhckRpcmVjdGlvbihj
KSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CisgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVy
KSA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rlcikg
PT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29u
c3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hh
cmFjdGVyVHlwZSogc3RyaW5nKQogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAgIHNpemVfdCBs
ZW5ndGggPSAwOwpAQCAtMTA5NCw2ICs3MzQsMzggQEAgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9m
TnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ0lt
cGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IExDaGFyKiBkYXRhOCwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQorICAgIDogbV9y
ZWZDb3VudChyZWZDb3VudCkKKyAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAsIG1fZGF0YTgo
ZGF0YTgpCisgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpCit7Cit9CisKK2lubGlu
ZSBTdHJpbmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogZGF0YTE2LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3Mp
CisgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
ICwgbV9kYXRhMTYoZGF0YTE2KQorICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzKQor
eworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gaW5saW5lIGNvbnN0ZXhw
ciBTdHJpbmdJbXBsU2hhcGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1
bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpCisgICAgOiBt
X3JlZkNvdW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICwgbV9kYXRh
OENoYXIoY2hhcmFjdGVycykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykKK3sK
K30KKwordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGlubGluZSBjb25zdGV4cHIg
U3RyaW5nSW1wbFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0s
IHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykKKyAgICA6
IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2Rh
dGExNkNoYXIoY2hhcmFjdGVycykKKyAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykK
K3sKK30KKwogaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHko
KSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNDb3B5KCkpIHsKQEAgLTExMDcsNiArNzc5LDM4
OSBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAgICAgcmV0dXJuIGNyZWF0ZShtX2RhdGExNiwgbV9sZW5ndGgpOwogfQogCitpbmxpbmUg
Ym9vbCBTdHJpbmdJbXBsOjppc0FsbEFTQ0lJKCkgY29uc3QKK3sKKyAgICBpZiAoaXM4Qml0KCkp
CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczgoKSwgbGVu
Z3RoKCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCks
IGxlbmd0aCgpKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5nSW1wbDo6aXNBbGxMYXRpbjEoKSBj
b25zdAoreworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0
byogY2hhcmFjdGVycyA9IGNoYXJhY3RlcnMxNigpOworICAgIFVDaGFyIG9yZWQgPSAwOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkKKyAgICAgICAgb3JlZCB8PSBj
aGFyYWN0ZXJzW2ldOworICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOworfQorCit0ZW1wbGF0
ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhciksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3Rl
cnNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBpbmxpbmUg
Ym9vbCBTdHJpbmdJbXBsOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNTcGVjaWFsQ2hhcmFjdGVyPihjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJu
IFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgoKSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKHVu
c2lnbmVkIGxlbmd0aCwgRm9yY2U4Qml0KQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291
bnRJbmNyZW1lbnQsIGxlbmd0aCwgdGFpbFBvaW50ZXI8TENoYXI+KCksIHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpCit7CisgICAgQVNTRVJUKG1f
ZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhC
SVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwo
dW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1l
bnQsIGxlbmd0aCwgdGFpbFBvaW50ZXI8VUNoYXI+KCksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlcklu
dGVybmFsKQoreworICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsK
KworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5s
aW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jUHRyPExDaGFyPiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVu
dCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLmxlYWtQdHIoKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBT
dHJpbmdOb3JtYWwgfCBCdWZmZXJPd25lZCkKK3sKKyAgICBBU1NFUlQobV9kYXRhOCk7CisgICAg
QVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcobV9s
ZW5ndGgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykK
KyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJh
Y3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2Rh
dGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3RoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZC
SVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwo
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91
dENvcHlpbmdUYWcpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwg
bGVuZ3RoLCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8
IEJ1ZmZlckludGVybmFsKQoreworICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICBBU1NFUlQobV9s
ZW5ndGgpOworCisgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Cit9
CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhcj4gY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJ
bmNyZW1lbnQsIGxlbmd0aCwgY2hhcmFjdGVycy5sZWFrUHRyKCksIFN0cmluZ05vcm1hbCB8IEJ1
ZmZlck93bmVkKQoreworICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgQVNTRVJUKG1fbGVuZ3Ro
KTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKK30KKwor
aW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxT
aGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQoreworICAgIEFTU0VS
VChpczhCaXQoKSk7CisgICAgQVNTRVJUKG1fZGF0YTgpOworICAgIEFTU0VSVChtX2xlbmd0aCk7
CisgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7
CisKKyAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZiYXNlLmxlYWtSZWYoKTsKKworICAgIFNUUklO
R19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKK30KKworaW5saW5lIFN0
cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3Jl
ZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ05vcm1hbCB8IEJ1ZmZl
clN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9kYXRh
MTYpOworICAgIEFTU0VSVChtX2xlbmd0aCk7CisgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVy
c2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICBzdWJzdHJpbmdCdWZmZXIoKSA9ICZi
YXNlLmxlYWtSZWYoKTsKKworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xl
bmd0aCwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBW
ZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQoreworICAgIHJldHVybiBjcmVh
dGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKK30KKworQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hh
cmluZ0ltcGwoU3RyaW5nSW1wbCYgcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoIDw9IHJlcC5sZW5ndGgoKSk7CisKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgcmV0dXJuICplbXB0eSgpOworCisgICAgYXV0byogb3duZXJSZXAgPSAo
KHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmlu
Z0J1ZmZlcigpIDogJnJlcCk7CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNv
bnRhaW5zIGJvdGggdGhlIFN0cmluZ0ltcGwgc3RydWN0IGFzIHdlbGwgYXMgdGhlIHBvaW50ZXIg
dG8gdGhlIG93bmVyIHN0cmluZy4KKyAgICBhdXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8
U3RyaW5nSW1wbCo+KHN0cmluZ01hbGxvYyhhbGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMSkp
KTsKKyAgICBpZiAocmVwLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhOCArIG9mZnNldCwgbGVu
Z3RoLCAqb3duZXJSZXApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3Ry
aW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVy
UmVwKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5M
SU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQoreworICAgIENPTVBJTEVfQVNTRVJU
KGNoYXJhY3RlckNvdW50ID4gMSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsTm90RW1wdHkpOworICAg
IENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+MCkgLSBz
aXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJvbUxpdGVy
YWxDYW5ub3RPdmVyZmxvdyk7CisKKyAgICByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJDb3VudCAt
IDEpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomIG91dHB1dCkKK3sKKyAgICBpZiAoIWxlbmd0
aCkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gZW1wdHkoKTsK
KyAgICB9CisKKyAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkg
eworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgYXV0byogcmVzdWx0SW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPih0cnlT
dHJpbmdNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkpOworICAg
IGlmICghcmVzdWx0SW1wbCkgeworICAgICAgICBvdXRwdXQgPSBudWxscHRyOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50
ZXI8Q2hhcmFjdGVyVHlwZT4oKTsKKworICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxDaGFy
YWN0ZXJUeXBlPihyZXN1bHRJbXBsLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjphZG9wdChTdHJpbmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiYgdmVjdG9yKQoreworICAgIGlmIChzaXplX3Qg
c2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOwor
ICAgICAgICBpZiAoc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmlu
Z0ltcGwodmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgc2l6ZSkpOworICAgIH0KKyAgICByZXR1cm4g
KmVtcHR5KCk7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdCgpIGNvbnN0Cit7
CisgICAgLy8gRm9yIHN1YnN0cmluZ3MsIHJldHVybiB0aGUgY29zdCBvZiB0aGUgYmFzZSBzdHJp
bmcuCisgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykKKyAgICAg
ICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7CisKKyAgICAvLyBOb3RlOiB3ZSBt
dXN0IG5vdCBhbHRlciB0aGUgbV9oYXNoQW5kRmxhZ3MgZmllbGQgaW4gaW5zdGFuY2VzIG9mIFN0
YXRpY1N0cmluZ0ltcGwuCisgICAgLy8gV2UgZW5zdXJlIHRoaXMgYnkgcHJlLXNldHRpbmcgdGhl
IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBhbGwgaW5zdGFuY2VzIG9mCisgICAgLy8g
U3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2Vz
IHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKKyAgICAvLyAwIGhlcmUgYW5kIGF2b2lkIG1v
ZGlmeWluZyBtX2hhc2hBbmRGbGFncy4KKyAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX2hhc2hBbmRGbGFn
cyB8PSBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdDsKKyAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5n
dGg7CisgICAgaWYgKCFpczhCaXQoKSkKKyAgICAgICAgcmVzdWx0IDw8PSAxOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdER1cmluZ0dDKCkK
K3sKKyAgICBpZiAoaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoYnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKQorICAgICAgICByZXR1cm4gZGl2aWRl
Um91bmRlZFVwKHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7
CisKKyAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7CisgICAgaWYgKCFpczhCaXQoKSkKKyAg
ICAgICAgcmVzdWx0IDw8PSAxOworICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCBy
ZWZDb3VudCgpKTsKK30KKworaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SXNBdG9taWMoYm9v
bCBpc0F0b21pYykKK3sKKyAgICBBU1NFUlQoIWlzU3RhdGljKCkpOworICAgIEFTU0VSVCghaXNT
eW1ib2woKSk7CisgICAgaWYgKGlzQXRvbWljKSB7CisgICAgICAgIG1faGFzaEFuZEZsYWdzIHw9
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNBdG9taWM7CisgICAgICAgIEFTU0VSVChzdHJpbmdLaW5k
KCkgPT0gU3RyaW5nQXRvbWljKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2hhc2hBbmRGbGFn
cyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsKKyAgICAgICAgQVNTRVJUKHN0cmlu
Z0tpbmQoKSA9PSBTdHJpbmdOb3JtYWwpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU3RyaW5n
SW1wbDo6c2V0SGFzaCh1bnNpZ25lZCBoYXNoKSBjb25zdAoreworICAgIC8vIFRoZSBoaWdoIGJp
dHMgb2YgJ2hhc2gnIGFyZSBhbHdheXMgZW1wdHksIGJ1dCB3ZSBwcmVmZXIgdG8gc3RvcmUgb3Vy
IGZsYWdzCisgICAgLy8gaW4gdGhlIGxvdyBiaXRzIGJlY2F1c2UgaXQgbWFrZXMgdGhlbSBzbGln
aHRseSBtb3JlIGVmZmljaWVudCB0byBhY2Nlc3MuCisgICAgLy8gU28sIHdlIHNoaWZ0IGxlZnQg
YW5kIHJpZ2h0IHdoZW4gc2V0dGluZyBhbmQgZ2V0dGluZyBvdXIgaGFzaCBjb2RlLgorCisgICAg
QVNTRVJUKCFoYXNIYXNoKCkpOworICAgIEFTU0VSVCghaXNTdGF0aWMoKSk7CisgICAgLy8gTXVs
dGlwbGUgY2xpZW50cyBhc3N1bWUgdGhhdCBTdHJpbmdIYXNoZXIgaXMgdGhlIGNhbm9uaWNhbCBz
dHJpbmcgaGFzaCBmdW5jdGlvbi4KKyAgICBBU1NFUlQoaGFzaCA9PSAoaXM4Qml0KCkgPyBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YTgsIG1fbGVuZ3RoKSA6
IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVu
Z3RoKSkpOworICAgIEFTU0VSVCghKGhhc2ggJiAoc19mbGFnTWFzayA8PCAoOCAqIHNpemVvZiho
YXNoKSAtIHNfZmxhZ0NvdW50KSkpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGhpZ2ggYml0cyBh
cmUgZW1wdHkuCisKKyAgICBoYXNoIDw8PSBzX2ZsYWdDb3VudDsKKyAgICBBU1NFUlQoIShoYXNo
ICYgbV9oYXNoQW5kRmxhZ3MpKTsgLy8gVmVyaWZ5IHRoYXQgZW5vdWdoIGxvdyBiaXRzIGFyZSBl
bXB0eSBhZnRlciBzaGlmdC4KKyAgICBBU1NFUlQoaGFzaCk7IC8vIFZlcmlmeSB0aGF0IDAgaXMg
YSB2YWxpZCBzZW50aW5lbCBoYXNoIHZhbHVlLgorCisgICAgbV9oYXNoQW5kRmxhZ3MgfD0gaGFz
aDsgLy8gU3RvcmUgaGFzaCB3aXRoIGZsYWdzIGluIGxvdyBiaXRzLgorfQorCitpbmxpbmUgdm9p
ZCBTdHJpbmdJbXBsOjpyZWYoKQoreworICAgIFNUUklOR19TVEFUU19SRUZfU1RSSU5HKCp0aGlz
KTsKKworICAgIG1fcmVmQ291bnQgKz0gc19yZWZDb3VudEluY3JlbWVudDsKK30KKworaW5saW5l
IHZvaWQgU3RyaW5nSW1wbDo6ZGVyZWYoKQoreworICAgIFNUUklOR19TVEFUU19ERVJFRl9TVFJJ
TkcoKnRoaXMpOworCisgICAgdW5zaWduZWQgdGVtcFJlZkNvdW50ID0gbV9yZWZDb3VudCAtIHNf
cmVmQ291bnRJbmNyZW1lbnQ7CisgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsKKyAgICAgICAgU3Ry
aW5nSW1wbDo6ZGVzdHJveSh0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jl
ZkNvdW50ID0gdGVtcFJlZkNvdW50OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhDaGFyYWN0ZXJUeXBl
KiBkZXN0aW5hdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1D
aGFyYWN0ZXJzKQoreworICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKKyAgICAgICAgKmRl
c3RpbmF0aW9uID0gKnNvdXJjZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1jcHko
ZGVzdGluYXRpb24sIHNvdXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihDaGFyYWN0ZXJUeXBl
KSk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhV
Q2hhciogZGVzdGluYXRpb24sIGNvbnN0IExDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJh
Y3RlcnMpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsr
aSkKKyAgICAgICAgZGVzdGluYXRpb25baV0gPSBzb3VyY2VbaV07Cit9CisKK2lubGluZSBVQ2hh
ciBTdHJpbmdJbXBsOjphdCh1bnNpZ25lZCBpKSBjb25zdAoreworICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIGlzOEJpdCgpID8g
bV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOworfQorCitpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjph
c3NlcnRDYWdlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAg
IHJlbGVhc2VBc3NlcnRDYWdlZCgpOworfQorCitpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1w
bChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCBj
aGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1
YnN0cmluZykKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4KTsK
KyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9CisK
K2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShz
X3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmluZ1N5bWJvbCB8IEJ1
ZmZlclN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICBBU1NFUlQobV9k
YXRhMTYpOworICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1
ZSk7Cit9CisKK2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZykK
KyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCAwLCBlbXB0eSgpLT5j
aGFyYWN0ZXJzOCgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZl
clN1YnN0cmluZykKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIEFTU0VSVChtX2RhdGE4
KTsKKyAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6YWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IHRhaWxFbGVtZW50Q291bnQpCit7CisgICAgcmV0dXJu
ICh0YWlsT2Zmc2V0PFQ+KCkgKyB0YWlsRWxlbWVudENvdW50ICogc2l6ZW9mKFQpKS51bnNhZmVH
ZXQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBs
Ojp0YWlsT2Zmc2V0KCkKK3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIC8vIE1TVkMgZG9lc24n
dCBzdXBwb3J0IGFsaWdub2YgeWV0LgorICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihUKT4oc2l6ZW9mKFN0cmluZ0ltcGwpKTsKKyNlbHNlCisgICAgcmV0dXJuIHJvdW5kVXBU
b011bHRpcGxlT2Y8YWxpZ25vZihUKT4ob2Zmc2V0b2YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxh
Z3MpICsgc2l6ZW9mKFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzKSk7CisjZW5kaWYKK30KKwor
aW5saW5lIGJvb2wgU3RyaW5nSW1wbDo6cmVxdWlyZXNDb3B5KCkgY29uc3QKK3sKKyAgICBpZiAo
YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVySW50ZXJuYWwpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4gbV9kYXRhOCA9PSB0YWlsUG9p
bnRlcjxMQ2hhcj4oKTsKKyAgICByZXR1cm4gbV9kYXRhMTYgPT0gdGFpbFBvaW50ZXI8VUNoYXI+
KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdCBUKiBTdHJpbmdJbXBs
Ojp0YWlsUG9pbnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSArIHRhaWxP
ZmZzZXQ8VD4oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBTdHJpbmdJ
bXBsOjp0YWlsUG9pbnRlcigpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQq
PihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7Cit9
CisKK2lubGluZSBTdHJpbmdJbXBsKiBjb25zdCYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVy
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nKTsKKworICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lu
bGluZSBTdHJpbmdJbXBsKiYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkKK3sKKyAgICBB
U1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgIHJldHVy
biAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7Cit9CisKK2lubGluZSB2b2lkIFN0cmluZ0lt
cGw6OmFzc2VydEhhc2hJc0NvcnJlY3QoKSBjb25zdAoreworICAgIEFTU0VSVChleGlzdGluZ0hh
c2goKSA9PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3Rl
cnM4KCksIGxlbmd0aCgpKSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
PiBpbmxpbmUgY29uc3RleHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0
cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5n
S2luZCBzdHJpbmdLaW5kKQorICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNT
dGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAgICAgICAgc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IHN0cmluZ0tpbmQg
fCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1h
c2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCksIENvbnN0cnVjdFdpdGhDb25z
dEV4cHIpCit7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBpbmxpbmUg
Y29uc3RleHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwo
Y29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQg
c3RyaW5nS2luZCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGlj
U3RyaW5nLCBjaGFyYWN0ZXJDb3VudCAtIDEsIGNoYXJhY3RlcnMsCisgICAgICAgIHNfaGFzaEZs
YWdEaWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNf
ZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikKK3sKK30KKworaW5saW5lIFN0cmlu
Z0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6Om9wZXJhdG9yIFN0cmluZ0ltcGwmKCkKK3sKKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworfQorCiAvLyBTdHJp
bmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmluZ0ltcGwqIGFuZCBSZWZQdHI8U3Ry
aW5nSW1wbD4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiB7CkBAIC0xMTU2LDE0ICsxMjEx
LDEwIEBAIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiAmaW1wbDsgXAog
ICAgIH0oKSkKIAotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpTdHJpbmdJbXBs
OwogdXNpbmcgV1RGOjpTdGF0aWNTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjplcXVhbDsKLXVzaW5n
IFdURjo6VGV4dENhc2VTZW5zaXRpdml0eTsKLXVzaW5nIFdURjo6VGV4dENhc2VTZW5zaXRpdmU7
Ci11c2luZyBXVEY6OlRleHRDYXNlSW5zZW5zaXRpdmU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaAppbmRleCAyYTIyNTVhNmM1MjlmNDFiNzQ3ZDBkNTE1ZDlmMTQ1ZTBmZjRlMmQy
Li4xODEzZWMzMDg3ZDRkZjBjM2FhZjM4NGE1OWZhYzQ4ZmM2OWVhMzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaApAQCAtNDUxLDE2ICs0NTEsMTYgQEAgaW5saW5lIGJvb2wgU3RyaW5nVmll
dzo6Y29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAogaW5saW5lIHZvaWQgU3RyaW5nVmll
dzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAog
ewogICAgIEFTU0VSVChpczhCaXQoKSk7Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3Rp
bmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKIH0KIAogaW5s
aW5lIHZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqIGRl
c3RpbmF0aW9uKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAg
ICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4
KCksIG1fbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7CisgICAgU3Ry
aW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xl
bmd0aCk7CiB9CiAKIGlubGluZSBTdHJpbmdWaWV3OjpVcGNvbnZlcnRlZENoYXJhY3RlcnM6OlVw
Y29udmVydGVkQ2hhcmFjdGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKaW5kZXggMGU5OTUwMjFmOGVmZThiYWRlZGI3OGI5ODA5ZmMyZTBkMzFk
NDY3YS4uZTMxNWRhYzM3ZDFiMzRlNWQyMGEwYTAxNjFmMDI0NTJmODEyYjU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTQ4LDEyICs0OCwxMCBAQCBTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogfQogCiAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0
aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1TdHJpbmc6OlN0
cmluZyhjb25zdCBVQ2hhciogc3RyKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNoYXIqIG51bGxU
ZXJtaW5hdGVkU3RyaW5nKQogewotICAgIGlmICghc3RyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RyLCBsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKHN0cikpOworICAgIGlmIChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9p
bXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKG51bGxUZXJtaW5hdGVkU3RyaW5nLCBsZW5ndGhPZk51
bGxUZXJtaW5hdGVkU3RyaW5nKG51bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKIC8vIENvbnN0
cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgpAQCAtNjksMTcgKzY3LDE3IEBAIFN0cmlu
Zzo6U3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAg
ICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKIH0KIAotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotU3RyaW5nOjpT
dHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpCisvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0
aCBMYXRpbi0xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgorU3RyaW5nOjpT
dHJpbmcoY29uc3QgTENoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5nKQogewotICAgIGlmIChjaGFy
YWN0ZXJzKQotICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycyk7
CisgICAgaWYgKG51bGxUZXJtaW5hdGVkU3RyaW5nKQorICAgICAgICBtX2ltcGwgPSBTdHJpbmdJ
bXBsOjpjcmVhdGUobnVsbFRlcm1pbmF0ZWRTdHJpbmcpOwogfQogCi1TdHJpbmc6OlN0cmluZyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzKQorU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRl
cm1pbmF0ZWRTdHJpbmcpCiB7Ci0gICAgaWYgKGNoYXJhY3RlcnMpCi0gICAgICAgIG1faW1wbCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycykpOworICAgIGlmIChudWxsVGVybWluYXRlZFN0cmluZykKKyAgICAgICAgbV9pbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihudWxsVGVy
bWluYXRlZFN0cmluZykpOwogfQogCiBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFj
dGVycykKQEAgLTg3LDM1ICs4NSwzNiBAQCBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hh
cmFjdGVycykKIHsKIH0KIAotdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cikK
K3ZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgU3RyaW5nJiBvdGhlclN0cmluZykKIHsKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBleHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3
ZSBtaWdodCB3YW50IHRvIHRha2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgogCi0gICAgaWYg
KHN0ci5pc0VtcHR5KCkpCi0gICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0ci5tX2ltcGwpIHsK
LSAgICAgICAgaWYgKG1faW1wbCkgewotICAgICAgICAgICAgaWYgKG1faW1wbC0+aXM4Qml0KCkg
JiYgc3RyLm1faW1wbC0+aXM4Qml0KCkpIHsKLSAgICAgICAgICAgICAgICBMQ2hhciogZGF0YTsK
LSAgICAgICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAg
Q1JBU0goKTsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyBzdHIubGVuZ3RoKCksIGRhdGEpOwot
ICAgICAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCksIG1faW1w
bC0+bGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoZGF0
YSArIG1faW1wbC0+bGVuZ3RoKCksIHN0ci5jaGFyYWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCkgKiBz
aXplb2YoTENoYXIpKTsKLSAgICAgICAgICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFVD
aGFyKiBkYXRhOwotICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAg
ICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIHN0ci5sZW5ndGgoKSwgZGF0YSk7Ci0g
ICAgICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KGRhdGEpOwotICAgICAgICAgICAgU3RyaW5nVmlldyhzdHIpLmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGRhdGEgKyBtX2ltcGwtPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1faW1wbCA9IFdU
Rk1vdmUobmV3SW1wbCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbXBsID0gc3Ry
Lm1faW1wbDsKKyAgICBpZiAoIW1faW1wbCkgeworICAgICAgICBtX2ltcGwgPSBvdGhlclN0cmlu
Zy5tX2ltcGw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob3RoZXJTdHJpbmcu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+
bGVuZ3RoKCk7CisgICAgYXV0byBvdGhlckxlbmd0aCA9IG90aGVyU3RyaW5nLm1faW1wbC0+bGVu
Z3RoKCk7CisgICAgaWYgKG90aGVyTGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpIC0gbGVuZ3RoKQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKG1faW1wbC0+
aXM4Qml0KCkgJiYgb3RoZXJTdHJpbmcubV9pbXBsLT5pczhCaXQoKSkgeworICAgICAgICBMQ2hh
ciogZGF0YTsKKyAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7CisgICAgICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAg
ICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIGxlbmd0aCwgb3RoZXJTdHJp
bmcubV9pbXBsLT5jaGFyYWN0ZXJzOCgpLCBvdGhlckxlbmd0aCk7CisgICAgICAgIG1faW1wbCA9
IFdURk1vdmUobmV3SW1wbCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgVUNoYXIqIGRh
dGE7CisgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGggKyBvdGhlckxlbmd0aCwgZGF0YSk7CisgICAgU3RyaW5nVmlldygqbV9pbXBsKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKKyAgICBTdHJpbmdWaWV3KCpvdGhlclN0cmlu
Zy5tX2ltcGwpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBsZW5ndGgpOworICAg
IG1faW1wbCA9IFdURk1vdmUobmV3SW1wbCk7CiB9CiAKIHZvaWQgU3RyaW5nOjphcHBlbmQoTENo
YXIgY2hhcmFjdGVyKQpAQCAtMTM0LDcgKzEzMyw3IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoTENo
YXIgY2hhcmFjdGVyKQogICAgICAgICBDUkFTSCgpOwogICAgIExDaGFyKiBkYXRhOwogICAgIGF1
dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5n
dGgoKSArIDEsIGRhdGEpOwotICAgIG1lbWNweShkYXRhLCBtX2ltcGwtPmNoYXJhY3RlcnM4KCks
IG1faW1wbC0+bGVuZ3RoKCkpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEs
IG1faW1wbC0+Y2hhcmFjdGVyczgoKSwgbV9pbXBsLT5sZW5ndGgoKSk7CiAgICAgZGF0YVttX2lt
cGwtPmxlbmd0aCgpXSA9IGNoYXJhY3RlcjsKICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld0ltcGwp
OwogfQpAQCAtMjI3LDggKzIyNiw4IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnNUb0FwcGVuZCwgdW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgICAgICAg
ICBDUkFTSCgpOwogICAgICAgICBMQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhUb0FwcGVu
ZCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkYXRhLCBtX2ltcGwtPmNo
YXJhY3RlcnM4KCksIHN0ckxlbmd0aCk7Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhk
YXRhICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKKyAg
ICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwgbV9pbXBsLT5jaGFyYWN0ZXJz
OCgpLCBzdHJMZW5ndGgpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRh
ICsgc3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKICAgICAg
ICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIzNyw4ICsyMzYsOCBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQogICAgICAgICBDUkFTSCgpOwog
ICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0FwcGVuZCwgZGF0YSk7Ci0gICAgU3RyaW5n
SW1wbDo6Y29weUNoYXJzKGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7
Ci0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNU
b0FwcGVuZCwgbGVuZ3RoVG9BcHBlbmQpOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJz
KGRhdGEsIG1faW1wbC0+Y2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7CisgICAgU3RyaW5nSW1w
bDo6Y29weUNoYXJhY3RlcnMoZGF0YSArIHN0ckxlbmd0aCwgY2hhcmFjdGVyc1RvQXBwZW5kLCBs
ZW5ndGhUb0FwcGVuZCk7CiAgICAgbV9pbXBsID0gV1RGTW92ZShuZXdJbXBsKTsKIH0KIApAQCAt
MjY0LDEwICsyNjMsMTAgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciogY2hhcmFj
dGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICBVQ2hhciogZGF0YTsK
ICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxl
bmd0aCArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKICAgICBpZiAobV9pbXBsLT5pczhCaXQoKSkK
LSAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRhdGEsIGNoYXJhY3RlcnM4KCksIHN0ckxl
bmd0aCk7CisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRhdGEsIGNoYXJhY3Rl
cnM4KCksIHN0ckxlbmd0aCk7CiAgICAgZWxzZQotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cnMoZGF0YSwgY2hhcmFjdGVyczE2KCksIHN0ckxlbmd0aCk7Ci0gICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJzKGRhdGEgKyBzdHJMZW5ndGgsIGNoYXJhY3RlcnNUb0FwcGVuZCwgbGVuZ3RoVG9BcHBl
bmQpOworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhLCBjaGFyYWN0ZXJz
MTYoKSwgc3RyTGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkYXRhICsg
c3RyTGVuZ3RoLCBjaGFyYWN0ZXJzVG9BcHBlbmQsIGxlbmd0aFRvQXBwZW5kKTsKICAgICBtX2lt
cGwgPSBXVEZNb3ZlKG5ld0ltcGwpOwogfQogCkBAIC0yODUsNDEgKzI4NCwzMyBAQCB2b2lkIFN0
cmluZzo6dHJ1bmNhdGUodW5zaWduZWQgcG9zaXRpb24pCiAgICAgICAgIG1faW1wbCA9IG1faW1w
bC0+c3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1pbmxpbmUgdm9pZCBTdHJpbmc6OnJlbW92ZUludGVybmFsKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvc2l0aW9uLCBpbnQgbGVuZ3RoVG9SZW1v
dmUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgdm9pZCBTdHJpbmc6
OnJlbW92ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlbW92ZSkKIHsKICAgICBDaGFyYWN0ZXJUeXBl
KiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoKCkgLSBsZW5ndGhUb1JlbW92ZSwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIGNo
YXJhY3RlcnMsIHBvc2l0aW9uICogc2l6ZW9mKENoYXJhY3RlclR5cGUpKTsKLSAgICBtZW1jcHko
ZGF0YSArIHBvc2l0aW9uLCBjaGFyYWN0ZXJzICsgcG9zaXRpb24gKyBsZW5ndGhUb1JlbW92ZSwK
LSAgICAgICAgKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZW1vdmUgLSBwb3NpdGlvbikgKiBzaXplb2Yo
Q2hhcmFjdGVyVHlwZSkpOwotCisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGF0YSwg
Y2hhcmFjdGVycywgcG9zaXRpb24pOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRh
dGEgKyBwb3NpdGlvbiwgY2hhcmFjdGVycyArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZW1vdmUsIGxl
bmd0aCgpIC0gbGVuZ3RoVG9SZW1vdmUgLSBwb3NpdGlvbik7CiAgICAgbV9pbXBsID0gV1RGTW92
ZShuZXdJbXBsKTsKIH0KIAotdm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwg
aW50IGxlbmd0aFRvUmVtb3ZlKQordm9pZCBTdHJpbmc6OnJlbW92ZSh1bnNpZ25lZCBwb3NpdGlv
biwgdW5zaWduZWQgbGVuZ3RoVG9SZW1vdmUpCiB7Ci0gICAgaWYgKGxlbmd0aFRvUmVtb3ZlIDw9
IDApCisgICAgaWYgKCFsZW5ndGhUb1JlbW92ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChw
b3NpdGlvbiA+PSBsZW5ndGgoKSkKKyAgICBhdXRvIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwor
ICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aFRvUmVtb3ZlKSA+IGxlbmd0aCgpIC0gcG9zaXRpb24p
Ci0gICAgICAgIGxlbmd0aFRvUmVtb3ZlID0gbGVuZ3RoKCkgLSBwb3NpdGlvbjsKLQotICAgIGlm
IChpczhCaXQoKSkgeworICAgIGxlbmd0aFRvUmVtb3ZlID0gc3RkOjptaW4obGVuZ3RoVG9SZW1v
dmUsIGxlbmd0aCAtIHBvc2l0aW9uKTsKKyAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJlbW92
ZUludGVybmFsKGNoYXJhY3RlcnM4KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7Ci0KLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlbW92ZUludGVybmFsKGNoYXJhY3RlcnMxNigp
LCBwb3NpdGlvbiwgbGVuZ3RoVG9SZW1vdmUpOworICAgIGVsc2UKKyAgICAgICAgcmVtb3ZlSW50
ZXJuYWwoY2hhcmFjdGVyczE2KCksIHBvc2l0aW9uLCBsZW5ndGhUb1JlbW92ZSk7CiB9CiAKLVN0
cmluZyBTdHJpbmc6OnN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbikgY29uc3QK
K1N0cmluZyBTdHJpbmc6OnN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKSAKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIHJldHVybiBtX2ltcGwtPnN1YnN0cmluZyhwb3MsIGxlbik7CisgICAgLy8gRklYTUU6
IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlu
bGluZWQ/CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Vic3RyaW5nKHBvc2l0aW9uLCBs
ZW5ndGgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmlu
Z0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkBAIC0zMzIsMTAw
ICszMjMsOTUgQEAgU3RyaW5nIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAKICAgICBpZiAoIW9mZnNldCAmJiBsZW5n
dGggPT0gc3RyaW5nTGVuZ3RoKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgcmV0dXJuIFN0
cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqbV9pbXBsLCBvZmZz
ZXQsIGxlbmd0aCkpOworICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbCgqbV9pbXBsLCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KLSAg
ICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2lt
cGwtPmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBT
dHJpbmc6OmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5s
aW5lZD8KLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBtX2ltcGwtPmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSA6IFN0cmluZyB7IH07CiB9CiAK
IFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25zdAog
ewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOworICAgIC8vIEZJWE1F
OiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBp
bmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRU
b0xvd2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25l
ZCBmYWlsaW5nSW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0
TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KTsKKyAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwg
YmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNh
c2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KSA6
IFN0cmluZyB7IH07CiB9CiAKIFN0cmluZyBTdHJpbmc6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhv
dXRMb2NhbGUoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2Fs
ZSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90
aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKSA6IFN0cmluZyB7IH07CiB9CiAKIFN0cmlu
ZyBTdHJpbmc6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdAogewotICAgIGlmICghbV9pbXBsKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+Y29udmVydFRvTG93ZXJjYXNlV2l0
aExvY2FsZShsb2NhbGVJZGVudGlmaWVyKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVu
Y3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMgbGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlk
ZW50aWZpZXIpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmluZzo6Y29udmVydFRvVXBw
ZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gbV9pbXBsLT5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGxvY2FsZUlkZW50aWZp
ZXIpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90
aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUobG9jYWxlSWRlbnRpZmllcikgOiBTdHJpbmcgeyB9
OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzdHJpcFdoaXRlU3BhY2UoKSBjb25zdAogewotICAgIGlm
ICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+
c3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uLCBh
bmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAgLy8gRklYTUU6IFRo
aXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywgIndoaXRlc3BhY2Ui
IGlzIGEgc2luZ2xlCisgICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBiZSBsb3dlcmNhc2Uu
IEZvciBhbm90aGVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQorICAgIC8vIHRoYXQg
dGhlIGZ1bmN0aW9uIHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3aGl0ZXNwYWNlLiBN
b3N0IFdlYktpdCBjYWxsZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFuZCBldmVudHVhbGx5
IHdlIHNob3VsZCBjb25zaWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPnN0cmlwV2hpdGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0KIAogU3RyaW5nIFN0cmlu
Zzo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkg
Y29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiBtX2ltcGwtPnN0cmlwV2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAgIC8vIEZJ
WE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBi
ZSBpbmxpbmVkPworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIG5lZWRzIGEgbmV3IG5hbWUu
IEl0IHN0cmlwcyBsZWFkaW5nIGFuZCB0cmFpbGluZworICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBt
YXRjaCBhIHByZWRpY2F0ZTsgbm90IG5lY2Vzc2FyaWx5ICJ3aGl0ZSBzcGFjZSIuCisgICAgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKGlzV2hpdGVTcGFjZSkgOiBTdHJp
bmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdAog
ewotICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlz
IGZ1bmN0aW9uLCBhbmQgdGhlIG1hbnkgb3RoZXJzIGxpa2UgaXQsIGJlIGlubGluZWQ/CisgICAg
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbmVlZHMgYSBuZXcgbmFtZS4gRm9yIG9uZSB0aGluZywg
IndoaXRlc3BhY2UiIGlzIGEgc2luZ2xlCisgICAgLy8gd29yZCBzbyB0aGUgInMiIHNob3VsZCBi
ZSBsb3dlcmNhc2UuIEZvciBhbm90aGVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoaXMgbmFtZQor
ICAgIC8vIHRoYXQgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIFVuaWNvZGUgZGVmaW5pdGlvbiBvZiB3
aGl0ZXNwYWNlLiBNb3N0IFdlYktpdCBjYWxsZXJzCisgICAgLy8gZG9uJ3Qgd2FudCB0aGF0IGFu
ZCBldmVudHVhbGx5IHdlIHNob3VsZCBjb25zaWRlciBkZWxldGluZyB0aGlzLgorICAgIHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZSgpIDogU3RyaW5nIHsgfTsKIH0K
IAogU3RyaW5nIFN0cmluZzo6c2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9u
UHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnNpbXBsaWZ5V2hpdGVTcGFjZShpc1do
aXRlU3BhY2UpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBt
YW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPnNpbXBsaWZ5V2hpdGVTcGFjZShpc1doaXRlU3BhY2UpIDogU3RyaW5nIHsgfTsKIH0KIAog
U3RyaW5nIFN0cmluZzo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRy
IGZpbmRNYXRjaCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBtX2ltcGwtPnJlbW92ZUNoYXJhY3RlcnMoZmluZE1hdGNoKTsK
KyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgbWFueSBvdGhlcnMg
bGlrZSBpdCwgYmUgaW5saW5lZD8KKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZW1vdmVD
aGFyYWN0ZXJzKGZpbmRNYXRjaCkgOiBTdHJpbmcgeyB9OwogfQogCiBTdHJpbmcgU3RyaW5nOjpm
b2xkQ2FzZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICByZXR1cm4gbV9pbXBsLT5mb2xkQ2FzZSgpOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVk
PworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZvbGRDYXNlKCkgOiBTdHJpbmcgeyB9Owog
fQogCiBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKQEAgLTQ2NSw4
ICs0NTEsNyBAQCBWZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdURl9BVFRSSUJVVEVfUFJJ
TlRGKDEsIDApCi1zdGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29u
c3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCitXVEZfQVRUUklCVVRFX1BSSU5URigxLCAw
KSBzdGF0aWMgU3RyaW5nIGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciAq
Zm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAgICAgdmFfbGlzdCBhcmdzQ29weTsKICAgICB2YV9j
b3B5KGFyZ3NDb3B5LCBhcmdzKTsKQEAgLTQ3OCwxNCArNDYzLDEyIEBAIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3Qg
YXJncykKIAogI2lmIFVTRShDRikgJiYgIU9TKFdJTkRPV1MpCiAgICAgaWYgKHN0cnN0cihmb3Jt
YXQsICIlQCIpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGb3JtYXQgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9y
bWF0LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1l
bnRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgpLCBhcmdzKSk7
Ci0KKyAgICAgICAgYXV0byBjZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0
QW5kQXJndW1lbnRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNmRm9ybWF0LmdldCgp
LCBhcmdzKSk7CiAgICAgICAgIHZhX2VuZChhcmdzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKICAgICB9Ci0jZW5kaWYgLy8gVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyNlbmRpZgog
CiAgICAgLy8gRG8gdGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJ
TEVSKE1TVkMpCkBAIC00OTcsNyArNDgwLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVXaXRoRm9y
bWF0QW5kQXJndW1lbnRzKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgIHZh
X2VuZChhcmdzKTsKIAogICAgIGlmIChyZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygiIik7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIGlmIChyZXN1bHQgPCAw
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTUyNyw3ICs1MTAsNiBAQCBTdHJpbmcg
U3RyaW5nOjpmb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAgICAgdmFfc3RhcnQoYXJn
cywgZm9ybWF0KTsKICAgICBTdHJpbmcgcmVzdWx0ID0gY3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3Vt
ZW50cyhmb3JtYXQsIGFyZ3MpOwogICAgIHZhX2VuZChhcmdzKTsKLSAgICAKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC03MDAsMTEgKzY4MiwxMSBAQCBmbG9hdCBTdHJpbmc6OnRvRmxvYXQo
Ym9vbCogb2spIGNvbnN0CiB9CiAKICNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUkVGRVJFTkNF
X1FVQUxJRklFRF9GVU5DVElPTlMpCisKIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpIGNv
bnN0ICYKIHsKLSAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBmdW5jdGlvbiwgYW5kIHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAg
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0K
IAogU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgJiYKQEAgLTcxMiwzNiArNjk0LDI3IEBA
IFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpICYmCiAgICAgaWYgKGlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpKSB7CiAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhhdCBvdXIgc3Ry
aW5nIGlzIGEgdGVtcG9yYXJ5IHRoYXQgd2lsbCBiZSBkZXN0cm95ZWQKICAgICAgICAgLy8gd2Ug
Y2FuIGp1c3Qgc3RlYWwgdGhlIG1faW1wbCBmcm9tIGl0LCB0aHVzIGF2b2lkaW5nIGEgY29weS4K
LSAgICAgICAgcmV0dXJuIFN0cmluZyhXVEZNb3ZlKCp0aGlzKSk7CisgICAgICAgIHJldHVybiB7
IFdURk1vdmUoKnRoaXMpIH07CiAgICAgfQogCi0gICAgaWYgKCFtX2ltcGwpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX2ltcGwtPmlzb2xhdGVkQ29weSgpOworICAg
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0K
KwogI2Vsc2UKKwogU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2ltcGwt
Pmlzb2xhdGVkQ29weSgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlvbiwgYW5k
IHRoZSBtYW55IG90aGVycyBsaWtlIGl0LCBiZSBpbmxpbmVkPworICAgIHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPmlzb2xhdGVkQ29weSgpIDogU3RyaW5nIHsgfTsKIH0KKwogI2VuZGlmCiAKIGJv
b2wgU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogewotICAgIGlm
ICghaW1wbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBBdG9taWNTdHJpbmdzIGFyZSBub3Qgc2FmZSB0byBz
ZW5kIGJldHdlZW4gdGhyZWFkcyBhcyB+U3RyaW5nSW1wbCgpCiAgICAgLy8gd2lsbCB0cnkgdG8g
cmVtb3ZlIHRoZW0gZnJvbSB0aGUgd3JvbmcgQXRvbWljU3RyaW5nVGFibGUuCi0gICAgaWYgKGlt
cGwoKS0+aXNBdG9taWMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbXBsKCkt
Pmhhc09uZVJlZigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIGlzRW1wdHkoKSB8fCAobV9pbXBsLT5oYXNPbmVSZWYoKSAmJiAhbV9pbXBsLT5p
c0F0b21pYygpKTsKIH0KIAogdm9pZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJh
dG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25z
dApAQCAtODQ4LDEwICs4MjEsNyBAQCBDU3RyaW5nIFN0cmluZzo6bGF0aW4xKCkgY29uc3QKIAog
Q1N0cmluZyBTdHJpbmc6OnV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBp
ZiAoIW1faW1wbCkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwotICAgIAotICAgIHJl
dHVybiBtX2ltcGwtPnV0ZjgobW9kZSk7CisgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+dXRm
OChtb2RlKSA6IENTdHJpbmcgeyAiIiwgMCB9OwogfQogCiBDU3RyaW5nIFN0cmluZzo6dXRmOCgp
IGNvbnN0CkBAIC04ODAsNyArODUwLDcgQEAgU3RyaW5nIFN0cmluZzo6bWFrZTE2Qml0RnJvbThC
aXRTb3VyY2UoY29uc3QgTENoYXIqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKICAgICBVQ2hhciog
ZGVzdGluYXRpb247CiAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgsIGRlc3RpbmF0aW9uKTsKICAgICAKLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cnMoZGVzdGluYXRpb24sIHNvdXJjZSwgbGVuZ3RoKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cmFjdGVycyhkZXN0aW5hdGlvbiwgc291cmNlLCBsZW5ndGgpOwogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC05NDksOCArOTE5LDggQEAgc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJBbGxv
d2VkSW5CYXNlKFVDaGFyIGMsIGludCBiYXNlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMg
aW5saW5lIEludGVncmFsVHlwZSB0b0ludGVncmFsVHlwZShjb25zdCBDaGFyVHlwZSogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQordGVtcGxhdGU8dHlwZW5hbWUgSW50
ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBJbnRlZ3Jh
bFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgYm9vbCogb2ssIGludCBiYXNlKQogewogICAgIHN0YXRpYyBjb25zdCBJbnRlZ3JhbFR5
cGUgaW50ZWdyYWxNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPEludGVncmFsVHlwZT46Om1heCgp
OwogICAgIHN0YXRpYyBjb25zdCBib29sIGlzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxJ
bnRlZ3JhbFR5cGU+Ojppc19zaWduZWQ7CkBAIC05ODQsNyArOTU0LDcgQEAgc3RhdGljIGlubGlu
ZSBJbnRlZ3JhbFR5cGUgdG9JbnRlZ3JhbFR5cGUoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGIKICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFz
ZSgqZGF0YSwgYmFzZSkpIHsKICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAgIEludGVncmFsVHlw
ZSBkaWdpdFZhbHVlOwotICAgICAgICBDaGFyVHlwZSBjID0gKmRhdGE7CisgICAgICAgIGF1dG8g
YyA9ICpkYXRhOwogICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KGMpKQogICAgICAgICAgICAgZGln
aXRWYWx1ZSA9IGMgLSAnMCc7CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnKQpAQCAtMTAyNSw4
ICs5OTUsOCBAQCBieWU6CiAgICAgcmV0dXJuIGlzT2sgPyB2YWx1ZSA6IDA7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLXN0YXRpYyB1bnNpZ25lZCBsZW5ndGhPZkNoYXJhY3Rl
cnNBc0ludGVnZXIoY29uc3QgQ2hhclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mQ2hhcmFj
dGVyc0FzSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIHNpemVfdCBpID0gMDsKIApAQCAtMTE1MSw4ICsxMTIxLDggQEAgaW50cHRyX3QgY2hh
cmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBv
aykKIAogZW51bSBUcmFpbGluZ0p1bmtQb2xpY3kgeyBEaXNhbGxvd1RyYWlsaW5nSnVuaywgQWxs
b3dUcmFpbGluZ0p1bmsgfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBUcmFpbGlu
Z0p1bmtQb2xpY3kgcG9saWN5Pgotc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNv
bnN0IENoYXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgc2l6ZV90JiBwYXJz
ZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBUcmFpbGluZ0p1bmtQ
b2xpY3kgcG9saWN5Pgorc3RhdGljIGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENo
YXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGJvb2wqIG9rLCBzaXplX3QmIHBhcnNl
ZExlbmd0aCkKIHsKICAgICBzaXplX3QgbGVhZGluZ1NwYWNlc0xlbmd0aCA9IDA7CiAgICAgd2hp
bGUgKGxlYWRpbmdTcGFjZXNMZW5ndGggPCBsZW5ndGggJiYgaXNBU0NJSVNwYWNlKGRhdGFbbGVh
ZGluZ1NwYWNlc0xlbmd0aF0pKQpAQCAtMTIxOSw3ICsxMTg5LDggQEAgY29uc3QgU3RyaW5nJiBl
bXB0eVN0cmluZygpCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmbmRlZiBOREVCVUcKLS8vIEZv
ciB1c2UgaW4gdGhlIGRlYnVnZ2VyCisKKy8vIEZvciB1c2UgaW4gdGhlIGRlYnVnZ2VyLgogU3Ry
aW5nKiBzdHJpbmcoY29uc3QgY2hhciopOwogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5n
SW1wbCogaW1wbCk7CiBWZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZyk7CkBA
IC0xMjMxLDcgKzEyMDIsNyBAQCB2b2lkIFN0cmluZzo6c2hvdygpIGNvbnN0CiAKIFN0cmluZyog
c3RyaW5nKGNvbnN0IGNoYXIqIHMpCiB7Ci0gICAgLy8gbGVha3MgbWVtb3J5IQorICAgIC8vIElu
dGVudGlvbmFsbHkgbGVha3MgbWVtb3J5IQogICAgIHJldHVybiBuZXcgU3RyaW5nKHMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAzYTk3YjE2Nzg3OTMwNTkwNmQ2NWI3MGY5YTFk
NTE1ZmI2MjgxY2NhLi4yZjI5YWE1MWM4NzEwZmM1NWFiMjM0YjIzYzE1YzBiNmVmMTFiZTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgPHN0
ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0FT
Q0lJRmFzdFBhdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCkBAIC04MCw3ICs3OSw3
IEBAIGVudW0gVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgeyBLZWVwVHJhaWxpbmdaZXJv
cywgVHJ1bmNhdGVUcmFpbGluZ1plcm9zIH07CiBjbGFzcyBTdHJpbmcgewogcHVibGljOgogICAg
IC8vIENvbnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0
eSBzdHJpbmcuCi0gICAgU3RyaW5nKCkgeyB9CisgICAgU3RyaW5nKCkgPSBkZWZhdWx0OwogCiAg
ICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKQEAgLTEyNSwyMiArMTI0LDE2IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBz
dHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8vIFRoaXMgY29uc3Ry
dWN0b3IgaXMgdGhlICJiaWciIHZlcnNpb24sIGFzIGl0IHB1dCB0aGUgbGVuZ3RoIGluIHRoZSBm
dW5jdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZSBiaWdnZXIgY29kZS4KICAgICBlbnVtIENvbnN0cnVj
dEZyb21MaXRlcmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpIDogbV9pbXBsKFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsPGNoYXJhY3RlckNvdW50PihjaGFyYWN0ZXJzKSkg
eyB9Ci0KLSAgICAvLyBXZSBoYXZlIHRvIGRlY2xhcmUgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5k
IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvciBhcyB3ZWxsLCBvdGhlcndpc2UKLSAgICAvLyB0aGV5
J2xsIGJlIGltcGxpY2l0bHkgZGVsZXRlZCBieSBhZGRpbmcgdGhlIG1vdmUgY29uc3RydWN0b3Ig
YW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBTdHJpbmcoY29uc3QgU3RyaW5nJiBv
dGhlcikKLSAgICAgICAgOiBtX2ltcGwob3RoZXIubV9pbXBsKQotICAgIHsgfQotICAgIFN0cmlu
ZyhTdHJpbmcmJiBvdGhlcikKLSAgICAgICAgOiBtX2ltcGwoV1RGTW92ZShvdGhlci5tX2ltcGwp
KQotICAgIHsgfQotICAgIFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZyYgb3RoZXIpIHsg
bV9pbXBsID0gb3RoZXIubV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KLSAgICBTdHJpbmcmIG9wZXJh
dG9yPShTdHJpbmcmJiBvdGhlcikgeyBtX2ltcGwgPSBXVEZNb3ZlKG90aGVyLm1faW1wbCk7IHJl
dHVybiAqdGhpczsgfQotCi0gICAgLy8gSW5saW5lIHRoZSBkZXN0cnVjdG9yLgotICAgIEFMV0FZ
U19JTkxJTkUgflN0cmluZygpIHsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PiBTdHJpbmcoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29u
c3RydWN0RnJvbUxpdGVyYWxUYWcpIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsPGNoYXJhY3RlckNvdW50PihjaGFyYWN0ZXJzKSkgeyB9CisKKyAgICAvLyBGSVhNRTogV2h5
IGRvIHdlIGhhdmUgdG8gZGVmaW5lIHRoZXNlIGV4cGxpY2l0bHkgZ2l2ZW4gdGhhdCB3ZSBqdXN0
IHdhbnQgdGhlIGRlZmF1bHQgdmVyc2lvbnM/CisgICAgLy8gV2UgaGF2ZSB2ZXJpZmllZCBlbXBp
cmljYWxseSB0aGF0IHdlIGRvLgorICAgIFN0cmluZyhjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7
CisgICAgU3RyaW5nKFN0cmluZyYmKSA9IGRlZmF1bHQ7CisgICAgU3RyaW5nJiBvcGVyYXRvcj0o
Y29uc3QgU3RyaW5nJikgPSBkZWZhdWx0OworICAgIFN0cmluZyYgb3BlcmF0b3I9KFN0cmluZyYm
KSA9IGRlZmF1bHQ7CisKKyAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSA9IGRlZmF1bHQ7CiAK
ICAgICB2b2lkIHN3YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQogCkBA
IC0xNTAsNDYgKzE0MywyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJp
bmdWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+JiYgdmVjdG9yKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3Zl
KHZlY3RvcikpOyB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7
IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwt
Pmxlbmd0aCgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8
fCBtX2ltcGwtPmlzRW1wdHkoKTsgfQogCiAgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZWxlYXNlSW1w
bCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbXBsKTsgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmxlbmd0aCgpOwotICAgIH0KLQotICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQobV9pbXBsLT5pczhCaXQoKSk7Ci0g
ICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4KCk7Ci0gICAgfQotCi0gICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBU1NFUlQoIW1faW1wbC0+aXM4Qml0KCkp
OwotICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICB9CisgICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6
IDA7IH0KKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmNoYXJhY3RlcnM4KCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Y2hhcmFjdGVy
czE2KCkgOiBudWxscHRyOyB9CiAKICAgICAvLyBSZXR1cm4gY2hhcmFjdGVyczgoKSBvciBjaGFy
YWN0ZXJzMTYoKSBkZXBlbmRpbmcgb24gQ2hhcmFjdGVyVHlwZS4KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hh
cmFjdGVycygpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIGJvb2wgaXM4Qml0
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCi0gICAgdW5zaWduZWQgc2l6
ZUluQnl0ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkg
PyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgfQorICAgIHVuc2lnbmVkIHNp
emVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSAqIChp
czhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKSA6IDA7IH0KIAogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CkBAIC0xOTcsMTYgKzE2NSwxMSBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChDb252ZXJz
aW9uTW9kZSkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOCgp
IGNvbnN0OwogCi0gICAgVUNoYXIgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwotICAgIH0KLSAg
ICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRl
eCk7IH0KKyAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAg
VUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVy
QXQoaW5kZXgpOyB9CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBu
dW1iZXIoaW50KTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQgaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmlu
ZyBudW1iZXIodW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3Ry
aW5nIG51bWJlcihsb25nKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmlu
ZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CkBAIC0yMTksMTE5ICsxODIsNjQgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5n
Rml4ZWRXaWR0aChkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOwogCiAgICAgLy8gRmlu
ZCBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24g
JiBsYXRpbjEgZm9ybXMuCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoYywgc3Rh
cnQpIDogbm90Rm91bmQ7IH0KLQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyKSBj
b25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLmltcGwoKSkg
OiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0
ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsg
fQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHIuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RG
b3VuZDsgfQotCi0gICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRj
aEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQot
ICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDog
bm90Rm91bmQ7IH0KKyAgICBzaXplX3QgZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0
YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNoYXJhY3Rlciwg
c3RhcnQpIDogbm90Rm91bmQ7IH0KKworICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyaW5nLmltcGwoKSkg
OiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBzdGFydCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZy5p
bXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CisgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBub3RGb3VuZDsgfQorICAg
IHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBzdGFydE9mZnNldCkgOiBub3RGb3VuZDsgfQor
CisgICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBtYXRjaEZ1bmN0aW9u
LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zmlu
ZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAgIHNpemVfdCBmaW5kKGNv
bnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8v
IEZpbmQgdGhlIGxhc3QgaW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4K
LSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01B
WCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChj
LCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJp
bmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RG
b3VuZDsgfQotCi0gICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgbWF0Y2hpbmcuCi0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmlu
Z0Nhc2Uoc3RyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAg
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShj
b25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKLSAgICAg
ICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIu
aW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAgLy8gV3JhcHBlcnMgZm9yIGZpbmQg
JiByZXZlcnNlRmluZCBhZGRpbmcgZHluYW1pYyBzZW5zaXRpdml0eSBjaGVjay4KLSAgICBzaXpl
X3QgZmluZChjb25zdCBMQ2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0
aXZlKSBjb25zdAotICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gZmluZChzdHIsIHN0
YXJ0KSA6IGZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KLSAgICBzaXplX3QgZmluZChj
b25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IGZpbmQoc3RyLCBzdGFydCkgOiBm
aW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKGNv
bnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25z
dAotICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFy
dCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQorICAgIHNpemVfdCBy
ZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PnJldmVyc2VGaW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVDaGFy
MzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgotCi0gICAg
Ym9vbCBjb250YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5k
OyB9Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hhciogc3RyLCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIGZpbmQoc3RyLCBzdGFydE9mZnNldCwgY2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0K
LSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBmaW5kKHN0cikgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0
cmluZyYgc3RyLCBib29sIGNhc2VTZW5zaXRpdmUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0
aXZlKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcmIHN0cikgY29uc3QKLSAgICAgICAgeyByZXR1cm4gZmluZElnbm9yaW5nQVND
SUlDYXNlKHN0cikgIT0gbm90Rm91bmQ7IH0KLSAgICBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdAotICAg
ICAgICB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLCBzdGFydE9mZnNldCkgIT0g
bm90Rm91bmQ7IH0KLQotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcmIHMpIGNvbnN0
Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwoKSkg
OiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uocy5pbXBsKCkpIDogcy5pc0VtcHR5KCk7IH0KLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNv
bnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzLmltcGwo
KSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgc3RhcnRzV2l0aChV
Q2hhciBjaGFyYWN0ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
c3RhcnRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBt
YXRjaExlbmd0aD4KLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0
Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAotICAgICAgICB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2Fz
ZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdB
dChjb25zdCBTdHJpbmcmIHByZWZpeCwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1wbCgpID8gbV9pbXBsLT5oYXNJbmZpeFN0
YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0KSA6IGZhbHNlOyB9Ci0KLSAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJv
b2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHMpIGNvbnN0Ci0gICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShz
LmltcGwoKSkgOiBzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5n
JiBzLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBsKCksIGNhc2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7
IH0KLSAgICBib29sIGVuZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKLSAgICAgICAgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChjaGFyYWN0ZXIpIDogZmFsc2U7IH0KKyAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2ln
bmVkKSBjb25zdDsKKworICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7
IHJldHVybiBmaW5kKGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IExDaGFyKiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RG
b3VuZDsgfQorICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoc3RyaW5nKSAhPSBub3RGb3VuZDsgfQorICAgIGJvb2wgY29udGFpbnNJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZykgIT0gbm90Rm91bmQ7IH0KKyAgICBib29sIGNvbnRhaW5z
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdCB7IHJldHVybiBmaW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9m
ZnNldCkgIT0gbm90Rm91bmQ7IH0KKworICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoKHN0cmlu
Zy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwg
PyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0
cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5zdGFydHNXaXRoKGNoYXJhY3Rlcik7IH0K
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5zdGFydHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1hdGNoTGVuZ3RoOyB9Cisg
ICAgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nJiBwcmVmaXgsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgcHJlZml4LmltcGwoKSAmJiBt
X2ltcGwtPmhhc0luZml4U3RhcnRpbmdBdCgqcHJlZml4LmltcGwoKSwgc3RhcnRPZmZzZXQpOyB9
CisKKyAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1w
dHkoKTsgfQorICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wg
ZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBs
LT5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9CiAgICAgYm9vbCBlbmRzV2l0aChjaGFyIGNoYXJhY3Rl
cikgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgoc3RhdGljX2Nhc3Q8VUNoYXI+KGNoYXJhY3Rlcikp
OyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+Ci0gICAgYm9vbCBlbmRzV2l0
aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0sIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGg8
bWF0Y2hMZW5ndGg+KHByZWZpeCwgY2FzZVNlbnNpdGl2ZSkgOiAhbWF0Y2hMZW5ndGg7IH0KLSAg
ICBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5nJiBzdWZmaXgsIHVuc2lnbmVkIGVu
ZE9mZnNldCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsICYmIHN1ZmZpeC5pbXBsKCkg
PyBtX2ltcGwtPmhhc0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCkgOiBm
YWxzZTsgfQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRo
KGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsg
fQorICAgIGJvb2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBt
X2ltcGwtPmhhc0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KIAog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoTENoYXIpOwotICAgIHZvaWQgYXBw
ZW5kKGNoYXIgYykgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsgfTsKKyAgICB2b2lk
IGFwcGVuZChjaGFyIGNoYXJhY3RlcikgeyBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJh
Y3RlcikpOyB9OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChVQ2hhcik7
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2
b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7
CiAKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBt
X2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQotICAgIFN0cmlu
ZyYgcmVwbGFjZShVQ2hhciBhLCBjb25zdCBTdHJpbmcmIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBs
ID0gbV9pbXBsLT5yZXBsYWNlKGEsIGIuaW1wbCgpKTsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU3Ry
aW5nJiByZXBsYWNlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGlmIChtX2lt
cGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShhLmltcGwoKSwgYi5pbXBsKCkpOyByZXR1cm4g
KnRoaXM7IH0KLSAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxl
biwgY29uc3QgU3RyaW5nJiBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFj
ZShpbmRleCwgbGVuLCBiLmltcGwoKSk7IHJldHVybiAqdGhpczsgfQorICAgIFN0cmluZyYgcmVw
bGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxh
Y2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcm
IHJlcGxhY2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQp
OworICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBj
aGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7CiAKLSAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyYgcmVwbGFjZVdp
dGhMaXRlcmFsKFVDaGFyIGEsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3Vu
dF0pCi0gICAgewotICAgICAgICBpZiAobV9pbXBsKQotICAgICAgICAgICAgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKGEsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2ln
bmVkIGxlbmd0aCA9IDEpOwogCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAx
KTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25l
ZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBj
b25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQotICAgIFN0cmluZyByaWdodCh1bnNp
Z25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsg
fQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBv
c2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vic3RyaW5n
U2hhcmluZ0ltcGwodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CisgICAgU3RyaW5nIGxlZnQodW5z
aWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQorICAg
IFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0
aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
QEAgLTM0Nyw3ICsyNTUsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0
cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0Owog
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OwotICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFs
Q2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNl
bnNpdGl2ZSBjb21wYXJpc29uLgogICAgIC8vIFVzZSBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSBp
bnN0ZWFkIGlmIEFTQ0lJIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBpcyBkZXNpcmVkLgpA
QCAtMzU4LDM1ICsyNjUsMTggQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRp
YWxpemVkIHN0cmluZy4gVGhlIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgogICAgIC8v
IGludG8gdGhlIGJ1ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJuZWQgc3Ry
aW5nIGlzIHVzZWQuCi0gICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1bnByZWRp
Y3RhYmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wg
YWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZv
aWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0Ci0gICAgewotICAgICAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwot
ICAgIH0KKyAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0K
IAogICAgIHVzaW5nIFNwbGl0RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmdWaWV3Jik+OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29u
c3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9y
LCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsK
LSAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7Ci0g
ICAgfQotICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICAgICAgc3BsaXQoc2VwYXJh
dG9yLCBmYWxzZSwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAg
VmVjdG9yPFN0cmluZz4gc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Ci0gICAg
ewotICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIHNwbGl0KHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIHZv
aWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7
IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBz
cGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNv
bnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wq
IG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CkBAIC00MzksMTEgKzMyOSw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJp
bmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpOwotICAgIHRl
bXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0
RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBidWZm
ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQorICAgIHRlbXBsYXRlPHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4gc3RhdGljIFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBW
ZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBTdHJpbmcgbWFrZTE2Qml0RnJvbThCaXRTb3VyY2UoY29uc3QgTENoYXIqLCBz
aXplX3QpOwogCkBAIC00NTEsMjggKzMzNywyMSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGlucHV0
IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqLCBzaXplX3QpOwog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExD
aGFyKik7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBzLCBzaXplX3Qg
bGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
cyksIGxlbmd0aCk7IH07Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBz
KSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9
OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOyB9OworICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgo
Y29uc3QgY2hhciogc3RyaW5nKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oc3RyaW5nKSk7IH07CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjgoY29uc3QgQ1N0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgZnJv
bVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycyk7CiAKICAgICAvLyBUcmllcyB0
byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJh
Y2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhM
YXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyks
IGxlbmd0aCk7IH07CisgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyksIGxlbmd0aCk7IH07CiAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVj
dGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCi0g
ICAgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faW1w
bCkKLSAgICAgICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKLSAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFs
aXR5KQotICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7Ci0gICAg
ICAgIHJldHVybiBVX0xFRlRfVE9fUklHSFQ7Ci0gICAgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVs
bHB0cikgY29uc3Q7CiAKLSAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3Q7Ci0gICAg
Ym9vbCBjb250YWluc09ubHlMYXRpbjEoKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+Y29udGFpbnNPbmx5
V2hpdGVzcGFjZSgpOyB9CisgICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4gIW1f
aW1wbCB8fCBtX2ltcGwtPmlzQWxsQVNDSUkoKTsgfQorICAgIGJvb2wgaXNBbGxMYXRpbjEoKSBj
b25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXNBbGxMYXRpbjEoKTsgfQorICAgIHRl
bXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyPigpOyB9CiAKICAgICAvLyBIYXNoIHRhYmxl
IGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29w
aWVkIG9yIGRlc3Ryb3llZC4KICAgICBTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKSA6IG1faW1wbChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkBAIC00ODQsNDAg
KzM2MywxNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc2hvdygp
IGNvbnN0OwogI2VuZGlmCiAKLSAgICAvLyBXb3JrYXJvdW5kIGZvciBhIGNvbXBpbGVyIGJ1Zy4g
VXNlIG9wZXJhdG9yW10gaW5zdGVhZC4KLSAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1w
bC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICgqbV9p
bXBsKVtpbmRleF07Ci0gICAgfQotCiAgICAgLy8gVHVybnMgdGhpcyBTdHJpbmcgZW1wdHkgaWYg
dGhlIFN0cmluZ0ltcGwgaXMgbm90IHJlZmVyZW5jZWQgYnkgYW55b25lIGVsc2UuCiAgICAgLy8g
VGhpcyBpcyB1c2VmdWwgZm9yIGNsZWFyaW5nIFN0cmluZy1iYXNlZCBjYWNoZXMuCi0gICAgdm9p
ZCBjbGVhckltcGxJZk5vdFNoYXJlZCgpCi0gICAgewotICAgICAgICBpZiAobV9pbXBsICYmIG1f
aW1wbC0+aGFzT25lUmVmKCkpCi0gICAgICAgICAgICBtX2ltcGwgPSBudWxscHRyOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICht
X2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwtPmFzc2VydENhZ2VkKCk7Ci0gICAgfQorICAgIHZv
aWQgY2xlYXJJbXBsSWZOb3RTaGFyZWQoKTsKIAotICAgIHZvaWQgcmVsZWFzZUFzc2VydENhZ2Vk
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpCi0gICAgICAgICAgICBtX2ltcGwt
PnJlbGVhc2VBc3NlcnRDYWdlZCgpOwotICAgIH0KKyAgICB2b2lkIGFzc2VydENhZ2VkKCkgY29u
c3Q7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICB2b2lkIHJlbW92ZUludGVy
bmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCwgaW50KTsKLQotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotICAgIHZvaWQgYXBwZW5kSW50ZXJuYWwoQ2hhcmFj
dGVyVHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1v
dmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZEludGVybmFsKENo
YXJhY3RlclR5cGUpOwogCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKIH07CkBAIC01
MzIsNyArMzg3LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKHJlaW50ZXJwcmUKIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwg
aW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1w
bCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8
Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiID09IGE7IH0KIAotCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVy
biAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCks
IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hh
ciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oYikpOyB9CkBAIC01NTAsNyArNDA0LDcgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3Ro
PiBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiwK
IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIGVxdWFs
SWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBj
b25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEsIGIuaW1wbCgp
KTsgfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3QgU3RyaW5nJiBzdHIpIHsgcmV0dXJu
IHN0ci5pc051bGwoKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSB7IHJldHVybiBzdHJpbmcuaXNOdWxsKCk7IH0KIAogaW5saW5lIHZvaWQgc3dhcChTdHJp
bmcmIGEsIFN0cmluZyYgYikgeyBhLnN3YXAoYik7IH0KIApAQCAtNTYxLDgxICs0MTUsMTc2IEBA
IE5TU3RyaW5nICogbnNTdHJpbmdOaWxJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiAjZW5kaWYK
IAorV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYsIHVuc2lnbmVkIGNo
YXIgbnVtYmVyKTsKKworLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCitXVEZfRVhQT1JU
X1NUUklOR19BUEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOworCit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
U3RyaW5nPiB7IHVzaW5nIEhhc2ggPSBTdHJpbmdIYXNoOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
VmVjdG9yVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisKK2Ns
YXNzIEFTQ0lJTGl0ZXJhbCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQorICAg
IG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisKK3ByaXZh
dGU6CisgICAgY29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRyYWl0PFN0cmluZz4geworICAgIHVzaW5nIFJl
dHVyblR5cGUgPSBTdHJpbmc7CisgICAgdXNpbmcgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSA9IHZv
aWQ7CisgICAgc3RhdGljIFN0cmluZyBmbHVzaChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCB2b2lkKikgeyByZXR1cm4geyBjaGFyYWN0ZXJzLCBsZW5ndGggfTsgfQorfTsKKwog
Ly8gRGVmaW5pdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAotaW5saW5lIFN0cmluZzo6U3Ry
aW5nKFN0cmluZ0ltcGwmIGltcGwpCi0gICAgOiBtX2ltcGwoJmltcGwpCitpbmxpbmUgU3RyaW5n
OjpTdHJpbmcoU3RyaW5nSW1wbCYgc3RyaW5nKQorICAgIDogbV9pbXBsKCZzdHJpbmcpCiB7CiB9
CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKQotICAgIDogbV9pbXBs
KGltcGwpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDog
bV9pbXBsKHN0cmluZykKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxTdHJpbmdJ
bXBsPiYmIGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBTdHJpbmc6
OlN0cmluZyhSZWY8U3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBtX2ltcGwoV1RGTW92ZShz
dHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+
JiYgaW1wbCkKLSAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQoraW5saW5lIFN0cmluZzo6U3Ry
aW5nKFJlZlB0cjxTdHJpbmdJbXBsPiYmIHN0cmluZykKKyAgICA6IG1faW1wbChXVEZNb3ZlKHN0
cmluZykpCiB7CiB9CiAKLWlubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8QXRvbWljU3RyaW5nSW1w
bD4mJiBpbXBsKQotICAgIDogbV9pbXBsKFdURk1vdmUoaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpT
dHJpbmcoUmVmPEF0b21pY1N0cmluZ0ltcGw+JiYgc3RyaW5nKQorICAgIDogbV9pbXBsKFdURk1v
dmUoc3RyaW5nKSkKIHsKIH0KIAotaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiYmIGltcGwpCi0gICAgOiBtX2ltcGwoV1RGTW92ZShpbXBsKSkKK2lubGluZSBT
dHJpbmc6OlN0cmluZyhSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4mJiBzdHJpbmcpCisgICAgOiBt
X2ltcGwoV1RGTW92ZShzdHJpbmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3Rh
dGljU3RyaW5nSW1wbCYgaW1wbCkKLSAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0cmlu
Z0ltcGwqPigmaW1wbCkpCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYg
c3RyaW5nKQorICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJp
bmcpKQogewogfQogCi1pbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCogaW1w
bCkKLSAgICA6IG1faW1wbChyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPihpbXBsKSkKK2lu
bGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgOiBtX2lt
cGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSkKIHsKIH0KIAotdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1TdHJp
bmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+JiB2ZWN0b3IpCi0gICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6
OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPigq
U3RyaW5nSW1wbDo6ZW1wdHkoKSkpCit0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gU3RyaW5nOjpTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFy
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQorICAgIDogbV9pbXBs
KHZlY3Rvci5zaXplKCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9y
LnNpemUoKSkgOiBSZWY8U3RyaW5nSW1wbD4geyAqU3RyaW5nSW1wbDo6ZW1wdHkoKSB9KQogewog
fQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxM
Q2hhcj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Y2hh
cmFjdGVyczxMQ2hhcj4oKSBjb25zdAogewotICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgcmV0
dXJuIGNoYXJhY3RlcnM4KCk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBVQ2hhciog
U3RyaW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBjb25z
dCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KCFpczhCaXQoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOwogfQogCi1pbmxpbmUgYm9v
bCBTdHJpbmc6OmNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0CitpbmxpbmUgVUNoYXIgU3RyaW5n
OjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1wbCB8
fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gKCptX2ltcGwpW2luZGV4XTsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFjZW1lbnQpCiB7Ci0gICAgaWYgKGlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0g
bV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAqdGhpczsK
K30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwg
PSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudC5pbXBsKCkpOworICAgIHJldHVy
biAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQoreworICAgIGlmIChtX2ltcGwp
CisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNl
bWVudC5pbXBsKCkpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3Ry
aW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnQpCit7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50LmltcGwoKSk7CisgICAgcmV0
dXJuICp0aGlzOworfQogCi0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
K3RlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5FIFN0cmluZyYg
U3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyQ291bnRdKQoreworICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1f
aW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50
IC0gMSk7CisgICAgcmV0dXJuICp0aGlzOworfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMgPSBjaGFyYWN0ZXJzMTYoKTsKLSAgICBVQ2hhciBvcmVkID0gMDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1faW1wbC0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgb3JlZCB8PSBjaGFy
YWN0ZXJzW2ldOwotICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOworaW5saW5lIFZlY3RvcjxT
dHJpbmc+IFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3VsdDsKKyAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNw
bGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3VsdDsKKyAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIFN0
cmluZyBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFZlY3RvcjxVQ2hhciwg
aW5saW5lQ2FwYWNpdHk+JiBidWZmZXIpCit7CisgICAgcmV0dXJuIG1ha2U4Qml0RnJvbTE2Qml0
U291cmNlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorCitpbmxpbmUgVUNoYXJE
aXJlY3Rpb24gU3RyaW5nOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSkgY29uc3QKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICByZXR1cm4g
bV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7
CisgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KQorICAgICAgICAqaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSBmYWxzZTsKKyAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOworfQorCitp
bmxpbmUgdm9pZCBTdHJpbmc6OmNsZWFySW1wbElmTm90U2hhcmVkKCkKK3sKKyAgICBpZiAobV9p
bXBsICYmIG1faW1wbC0+aGFzT25lUmVmKCkpCisgICAgICAgIG1faW1wbCA9IG51bGxwdHI7Cit9
CisKK2lubGluZSB2b2lkIFN0cmluZzo6YXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmICht
X2ltcGwpCisgICAgICAgIG1faW1wbC0+YXNzZXJ0Q2FnZWQoKTsKK30KKworaW5saW5lIHZvaWQg
U3RyaW5nOjpyZWxlYXNlQXNzZXJ0Q2FnZWQoKSBjb25zdAoreworICAgIGlmIChtX2ltcGwpCisg
ICAgICAgIG1faW1wbC0+cmVsZWFzZUFzc2VydENhZ2VkKCk7CiB9CiAKICNpZmRlZiBfX09CSkNf
XwpAQCAtNjU2LDE5ICs2MDUsNiBAQCBpbmxpbmUgTlNTdHJpbmcgKiBuc1N0cmluZ05pbElmRW1w
dHkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKICNlbmRpZgogCi1pbmxpbmUgYm9vbCBTdHJpbmc6
OmNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QKLXsKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzOCgpLCBtX2ltcGwtPmxlbmd0aCgpKTsKLQotICAg
IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVyczE2KCksIG1faW1wbC0+bGVu
Z3RoKCkpOwotfQotCi1XVEZfRVhQT1JUX1NUUklOR19BUEkgaW50IGNvZGVQb2ludENvbXBhcmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0KIGlubGluZSBib29sIGNvZGVQb2ludENv
bXBhcmVMZXNzVGhhbihjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKIHsKICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZShhLmltcGwoKSwgYi5pbXBsKCkpIDwgMDsKQEAgLTY5Nyw0
OSArNjMzLDYgQEAgaW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBl
PiYgdmVjdG9yLCB1bnNpZ25lZCBjaGFyIG51bWJlcikKICAgICB9CiB9CiAKLXRlbXBsYXRlPGJv
b2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlu
bGluZSBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hh
cmFjdGVycywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXJhY3RlcnNb
aV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPgotaW5saW5lIGJv
b2wgU3RyaW5nOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKLXsKLSAgICBzaXplX3Qg
bGVuID0gbGVuZ3RoKCk7Ci0KLSAgICBpZiAoIWxlbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyLCBMQ2hhcj4oY2hhcmFjdGVyczgoKSwgbGVuKTsKLSAg
ICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3Rlciwg
VUNoYXI+KGNoYXJhY3RlcnMxNigpLCBsZW4pOwotfQotCi0vLyBTdHJpbmdIYXNoIGlzIHRoZSBk
ZWZhdWx0IGhhc2ggZm9yIFN0cmluZwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRIYXNoOwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPiB7Ci0gICAgdHlw
ZWRlZiBTdHJpbmdIYXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Ci0KLWNsYXNzIEFTQ0lJ
TGl0ZXJhbCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQVNDSUlMaXRlcmFsKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMpIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpIHsgfQotICAgIG9wZXJhdG9y
IGNvbnN0IGNoYXIqKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Y29uc3QgY2hhciogbV9jaGFyYWN0ZXJzOwotfTsKLQotLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBz
dHJpbmcuCi1XVEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygp
OwotCiBpbmxpbmUgU3RyaW5nIFN0cmluZzo6ZnJvbVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYg
Y2hhcmFjdGVycykKIHsKICAgICBpZiAoY2hhcmFjdGVycy5pc0VtcHR5KCkpCkBAIC03NjcsMzgg
KzY2MCwzMCBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGlubGluZSBib29sIHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgUwogICAgIHJldHVybiBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRlcnMp
OwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8
U3RyaW5nPiB7Ci0gICAgdXNpbmcgUmV0dXJuVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBBZGRp
dGlvbmFsQXJndW1lbnRUeXBlID0gdm9pZDsKLSAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3Rl
cnMsIGxlbmd0aCB9OyB9Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpD
U3RyaW5nOwordXNpbmcgV1RGOjpBU0NJSUxpdGVyYWw7CiB1c2luZyBXVEY6OktlZXBUcmFpbGlu
Z1plcm9zOwogdXNpbmcgV1RGOjpTdHJpbmc7Ci11c2luZyBXVEY6OmVtcHR5U3RyaW5nOwogdXNp
bmcgV1RGOjphcHBlbmROdW1iZXI7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsK
LXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9Eb3VibGU7Cit1c2luZyBXVEY6
OmNoYXJhY3RlcnNUb0Zsb2F0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnQ2NDsKIHVzaW5n
IFdURjo6Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3Q7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdDsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0OwogdXNpbmcg
V1RGOjpjaGFyYWN0ZXJzVG9JbnQ7Ci11c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ7Ci11c2lu
ZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0OwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50NjQ7
CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0cjsKLXVzaW5nIFdURjo6Y2hhcmFjdGVyc1Rv
RG91YmxlOwotdXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9GbG9hdDsKK3VzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvSW50UHRyU3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRTdHJpY3Q7Cit1
c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NDsKK3VzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUlu
dDY0U3RyaWN0OwordXNpbmcgV1RGOjpjaGFyYWN0ZXJzVG9VSW50OwordXNpbmcgV1RGOjpjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0OwordXNpbmcgV1RGOjplbXB0eVN0cmluZzsKIHVzaW5nIFdURjo6
ZXF1YWw7CiB1c2luZyBXVEY6OmZpbmQ7CiB1c2luZyBXVEY6OmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM7CiB1c2luZyBXVEY6OmlzU3BhY2VPck5ld2xpbmU7CiB1c2luZyBXVEY6OnJldmVyc2VGaW5k
OwotdXNpbmcgV1RGOjpBU0NJSUxpdGVyYWw7CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlckxhdGluMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcAppbmRleCAyNWEwZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlLi5i
ODEwOWQ3NjE5YTU0MmJlMmQyOTZjZWQwYzI2YmYzNTVmMGNhZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApAQCAtMTQwLDcgKzE0MCw3
IEBAIHN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdVRleHQsIGludDY0X3Qg
aW5kZXgsIFVCb29sIGZvcndhcmQpCiAgICAgfQogICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNodW5r
TmF0aXZlU3RhcnQpOwogCi0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNo
YXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRl
eHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVy
cyhjb25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxj
b25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7CiAKICAgICB1VGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKIApAQCAtMTc4LDcgKzE3
OCw3IEBAIHN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGlu
dDY0X3Qgc3RhcnQsIGludDY0X3QgbGltaXQsIFVDCiAgICAgICAgIGlmICh0cmltbWVkTGVuZ3Ro
ID4gZGVzdENhcGFjaXR5KQogICAgICAgICAgICAgdHJpbW1lZExlbmd0aCA9IGRlc3RDYXBhY2l0
eTsKIAotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29u
c3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRyaW1tZWRMZW5ndGgpKTsKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVz
dCwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRyaW1tZWRMZW5ndGgpKTsKICAgICB9CiAKICAgICBpZiAobGVu
Z3RoIDwgZGVzdENhcGFjaXR5KSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgdGV4
dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2
NF90IG5hdGkKICAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7
CiAgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwogICAg
IHRleHQtPmNodW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKLSAg
ICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29u
dGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5r
TmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5r
TGVuZ3RoKSk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoY29uc3RfY2FzdDxVQ2hh
cio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQt
PnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRleHRMYXRpbjFD
b250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKaW5kZXggYjQ5N2FkYzc3YWQ4OTM0YWFmYTc1MzM1M2Y4ZGZiNDMxNDRkZmY0
My4uYzkxNzFkYzJhM2I0NjQyODQwOTQyZTllOTUxNDZmNTc5OTEwYTU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKQEAgLTE3NCwxMSArMTc0LDYgQEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUK
ICAgICByZXR1cm4gcXVlcnlEaWN0aW9uYXJ5OwogfQogICAgIAotc3RhdGljIGJvb2wgaGFzQ2Fz
ZUluc2Vuc2l0aXZlUHJlZml4KGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFN0cmluZyYgcHJl
Zml4KQotewotICAgIHJldHVybiBpbnB1dC5zdGFydHNXaXRoKHByZWZpeCwgZmFsc2UpOwotfQot
ICAgIAogc3RhdGljIGJvb2wgaXNZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0
cmluZyBob3N0TmFtZSA9IHVybC5ob3N0KCk7CkBAIC0yNjQsNyArMjU5LDcgQEAgc3RhdGljIFVS
TCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VU
dWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICB9IGVsc2UgaWYgKGhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChwYXRoLCAiL3YvIikg
fHwgaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4KHBhdGgsICIvZS8iKSkgeworICAgIH0gZWxzZSBp
ZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKICAgICAgICAg
U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAg
ICAgIFN0cmluZyB2aWRlb0lEOwogICAgICAgICBTdHJpbmcgcGF0aEFmdGVyRmlyc3RBbXBlcnNh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDBlYTkwZjU4OWIyYWJjYTIyYTI5YmJmOGEyNTViOGU5
N2U5ZTgwMjEuLjdlYzI3ODYzODBkNmEwYTgzYjdjMzBlY2I0NjAzMjkxYjVhMjhjOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUK
ICAgICAgICAgaWYgKChoZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRF
eHRlbnNpb25zCiAgICAgICAgICAgICB8fCBoZWFkZXJOYW1lID09IEhUVFBIZWFkZXJOYW1lOjpT
ZWNXZWJTb2NrZXRBY2NlcHQKICAgICAgICAgICAgIHx8IGhlYWRlck5hbWUgPT0gSFRUUEhlYWRl
ck5hbWU6OlNlY1dlYlNvY2tldFByb3RvY29sKQotICAgICAgICAgICAgJiYgIXZhbHVlLmNvbnRh
aW5zT25seUFTQ0lJKCkpIHsKKyAgICAgICAgICAgICYmICF2YWx1ZS5pc0FsbEFTQ0lJKCkpIHsK
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcobmFtZSwgIiBoZWFkZXIg
dmFsdWUgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMjk5MmEwOTIxZTUyMzY0MThjNzEyN2RkNjY1
YjZkNzNhNTVhYjdiZi4uMWRmMWYwNTEyZjEyNjdkMGViMzBjZjJkY2JiMDdiZTJiMWM3MmY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZXRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVu
dC5oIgpAQCAtMTYxNSwxNCArMTYxNiwxNCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNo
ZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlLCBuZXcgbGluZSwgdGFn
IG5vZGUuCiAgICAgICAgICAgICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoaXRlcmF0b3IudGV4dCgpWzBdKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc0hUTUxTcGFjZShpdGVyYXRvci50ZXh0KClbMF0pKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGhhcyBCUiB0YWcsIHdlIHdhbnQgdG8gc2V0IHRo
ZSBjdXJyZW50Tm9kZSB0byBpdC4KICAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9
IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYg
Y2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnROb2RlID0gY2hpbGROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVw
bGFjZWROb2RlT3JCUiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoRWxl
bWVudCAqc2hhZG93SG9zdCA9IGN1cnJlbnROb2RlLT5zaGFkb3dIb3N0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBzaGFkb3dIb3N0ID0gY3VycmVudE5vZGUtPnNo
YWRvd0hvc3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGVu
dGVyaW5nIHRleHQgY29udHJvbHMsIHdlIHNob3VsZCBzZXQgdGhlIGN1cnJlbnROb2RlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0byBiZSB0aGUgc2hhZG93IGhvc3Qgd2hlbiB0aGVyZSdz
IG5vIGNvbnRlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZUlzVGV4dENvbnRy
b2woc2hhZG93SG9zdCkgJiYgY3VycmVudE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCmluZGV4
IDZlMzAxYjBjMjVjMzljM2EzNGI3OWYxOGUzNzhiNTUzNmQ2MjIxMWMuLmQ1ZGI5ZTI0NWQwZGQ0
MDUwYzRhZjhlOWM2NmJhNmM4OTRjOTE5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5TGlzdDo6Y2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJz
KFJlbmRlck9iamVjdCogbGlzdEkKICAgICAvLyB0aG9zZSByZW5kZXJlcnMgYXMgImlnbm9yZWQi
IG9iamVjdHMuCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyB0ZXh0ID0gYXhPYmotPnRl
eHRVbmRlckVsZW1lbnQoKTsKLSAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmNv
bnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gIXRleHQuaXNFbXB0eSgpICYmICF0
ZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA1N2QwZWFjNzM1MzYwZDc1
YzIxM2U4YmU1NWUxZTU5MGFkOTljZGNmLi5lOTRhYTk0NmRjZjczNTQ3MjgwZjkzYzQ5MTI3ZTEy
ZWQ3NTUxMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNDgxLDEyICs0ODEsMTIgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTZWFyY2hGaWVsZCgpIGNvbnN0CiAKICAgICAvLyBD
aGVjayB0aGUgbm9kZSBuYW1lIG9mIHRoZSBpbnB1dCB0eXBlLCBzb21ldGltZXMgaXQncyAic2Vh
cmNoIi4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1
dGUobmFtZUF0dHIpOwotICAgIGlmIChuYW1lQXR0cmlidXRlLmNvbnRhaW5zKCJzZWFyY2giLCBm
YWxzZSkpCisgICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgi
c2VhcmNoIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2hlY2sgdGhlIGZvcm0g
YWN0aW9uIGFuZCB0aGUgbmFtZSwgd2hpY2ggd2lsbCBzb21ldGltZXMgYmUgInNlYXJjaCIuCiAg
ICAgYXV0byogZm9ybSA9IGlucHV0RWxlbWVudC5mb3JtKCk7Ci0gICAgaWYgKGZvcm0gJiYgKGZv
cm0tPm5hbWUoKS5jb250YWlucygic2VhcmNoIiwgZmFsc2UpIHx8IGZvcm0tPmFjdGlvbigpLmNv
bnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpKQorICAgIGlmIChmb3JtICYmIChmb3JtLT5uYW1lKCku
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikgfHwgZm9ybS0+YWN0aW9uKCkuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgic2VhcmNoIikpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDI5MTkxNDIwNzc3N2M1OWU0ODkyZTA0
NTE2NTY0YjMxZjU2NjQ5MDIuLmJkNGViODE5OTkyZTExODhjMjYwZjg0ZTJmMzBiODg2MTJkN2I1
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMjg5LDkgKzI4OSw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcqIHRleHQpIGNvbnN0CiAg
ICAgLy8gSWYgdGV4dCBpcyBudWxsIG9yIGVtcHR5IHdlIHJldHVybiB0cnVlLgogICAgIHJldHVy
biAhdGV4dAogICAgICAgICB8fCB0ZXh0LT5pc0VtcHR5KCkKLSAgICAgICAgfHwgdGl0bGUoKS5j
b250YWlucygqdGV4dCwgZmFsc2UpCi0gICAgICAgIHx8IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpLmNvbnRhaW5zKCp0ZXh0LCBmYWxzZSkKLSAgICAgICAgfHwgc3RyaW5nVmFsdWUoKS5jb250
YWlucygqdGV4dCwgZmFsc2UpOworICAgICAgICB8fCBmaW5kUGxhaW5UZXh0KHRpdGxlKCksICp0
ZXh0LCBDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIHx8IGZpbmRQbGFpblRleHQoYWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uKCksICp0ZXh0LCBDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIHx8IGZp
bmRQbGFpblRleHQoc3RyaW5nVmFsdWUoKSwgKnRleHQsIENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAK
IC8vIEFSSUEgbWFya3MgZWxlbWVudHMgYXMgaGF2aW5nIHRoZWlyIGFjY2Vzc2libGUgbmFtZSBk
ZXJpdmUgZnJvbSBlaXRoZXIgdGhlaXIgY29udGVudHMsIG9yIHRoZWlyIGF1dGhvciBwcm92aWRl
IG5hbWUuCkBAIC04MzgsOCArODM4LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNl
bGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEKICAgICAg
ICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNsb3Nlc3RTdHJpbmdS
YW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0
aXZpdHkpIHsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0
eTo6RmluZEFuZENhcGl0YWxpemU6Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcg
PSBjbG9zZXN0U3RyaW5nOwotICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFj
ZW1lbnRTdHJpbmcsIDApOworICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gY2Fw
aXRhbGl6ZShjbG9zZXN0U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFrZSBsb2Nh
bGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIHJlcGxh
Y2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kVXBwZXJjYXNlOgpA
QCAtODU2LDcgKzg1NSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0
KEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEqIGNyaXRlcmlhCiAgICAgICAgICAgICAg
ICAgLy8gKHVubGVzcyB3ZSdyZSByZXBsYWNpbmcgd2l0aCBhbiBhYmJyZXZpYXRpb24uKQogICAg
ICAgICAgICAgICAgIGlmIChjbG9zZXN0U3RyaW5nLmxlbmd0aCgpID4gMCAmJiByZXBsYWNlbWVu
dFN0cmluZy5sZW5ndGgoKSA+IDIgJiYgcmVwbGFjZW1lbnRTdHJpbmcgIT0gcmVwbGFjZW1lbnRT
dHJpbmcuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChjbG9zZXN0U3RyaW5nWzBdID09IHVfdG91cHBlcihjbG9zZXN0U3RyaW5nWzBd
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFsaXplZCgmcmVwbGFjZW1lbnRT
dHJpbmcsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBj
YXBpdGFsaXplKHJlcGxhY2VtZW50U3RyaW5nLCAnICcpOyAvLyBGSVhNRTogTmVlZHMgdG8gdGFr
ZSBsb2NhbGUgaW50byBhY2NvdW50IHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJl
cGxhY2VtZW50U3RyaW5nLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsgLy8gRklY
TUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxMTNmZmY1YzIzYTUxNWYyYzk2Nzc5NGE4N2ZiZTFmMjIz
M2IzOWZjLi42ZGI5Zjc3MTE1NmNjZTkxYzI5NTBhYzJjOTg3YWEyODRhMGI0NTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdAogc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb24gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoY29uc3QgU3Ry
aW5nJiBhbHRUZXh0KQogewogICAgIC8vIERvbid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBh
biBhbHQgdGFnLgotICAgIGlmICghYWx0VGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisg
ICAgaWYgKCFhbHRUZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpCiAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0
OwogICAgIAogICAgIC8vIFRoZSBpbmZvcm1hbCBzdGFuZGFyZCBpcyB0byBpZ25vcmUgaW1hZ2Vz
IHdpdGggemVyby1sZW5ndGggYWx0IHN0cmluZ3MuCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QKICAgICAgICAgfQogCiAgICAgICAgIC8vIHRleHQgZWxlbWVudHMgdGhhdCBhcmUg
anVzdCBlbXB0eSB3aGl0ZXNwYWNlIHNob3VsZCBub3QgYmUgcmV0dXJuZWQKLSAgICAgICAgcmV0
dXJuIHJlbmRlclRleHQudGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAg
IHJldHVybiByZW5kZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPigpOwogICAgIH0KICAgICAKICAgICBpZiAoaXNIZWFkaW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RB
dGsuY3BwCmluZGV4IDE3NTY2YjE3YzFlOTJjOThlNmRiMmRjOTMzOGRjZDNlMzQ0N2U2NDIuLjU5
MzNhMTlhN2I4ZmFkYTJmYWI4MTZjN2ZmOTZkMTYwMDM0NTdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RB
dGsuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
Z2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCkgY29uc3QKICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9k
ZSgpOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlID8gbm9kZS0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAg
dGV4dExlbmd0aCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikudGV4dExlbmd0aCgp
OworICAgICAgICB0ZXh0TGVuZ3RoID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKS50
ZXh0KCkubGVuZ3RoKCk7CiAKICAgICAvLyBHZXQgdGhlIHRleHQgbGVuZ3RoIGZyb20gdGhlIGVs
ZW1lbnRzIHVuZGVyIHRoZQogICAgIC8vIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGlmIHRoZSB2YWx1
ZSBpcyBzdGlsbCB6ZXJvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0U3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRTdHJpbmdzLmNwcAppbmRleCA2OWRkNGJmODIwNGExOTk1N2Y4YzhhNzFjYTA5NmUw
ZDZjMTBjZjMwLi5iNTQzOGY3ZTFlMGE1NWFhOWYwNGUyMDc2MjFkNzQxYjM0NmJmYWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNw
cApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBzdGF0aWMgaW5saW5l
IFN0cmluZyBzdHJpbmdUb0J5dGVTdHJpbmcoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSwgU3RyaW5nJiYgc3RyaW5nKQogewotICAgIGlmICghc3RyaW5nLmNvbnRhaW5z
T25seUxhdGluMSgpKSB7CisgICAgaWYgKCFzdHJpbmcuaXNBbGxMYXRpbjEoKSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDM3YzJjYThmOTk1NjFkZTNlODAwOGQ0NzYw
ZDEwMTNkNjlmZmYzMTUuLjE2NjE0YzVjYmY0NjA1MWZlNzQwZWUyNWZkYzFmM2M4MzFhZDI0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC01MSw5ICs1MSw4IEBAIG5hbWVzcGFjZSBDb250
ZW50RXh0ZW5zaW9ucyB7CiAgICAgCiBzdGF0aWMgYm9vbCBjb250YWluc09ubHlBU0NJSVdpdGhO
b1VwcGVyY2FzZShjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZG9tYWluLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IGRvbWFp
bi5hdChpKTsKLSAgICAgICAgaWYgKCFpc0FTQ0lJKGMpIHx8IGlzQVNDSUlVcHBlcihjKSkKKyAg
ICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogU3RyaW5nVmlldyB7IGRvbWFpbiB9LmNvZGVVbml0cygp
KSB7CisgICAgICAgIGlmICghaXNBU0NJSShjaGFyYWN0ZXIpIHx8IGlzQVNDSUlVcHBlcihjaGFy
YWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDMwNzIxMDFmM2ZhMDFjZDFjZjgyYmU3
Yzg5YWFmMjEyODE2ZTUyMTYuLmMwZGIxYjEyZGE3M2FjMGM1Mjc5NzNkMDFiNTkzYWUwNjc4Zjk0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6OnBh
aXI8VmVjdG9yPEFjdGlvbj4sIFZlY3RvcjxTdHJpbmc+PiBDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ6OmFjdGlvbnNGb3JSZQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcgPSByZXNvdXJjZUxvYWRJbmZvLnJlc291cmNlVVJMLnN0cmluZygpOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCksICJBIGRl
Y29kZWQgVVJMIHNob3VsZCBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVycy4gVGhlIG1hdGNo
aW5nIGFsZ29yaXRobSBhc3N1bWVzIHRoZSBpbnB1dCBpcyBBU0NJSS4iKTsKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHVybFN0cmluZy5pc0FsbEFTQ0lJKCksICJBIGRlY29kZWQgVVJMIHNob3Vs
ZCBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVycy4gVGhlIG1hdGNoaW5nIGFsZ29yaXRobSBh
c3N1bWVzIHRoZSBpbnB1dCBpcyBBU0NJSS4iKTsKICAgICBjb25zdCBDU3RyaW5nJiB1cmxDU3Ry
aW5nID0gdXJsU3RyaW5nLnV0ZjgoKTsKIAogICAgIFZlY3RvcjxBY3Rpb24+IGZpbmFsQWN0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuY3BwCmluZGV4IDIyZGZjMTNhODQ2ZjQ2YTgyYmZmNmMwNDc4NzQ5NDVlZWYzZGU5Nzcu
LmUzNTFlMTdkOWVhNzY0YjQ2OGRkZmY2NTNhOGVkMDZjNTEyNWVhODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAt
MzQxLDcgKzM0MSw3IEBAIFVSTEZpbHRlclBhcnNlcjo6flVSTEZpbHRlclBhcnNlcigpID0gZGVm
YXVsdDsKIAogVVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1cyBVUkxGaWx0ZXJQYXJzZXI6OmFk
ZFBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIHBhdHRlcm5Jc0Nhc2VTZW5zaXRp
dmUsIHVpbnQ2NF90IHBhdHRlcm5JZCkKIHsKLSAgICBpZiAoIXBhdHRlcm4uY29udGFpbnNPbmx5
QVNDSUkoKSkKKyAgICBpZiAoIXBhdHRlcm4uaXNBbGxBU0NJSSgpKQogICAgICAgICByZXR1cm4g
Tm9uQVNDSUk7CiAgICAgaWYgKHBhdHRlcm4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRW1w
dHlQYXR0ZXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmlu
ZGV4IDYzNTcyYzUxNWJlYTY2NWY1NjI3NDEyNWJmZjgzY2JhODI0YzE2MWQuLjhhY2Q5YWYxYjAx
ZjAwYmEwYTAyM2U3YzM0MzkwNDQwN2QxODE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBDU1NGb250RmFjZVNy
Y1ZhbHVlOjppc1N1cHBvcnRlZEZvcm1hdCgpIGNvbnN0CiAgICAgLy8gd2Ugd2lsbCBhbHNvIGNo
ZWNrIHRvIHNlZSBpZiB0aGUgVVJMIGVuZHMgd2l0aCAuZW90LiBJZiBzbywgd2UnbGwgYXNzdW1l
IHRoYXQgd2Ugc2hvdWxkbid0IGxvYWQgaXQuCiAgICAgaWYgKG1fZm9ybWF0LmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBDaGVjayBmb3IgLmVvdC4KLSAgICAgICAgaWYgKCFtX3Jlc291cmNlLnN0
YXJ0c1dpdGgoImRhdGE6IiwgZmFsc2UpICYmIG1fcmVzb3VyY2UuZW5kc1dpdGgoIi5lb3QiLCBm
YWxzZSkpCisgICAgICAgIGlmICghcHJvdG9jb2xJcyhtX3Jlc291cmNlLCAiZGF0YSIpICYmIG1f
cmVzb3VyY2UuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmVvdCIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01DU1NOYW1lc3BhY2UuY3BwCmluZGV4IGM2YWE3ODZlZDgyMDIzMzFjODkwMGMxZmNkZDZj
NzZhNTIwMDZhODkuLjkxMzUyMzc3Njk2NTk0MmYyZjUwODYyM2Y2NTY3MGE4YTBhYWUwYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyB2YWx1ZVdpdGhvdXRJbXBvcnRhbnQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIXZhbHVlLmVuZHNXaXRoKCJpbXBvcnRh
bnQiLCBmYWxzZSkpCisgICAgaWYgKCF2YWx1ZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJp
bXBvcnRhbnQiKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgU3RyaW5nIG5ld1ZhbHVl
ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCmluZGV4IGMxNjc4NzliZDkxNDBjMDE0YmY2ZWJmMzhhZjEyOTdkYmViYjEyMDEuLjk5
Y2VlZDQ4NDI3OTA3OTNlNjRmYTJhYzQzNTM0M2JmMTZmNGRiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zMjU0LDcgKzMyNTQs
NyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVtbk5h
bWVzKGNvbnN0IFN0cmluZyYgZ3JpZFJvd05hbQogCiBzdGF0aWMgYm9vbCBwYXJzZUdyaWRUZW1w
bGF0ZUFyZWFzUm93KGNvbnN0IFN0cmluZyYgZ3JpZFJvd05hbWVzLCBOYW1lZEdyaWRBcmVhTWFw
JiBncmlkQXJlYU1hcCwgY29uc3Qgc2l6ZV90IHJvd0NvdW50LCBzaXplX3QmIGNvbHVtbkNvdW50
KQogewotICAgIGlmIChncmlkUm93TmFtZXMuaXNFbXB0eSgpIHx8IGdyaWRSb3dOYW1lcy5jb250
YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgaWYgKGdyaWRSb3dOYW1lcy5pc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzQ1NTU3BhY2U+KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzID0gcGFyc2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVtbk5h
bWVzKGdyaWRSb3dOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXgg
ZTZlZTJhYzI0ZjFkNTM5MTBmMWIyODU2ZThhOGUwNTg5YTdlNGM4ZS4uYzNmNGIwOWZmMjFkYWY0
MTA1YzBiNzc2MWE0ZmI3MjY5OTIyYzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcApAQCAtMTc0LDExICsxNzQsNiBAQCBTdHJpbmcgQ2hhcmFjdGVyRGF0YTo6bm9kZVZhbHVl
KCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhOwogfQogCi1ib29sIENoYXJhY3RlckRhdGE6OmNv
bnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEuY29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpOwotfQotCiBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRh
OjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiB7CiAgICAgc2V0RGF0YShu
b2RlVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggZTRhZDIyMWVkMGZm
ZTFhM2ZlMmQyYzUzNDJhMTQ2ZjRjM2Q2YjRhMi4uMWJiMWJiZWRkYjE1ZWZhMzNhZDRkY2RmYzBi
NzBiNzc1OWVkOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MzksOCArMzksNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gZGVsZXRlRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlRGF0YSh1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgY29udGFpbnNPbmx5
V2hpdGVzcGFjZSgpIGNvbnN0OwotCiAgICAgLy8gTGlrZSBhcHBlbmREYXRhLCBidXQgb3B0aW1p
emVkIGZvciB0aGUgcGFyc2VyIChlLmcuLCBubyBtdXRhdGlvbiBldmVudHMpLgogICAgIC8vIFJl
dHVybnMgaG93IG11Y2ggY291bGQgYmUgYWRkZWQgYmVmb3JlIGxlbmd0aCBsaW1pdCB3YXMgbWV0
LgogICAgIHVuc2lnbmVkIHBhcnNlckFwcGVuZERhdGEoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoTGltaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAppbmRleCBlZmExZTlhNzc4MmU1ZjFkMWYxMmRmYTdmZGI2ZTY5NzUyNzk5YjRm
Li42ZjMzMzI2NDFkMzg2MjdjZTdkN2VkYmU0ZjVhY2M0MTM3NzdjNWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMTE4LDExICsxMTgsMTEgQEAgc3RhdGljIFN0cmluZyBu
b3JtYWxpemVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIHR5cGU7CiAK
ICAgICBTdHJpbmcgbG93ZXJjYXNlVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyh0eXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIGlmIChsb3dlcmNhc2VU
eXBlID09ICJ0ZXh0IiB8fCBsb3dlcmNhc2VUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgidGV4dC9wbGFpbjsiKSkKKyAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidGV4dCIgfHwgbG93
ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIpKQogICAgICAgICByZXR1cm4gInRl
eHQvcGxhaW4iOwotICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ1cmwiIHx8IGxvd2VyY2FzZVR5
cGUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJ0ZXh0L3VyaS1saXN0OyIpKQorICAgIGlm
IChsb3dlcmNhc2VUeXBlID09ICJ1cmwiIHx8IGxvd2VyY2FzZVR5cGUuc3RhcnRzV2l0aCgidGV4
dC91cmktbGlzdDsiKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3VyaS1saXN0IjsKLSAgICBpZiAo
bG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInRleHQvaHRtbDsiKSkK
KyAgICBpZiAobG93ZXJjYXNlVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L2h0bWw7IikpCiAgICAgICAg
IHJldHVybiAidGV4dC9odG1sIjsKIAogICAgIHJldHVybiBsb3dlcmNhc2VUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKaW5kZXggMGM2YmMyNWY0ZmE0ZmYxNGMyODUyY2M1ZmNkNmNkZThkNzhi
ZWZmOC4uODlhNTA2ZmY1MDE3YTM2ZmU4YWU2OTgxMWI1MTVkNGU0YzViYmY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5l
SXRlcmF0b3IuaCIKQEAgLTExNDEsMTEgKzExNDIsMTEgQEAgUG9zaXRpb24gUG9zaXRpb246Omxl
YWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGNvbnNpZGVy
Tm8KIAogICAgIFBvc2l0aW9uIHByZXYgPSBwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKGFmZmlu
aXR5KTsKICAgICBpZiAocHJldiAhPSAqdGhpcyAmJiBpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGRlcHJlY2F0ZWROb2RlKCksIHByZXYuZGVwcmVjYXRlZE5vZGUoKSkgJiYgaXM8VGV4
dD4oKnByZXYuZGVwcmVjYXRlZE5vZGUoKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IGRv
d25jYXN0PFRleHQ+KCpwcmV2LmRlcHJlY2F0ZWROb2RlKCkpLmRhdGEoKTsKLSAgICAgICAgVUNo
YXIgYyA9IHN0cmluZ1twcmV2LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCldOwotICAgICAgICBp
ZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPyAoaXNTcGFjZU9yTmV3bGluZShj
KSB8fCBjID09IG5vQnJlYWtTcGFjZSkgOiBkZXByZWNhdGVkSXNDb2xsYXBzaWJsZVdoaXRlc3Bh
Y2UoYykpCisgICAgICAgIFVDaGFyIGMgPSBkb3duY2FzdDxUZXh0PigqcHJldi5kZXByZWNhdGVk
Tm9kZSgpKS5kYXRhKClbcHJldi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpXTsKKyAgICAgICAg
aWYgKGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzSFRNTFNwYWNlKGMpIHx8
IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShj
KSkgewogICAgICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwcmV2KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcHJldjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB7IH07
CkBAIC0xMTYyLDcgKzExNjMsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dHJhaWxpbmdXaGl0ZXNw
YWNlUG9zaXRpb24oRUFmZmluaXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwcwogICAgIFVDaGFy
IGMgPSB2LmNoYXJhY3RlckFmdGVyKCk7CiAgICAgLy8gVGhlIHNwYWNlIG11c3Qgbm90IGJlIGlu
IGFub3RoZXIgcGFyYWdyYXBoIGFuZCBpdCBtdXN0IGJlIGVkaXRhYmxlLgogICAgIGlmICghaXNF
bmRPZlBhcmFncmFwaCh2KSAmJiB2Lm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpLmlz
Tm90TnVsbCgpKQotICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2Ug
PyAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgOiBkZXByZWNhdGVk
SXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoYykpCisgICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxh
cHNpYmxlV2hpdGVzcGFjZSA/IChpc0hUTUxTcGFjZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkg
OiBkZXByZWNhdGVkSXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoYykpCiAgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgCiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCBiYTA2Zjc5Y2IwZDNlNDE4MjQ5MGMwODY3Mzg4MmU1Y2UyNWVhNDI5Li44YTk5N2U0
ZDljNjFmNDQ0ZTY5ZDQxYmJmZTlkNzMzZDE1NDAzZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0zNTU5LDcgKzM1NTksNyBAQCB2b2lkIEVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVU
aW1lckZpcmVkKCkKICAgICAgICAgICAgIFVDaGFyMzIgYyA9IG5ld1N0YXJ0LmNoYXJhY3RlckJl
Zm9yZSgpOwogICAgICAgICAgICAgLy8gRklYTUU6IFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVy
QWZ0ZXIoKSBhbmQgY2hhcmFjdGVyQmVmb3JlKCkgZG8gbm90IGVtaXQgbmV3bGluZXMgdGhlIHNh
bWUKICAgICAgICAgICAgIC8vIHdheSBhcyBUZXh0SXRlcmF0b3IsIHNvIHdlIGRvIGFuIGlzU3Rh
cnRPZlBhcmFncmFwaCBjaGVjayBoZXJlLgotICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xp
bmUoYykgfHwgYyA9PSAweEEwIHx8IGlzU3RhcnRPZlBhcmFncmFwaChuZXdTdGFydCkpIHsKKyAg
ICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlIHx8
IGlzU3RhcnRPZlBhcmFncmFwaChuZXdTdGFydCkpIHsKICAgICAgICAgICAgICAgICBzdGFydFdv
cmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbmV3QWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQobmV3U3Rh
cnQsIHN0YXJ0V29yZFNpZGUpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElmT25Cb3Vu
ZGFyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBi
MjA3M2FjNGM1Nzk3MzExNmUyZDA2MGY4MjhiMTlhYTUxYWY2ZDBlLi5mMzZlMDVlYWRlNzI0YmJm
YzdkYTk2MDFlMmVmMDliZWRhMzNkMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcApAQCAtMTc2Myw3ICsxNzYzLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6
ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHNlbGVjdGVkKSBjb25z
dAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcbiIsIHNlbGVjdGVkID8gIj09PiAiIDog
IiAgICAiLCBlbGVtZW50LmxvY2FsTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0gZWxzZSBpZiAoaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgewogICAgICAgICBSZW5kZXJU
ZXh0JiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpOwotICAg
ICAgICBpZiAoIXRleHRSZW5kZXJlci50ZXh0TGVuZ3RoKCkgfHwgIXRleHRSZW5kZXJlci5maXJz
dFRleHRCb3goKSkgeworICAgICAgICBpZiAodGV4dFJlbmRlcmVyLnRleHQoKS5pc0VtcHR5KCkg
fHwgIXRleHRSZW5kZXJlci5maXJzdFRleHRCb3goKSkgewogICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVkID8gIj09PiAiIDogIiAgICAiKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjY0MSw3ICsyNjQxLDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXRXb3JkU3RhcnQoKSBjb25zdAogICAgICAgICB9
CiAgICAgICAgIFVDaGFyIGMocG9zLmNoYXJhY3RlckFmdGVyKCkpOwogICAgICAgICBpZiAoYykg
ewotICAgICAgICAgICAgcmVzdWx0ID0gaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAg
fHwgKHVfaXNwdW5jdChjKSAmJiBjICE9ICcsJyAmJiBjICE9ICctJyAmJiBjICE9ICdcJycpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtT
cGFjZSB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYmIGMgIT0gJ1wn
Jyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTI2ODYsNyArMjY4
Niw3IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250
YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzCiAKICAgICBpZiAoaXNFbmRPZlBhcmFncmFw
aChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSkgewogICAgICAgICBVQ2hhciBjKGVuZFZp
c2libGVQb3NCZWZvcmVFeHBhbnNpb24uY2hhcmFjdGVyQmVmb3JlKCkpOwotICAgICAgICBpZiAo
aXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgaWYgKGlzU3BhY2VP
ck5ld2xpbmUoYykgfHwgYyA9PSBub0JyZWFrU3BhY2UpIHsKICAgICAgICAgICAgIC8vIEVuZCBv
ZiBwYXJhZ3JhcGggd2l0aCBzcGFjZS4KICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0
aW9uKCk7CiAgICAgICAgIH0KQEAgLTI3MjksNyArMjcyOSw3IEBAIFZpc2libGVTZWxlY3Rpb24g
RnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29u
c3QgVmlzCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwogICAgICAgICB9
CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlm
IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICBpZiAoaXNTcGFj
ZU9yTmV3bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAgICAgLy8gU3Bh
Y2UgYXQgZW5kIG9mIGxpbmUKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7
CiAgICAgICAgIH0KQEAgLTI3NDQsNyArMjc0NCw3IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVT
ZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlz
CiAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwogICAgICAgICB9CiAgICAg
ICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAgIGlmIChpc1Nw
YWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAgICAgLy8gU3BhY2UgYXQg
ZW5kIG9mIGxpbmUKICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAg
ICAgIH0KQEAgLTI3NjQsNyArMjc2NCw3IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rp
b246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzCiAgICAg
d2hpbGUgKGVuZFZpc2libGVQb3MgIT0gc3RhcnRWaXNpYmxlUG9zKSB7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBwcmV2aW91cyhlbmRWaXNpYmxlUG9zLnByZXZpb3VzKCkpOwogICAgICAgICBV
Q2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCkpOwotICAgICAgICBpZiAoIWlzU3BhY2VP
ck5ld2xpbmUoYykgJiYgYyAhPSAweEEwKQorICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUo
YykgJiYgYyAhPSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZW5k
VmlzaWJsZVBvcyA9IHByZXZpb3VzOwogICAgIH0KQEAgLTI4MDIsNyArMjgwMiw3IEBAIGJvb2wg
RnJhbWVTZWxlY3Rpb246OmFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydChjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWwpCiAgICAgICAgIH0KICAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFj
dGVyQWZ0ZXIoKSk7CiAgICAgICAgIGlmIChjKSB7Ci0gICAgICAgICAgICBpZiAoaXNTcGFjZU9y
TmV3bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgICAgIGlmIChpc1NwYWNlT3JOZXds
aW5lKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgc2F3U3BhY2Ug
PSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNWM5ZjM2MDU3NzcxZjRlNjJkZmJmMGFhZTcx
MTBhYjhmOTJiMGY2Yy4uM2FmMWFjZmIzMWFmNTE3NWVkYzVhMjI5MzczZTcyOGFiNWRlYjk4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxleGV5IFByb3NrdXJ5YWtvdi4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTU3OSw3ICs1NzksNyBAQCBzdGF0aWMgdW5zaWduZWQgdGV4dE5v
ZGVPZmZzZXRJbkZsb3coY29uc3QgVGV4dCYgZmlyc3RUZXh0Tm9kZUluUmFuZ2UpCiAgICAgdW5z
aWduZWQgdGV4dE9mZnNldCA9IDA7CiAgICAgZm9yIChyZW5kZXJlciA9IHJlbmRlcmVyLT5wcmV2
aW91c1NpYmxpbmcoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3VzU2li
bGluZygpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAgICAg
ICAgICB0ZXh0T2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dExl
bmd0aCgpOworICAgICAgICAgICAgdGV4dE9mZnNldCArPSBkb3duY2FzdDxSZW5kZXJUZXh0Pihy
ZW5kZXJlciktPnRleHQoKS5sZW5ndGgoKTsKICAgICB9CiAgICAgcmV0dXJuIHRleHRPZmZzZXQ7
CiB9CkBAIC02NDAsNyArNjQwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKICAgICAgICAgYm9vbCBpc05ld1RleHROb2RlID0gbV9wcmV2aW91c1NpbXBsZVRleHROb2Rl
SW5GbG93ICYmIG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdyAhPSAmdGV4dE5vZGU7CiAg
ICAgICAgIC8vIFNpbXBsZSBsaW5lIGxheW91dCBydW4gcG9zaXRpb25zIGFyZSBhbGwgYWJzb2x1
dGUgdG8gdGhlIHBhcmVudCBmbG93LgogICAgICAgICAvLyBPZmZzZXR0aW5nIGlzIHJlcXVpcmVk
IHdoZW4gbXVsdGlwbGUgcmVuZGVyZXJzIGFyZSBwcmVzZW50LgotICAgICAgICBtX2FjY3VtdWxh
dGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBpc05ld1RleHROb2RlID8gbV9wcmV2aW91c1Np
bXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigpLT50ZXh0KCktPmxlbmd0aCgpIDogMDsKKyAg
ICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgKz0gaXNOZXdUZXh0Tm9k
ZSA/IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdy0+cmVuZGVyZXIoKS0+dGV4dCgpLmxl
bmd0aCgpIDogMDsKICAgICAgICAgbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ID0gJnRl
eHROb2RlOwogCiAgICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBtX2Vu
ZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogcmVuZGVy
ZXJUZXh0Lmxlbmd0aCgpOwpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxk
RW1pdEV4dHJhTmV3bGluZUZvck5vZGUoTm9kZSYgbm9kZSkKIAogc3RhdGljIGludCBjb2xsYXBz
ZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRFbmQpCiB7Ci0gICAg
U3RyaW5nSW1wbCYgdGV4dCA9ICpyZW5kZXJlci50ZXh0KCk7CisgICAgU3RyaW5nSW1wbCYgdGV4
dCA9IHJlbmRlcmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IHRleHRFbmQ7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UodGV4dFtp
XSkpCkBAIC0yNzYzLDQgKzI3NjMsMjAgQEAgUmVmPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0
IFJhbmdlJiByYW5nZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG8KICAgICBy
ZXR1cm4gcmFuZ2VGb3JNYXRjaChyYW5nZSwgb3B0aW9ucywgbWF0Y2hTdGFydCwgbWF0Y2hMZW5n
dGgsIHNlYXJjaEZvcndhcmQpOwogfQogCitib29sIGZpbmRQbGFpblRleHQoY29uc3QgU3RyaW5n
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCit7
CisgICAgU2VhcmNoQnVmZmVyIGJ1ZmZlciB7IHRhcmdldCwgb3B0aW9ucyB9OworICAgIFN0cmlu
Z1ZpZXcgcmVtYWluaW5nVGV4dCB7IGRvY3VtZW50IH07CisgICAgd2hpbGUgKCFyZW1haW5pbmdU
ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICBzaXplX3QgY2hhcmFjdGVyc0FwcGVuZGVkID0gYnVm
ZmVyLmFwcGVuZChkb2N1bWVudCk7CisgICAgICAgIHJlbWFpbmluZ1RleHQgPSByZW1haW5pbmdU
ZXh0LnN1YnN0cmluZyhjaGFyYWN0ZXJzQXBwZW5kZWQpOworICAgICAgICBpZiAocmVtYWluaW5n
VGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBidWZmZXIucmVhY2hlZEJyZWFrKCk7CisgICAg
ICAgIHNpemVfdCBtYXRjaFN0YXJ0T2Zmc2V0OworICAgICAgICBpZiAoYnVmZmVyLnNlYXJjaCht
YXRjaFN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmlu
ZGV4IDIzYzBiNWVjNzViMzcwNjNhZmMyMWNiODNkZWFkM2JiNWE3ODBiMGQuLjg2MGU3NGNmNmE1
MjExOWZkODRmNmQxYzI2YzE4MjkzYTgzMzEyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIElubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgUmVu
ZGVyVGV4dEZyYWdtZW50OworCiBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiBjbGFzcyBS
dW5SZXNvbHZlcjsKIH0KQEAgLTQ3LDYgKzQ4LDcgQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBs
YWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckIK
IFJlZjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zKTsKIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gZmluZENsb3Nlc3RQbGFpblRl
eHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Citib29sIGZpbmRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMpOyAvLyBMZXRzIHVzIHVzZSB0aGUgc2VhcmNoIGFsZ29yaXRobSBvbiBhIHN0cmluZy4KIAog
Ly8gRklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgZWRpdGluZyBkaXJlY3Rv
cnkuIEl0IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBib29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1l
bnQoUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAppbmRleCA5NjIwYmZiNzEyNzBjY2RjMzYzNWFkZmRkYWZlZjMyMWE2MDg5NDBmLi5mZDc5MDY2
ZmJmYWU0NmI4YWM5MjJlZDM2ZGNiMjMwZDZmZmU5MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFR5cGluZ0NvbW1h
bmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlw
ZSkKICAgICAgICAgVUNoYXIzMiBjID0gcHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKTsKICAgICAg
ICAgLy8gRklYTUU6IFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoKSBhbmQgY2hhcmFj
dGVyQmVmb3JlKCkgZG8gbm90IGVtaXQgbmV3bGluZXMgdGhlIHNhbWUKICAgICAgICAgLy8gd2F5
IGFzIFRleHRJdGVyYXRvciwgc28gd2UgZG8gYW4gaXNFbmRPZlBhcmFncmFwaCBjaGVjayBoZXJl
LgotICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNFbmRP
ZlBhcmFncmFwaChwcmV2aW91cykpIHsKKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykg
fHwgYyA9PSBub0JyZWFrU3BhY2UgfHwgaXNFbmRPZlBhcmFncmFwaChwcmV2aW91cykpIHsKICAg
ICAgICAgICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAg
IH0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAxID0gc3RhcnRPZldvcmQocHJldmlvdXMsIHN0
YXJ0V29yZFNpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IDZhYmNkNGY5NGNlNWJhYTliYmIyNmY0MzVjODNhNGY0MmJkYjc0N2MuLmNjMTdkZDYzZWZjZDA2
NzM3YTYwZGU4MDk2M2RjMTQzMzc4NjYxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTExOTMsNyArMTE5Myw3IEBAIE5vZGUqIGZpbmRTdGFydE9mUGFyYWdy
YXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJvb3QsIE5vZGUqIHN0YXJ0QmxvY2ss
CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxUZXh0Pigq
bikpOwogICAgICAgICAgICAgdHlwZSA9IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3I7CiAgICAgICAgICAgICBpZiAoc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHsKLSAgICAgICAg
ICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmRvd25jYXN0PFJlbmRlclRleHQ+KCpyKS50ZXh0
KCk7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRl
eHQ+KCpyKS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgaW50IGkgPSB0ZXh0Lmxlbmd0aCgpOwog
ICAgICAgICAgICAgICAgIGludCBvID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgIGlmIChuID09
IHN0YXJ0Tm9kZSAmJiBvIDwgaSkKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIE5vZGUqIGZpbmRFbmRP
ZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGhpZ2hlc3RSb290LCBOb2RlKiBzdGF5
SW5zaWRlQmxvCiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxUZXh0PigqbikpOwogICAgICAgICAgICAgdHlwZSA9IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3I7CiAgICAgICAgICAgICBpZiAoc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmRvd25jYXN0PFJlbmRlclRleHQ+
KCpyKS50ZXh0KCk7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCYgdGV4dCA9IGRvd25jYXN0
PFJlbmRlclRleHQ+KCpyKS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgaW50IG8gPSBuID09IHN0
YXJ0Tm9kZSA/IG9mZnNldCA6IDA7CiAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IHRleHQu
bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IG87IGkgPCBsZW5ndGg7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDMwYWQ2ZGJiNjQ3Yzk4NjMyYjlmOTEwNGFlN2Y3Y2Q3MDllNGRjZWUuLjZiMTM5N2ViZjcz
N2MxZWYxNzQ5MDQ4ZmUyMTc2ODUwZDQyNjU5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIyMjQsNyArMjIyNCw3IEBAIHZvaWQgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAg
ICAgYm9vbCB3YXNTcGFjZSA9IGZhbHNlOwogICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVl
Rm9yTm9kZShjaGFyYWN0ZXJEYXRhLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpLnN0YXJ0c1dpdGgo
InByZSIpKSB7CiAgICAgICAgIGlmICh0ZXh0TGVuZ3RoICYmIG9yaWdpbmFsU3RyaW5nLmxlbmd0
aCgpICYmIF9mbGFncy5pc1NvZnQpIHsKLSAgICAgICAgICAgIHVuaWNoYXIgYyA9IG9yaWdpbmFs
U3RyaW5nLmF0KDApOworICAgICAgICAgICAgdW5pY2hhciBjID0gb3JpZ2luYWxTdHJpbmcuY2hh
cmFjdGVyQXQoMCk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBj
ID09IE5TUGFyYWdyYXBoU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGMgPT0gTlNMaW5lU2VwYXJhdG9y
Q2hhcmFjdGVyIHx8IGMgPT0gTlNGb3JtRmVlZENoYXJhY3RlciB8fCBjID09IFdlYk5leHRMaW5l
Q2hhcmFjdGVyKQogICAgICAgICAgICAgICAgIHJhbmdlVG9SZXBsYWNlID0gTlNNYWtlUmFuZ2Uo
dGV4dExlbmd0aCAtIDEsIDEpOwogICAgICAgICB9CkBAIC0yMjM0LDcgKzIyMzQsNyBAQCB2b2lk
IEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJEYXRh
KQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIExDaGFyIG5vQnJlYWtT
cGFjZVJlcHJlc2VudGF0aW9uID0gMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFVDaGFyIGMgPSBvcmlnaW5hbFN0cmluZy5hdChp
KTsKKyAgICAgICAgICAgIFVDaGFyIGMgPSBvcmlnaW5hbFN0cmluZy5jaGFyYWN0ZXJBdChpKTsK
ICAgICAgICAgICAgIGJvb2wgaXNXaGl0ZXNwYWNlID0gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8
IGMgPT0gJ1xyJyB8fCBjID09ICdcdCcgfHwgYyA9PSAweGMgfHwgYyA9PSAweDIwMGI7CiAgICAg
ICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKQogICAgICAgICAgICAgICAgIHdhc1NwYWNlID0gKCF3
YXNMZWFkaW5nIHx8ICFzdXBwcmVzc0xlYWRpbmdTcGFjZSk7CkBAIC0yMjYwLDcgKzIyNjAsNyBA
QCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRhJiBjaGFyYWN0
ZXJEYXRhKQogICAgIGlmIChvdXRwdXRTdHJpbmcubGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5n
IHRleHRUcmFuc2Zvcm0gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjaGFyYWN0ZXJE
YXRhLCBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodGV4dFRyYW5zZm9y
bSA9PSAiY2FwaXRhbGl6ZSIpCi0gICAgICAgICAgICBtYWtlQ2FwaXRhbGl6ZWQoJm91dHB1dFN0
cmluZywgMCk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQgdG8g
d29yayBjb3JyZWN0bHkuCisgICAgICAgICAgICBvdXRwdXRTdHJpbmcgPSBjYXBpdGFsaXplKG91
dHB1dFN0cmluZywgJyAnKTsgLy8gRklYTUU6IE5lZWRzIHRvIHRha2UgbG9jYWxlIGludG8gYWNj
b3VudCB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9
PSAidXBwZXJjYXNlIikKICAgICAgICAgICAgIG91dHB1dFN0cmluZyA9IG91dHB1dFN0cmluZy5j
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7IC8vIEZJWE1FOiBOZWVkcyBsb2NhbGUg
dG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgIGVsc2UgaWYgKHRleHRUcmFuc2Zvcm0gPT0gImxv
d2VyY2FzZSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IGViMjg2NjZlODUzMzg5ZDZiNmNhNTYxZTcxNDdjNTUz
YTNlMjEyYmMuLjZhM2ZlNDYwNmQ2NjBkNzIxNzg5YjJhMzZhMDY5Njg4Y2JkNzBlZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIFN0cmluZyBzdHJpcE1pY3Jvc29mdFBy
ZWZpeChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBJdCdzIGEgc2ltcGxlLW1pbmRlZCB3
YXkgdG8gaWdub3JlIHRoZSBDRl9IVE1MIGNsaXBib2FyZCBmb3JtYXQsIGp1c3Qgc2tpcHBpbmcg
b3ZlciB0aGUKICAgICAvLyBkZXNjcmlwdGlvbiBwYXJ0IGFuZCBwYXJzaW5nIHRoZSBlbnRpcmUg
Y29udGV4dCBwbHVzIGZyYWdtZW50LgogICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aCgiVmVyc2lv
bjoiKSkgewotICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJpbmcuZmluZElnbm9yaW5nQ2Fz
ZSgiPGh0bWwiKTsKKyAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0gc3RyaW5nLmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgiPGh0bWwiKTsKICAgICAgICAgaWYgKGxvY2F0aW9uICE9IG5vdEZvdW5kKQog
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcobG9jYXRpb24pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggZTMxMzQxOTg0ODBlZGJmZjE4OThjYjE2NjlkYmZi
MmY1YmMyODgwMy4uMmYxZGU5YmNlY2VmNTIwY2ExMWU4MGQzNjM4ZjcwMDFjN2I4NjNhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBBdXRvZmlsbERhdGEg
QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRybwogICAgIC8vIDE3LiBJZiB0aGUgZmlyc3QgZWlnaHQgY2hhcmFjdGVycyBvZiB0
aGUgaW5kZXh0aCB0b2tlbiBpbiB0b2tlbnMgYXJlIG5vdCBhbiBBU0NJSSBjYXNlLWluc2Vuc2l0
aXZlCiAgICAgLy8gbWF0Y2ggZm9yIHRoZSBzdHJpbmcgInNlY3Rpb24tIiwgdGhlbiBqdW1wIHRv
IHRoZSBzdGVwIGxhYmVsZWQgZGVmYXVsdC4KICAgICBjb25zdCBhdXRvJiBzZWN0aW9uVG9rZW4g
PSB0b2tlbnNbaW5kZXhdOwotICAgIGlmICghc2VjdGlvblRva2VuLnN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgic2VjdGlvbi0iKSkKKyAgICBpZiAoIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc2VjdGlvblRva2VuLCAic2VjdGlvbi0iKSkKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRMYWJlbCgpOwogCiAgICAgLy8gMTguIExldCBzZWN0aW9uIGJlIHRoZSBpbmRleHRoIHRv
a2VuIGluIHRva2VucywgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKaW5kZXggNTZkNjcwOTczMDcyZmFhZGM0MzY1
NWQxYzA1Y2MxYWNhZmQ5ZWZkYy4uMmJiNDMzMTU5MjRlY2NhMGZmMWNlNTNmY2VjYjhhMGI0YmFl
ZjY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBib29sIEJhc2VUZXh0SW5wdXRUeXBlOjppc1RleHRUeXBlKCkgY29uc3QK
IGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmF3UGF0dGVybiA9IGVsZW1l
bnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHBhdHRlcm5BdHRyKTsKLSAgICBp
ZiAocmF3UGF0dGVybi5pc051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5KCkgfHwgIUpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24ocmF3UGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpLmlzVmFsaWQo
KSkKKyAgICBpZiAocmF3UGF0dGVybi5pc051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5KCkgfHwgIUpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocmF3UGF0dGVybikuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHBhdHRlcm4gPSAiXig/OiIgKyByYXdQYXR0ZXJu
ICsgIikkIjsKICAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwogICAgIGludCB2YWx1ZUxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOwotICAgIGludCBtYXRjaE9mZnNldCA9IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24ocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpLm1hdGNoKHZhbHVlLCAwLCAm
bWF0Y2hMZW5ndGgpOworICAgIGludCBtYXRjaE9mZnNldCA9IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24ocGF0dGVybikubWF0Y2godmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CiAgICAgcmV0
dXJuIG1hdGNoT2Zmc2V0IHx8IG1hdGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3RoOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IDMxZjhhYTU1YjZmZWQwNDgwZTI1
NjhkNTQ5ODgwYmIwN2VlMjhkYzEuLjFjMjdmODhiNDEwZWQxNGU0Y2VhMDJkZDdmM2M4OTdiNGIz
MTk1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRy
ZXNzKQogICAgIGlmICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24+IHJlZ0V4cChlbWFpbFBhdHRlcm4sIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdF
eHAoZW1haWxQYXR0ZXJuLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogCiAgICAg
aW50IG1hdGNoTGVuZ3RoOwogICAgIGludCBtYXRjaE9mZnNldCA9IHJlZ0V4cC5nZXQoKS5tYXRj
aChhZGRyZXNzLCAwLCAmbWF0Y2hMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAppbmRleCBjNTIzMjI5MmExMWJjZTdjZGYyNzc5MjY3ZGVjYjZiMGUxMTk5
NDE3Li4xYmMwZWU0NmJlMmIyZTFjYmNhNTE3ZTZjMmU4NjhlZTdlNTMwMzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGJv
b2wgSFRNTE9iamVjdEVsZW1lbnQ6Omhhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0CiAgICAgZm9y
IChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlLW9ubHkgdGV4
dCwgYW5kIDxwYXJhbT4gdGFncywgYW55IG90aGVyIGNvbnRlbnQgaXMgZmFsbGJhY2sgY29udGVu
dC4KICAgICAgICAgaWYgKGlzPFRleHQ+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgIGlmICghZG93
bmNhc3Q8VGV4dD4oKmNoaWxkKS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgICAgICAg
ICBpZiAoIWRvd25jYXN0PFRleHQ+KCpjaGlsZCkuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0gZWxzZSBpZiAoIWlzPEhUTUxQYXJhbUVsZW1lbnQ+KCpjaGlsZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpz
aG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRRdWlyaygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGZvciAoYXV0byYgbWV0YUVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MTWV0
YUVsZW1lbnQ+KGRvY3VtZW50KCkpKSB7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtZXRhRWxlbWVudC5uYW1lKCksICJnZW5lcmF0b3IiKSAmJiBtZXRhRWxlbWVu
dC5jb250ZW50KCkuc3RhcnRzV2l0aCgiTWFjIE9TIFggU2VydmVyIFdlYiBTZXJ2aWNlcyBTZXJ2
ZXIiLCBmYWxzZSkpCisgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
ZXRhRWxlbWVudC5uYW1lKCksICJnZW5lcmF0b3IiKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50LmNvbnRlbnQoKSwgIm1hYyBvcyB4IHNlcnZlciB3ZWIg
c2VydmljZXMgc2VydmVyIikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjpzaG91bGRBbGxvd1F1aWNr
VGltZUNsYXNzSWRRdWlyaygpCiAgICAgCiBib29sIEhUTUxPYmplY3RFbGVtZW50OjpoYXNWYWxp
ZENsYXNzSWQoKQogewotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1F
VHlwZShzZXJ2aWNlVHlwZSgpKSAmJiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNs
YXNzaWRBdHRyKS5zdGFydHNXaXRoKCJqYXZhOiIsIGZhbHNlKSkKKyAgICBpZiAoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUoKSkgJiYgcHJvdG9jb2xJ
cyhhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzaWRBdHRyKSwgImphdmEiKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKHNob3VsZEFsbG93UXVpY2tUaW1l
Q2xhc3NJZFF1aXJrKCkpCkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBy
ZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGNvbnN0IE5vZGUmIGNoaWxkKQogICAgIGlm
IChpczxFbGVtZW50PihjaGlsZCkpCiAgICAgICAgIHJldHVybiBwcmV2ZW50c1BhcmVudE9iamVj
dEZyb21FeHBvc3VyZShkb3duY2FzdDxFbGVtZW50PihjaGlsZCkpOwogICAgIGlmIChpczxUZXh0
PihjaGlsZCkpCi0gICAgICAgIHJldHVybiAhZG93bmNhc3Q8VGV4dD4oY2hpbGQpLmNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0dXJuICFkb3duY2FzdDxUZXh0PihjaGlsZCku
ZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAppbmRleCA3NzRhZDU0N2NlYzZi
M2M0YWM5MTQyZGFhY2RhNGEyYzUzOGIzZmY4Li43NjRlNTAyMjMwYTdkYzlhMzRkODdjYmE2OTNh
Y2Q2NjU0OTAxYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCkBAIC00NiwxMyArNDYs
MTEgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgdHlwZUFoZWFkVGltZW91dCB7IDFfcyB9Owogc3Rh
dGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLQogICAgIHVuc2lnbmVk
IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChzdHJp
bmdbaV0gIT0gbm9CcmVha1NwYWNlICYmIChzdHJpbmdbaV0gPD0gMHg3RiA/ICFpc0FTQ0lJU3Bh
Y2Uoc3RyaW5nW2ldKSA6ICh1X2NoYXJEaXJlY3Rpb24oc3RyaW5nW2ldKSAhPSBVX1dISVRFX1NQ
QUNFX05FVVRSQUwpKSkKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBub0JyZWFrU3BhY2UgJiYg
IWlzU3BhY2VPck5ld2xpbmUoc3RyaW5nW2ldKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
LQogICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKGksIGxlbmd0aCAtIGkpOwogfQogCkBAIC05
NSwxMCArOTMsNiBAQCBpbnQgVHlwZUFoZWFkOjpoYW5kbGVFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCwgTWF0Y2hNb2RlRmxhZ3MgbWF0Y2hNb2RlKQogICAgICAgICBpbnQgaW5kZXggPSAoc2Vs
ZWN0ZWQgPCAwID8gMCA6IHNlbGVjdGVkKSArIHNlYXJjaFN0YXJ0T2Zmc2V0OwogICAgICAgICBp
bmRleCAlPSBvcHRpb25Db3VudDsKIAotICAgICAgICAvLyBDb21wdXRlIGEgY2FzZS1mb2xkZWQg
Y29weSBvZiB0aGUgcHJlZml4IHN0cmluZyBiZWZvcmUgYmVnaW5uaW5nIHRoZSBzZWFyY2ggZm9y
Ci0gICAgICAgIC8vIGEgbWF0Y2hpbmcgZWxlbWVudC4gVGhpcyBjb2RlIHVzZXMgZm9sZENhc2Ug
dG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdAotICAgICAgICAvLyBTdHJpbmc6OnN0YXJ0V2l0
aCBkb2VzIG5vdCBmb2xkIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiBUaGlzIGNvZGUgY2FuIGJlIGNo
YW5nZWQKLSAgICAgICAgLy8gdG8gdXNlIHN0YXJ0V2l0aCBvbmNlIHRoYXQgaXMgZml4ZWQuCiAg
ICAgICAgIFN0cmluZyBwcmVmaXhXaXRoQ2FzZUZvbGRlZChwcmVmaXguZm9sZENhc2UoKSk7CiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3B0aW9uQ291bnQ7ICsraSwgaW5kZXggPSAoaW5k
ZXggKyAxKSAlIG9wdGlvbkNvdW50KSB7CiAgICAgICAgICAgICAvLyBGb2xkIHRoZSBvcHRpb24g
c3RyaW5nIGFuZCBjaGVjayBpZiBpdHMgcHJlZml4IGlzIGVxdWFsIHRvIHRoZSBmb2xkZWQgcHJl
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCmluZGV4IDEyMTdkOWI1NGY1OGIzYzM0ODQyNDlhZjViYTA0MGI3MjdkYzA1MzAu
LjAyM2M4ZmQ3ZjM1NDBmMWFkOGM3MmE2ZDA1ODI5YTAzM2UxNjJiYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTMz
Niw3NiArMzM2LDc2IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OnNldENvbXBhdGliaWxp
dHlNb2RlRnJvbURvY3R5cGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjCiAKICAgICAvLyBDaGVjayBm
b3IgUXVpcmtzIE1vZGUuCiAgICAgaWYgKG5hbWUgIT0gImh0bWwiCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIisvL1NpbG1hcmlsLy9kdGQgaHRtbCBQcm8gdjByMTEgMTk5NzAxMDEv
LyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9BZHZhU29mdCBM
dGQvL0RURCBIVE1MIDMuMCBhc1dlZGl0ICsgZXh0ZW5zaW9ucy8vIiwgZmFsc2UpCi0gICAgICAg
IHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0FTLy9EVEQgSFRNTCAzLjAgYXNXZWRpdCArIGV4
dGVuc2lvbnMvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9J
RVRGLy9EVEQgSFRNTCAyLjAgTGV2ZWwgMS8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIuMCBMZXZlbCAyLy8iLCBmYWxzZSkKLSAg
ICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIFN0cmlj
dCBMZXZlbCAxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
SUVURi8vRFREIEhUTUwgMi4wIFN0cmljdCBMZXZlbCAyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgMi4wIFN0cmljdC8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIDIu
MC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RU
RCBIVE1MIDIuMUUvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCIt
Ly9JRVRGLy9EVEQgSFRNTCAzLjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAzLjIgRmluYWwvLyIsIGZhbHNlKQotICAgICAgICB8
fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAzLjIvLyIsIGZhbHNlKQot
ICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCAzLy8iLCBm
YWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwg
TGV2ZWwgMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lF
VEYvL0RURCBIVE1MIExldmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBMZXZlbCAyLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwgTGV2ZWwgMy8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIFN0cmlj
dCBMZXZlbCAwLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
SUVURi8vRFREIEhUTUwgU3RyaWN0IExldmVsIDEvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9JRVRGLy9EVEQgSFRNTCBTdHJpY3QgTGV2ZWwgMi8vIiwgZmFs
c2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL0lFVEYvL0RURCBIVE1MIFN0
cmljdCBMZXZlbCAzLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vSUVURi8vRFREIEhUTUwgU3RyaWN0Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vSUVURi8vRFREIEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9NZXRyaXVzLy9EVEQgTWV0cml1cyBQcmVzZW50YXRpb25hbC8v
IiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8v
RFREIEludGVybmV0IEV4cGxvcmVyIDIuMCBIVE1MIFN0cmljdC8vIiwgZmFsc2UpCi0gICAgICAg
IHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8vRFREIEludGVybmV0IEV4cGxv
cmVyIDIuMCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgi
LS8vTWljcm9zb2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMi4wIFRhYmxlcy8vIiwgZmFsc2Up
Ci0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8vRFREIEludGVy
bmV0IEV4cGxvcmVyIDMuMCBIVE1MIFN0cmljdC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL01pY3Jvc29mdC8vRFREIEludGVybmV0IEV4cGxvcmVyIDMuMCBI
VE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTWljcm9z
b2Z0Ly9EVEQgSW50ZXJuZXQgRXhwbG9yZXIgMy4wIFRhYmxlcy8vIiwgZmFsc2UpCi0gICAgICAg
IHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL05ldHNjYXBlIENvbW0uIENvcnAuLy9EVEQgSFRN
TC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL05ldHNjYXBl
IENvbW0uIENvcnAuLy9EVEQgU3RyaWN0IEhUTUwvLyIsIGZhbHNlKQotICAgICAgICB8fCBwdWJs
aWNJZC5zdGFydHNXaXRoKCItLy9PJ1JlaWxseSBhbmQgQXNzb2NpYXRlcy8vRFREIEhUTUwgMi4w
Ly8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vTydSZWlsbHkg
YW5kIEFzc29jaWF0ZXMvL0RURCBIVE1MIEV4dGVuZGVkIDEuMC8vIiwgZmFsc2UpCi0gICAgICAg
IHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL08nUmVpbGx5IGFuZCBBc3NvY2lhdGVzLy9EVEQg
SFRNTCBFeHRlbmRlZCBSZWxheGVkIDEuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lk
LnN0YXJ0c1dpdGgoIi0vL1NvZnRRdWFkIFNvZnR3YXJlLy9EVEQgSG9UTWV0YUwgUFJPIDYuMDo6
MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gSFRNTCA0LjAvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9Tb2Z0UXVhZC8vRFREIEhvVE1ldGFMIFBSTyA0LjA6OjE5
OTcxMDEwOjpleHRlbnNpb25zIHRvIEhUTUwgNC4wLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVi
bGljSWQuc3RhcnRzV2l0aCgiLS8vU3B5Z2xhc3MvL0RURCBIVE1MIDIuMCBFeHRlbmRlZC8vIiwg
ZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1NRLy9EVEQgSFRNTCAy
LjAgSG9UTWV0YUwgKyBleHRlbnNpb25zLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vU3VuIE1pY3Jvc3lzdGVtcyBDb3JwLi8vRFREIEhvdEphdmEgSFRNTC8v
IiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1N1biBNaWNyb3N5
c3RlbXMgQ29ycC4vL0RURCBIb3RKYXZhIFN0cmljdCBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAg
fHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzIDE5OTUtMDMtMjQvLyIs
IGZhbHNlKQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1M
IDMuMiBEcmFmdC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0v
L1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQu
c3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCAzLjIvLyIsIGZhbHNlKQotICAgICAgICB8fCBw
dWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDMuMlMgRHJhZnQvLyIsIGZhbHNl
KQotICAgICAgICB8fCBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMCBG
cmFtZXNldC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1cz
Qy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhUTUwgRXhwZXJpbWVudGFsIDE5OTYwNzEyLy8i
LCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRN
TCBFeHBlcmltZW50YWwgOTcwNDIxLy8iLCBmYWxzZSkKLSAgICAgICAgfHwgcHVibGljSWQuc3Rh
cnRzV2l0aCgiLS8vVzNDLy9EVEQgVzMgSFRNTC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1Ymxp
Y0lkLnN0YXJ0c1dpdGgoIi0vL1czTy8vRFREIFczIEhUTUwgMy4wLy8iLCBmYWxzZSkKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIisvL3Np
bG1hcmlsLy9kdGQgaHRtbCBwcm8gdjByMTEgMTk5NzAxMDEvLyIpCisgICAgICAgIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9hZHZhc29mdCBsdGQv
L2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2FzLy9kdGQgaHRtbCAz
LjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwg
MS8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAyLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0
bWwgMi4wIHN0cmljdCBsZXZlbCAxLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBs
ZXZlbCAyLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdC8vIikKKyAgICAgICAgfHwg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0
ZCBodG1sIDIuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIDIuMWUvLyIpCisgICAgICAgIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQg
aHRtbCAzLjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAzLjIgZmluYWwvLyIpCisgICAgICAgIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9k
dGQgaHRtbCAzLjIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCAzLy8iKQorICAgICAgICB8fCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0
bWwgbGV2ZWwgMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL2lldGYvL2R0ZCBodG1sIGxldmVsIDEvLyIpCisgICAgICAgIHx8
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9pZXRmLy9k
dGQgaHRtbCBsZXZlbCAyLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMy8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2ll
dGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAwLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0
IGxldmVsIDEvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHVibGljSWQsICItLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMi8vIikKKyAgICAg
ICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL2ll
dGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAzLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vaWV0Zi8vZHRkIGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9tZXRyaXVzLy9kdGQgbWV0cml1cyBwcmVz
ZW50YXRpb25hbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBo
dG1sIHN0cmljdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwdWJsaWNJZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBo
dG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIHRhYmxlcy8v
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJ
ZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8v
IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJ
ZCwgIi0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sLy8iKQorICAg
ICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
bWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIHRhYmxlcy8vIikKKyAgICAgICAg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL25ldHNj
YXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9k
dGQgc3RyaWN0IGh0bWwvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocHVibGljSWQsICItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwg
Mi4wLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIDEu
MC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCByZWxh
eGVkIDEuMC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL3NvZnRxdWFkIHNvZnR3YXJlLy9kdGQgaG90bWV0YWwgcHJvIDYuMDo6
MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy9zb2Z0cXVhZC8vZHRkIGhv
dG1ldGFsIHBybyA0LjA6OjE5OTcxMDEwOjpleHRlbnNpb25zIHRvIGh0bWwgNC4wLy8iKQorICAg
ICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8v
c3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3NxLy9kdGQgaHRtbCAyLjAg
aG90bWV0YWwgKyBleHRlbnNpb25zLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRk
IGhvdGphdmEgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZh
IHN0cmljdCBodG1sLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCAzIDE5OTUtMDMtMjQvLyIpCisgICAg
ICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93
M2MvL2R0ZCBodG1sIDMuMiBkcmFmdC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgMy4yIGZpbmFsLy8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vdzNjLy9kdGQgaHRtbCAzLjIvLyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDMuMnMgZHJhZnQv
LyIpCisgICAgICAgIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGlj
SWQsICItLy93M2MvL2R0ZCBodG1sIDQuMCBmcmFtZXNldC8vIikKKyAgICAgICAgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwg
NC4wIHRyYW5zaXRpb25hbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDE5OTYw
NzEyLy8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1
YmxpY0lkLCAiLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgOTcwNDIxLy8iKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNj
Ly9kdGQgdzMgaHRtbC8vIikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czby8vZHRkIHczIGh0bWwgMy4wLy8iKQogICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3czby8vZHRkIHcz
IGh0bWwgc3RyaWN0IDMuMC8vZW4vLyIpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgo
Ii0vL1dlYlRlY2hzLy9EVEQgTW96aWxsYSBIVE1MIDIuMC8vIiwgZmFsc2UpCi0gICAgICAgIHx8
IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1dlYlRlY2hzLy9EVEQgTW96aWxsYSBIVE1MLy8iLCBm
YWxzZSkKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJs
aWNJZCwgIi0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sIDIuMC8vIikKKyAgICAgICAgfHwg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgIi0vL3dlYnRlY2hz
Ly9kdGQgbW96aWxsYSBodG1sLy8iKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwdWJsaWNJZCwgIi0vdzNjL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvZW4iKQog
ICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwdWJsaWNJZCwgImh0bWwi
KQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzeXN0ZW1JZCwgImh0
dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQi
KQotICAgICAgICB8fCAoc3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dpdGgo
Ii0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vIiwgZmFsc2UpKQotICAgICAgICB8fCAo
c3lzdGVtSWQuaXNFbXB0eSgpICYmIHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvLyIsIGZhbHNlKSkpIHsKKyAgICAgICAgfHwgKHN5c3RlbUlk
LmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lk
LCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8iKSkKKyAgICAgICAgfHwgKHN5c3Rl
bUlkLmlzRW1wdHkoKSAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vdzNjLy9kdGQgaHRtbCA0LjAxIHRyYW5zaXRpb25hbC8vIikpKSB7CiAgICAgICAg
IHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9yIExpbWl0ZWQg
UXVpcmtzIE1vZGUuCi0gICAgaWYgKHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czQy8vRFREIFhI
VE1MIDEuMCBGcmFtZXNldC8vIiwgZmFsc2UpCi0gICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvLyIsIGZhbHNlKQotICAgICAg
ICB8fCAoIXN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0Mv
L0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvLyIsIGZhbHNlKSkKLSAgICAgICAgfHwgKCFzeXN0ZW1J
ZC5pc0VtcHR5KCkgJiYgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgSFRNTCA0LjAx
IFRyYW5zaXRpb25hbC8vIiwgZmFsc2UpKSkgeworICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHB1YmxpY0lkLCAiLS8vdzNjLy9kdGQgeGh0bWwgMS4wIGZyYW1lc2V0
Ly8iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHB1Ymxp
Y0lkLCAiLS8vdzNjLy9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbC8vIikKKyAgICAgICAgfHwg
KCFzeXN0ZW1JZC5pc0VtcHR5KCkgJiYgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwdWJsaWNJZCwgIi0vL3czYy8vZHRkIGh0bWwgNC4wMSBmcmFtZXNldC8vIikpCisgICAgICAg
IHx8ICghc3lzdGVtSWQuaXNFbXB0eSgpICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICItLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8iKSkp
IHsKICAgICAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9k
ZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5k
ZXggOGE4NDY4OTE1ZmU5MzI2YzllNzM2YTdhYTUzNWFlOGRkM2ViNGQyNC4uOGQzM2VlNjYzZmIz
MzA3MDRhOTg4YTIxMTVjMDQzMGNiMTllMzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHN0YXRpYyBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3Qg
cG9zID0gMDsgcG9zIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgcG9zID0gdmFsdWUuZmluZCgiY2hh
cnNldCIsIHBvcywgZmFsc2UpOworICAgICAgICBwb3MgPSB2YWx1ZS5maW5kSWdub3JpbmdBU0NJ
SUNhc2UoImNoYXJzZXQiLCBwb3MpOwogICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKaW5kZXggOTNmZmE1YmE2NDhlYzg4YTg4ZDM1ZWU2MDAzMTk1Yzc2MzAzOGYzNC4uYTczZWQ5
M2I5OTdmYjdiNWRhMTgyODE4MmIxNGY3YWUyYmFhZWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTcxNSwxMSArNzE1LDExIEBAIGJvb2wgWFNTQXVk
aXRvcjo6aXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiBkZWNvZGVkU25pcHBldCkK
IHsKICAgICBpZiAoZGVjb2RlZFNuaXBwZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKG1fZGVjb2RlZFVSTC5maW5kKGRlY29kZWRTbmlwcGV0LCAwLCBmYWxzZSkg
IT0gbm90Rm91bmQpCisgICAgaWYgKG1fZGVjb2RlZFVSTC5jb250YWluc0lnbm9yaW5nQVNDSUlD
YXNlKGRlY29kZWRTbmlwcGV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1fZGVj
b2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiAhbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLT5t
aWdodENvbnRhaW4oZGVjb2RlZFNuaXBwZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5LmZpbmQoZGVjb2RlZFNuaXBwZXQsIDAsIGZhbHNlKSAh
PSBub3RGb3VuZDsKKyAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHkuY29udGFpbnNJZ25vcmlu
Z0FTQ0lJQ2FzZShkZWNvZGVkU25pcHBldCk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtl
bHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggYWNlNjZlNTQxYzBiODkzMGJkZWZkM2JkNTljYjFj
ODdlYTI0MjE3My4uNTE4ZWQ4YjMwNjBkMDY4OWUyNzQ0ODkzYjQ2ZDlhYzQ3NzczZTk0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMjQyLDcgKzI0
Miw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpoYXNSZXF1aXJlZEZpbGVJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgbGluZSkKICAgICAvLyBBIFdlYlZUVCBmaWxlIGlkZW50aWZpZXIgY29uc2lzdHMg
b2YgYW4gb3B0aW9uYWwgQk9NIGNoYXJhY3RlciwKICAgICAvLyB0aGUgc3RyaW5nICJXRUJWVFQi
IGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHNwYWNlIG9yIHRhYiBjaGFyYWN0ZXIsCiAgICAgLy8g
YW5kIGFueSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgbGluZSB0ZXJtaW5hdG9y
cyAuLi4KLSAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aChmaWxlSWRlbnRpZmllciwgZmlsZUlkZW50
aWZpZXJMZW5ndGgpKQorICAgIGlmICghbGluZS5zdGFydHNXaXRoKGZpbGVJZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChsaW5lLmxlbmd0aCgpID4gZmlsZUlkZW50
aWZpZXJMZW5ndGggJiYgIWlzSFRNTFNwYWNlKGxpbmVbZmlsZUlkZW50aWZpZXJMZW5ndGhdKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5vZGVGaW5kZXIuY3BwCmluZGV4IDU5NTgzYTkwMjg1NDRiYjkxYjJjNDc1ZTNhODZl
NWU5ZTljZjExNzguLmY5MmE1ZDg5MjdlNzYwYmY0YjdiNWYwODg4OGY2YTA1ZDNlNWFjOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAK
QEAgLTExMCw4ICsxMTAsOCBAQCBib29sIEluc3BlY3Rvck5vZGVGaW5kZXI6Om1hdGNoZXNFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgU3RyaW5nIG5vZGVOYW1lID0gZWxlbWVu
dC5ub2RlTmFtZSgpOwogICAgIGlmICgoIW1fc3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3Vu
ZCAmJiBub2RlTmFtZS5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKG1fdGFnTmFtZVF1ZXJ5KSkK
ICAgICAgICAgfHwgKG1fc3RhcnRUYWdGb3VuZCAmJiBtX2VuZFRhZ0ZvdW5kICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2Uobm9kZU5hbWUsIG1fdGFnTmFtZVF1ZXJ5KSkKLSAgICAgICAgfHwgKG1f
c3RhcnRUYWdGb3VuZCAmJiAhbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5zdGFydHNXaXRoKG1f
dGFnTmFtZVF1ZXJ5LCBmYWxzZSkpCi0gICAgICAgIHx8ICghbV9zdGFydFRhZ0ZvdW5kICYmIG1f
ZW5kVGFnRm91bmQgJiYgbm9kZU5hbWUuZW5kc1dpdGgobV90YWdOYW1lUXVlcnksIGZhbHNlKSkp
CisgICAgICAgIHx8IChtX3N0YXJ0VGFnRm91bmQgJiYgIW1fZW5kVGFnRm91bmQgJiYgbm9kZU5h
bWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1fdGFnTmFtZVF1ZXJ5KSkKKyAgICAgICAg
fHwgKCFtX3N0YXJ0VGFnRm91bmQgJiYgbV9lbmRUYWdGb3VuZCAmJiBub2RlTmFtZS5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKG1fdGFnTmFtZVF1ZXJ5KSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBkN2UyZTkzZDNkODFj
N2M5NjI3MDViNDFhZGE0ZTVhNzdlZjk3NjFhLi5kMmNkODVhN2YyNDk5OTk5YjkzNDZmNjVkMjY3
ZjY0MjUwMzA5M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxw
ZXIoYwogCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0b3I+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENT
U1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCwgY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IGNv
bW1lbnQoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0
aWxpbmVFbmFibGVkKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIEpTQzo6WWFycjo6VGV4dENh
c2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5hYmxlZCk7CiAKICAgICBhdXRvIHJl
c3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZTQ3MDAxNjI5YWFiZDZm
Mzk4MWM1OTBkOThmMTRlZmIyMjM1NTI5Yy4uZDA4NjllZmFiMWQ1Y2JiNDZjZjhlZmRhMTk1NzQ4
YzMzYWFiYTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
VE1MU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCkBAIC0xOTczLDEwICsxOTc0LDE2IEBAIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpCiAgICAgcmV0dXJuIFdURk1vdmUodmFsdWUpOwogfQogCitzdGF0
aWMgYm9vbCBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZShOb2RlKiBub2RlKQoreworICAgIC8v
IEZJWE1FOiBSZXNwZWN0IGlnbm9yZVdoaXRlc3BhY2Ugc2V0dGluZyBmcm9tIGluc3BlY3RvciBm
cm9udCBlbmQ/CisgICAgcmV0dXJuIGlzPFRleHQ+KG5vZGUpICYmIGRvd25jYXN0PFRleHQ+KCpu
b2RlKS5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKK30KKwog
Tm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChOb2RlKiBub2RlKQogewog
ICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKGlzV2hpdGVzcGFjZShu
b2RlKSkKKyAgICB3aGlsZSAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2Uobm9kZSkpCiAgICAg
ICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAt
MTk4NSw3ICsxOTkyLDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxp
bmcoTm9kZSogbm9kZSkKIHsKICAgICBkbyB7CiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpOwotICAgIH0gd2hpbGUgKGlzV2hpdGVzcGFjZShub2RlKSk7CisgICAgfSB3aGlsZSAo
Y29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2Uobm9kZSkpOwogICAgIHJldHVybiBub2RlOwogfQog
CkBAIC0xOTkzLDE4ICsyMDAwLDE1IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBy
ZXZpb3VzU2libGluZyhOb2RlKiBub2RlKQogewogICAgIGRvIHsKICAgICAgICAgbm9kZSA9IG5v
ZGUtPnByZXZpb3VzU2libGluZygpOwotICAgIH0gd2hpbGUgKGlzV2hpdGVzcGFjZShub2RlKSk7
CisgICAgfSB3aGlsZSAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2Uobm9kZSkpOwogICAgIHJl
dHVybiBub2RlOwogfQogCiB1bnNpZ25lZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJDaGlsZE5v
ZGVDb3VudChOb2RlKiBub2RlKQogewogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBOb2Rl
KiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsKLSAgICB3aGlsZSAoY2hpbGQpIHsKLSAg
ICAgICAgY291bnQrKzsKLSAgICAgICAgY2hpbGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKTsK
LSAgICB9CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hp
bGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAgICsrY291bnQ7CiAg
ICAgcmV0dXJuIGNvdW50OwogfQogCkBAIC0yMDE4LDEzICsyMDIyLDYgQEAgTm9kZSogSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiBub2Rl
LT5wYXJlbnROb2RlKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6OmlzV2hpdGVzcGFj
ZShOb2RlKiBub2RlKQotewotICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY29udGFpbnNPbmx5SFRN
TFNwYWNlcz8KLSAgICAvLyBGSVhNRTogUmVzcGVjdCBpZ25vcmVXaGl0ZXNwYWNlIHNldHRpbmcg
ZnJvbSBpbnNwZWN0b3IgZnJvbnQgZW5kPwotICAgIHJldHVybiBpczxUZXh0Pihub2RlKSAmJiBk
b3duY2FzdDxUZXh0Pigqbm9kZSkuZGF0YSgpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLX0K
LQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpCiB7
CiAgICAgLy8gUmUtcHVzaCBkb2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KQEAgLTIwNTYsNyAr
MjA1Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQq
IGRvY3VtZW50KQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5v
ZGUmIG5vZGUpCiB7Ci0gICAgaWYgKGlzV2hpdGVzcGFjZSgmbm9kZSkpCisgICAgaWYgKGNvbnRh
aW5zT25seUhUTUxXaGl0ZXNwYWNlKCZub2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
V2UgY291bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGlu
Z3MuCkBAIC0yMDg1LDcgKzIwODIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNl
cnRET01Ob2RlKE5vZGUmIG5vZGUpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92
ZURPTU5vZGUoTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNXaGl0ZXNwYWNlKCZub2RlKSkKKyAg
ICBpZiAoY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoJm5vZGUpKQogICAgICAgICByZXR1cm47
CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApp
bmRleCA2MGViNmM3YWIzOTVkNmJmOTQ2ZDAzODE5MjJkYWI4ZmU3MmNiYTNmLi4wYWZiMjg1MGQy
ZmNkNzQyNmQwNTFhZmJhMzNhYTkwNjYzNDA3Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0yMDMsNyArMjAzLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBOb2RlKiBpbm5lclByZXZpb3VzU2libGluZyhOb2RlKik7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291bnQoTm9kZSopOwogICAgIHN0
YXRpYyBOb2RlKiBpbm5lclBhcmVudE5vZGUoTm9kZSopOwotICAgIHN0YXRpYyBib29sIGlzV2hp
dGVzcGFjZShOb2RlKik7CiAKICAgICBOb2RlKiBhc3NlcnROb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CiAgICAgRWxlbWVudCogYXNzZXJ0RWxlbWVudChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggN2JlOTFiZTU1M2ZkZmY5M2U3N2Q3MDJj
YTgxNDE5ODhlMjg4OTMxOS4uMTUzZTg4NDAyMWJkNzgzMjg1ODg2ZmE3MmZjODJjNGU1NDYxMjY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjg1LDggKzEyODUsOCBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVUYWJsZXMoKQogICAgIAogYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSkKIHsKLSAgICByZXR1cm4gcmVzb3VyY2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKS5zdGFydHNXaXRoKCJhdWRpby8iLCBmYWxzZSkgCi0gICAgICAgIHx8IHJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkuc3RhcnRzV2l0aCgidmlkZW8vIiwgZmFsc2Up
OworICAgIGF1dG8mIHR5cGUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOworICAg
IHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8i
KSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsK
IH0KICAgICAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9CYXNlNjRVdGlsaXRpZXMuY3BwCmluZGV4IGUwOGExNmI0MDVmNGEyMmFhOGNmY2Y1
ODE3NDliMTRjYTA0ZDhkYzUuLjBjNjEzZmE0MzA5MGI3OTYwZDBkZTdiOWFmMzc4NzhmNDkzZDlm
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFzZTY0VXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Jhc2U2NFV0aWxpdGllcy5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBCYXNlNjRVdGlsaXRpZXM6OmJ0b2EoY29uc3QgU3Ry
aW5nJiBzdHJpbmdUb0VuY29kZSkKICAgICBpZiAoc3RyaW5nVG9FbmNvZGUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmICghc3RyaW5nVG9FbmNvZGUuY29udGFp
bnNPbmx5TGF0aW4xKCkpCisgICAgaWYgKCFzdHJpbmdUb0VuY29kZS5pc0FsbExhdGluMSgpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZENoYXJhY3RlckVycm9yIH07CiAKICAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlKHN0cmluZ1RvRW5jb2RlLmxhdGluMSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggM2M0ZDAwNzcyZmExNzc5MTAxODM4ODg0ZTdhNjFjMDYyMDdiNDI3OS4u
ZTJlMTMxMDc1YzQ1NjQ1YmRhZDBmMWMyZWVjZDY4MTU4YjU1MTI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgLy8g
UkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFtZU1hYy5tbSBjYWNoZXMgYmFzZWQg
b24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRoZSBzYW1lIGFjcm9zcyBjYWxscy4g
IFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3IiwgVGV4dENhc2VTZW5zaXRpdmUp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
PiB3b3JkUmVnRXhwKCJcXHciKTsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgcGF0
dGVybi5hcHBlbmQoJygnKTsKICAgICB1bnNpZ25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNp
emUoKTsKQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVz
c2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAg
ICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwogICAgIH0KICAgICBwYXR0ZXJuLmFw
cGVuZCgnKScpOwotICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHBhdHRl
cm4udG9TdHJpbmcoKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAgcmV0dXJuIEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygpLCBKU0M6OllhcnI6OlRleHRD
YXNlSW5zZW5zaXRpdmUpOwogfQogCiBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3Zl
Q2VsbChjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdFeHAsIEhUTUxUYWJs
ZUNlbGxFbGVtZW50KiBjZWxsLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxs
KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3Ry
aW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIGNvbnN0IFN0cmluCiAgICAgU3RyaW5n
IG11dGFibGVTdHJpbmdUb01hdGNoID0gc3RyaW5nVG9NYXRjaDsKIAogICAgIC8vIE1ha2UgbnVt
YmVycyBhbmQgXydzIGluIGZpZWxkIG5hbWVzIGJlaGF2ZSBsaWtlIHdvcmQgYm91bmRhcmllcywg
ZS5nLiwgImFkZHJlc3MyIgotICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAiKTsK
KyAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uKCJcXGQiKSwgIiAiKTsKICAgICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdf
JywgJyAnKTsKICAgICAKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCA9
IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IGMwYzY5NzdiZDc2ZGJiZWFiMTgwM2NjMjQzNGVhNDhhZTFkMDE4YTAuLmU0ZTM1MjUz
NjVkMWNiZDFiZjcwNWI1NmFlYTc0YmJjZTdjMWVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTI0ODgsNyArMjQ4OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjb3VudFJlbmRlcmVk
Q2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZChjb25zdCBSZW5kZXJFCiAgICAg
dW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgUmVuZGVyT2JqZWN0KiBkZXNjZW5k
YW50ID0gJnJlbmRlcmVyOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4
dEluUHJlT3JkZXIoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmRlc2NlbmRhbnQp
KSB7Ci0gICAgICAgICAgICBjb3VudCArPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqZGVzY2VuZGFu
dCkudGV4dCgpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGNvdW50ICs9IGRvd25jYXN0PFJlbmRl
clRleHQ+KCpkZXNjZW5kYW50KS50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAoY291
bnQgPj0gdGhyZXNob2xkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDUzYzk5YzU3NDc5MjZmNGYwYWVj
NDlmMGNlZGVmZDI0MmI4YjVjODQuLjlkMmU1Y2NkNGViMTFkMDJkOWI0NTdjNWQwMjU1ODg0MTFh
ZWM2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMzEsMTQg
KzMzMSwxNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIGRyYWdJbml0aWF0b3IpIGNvbgogLy8gVGhpcyBmdW5jdGlvbiBzaG91
bGQgYmUgcmVtb3ZlZCBhcyBhbiBvdXRjb21lIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTE5Ngogc3RhdGljIGJvb2wgaXNGZWVkV2l0aE5lc3RlZFByb3RvY29s
SW5IVFRQRmFtaWx5KGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nID0gdXJsLnN0cmluZygpOwotICAgIGlmICghdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWQi
LCBmYWxzZSkpCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcgPSB1cmwuc3RyaW5nKCk7CisgICAg
aWYgKCFzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWQiKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHVybFN0cmluZy5zdGFydHNXaXRo
KCJmZWVkOi8vIiwgZmFsc2UpIAotICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVl
ZDpodHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZDpodHRwczoiLCBm
YWxzZSkKLSAgICAgICAgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzOmh0dHA6IiwgZmFs
c2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkczpodHRwczoiLCBmYWxzZSkKLSAgICAg
ICAgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzZWFyY2g6aHR0cDoiLCBmYWxzZSkgfHwg
dXJsU3RyaW5nLnN0YXJ0c1dpdGgoImZlZWRzZWFyY2g6aHR0cHM6IiwgZmFsc2UpOworICAgIHJl
dHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZlZWQ6Ly8i
KQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywg
ImZlZWQ6aHR0cDoiKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZywgImZlZWQ6aHR0cHM6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVkczpodHRwOiIpCisgICAgICAgIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmVlZHM6aHR0cHM6IikKKyAg
ICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmZWVk
c2VhcmNoOmh0dHA6IikKKyAgICAgICAgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcsICJmZWVkc2VhcmNoOmh0dHBzOiIpOwogfQogCiBib29sIFNlY3VyaXR5T3Jp
Z2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDRkYWI1NDc5NGI2NzczYmM1ZDk2
MzVhNThmMGYzNDQ4YzczNjhlMTkuLmUxZmRjOWI3NTM5ZjlmNzRiNzkyZTRhYWUyZjgyYWVhY2Jh
ZWMxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIENoZWNrIGlmIHRoZSBkb21haW4gaXMgYSBzdWJkb21haW4gb2Ygb3VyIGhvc3QuCi0gICAg
aWYgKCFob3N0LmVuZHNXaXRoKG1faG9zdCwgZmFsc2UpKQorICAgIGlmICghaG9zdC5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKG1faG9zdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IEFTU0VSVChob3N0Lmxlbmd0aCgpID4gbV9ob3N0Lmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCmlu
ZGV4IDU5NjA0YzY3YWNlNzdhMzU0ZDRkZWE4YWFkYjU3Zjk5NmJlZGEyYzYuLjdhNDMzM2Q1ZDZh
Zjg4OTYyODhiMjA3OTU2NTA0YjZjM2Y3NzliY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcApAQCAtNjQsOSAr
NjQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6c2NoZW1lTWF0Y2hlcyhj
b25zdCBVUkwmIHVybCkgY29uc3QKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpo
b3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBjb25zdCBTdHJpbmcmIGhv
c3QgPSB1cmwuaG9zdCgpOwotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1f
aG9zdCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2hvc3RIYXNXaWxkY2Fy
ZCAmJiBob3N0LmVuZHNXaXRoKCIuIiArIG1faG9zdCwgZmFsc2UpOworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkgfHwgKG1faG9zdEhhc1dpbGRjYXJkICYm
IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLiIgKyBtX2hvc3QpKTsKIAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IDkyMGFkMTJkOThhYWE2OWZiNjAzMThhMzVjZDVjOGFm
NjcyM2NkNmIuLmJlNmRjODgxZjQ4M2Q4ZDU4ZGE2ZmViOThlMTQyZjNiNWY1M2Y2MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuY3BwCkBAIC00MzcsMTAgKzQzNywxMCBAQCBzdGF0aWMgYm9vbCBpc05v
bmNlQ2hhcmFjdGVyKFVDaGFyIGMpCiAvLyBub25jZS12YWx1ZSAgICAgPSBiYXNlNjQtdmFsdWUK
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VOb25jZVNvdXJjZShj
b25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gbm9uY2VQcmVmaXgoIidub25jZS0iLCBTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBpZiAoIVN0cmluZ1ZpZXcoYmVnaW4sIGVuZCAtIGJlZ2luKS5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uobm9uY2VQcmVmaXguZ2V0KCkpKQorICAgIGNvbnN0
IHVuc2lnbmVkIG5vbmNlUHJlZml4TGVuZ3RoID0gNzsKKyAgICBpZiAoIVN0cmluZ1ZpZXcoYmVn
aW4sIGVuZCAtIGJlZ2luKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIidub25jZS0iKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFVDaGFyKiBwb3NpdGlvbiA9IGJlZ2lu
ICsgbm9uY2VQcmVmaXguZ2V0KCkubGVuZ3RoKCk7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0aW9u
ID0gYmVnaW4gKyBub25jZVByZWZpeExlbmd0aDsKICAgICBjb25zdCBVQ2hhciogYmVnaW5Ob25j
ZVZhbHVlID0gcG9zaXRpb247CiAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc05vbmNlQ2hhcmFjdGVy
Pihwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAocG9zaXRpb24gPj0gZW5kIHx8IHBvc2l0aW9uID09
IGJlZ2luTm9uY2VWYWx1ZSB8fCAqcG9zaXRpb24gIT0gJ1wnJykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RnJhbWVJT1MubW0KaW5kZXggYjMzZTg2OTdlMjk1Yjg3ZTlhOTA0NzExOTljN2Y2MGM5NDU0ZjRl
My4uNTg0Zjc0YmI1NDEwMTJmZjdjOWU0ZjQ0OTkxMmY1MTI5ZGQxNmQ2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTExOSw3ICsxMTksNyBAQCBOU0FycmF5ICpGcmFtZTo6
d29yZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBjb25zdAogICAgIGlmICghaXNTdGFydE9mUGFyYWdy
YXBoKGVuZCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gZW5kLnByZXZp
b3VzKCk7CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAg
ICAgIGlmICghaXN3cHVuY3QoYykgJiYgIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSAweEEw
KQorICAgICAgICBpZiAoIWlzd3B1bmN0KGMpICYmICFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMg
IT0gbm9CcmVha1NwYWNlKQogICAgICAgICAgICAgZW5kID0gc3RhcnRPZldvcmQoZW5kKTsKICAg
ICB9CiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kKSk7CkBA
IC0xNDAsNyArMTQwLDcgQEAgTlNBcnJheSAqRnJhbWU6OndvcmRzSW5DdXJyZW50UGFyYWdyYXBo
KCkgY29uc3QKICAgICAgICAgaWYgKGxlbmd0aCA+IDEgfHwgIWlzU3BhY2VPck5ld2xpbmUodGV4
dFswXSkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mV29yZEJvdW5kYXJ5ID0gMDsKICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNTcGFjZU9yTmV3bGluZSh0ZXh0W2ldKSB8fCB0ZXh0W2ldID09IDB4QTApIHsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZSh0ZXh0W2ldKSB8fCB0ZXh0W2ldID09
IG5vQnJlYWtTcGFjZSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgd29yZExlbmd0aCA9IGkg
LSBzdGFydE9mV29yZEJvdW5kYXJ5OwogICAgICAgICAgICAgICAgICAgICBpZiAod29yZExlbmd0
aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2h1
bmsgPSB0ZXh0LnN1YnN0cmluZyhzdGFydE9mV29yZEJvdW5kYXJ5LCB3b3JkTGVuZ3RoKS5jcmVh
dGVOU1N0cmluZygpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjp3b3Jkc0lu
Q3VycmVudFBhcmFncmFwaCgpIGNvbnN0CiAgICAgaWYgKFt3b3JkcyBjb3VudF0gPiAwICYmIGlz
RW5kT2ZQYXJhZ3JhcGgocG9zaXRpb24pICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zaXRpb24p
KSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9IHBvc2l0aW9uLnByZXZpb3Vz
KCk7CiAgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7Ci0gICAgICAg
IGlmICghaXNTcGFjZU9yTmV3bGluZShjKSAmJiBjICE9IDB4QTApCisgICAgICAgIGlmICghaXNT
cGFjZU9yTmV3bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSkKICAgICAgICAgICAgIFt3b3Jk
cyByZW1vdmVMYXN0T2JqZWN0XTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
bnRUeXBlLmNwcAppbmRleCA5OTYxY2RkZDUwZmY3N2I0N2Y3YzAzNzMyZjkyZTA5ZWU5ZTIzYjAx
Li5hYzc1ZTZmOTUxMWYxZjFiN2RlMTA0OTgxMDM1MDY1YjRkNWJiYjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZyBDb250
ZW50VHlwZTo6cGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyTmFtZSkgY29uc3QKICAg
ICAvLyBhIE1JTUUgdHlwZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSAicGFyYW09dmFsdWUiIGFmdGVy
IGEgc2VtaS1jb2xvbiwgYW5kIHNlcGFyYXRlZCBmcm9tIGVhY2ggb3RoZXIgYnkgc2VtaS1jb2xv
bnMKICAgICBzaXplX3Qgc2VtaSA9IHN0cmlwcGVkVHlwZS5maW5kKCc7Jyk7CiAgICAgaWYgKHNl
bWkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgc2l6ZV90IHN0YXJ0ID0gc3RyaXBwZWRUeXBlLmZp
bmQocGFyYW1ldGVyTmFtZSwgc2VtaSArIDEsIGZhbHNlKTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0
ID0gc3RyaXBwZWRUeXBlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShwYXJhbWV0ZXJOYW1lLCBzZW1p
ICsgMSk7CiAgICAgICAgIGlmIChzdGFydCAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgc3Rh
cnQgPSBzdHJpcHBlZFR5cGUuZmluZCgnPScsIHN0YXJ0ICsgcGFyYW1ldGVyTmFtZS5sZW5ndGgo
KSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgIT0gbm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWJhYjFiYmU2NzQwZTMyODI1
MmViMTAxYzk1NzNjNzNhMjkwMWVhNi4uYTc5OWU4NzFjMGUzNWYyOTUwYzUzNjliMjdiODVkYTdk
MDlmNTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAKQEAgLTQ5MSwxNSArNDkxLDE1IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRTdHlsZVNoZWV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEZvbnRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmb250TGVuID0gNTsKLSAgICBpZiAo
IW1pbWVUeXBlLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZm9udC8iKSkKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZm9udExlbmd0aCA9IDU7CisgICAgaWYgKCFzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiZm9udC8iKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIFN0cmluZyBzdWJUeXBlID0gbWltZVR5cGUuc3Vic3RyaW5nKGZvbnRMZW4p
OwotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJUeXBlLCAid29m
ZiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUsICJ3
b2ZmMiIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN1YlR5cGUs
ICJvdGYiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdWJUeXBl
LCAidHRmIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3ViVHlw
ZSwgInNmbnQiKTsKKyAgICBhdXRvIHN1YnR5cGUgPSBTdHJpbmdWaWV3IHsgbWltZVR5cGUgfS5z
dWJzdHJpbmcoZm9udExlbmd0aCk7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHN1YnR5cGUsICJ3b2ZmIikKKyAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc3VidHlwZSwgIndvZmYyIikKKyAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3VidHlwZSwgIm90ZiIpCisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN1YnR5cGUsICJ0dGYiKQorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdWJ0eXBlLCAic2ZudCIpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC01
MTEsNyArNTExLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEpTT05NSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIFdoZW4gZGV0ZWN0aW5nICtqc29uIGVuc3VyZSB0aGVyZSBpcyBhIG5vbi1lbXB0eSB0eXBl
IC8gc3VidHlwZSBwcmVjZWVkaW5nIHRoZSBzdWZmaXguCi0gICAgaWYgKG1pbWVUeXBlLmVuZHNX
aXRoKCIranNvbiIsIGZhbHNlKSAmJiBtaW1lVHlwZS5sZW5ndGgoKSA+PSA4KSB7CisgICAgaWYg
KG1pbWVUeXBlLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIitqc29uIikgJiYgbWltZVR5cGUu
bGVuZ3RoKCkgPj0gOCkgewogICAgICAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9IG1pbWVUeXBl
LmZpbmQoJy8nKTsKICAgICAgICAgaWYgKHNsYXNoUG9zaXRpb24gIT0gbm90Rm91bmQgJiYgc2xh
c2hQb3NpdGlvbiA+IDAgJiYgc2xhc2hQb3NpdGlvbiA8PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDYp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1NiwxMyArNTU2LDEyIEBAIGJvb2wgTUlN
RVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICByZXR1cm4gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpCiAgICAg
ICAgIHx8IGlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKG1pbWVUeXBlKSAvLyBSZW5kZXIgSlNPTiBh
cyB0ZXh0L3BsYWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBm
YWxzZSkKKyAgICAgICAgfHwgKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJ0ZXh0LyIpCiAgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKQogICAgICAgICAgICAgJiYg
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSk7CiB9
CiAKLQogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRYTUxNSU1FVHlwZUNoYXIoVUNoYXIgYykK
IHsKICAgICAvLyBWYWxpZCBjaGFyYWN0ZXJzIHBlciBSRkNzIDMwMjMgYW5kIDIwNDU6IDAtOWEt
ekEtWl8tK34hJF57fXwuJSdgIyYqCkBAIC01NzUsNyArNTc0LDcgQEAgYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3htbCIpIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoKCIreG1sIiwg
ZmFsc2UpKQorICAgIGlmICghbWltZVR5cGUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiK3ht
bCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9
IG1pbWVUeXBlLmZpbmQoJy8nKTsKQEAgLTU5OSw5ICs1OTgsOSBAQCBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
Ly8gb2YgdXNpbmcgYSBoYXNoIHNldC4KICAgICAvLyBBbnkgb2YgdGhlIE1JTUUgdHlwZXMgYmVs
b3cgbWF5IGJlIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2Ygc3BlY2lmaWMgdmVyc2lvbnMgb2Yg
dGhlIEpWTSwKICAgICAvLyB3aGljaCBpcyB3aHkgd2UgdXNlIHN0YXJ0c1dpdGgoKQotICAgIHJl
dHVybiBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFs
c2UpCi0gICAgICAgIHx8IG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3gtamF2YS1i
ZWFuIiwgZmFsc2UpCi0gICAgICAgIHx8IG1pbWVUeXBlLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9u
L3gtamF2YS12bSIsIGZhbHNlKTsKKyAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiKQorICAgICAg
ICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGlj
YXRpb24veC1qYXZhLWJlYW4iKQorICAgICAgICB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1qYXZhLXZtIik7CiB9CiAKIGJvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQpAQCAtNjI2LDcgKzYyNSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2Fu
U2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKGlzU3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1N1cHBvcnRlZEpTT05NSU1FVHlwZSht
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0
c1dpdGgoInRleHQvIiwgZmFsc2UpKQorICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC8iKSkKICAgICAgICAgcmV0dXJuICFpc1Vuc3VwcG9y
dGVkVGV4dE1JTUVUeXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuY3BwCmluZGV4IDJlZDQ0YjAyZDlhNGRkMzJlY2U1OTllMTEzNjI1YmI5Y2RjYzQ4
OGUuLjJmMzU1YTk3ZWRkNmVhMjFjNjQ0YWI3MGI5MTAzZGUyZGU5Mzk3YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgVVJMOjpzZXRQcm90b2NvbChj
b25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGNvbnRh
aW5zT25seUFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RhdGljIGJvb2wgaXNBbGxBU0NJSShT
dHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcu
bGVuZ3RoKCkpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRI
b3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKICAgICAvLyBG
b3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2Rpbmcs
IHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCiAgICAgY29uc3QgdW5zaWduZWQgaG9zdG5h
bWVCdWZmZXJMZW5ndGggPSAyMDQ4OwogICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBo
b3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBjb250YWluc09ubHlBU0NJSShzdHJpbmcpKSB7CisgICAg
aWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUko
c3RyaW5nKSkgewogICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJpbmcpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAppbmRleCBl
ZDU2MDQ1MWFjYjFmMzU1ZWI5NDRjNTQzOWFiYWNjNDMwNzkyNjFmLi42NzI4NjEyZWQwMzI0OWZm
OTc2Mjg4MjE1ZGM5YjQ1MTNjYTk3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5jcHAKQEAgLTI1MzgsMTkgKzI1MzgsMTAgQEAgVmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRl
ZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QKICAg
ICByZXR1cm4gb3V0cHV0OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNvbnRhaW5z
T25seUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIEFTU0VSVCghc3RyaW5nLmlz
TnVsbCgpKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBz
dHJpbmcubGVuZ3RoKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
c3RkOjpvcHRpb25hbDxWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZl
clNpemU+PiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+
PiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbikKIHsKICAgICBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBh
c2NpaTsKLSAgICBpZiAoY29udGFpbnNPbmx5QVNDSUkoZG9tYWluKSkgeworICAgIGlmIChkb21h
aW4uaXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3Ro
KCk7CiAgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CkBAIC0yNzY3LDcgKzI3NTgs
NyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChk
b21haW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVk
LnNpemUoKSkpCiAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgIGF1dG8g
YXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKGRvbWFpbiwgaG9zdEJlZ2luKTsKKyAgICBhdXRv
IGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsK
ICAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlE
b21haW4udmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBWZWN0b3I8TENoYXIs
IGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWlu
LnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmluZGV4IDFhNTNjOGM3ZTA2
YjI3NTc0NDkwMTQ5MzFhMTcxZTc1NjVkYjk0MzIuLjA2ZDAxYzFjZjIyNTJiNzZhY2UxMTQzNTk1
Y2Y2NTE0MGM1YjdkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCkBAIC05Nyw3
ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUp
OwogICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPj4gZG9tYWluVG9BU0NJSShj
b25zdCBTdHJpbmcmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24p
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFZlY3RvcjxMQ2hhciwgZGVm
YXVsdElubGluZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3Qs
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5s
aW5lQnVmZmVyU2l6ZT4gcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDc4ODlkOGExNGRiYzg2YTkyNTI0ZTUxZTllZWU5ZmFkZjYxOTY2YzEuLjVmZmUz
ZDI5NTRmZWU4YmM5YTY5NTM1ZDc1OGJkNWExNzhkMjEyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkzMyw4ICs5MzMsOCBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYQogICAgIC8vIHNsb3cgY29ubmVjdGlvbnMuIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0MDk+CiAgICAgaWYgKGNsaWVu
dCAmJiBjbGllbnQtPm1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpKSB7CiAgICAg
ICAgIFN0cmluZyBob3N0ID0gY2xpZW50LT5tZWRpYVBsYXllckRvY3VtZW50SG9zdCgpOwotICAg
ICAgICBpZiAoKGhvc3QuZW5kc1dpdGgoIi55b3V0dWJlLmNvbSIsIGZhbHNlKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0LCAieW91dHViZS5jb20iKSkKLSAgICAgICAgICAg
ICYmIChjb250YWluZXJUeXBlLnN0YXJ0c1dpdGgoInZpZGVvL3dlYm0iLCBmYWxzZSkgfHwgY29u
dGFpbmVyVHlwZS5zdGFydHNXaXRoKCJ2aWRlby94LWZsdiIsIGZhbHNlKSkpCisgICAgICAgIGlm
ICgoaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIueW91dHViZS5jb20iKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0LCAieW91dHViZS5jb20iKSkKKyAgICAgICAg
ICAgICYmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUs
ICJ2aWRlby93ZWJtIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250
YWluZXJUeXBlLCAidmlkZW8veC1mbHYiKSkpCiAgICAgICAgICAgICByZXR1cm4gSXNOb3RTdXBw
b3J0ZWQ7CiAgICAgfQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmJlMTEzY2ZiOTUyOWNmM2I5MjI3YTI2ZDc1Yzky
NjVkNzljMjI2My4uZDI3ODBjOThmY2YyNDQ2ZmFmOTIwN2VkNTUyN2ZiZmVkZTMzMWQ0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVndWxhckV4
cHJlc3Npb24mIHZhbGlkS2V5U3lzdGVtUkUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWd1bGFyRXhwcmVzc2lvbj4ga2V5U3lzdGVtUkUoIl5jb21cXC5hcHBsZVxcLmZwc1xcLlsy
M11fXFxkKyg/OixcXGQrKSokIiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxl
XFwuZnBzXFwuWzIzXV9cXGQrKD86LFxcZCspKiQiLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5z
aXRpdmUpOwogICAgIHJldHVybiBrZXlTeXN0ZW1SRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IGZiMGVjZTNjNzRhNjliYzVlYzJhZDc1N2UyZTU0OTliZGRiYWExYWEuLjFmMmI1
ZjVkMGJhODUxYjIxMzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTY4NSw3ICs2ODUsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzaW1pbGFy
Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdAogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGdlZXphUGxhaW4oIkdlZXphUHJvIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gZ2VlemFCb2xkKCJHZWV6YVByby1Cb2xkIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgZm9yIChTdHJpbmcqIG1hdGNoV29yZCA6
IG1hdGNoV29yZHMpIHsKLSAgICAgICAgaWYgKGZhbWlseS5jb250YWlucygqbWF0Y2hXb3JkLCBm
YWxzZSkpCisgICAgICAgIGlmIChmYW1pbHkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgqbWF0
Y2hXb3JkKSkKICAgICAgICAgICAgIHJldHVybiBmb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBp
c0ZvbnRXZWlnaHRCb2xkKGRlc2NyaXB0aW9uLndlaWdodCgpKSA/IGdlZXphQm9sZCA6IGdlZXph
UGxhaW4pOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbQppbmRleCAyNDZhMjhiYzc2MzIzM2FmNmQyYzEyNDBlMGU4YmJmM2NmZjBhMGRhLi5m
M2RlMjdmM2U4ZjMxNmQxZjM3YmI0ZDNmMTczMWExNzI0M2JhZjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRS
ZWplY3RNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgLy8gUVRLaXQgd2lsbCBy
ZXR1cm4gbm9uLXZpZGVvIE1JTUUgdHlwZXMgd2hpY2ggaXQgY2xhaW1zIHRvIHN1cHBvcnQsIGJ1
dCB3aGljaCB3ZQogICAgIC8vIGRvIG5vdCBzdXBwb3J0IGluIHRoZSA8dmlkZW8+IGVsZW1lbnQu
IERpc2NsYWltIGFsbCBub24gdmlkZW8vIG9yIGF1ZGlvLyB0eXBlcy4KLSAgICByZXR1cm4gIXR5
cGUuc3RhcnRzV2l0aCgidmlkZW8vIiwgZmFsc2UpICYmICF0eXBlLnN0YXJ0c1dpdGgoImF1ZGlv
LyIsIGZhbHNlKTsKKyAgICByZXR1cm4gIXN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodHlwZSwgInZpZGVvLyIpICYmICFzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHR5cGUsICJhdWRpby8iKTsKIH0KIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IGNyZWF0ZUZpbGVUeXBlc1NldChOU0FycmF5ICpmaWxlVHlwZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBkZjI1
ZjU5M2RlYzgzMzk4MDk1NGYyNmJiYjBiYmRmYzZlMDU5YzEzLi4wZTRhYzRiYmUxYzQ5NWNjMWRl
ZGY3ZGUyMzUzNWQ3YTY3ZjBkODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKQEAgLTE2NTUsNyArMTY1NSw3IEBAIFN0cmluZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0s
IEdDM0RzCiB7CiAgICAgTE9HKFdlYkdMLCAiT3JpZ2luYWwgU2hhZGVySW5mb0xvZzpcbiVzIiwg
bG9nLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBy
ZWdFeHAoIndlYmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVGXSsiLCBUZXh0Q2FzZVNlbnNpdGl2
ZSk7CisgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAoIndlYmdsX1swMTIz
NDU2Nzg5YWJjZGVmQUJDREVGXSsiKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcHJvY2Vzc2VkTG9n
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMu
bW0KaW5kZXggM2Y0MzE3MjM4ZWRlMzM3NmRlYWI2Y2EwOWNhOGFhYWJmODQxODBkNC4uODEzODBj
Y2EzNDcxNGRkNDM3ZWMwNmYxZDE4ZDViMjhjN2YyZWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIFN0cmlu
ZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQogICAg
IGlmIChbZG9tYWluIF93ZWJfbG9va3NMaWtlSVBBZGRyZXNzXSkKICAgICAgICAgcmV0dXJuIGRv
bWFpbjsKIAotICAgIGlmICghZG9tYWluLmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgaWYgKCFk
b21haW4uaXNBbGxBU0NJSSgpKQogICAgICAgICByZXR1cm4gZG9tYWluOwogICAgIAogICAgIGNv
bnN0IGF1dG8mIGxvd2VyY2FzZURvbWFpbiA9IGRvbWFpbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVy
YXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JN
YWMubW0KaW5kZXggYTgyYzU2YmQxMzYwNWU2MzYzNTgwOWNjNTE0MDIwYmFiMGY1NzU2Yy4uM2Yx
NGY0Mjk3YmM5YmY2YTBiNjU1OWFkNTMwMDlhYzBjZGQ2MDZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCkBAIC0yMzgsNyArMjM4
LDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBr
ZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KIAotICAgIGF1dG8gY2hhbGxlbmdlID0gY2hhbGxlbmdlU3RyaW5nLmNvbnRhaW5zT25s
eUFTQ0lJKCkgPyBjaGFsbGVuZ2VTdHJpbmcuYXNjaWkoKSA6ICIiOworICAgIGF1dG8gY2hhbGxl
bmdlID0gY2hhbGxlbmdlU3RyaW5nLmlzQWxsQVNDSUkoKSA/IGNoYWxsZW5nZVN0cmluZy5hc2Np
aSgpIDogIiI7CiAKICAgICByZXR1cm4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemUsIGNoYWxsZW5nZSwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpp
bmRleCBiODlmYzZlNDFlZjU2YmI4MmY3YmJmYTkwNjY2ZGY2MzhkODdhZDVmLi5iZjA0OGNlZGFl
NzZmYTAwZGRmZjljZTk0ZTQ5ZDlhNGEzOTNjOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIFN0
cmluZyB3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICAKIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3RyaW5nKQogewotICAgIHJldHVybiBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3Ry
aW5nKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2goc3RyaW5nKSAhPSAtMTsKKyAgICByZXR1
cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmlu
Zyh3aWxkY2FyZFN0cmluZyksIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2go
c3RyaW5nKSAhPSAtMTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApp
bmRleCA0MGE2MTc3Mjg4ODgzZTM4OTc1ZGQyYTFjNDgxMzYxNzk3ZWIwNTdmLi5iZDBhYTc5YTgz
NjQzOWIwMzJiMTdjYzE1NzA1NTBjNDQwZWQyZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hB
MShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJp
bmcuY29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3Ry
aW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBjb25zdCB1aW50OF90IG51bGxCeXRlID0gMDsK
ICAgICAgICAgc2hhMS5hZGRCeXRlcyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKICAgICAgICAgc2hhMS5hZGRCeXRlcygmbnVsbEJ5dGUsIDEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDdi
MjIzZTc4ODU5YjY0Y2UzZDZlOTdmYTdmN2Q0MjhhNTM2N2Y2NmQuLmM5MTMwMTk3NDAwYzkxODY5
MjZlYTg2MzYxZDg5YzJmODE1N2U1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTMzMCwxMCArMzMwLDggQEAgQ2Fj
aGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycykKICAgICBpZiAoIXJlc3VsdC5ub0NhY2hlKSB7CiAgICAgICAg
IC8vIEhhbmRsZSBQcmFnbWE6IG5vLWNhY2hlCiAgICAgICAgIC8vIFRoaXMgaXMgZGVwcmVjYXRl
ZCBhbmQgZXF1aXZhbGVudCB0byBDYWNoZS1jb250cm9sOiBuby1jYWNoZQotICAgICAgICAvLyBE
b24ndCBib3RoZXIgdG9rZW5pemluZyB0aGUgdmFsdWUsIGl0IGlzIG5vdCBpbXBvcnRhbnQKLSAg
ICAgICAgU3RyaW5nIHByYWdtYVZhbHVlID0gaGVhZGVycy5nZXQoSFRUUEhlYWRlck5hbWU6OlBy
YWdtYSk7Ci0KLSAgICAgICAgcmVzdWx0Lm5vQ2FjaGUgPSBwcmFnbWFWYWx1ZS5jb250YWlucygi
bm8tY2FjaGUiLCBmYWxzZSk7CisgICAgICAgIC8vIERvbid0IGJvdGhlciB0b2tlbml6aW5nIHRo
ZSB2YWx1ZTsgaGFuZGxpbmcgdGhhdCBleGFjdGx5IHJpZ2h0IGlzIG5vdCBpbXBvcnRhbnQuCisg
ICAgICAgIHJlc3VsdC5ub0NhY2hlID0gaGVhZGVycy5nZXQoSFRUUEhlYWRlck5hbWU6OlByYWdt
YSkuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgibm8tY2FjaGUiKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAppbmRleCBmNjM5YjgyMjkxYWMyMzUwYmFmOGM4NmMxYzljYjkzNGYyMjU3ODk5
Li4wN2ZiNzE4YTMxMTU5ZjQ0ZmY2OWQyMjliMGYyNzc4NTQyZGM2NzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMjE5LDcgKzIx
OSw3IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGRvdWJs
ZSYgZGVsYXksIFN0cmluZyYgdXJsKQogICAgICAgICArK3BvczsKICAgICAgICAgc2tpcFdoaXRl
U3BhY2UocmVmcmVzaCwgcG9zKTsKICAgICAgICAgdW5zaWduZWQgdXJsU3RhcnRQb3MgPSBwb3M7
Ci0gICAgICAgIGlmIChyZWZyZXNoLmZpbmQoInVybCIsIHVybFN0YXJ0UG9zLCBmYWxzZSkgPT0g
dXJsU3RhcnRQb3MpIHsKKyAgICAgICAgaWYgKHJlZnJlc2guZmluZElnbm9yaW5nQVNDSUlDYXNl
KCJ1cmwiLCB1cmxTdGFydFBvcykgPT0gdXJsU3RhcnRQb3MpIHsKICAgICAgICAgICAgIHVybFN0
YXJ0UG9zICs9IDM7CiAgICAgICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCB1cmxTdGFy
dFBvcyk7CiAgICAgICAgICAgICBpZiAocmVmcmVzaFt1cmxTdGFydFBvc10gPT0gJz0nKSB7CkBA
IC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHUKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBtZWRpYVR5cGUubGVuZ3RoKCk7CiAgICAgCiAgICAgd2hpbGUgKHBvcyA8IGxlbmd0
aCkgewotICAgICAgICBwb3MgPSBtZWRpYVR5cGUuZmluZCgiY2hhcnNldCIsIHBvcywgZmFsc2Up
OworICAgICAgICBwb3MgPSBtZWRpYVR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJjaGFyc2V0
IiwgcG9zKTsKICAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCB8fCBwb3MgPT0gMCkgewogICAg
ICAgICAgICAgY2hhcnNldExlbiA9IDA7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MzIsMTAg
KzUzMiwxMSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25n
JiByYW5nZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJhbmdlT2Zmc2V0ID0gcmFu
Z2VFbmQgPSByYW5nZVN1ZmZpeExlbmd0aCA9IC0xOwogCiAgICAgLy8gVGhlICJieXRlcyIgdW5p
dCBpZGVudGlmaWVyIHNob3VsZCBiZSBwcmVzZW50LgotICAgIHN0YXRpYyBjb25zdCBjaGFyIGJ5
dGVzU3RhcnRbXSA9ICJieXRlcz0iOyAKLSAgICBpZiAoIXJhbmdlLnN0YXJ0c1dpdGgoYnl0ZXNT
dGFydCwgZmFsc2UpKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBieXRlc0xlbmd0aCA9IDY7
CisgICAgaWYgKCFzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJhbmdlLCAiYnl0
ZXM9IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgYnl0ZVJhbmdlID0gcmFu
Z2Uuc3Vic3RyaW5nKHNpemVvZihieXRlc1N0YXJ0KSAtIDEpOworICAgIC8vIEZJWE1FOiBUaGUg
cmVzdCBvZiB0aGlzIHNob3VsZCB1c2UgU3RyaW5nVmlldy4KKyAgICBTdHJpbmcgYnl0ZVJhbmdl
ID0gcmFuZ2Uuc3Vic3RyaW5nKGJ5dGVzTGVuZ3RoKTsKIAogICAgIC8vIFRoZSAnLScgY2hhcmFj
dGVyIG5lZWRzIHRvIGJlIHByZXNlbnQuCiAgICAgaW50IGluZGV4ID0gYnl0ZVJhbmdlLmZpbmQo
Jy0nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKaW5kZXggNTc1Nzgy
NmVmYjMxNzZhMjdhYTFlMWQ3YzcyZDM4MWZlODlmMWZlMy4uY2VlMzZiNDFiMDE3YjUwYTM5ZjBh
MWVlMmNlZTIzNWMxOTk0Y2U2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3Vy
bC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VGcm9tSGFuZGxlKGNvbnN0IEN1cmxSZXMKICAgICBTdHJp
bmcgcmVhbG07CiAgICAgY29uc3QgU3RyaW5nIHJlYWxtU3RyaW5nKCJyZWFsbT0iKTsKICAgICBh
dXRvIGF1dGhIZWFkZXIgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoU3RyaW5nKCJ3d3ctYXV0
aGVudGljYXRlIikpOwotICAgIGF1dG8gcmVhbG1Qb3MgPSBhdXRoSGVhZGVyLmZpbmRJZ25vcmlu
Z0Nhc2UocmVhbG1TdHJpbmcpOworICAgIGF1dG8gcmVhbG1Qb3MgPSBhdXRoSGVhZGVyLmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShyZWFsbVN0cmluZyk7CiAgICAgaWYgKHJlYWxtUG9zICE9IG5vdEZv
dW5kKSB7CiAgICAgICAgIHJlYWxtID0gYXV0aEhlYWRlci5zdWJzdHJpbmcocmVhbG1Qb3MgKyBy
ZWFsbVN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIHJlYWxtID0gcmVhbG0ubGVmdChyZWFsbS5m
aW5kKCcsJykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL011bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBkNTUwYjA4Y2IwYTkyYTJmMTg4NDBiNjNi
OGZlNWMzNzk5YjAzMTM0Li43M2IyNDUxNTliYTNjODA4OTcxOTI1NzA5NmRkMzVhNjI2YTczOGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTXVsdGlw
YXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
TXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBib29sIE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFN0cmluZyYgYm91bmRhcnkpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBs
ZW5ndGggPSBzdHJsZW4oImJvdW5kYXJ5PSIpOwotICAgIHNpemVfdCBib3VuZGFyeVN0YXJ0ID0g
Y29udGVudFR5cGUuZmluZElnbm9yaW5nQ2FzZSgiYm91bmRhcnk9Iik7CisgICAgc2l6ZV90IGJv
dW5kYXJ5U3RhcnQgPSBjb250ZW50VHlwZS5maW5kSWdub3JpbmdBU0NJSUNhc2UoImJvdW5kYXJ5
PSIpOwogCiAgICAgLy8gTm8gYm91bmRhcnkgZm91bmQuCiAgICAgaWYgKGJvdW5kYXJ5U3RhcnQg
PT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcAppbmRleCAz
NTZmOWZiMTY3Zjc5MjdhNDJlYjc1ZmQ2NmYyYTVjOGZhMzMwOWNhLi43YTc1OWM0YTlmZTdkMDJk
NTI0MzlhODhmYTMyNjlhOWE4MzJhNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxl
Z2F0ZS5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlOjpoYW5kbGVEYXRhVVJMKCkKICAgICBTdHJpbmcgZGF0YSA9IHVybC5zdWJzdHJpbmcoaW5k
ZXggKyAxKTsKICAgICBhdXRvIG9yaWdpbmFsU2l6ZSA9IGRhdGEubGVuZ3RoKCk7CiAKLSAgICBi
b29sIGJhc2U2NCA9IG1lZGlhVHlwZS5lbmRzV2l0aCgiO2Jhc2U2NCIsIGZhbHNlKTsKKyAgICBi
b29sIGJhc2U2NCA9IG1lZGlhVHlwZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCI7YmFzZTY0
Iik7CiAgICAgaWYgKGJhc2U2NCkKICAgICAgICAgbWVkaWFUeXBlID0gbWVkaWFUeXBlLmxlZnQo
bWVkaWFUeXBlLmxlbmd0aCgpIC0gNyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4
IDE0ODBjODQ3Y2QyMTg1ZjcyYTI3Yjg2YTFjOTI2NjJiMjY4ODg1N2UuLjg2NjU3MDFmOWZmNTdk
MjgwMDRlYmMxM2FiMzAzNDQ5MzlhZjMxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OmlzQXBwZW5kYWJsZUhlYWRl
cihjb25zdCBTdHJpbmcgJmtleSkKICAgICB9OwogCiAgICAgLy8gQ3VzdG9tIGhlYWRlcnMgc3Rh
cnQgd2l0aCAnWC0nLCBhbmQgbmVlZCBubyBmdXJ0aGVyIGNoZWNraW5nLgotICAgIGlmIChrZXku
c3RhcnRzV2l0aCgieC0iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNlKSkKKyAgICBpZiAoc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ4LSIpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogYXBwZW5kYWJsZUhlYWRl
cnMpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3Bv
bnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAKIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6YXBwZW5kSFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogewotICAgIGF1
dG8gc3BsaXRQb3Npc3Rpb24gPSBoZWFkZXIuZmluZCgiOiIpOwotICAgIGlmIChzcGxpdFBvc2lz
dGlvbiAhPSBub3RGb3VuZCkgewotICAgICAgICBhdXRvIGtleSA9IGhlYWRlci5sZWZ0KHNwbGl0
UG9zaXN0aW9uKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGhlYWRl
ci5zdWJzdHJpbmcoc3BsaXRQb3Npc3Rpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBh
dXRvIHNwbGl0UG9zaXRpb24gPSBoZWFkZXIuZmluZCgnOicpOworICAgIGlmIChzcGxpdFBvc2l0
aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGF1dG8ga2V5ID0gaGVhZGVyLmxlZnQoc3BsaXRQ
b3NpdGlvbikuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBoZWFkZXIu
c3Vic3RyaW5nKHNwbGl0UG9zaXRpb24gKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgICAg
ICBpZiAoaXNBcHBlbmRhYmxlSGVhZGVyKGtleSkpCiAgICAgICAgICAgICBhZGRIVFRQSGVhZGVy
RmllbGQoa2V5LCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldEhUVFBIZWFk
ZXJGaWVsZChrZXksIHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGhlYWRlci5zdGFydHNXaXRoKCJI
VFRQIiwgZmFsc2UpKSB7CisgICAgfSBlbHNlIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGhlYWRlciwgImh0dHAiKSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJz
dCBsaW5lIG9mIHRoZSByZXNwb25zZS4KICAgICAgICAgc2V0U3RhdHVzTGluZShoZWFkZXIpOwog
ICAgIH0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldFN0YXR1
c0xpbmUoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAgICAgYXV0byBzdGF0dXNMaW5lID0gaGVh
ZGVyLnN0cmlwV2hpdGVTcGFjZSgpOwogCi0gICAgYXV0byBodHRwVmVyc2lvbkVuZFBvc2l0aW9u
ID0gc3RhdHVzTGluZS5maW5kKCIgIik7CisgICAgYXV0byBodHRwVmVyc2lvbkVuZFBvc2l0aW9u
ID0gc3RhdHVzTGluZS5maW5kKCcgJyk7CiAgICAgYXV0byBzdGF0dXNDb2RlRW5kUG9zaXRpb24g
PSBub3RGb3VuZDsKIAogICAgIC8vIEV4dHJhY3QgdGhlIGh0dHAgdmVyc2lvbgpAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0U3RhdHVzTGluZShjb25zdCBTdHJp
bmcmIGhlYWRlcikKICAgICAgICAgc2V0SFRUUFZlcnNpb24oaHR0cFZlcnNpb24uc3RyaXBXaGl0
ZVNwYWNlKCkpOwogCiAgICAgICAgIHN0YXR1c0xpbmUgPSBzdGF0dXNMaW5lLnN1YnN0cmluZyho
dHRwVmVyc2lvbkVuZFBvc2l0aW9uICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIHN0
YXR1c0NvZGVFbmRQb3NpdGlvbiA9IHN0YXR1c0xpbmUuZmluZCgiICIpOworICAgICAgICBzdGF0
dXNDb2RlRW5kUG9zaXRpb24gPSBzdGF0dXNMaW5lLmZpbmQoJyAnKTsKICAgICB9CiAKICAgICAv
LyBFeHRyYWN0IHRoZSBodHRwIHN0YXR1cyB0ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDk3MDAyNzBhYmYx
ZTJmODQ2NDBhZGMyYmVkNWIwZjI2MDZhNGIwYjUuLjE0MDBhZjdlNTkxMDhkNjhlMGExZGFiMDU4
MTI5OWU2MzUzMjdiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBzdGF0aWMg
dm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykK
IC8vIEZpbmQgdGhlIG1hcmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAtLT4iIGFuZCAi
PCEtLUVuZEZyYWdtZW50IC0tPiIsIGFjY291bnRpbmcgZm9yIGJyb3dzZXIgcXVpcmtzLgogc3Rh
dGljIFN0cmluZyBleHRyYWN0TWFya3VwRnJvbUNGSFRNTChjb25zdCBTdHJpbmcmIGNmaHRtbCkK
IHsKLSAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZh
bHNlKTsKLSAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmaHRtbC5maW5kKCJzdGFydGZyYWdtZW50
IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRt
bC5maW5kSWdub3JpbmdBU0NJSUNhc2UoIjxodG1sIik7CisgICAgdW5zaWduZWQgdGFnU3RhcnQg
PSBjZmh0bWwuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3Rh
cnQpOwogICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSBjZmh0bWwuZmluZCgnPicsIHRhZ1N0
YXJ0KSArIDE7Ci0gICAgdW5zaWduZWQgdGFnRW5kID0gY2ZodG1sLmZpbmQoImVuZGZyYWdtZW50
IiwgZnJhZ21lbnRTdGFydCwgZmFsc2UpOworICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmaHRtbC5m
aW5kSWdub3JpbmdBU0NJSUNhc2UoImVuZGZyYWdtZW50IiwgZnJhZ21lbnRTdGFydCk7CiAgICAg
dW5zaWduZWQgZnJhZ21lbnRFbmQgPSBjZmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwog
ICAgIHJldHVybiBjZmh0bWwuc3Vic3RyaW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0g
ZnJhZ21lbnRTdGFydCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiB9CkBAIC02MzAsOSArNjMwLDkgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBj
b25zdCBTdHJpbmcmIGNmaHRtbCkKICAgICAvLyBvYnRhaW4gYmFzZVVSTCBpZiBwcmVzZW50CiAg
ICAgU3RyaW5nIHNyY1VSTFN0cigic291cmNlVVJMOiIpOwogICAgIFN0cmluZyBzcmNVUkw7Ci0g
ICAgdW5zaWduZWQgbGluZVN0YXJ0ID0gY2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7
CisgICAgdW5zaWduZWQgbGluZVN0YXJ0ID0gY2ZodG1sLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShz
cmNVUkxTdHIpOwogICAgIGlmIChsaW5lU3RhcnQgIT0gLTEpIHsKLSAgICAgICAgdW5zaWduZWQg
c3JjRW5kID0gY2ZodG1sLmZpbmQoIlxuIiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVu
c2lnbmVkIHNyY0VuZCA9IGNmaHRtbC5maW5kKCdcbicsIGxpbmVTdGFydCk7CiAgICAgICAgIHVu
c2lnbmVkIHNyY1N0YXJ0ID0gbGluZVN0YXJ0K3NyY1VSTFN0ci5sZW5ndGgoKTsKICAgICAgICAg
U3RyaW5nIHJhd1NyY1VSTCA9IGNmaHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQsIHNyY0VuZC1zcmNT
dGFydCk7CiAgICAgICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHJhd1NyY1VSTCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKaW5kZXggYmE4M2Y5YzEyYjdmNWMzNmJiOWYzNTY3ODY2
ZTI1MzExYTdlZDNkNS4uNGFlY2QxOTk4MTMyOTAyMGVjNTkyZGVkMTZhNjg1ODQ1ZjFjYWQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmNwcApAQCAtNDEsNyArNDEsNyBAQCBCaWRp
UnVuOjpCaWRpUnVuKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBzdG9wLCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBCaWRpQ29udAogI2lmbmRlZiBOREVCVUcKICAgICBiaWRpUnVuQ291bnRlci5p
bmNyZW1lbnQoKTsKICNlbmRpZgotICAgIEFTU0VSVCghaXM8UmVuZGVyVGV4dD4obV9yZW5kZXJl
cikgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0b3ApIDw9IGRvd25jYXN0PFJlbmRlclRleHQ+
KG1fcmVuZGVyZXIpLnRleHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKCFpczxSZW5kZXJUZXh0Piht
X3JlbmRlcmVyKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RvcCkgPD0gZG93bmNhc3Q8UmVu
ZGVyVGV4dD4obV9yZW5kZXJlcikudGV4dCgpLmxlbmd0aCgpKTsKICAgICAvLyBTdG9yZWQgaW4g
YmFzZSBjbGFzcyB0byBzYXZlIHNwYWNlLgogICAgIG1faGFzSHlwaGVuID0gZmFsc2U7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYWNiOWVkY2My
MmVhYTA5ODE5ZGVmNjE0NzNkZDQ4MWQxYTY4OWE4NS4uZGVkZWY4ZTVlOGM4ZDA4Yjc2ZDc0NDQ4
ZDQ5ZWU3NWU2OTUxNGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBE
RlVSTCgpIGNvbnN0CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gVVJM
KCk7CiAKLSAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYi
IHx8IChlbGVtZW50LnNlcnZpY2VUeXBlKCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkuZW5kc1dp
dGgoIi5wZGYiLCBmYWxzZSkpKQorICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlKCkgPT0gImFw
cGxpY2F0aW9uL3BkZiIgfHwgKGVsZW1lbnQuc2VydmljZVR5cGUoKS5pc0VtcHR5KCkgJiYgdXJs
LnBhdGgoKS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIucGRmIikpKQogICAgICAgICByZXR1
cm4gdXJsOwogICAgIHJldHVybiBVUkwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmNwcAppbmRleCA1OGViNGRkOTRmODUxNjc2ZWQxMjU1M2RkYTIzOGUzYWVh
OTUyNjNmLi42ODI5NmQ0YzRkOGU2ZWZjZjM4Mzk1MDc2MDgyMTdkNjQ4YjE3M2U2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0zNzksNyArMzc5LDcg
QEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElu
bGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNo
aWxkLT5yZW5kZXJlcigpKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpjaGlsZCk7CiAgICAgICAgICAgICBSZW5kZXJUZXh0JiByZW5kZXJU
ZXh0ID0gdGV4dEJveC5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKHJlbmRlclRleHQudGV4
dExlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAobmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXds
aW5lKHJlbmRlclRleHQuY2hhcmFjdGVyQXQodGV4dEJveC5zdGFydCgpKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHRleHRCb3gubGluZVN0eWxlKCkuZm9udENhc2NhZGUo
KS53b3JkU3BhY2luZygpOwogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSAhaXNT
cGFjZU9yTmV3bGluZShyZW5kZXJUZXh0LmNoYXJhY3RlckF0KHRleHRCb3guZW5kKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggMDhlYjJhYjhhNGFh
OWZkYWI3MjdiMzcyZWE1NWE4ZjI5NDRlM2VjZS4uN2Y3OTM0ZDdjYzc0NmFkNjk5YjY1ZWU4ZmQy
M2MxYmUyNDRhNzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
LmgKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZp
cnN0SW5jbHVkaW5nRW1wdHlJbmxpbmVzKFJlbmRlckVsZW1lbnQmIHJvb3QpCiBpbmxpbmUgdm9p
ZCBJbmxpbmVJdGVyYXRvcjo6ZmFzdEluY3JlbWVudEluVGV4dE5vZGUoKQogewogICAgIEFTU0VS
VChtX3JlbmRlcmVyKTsKLSAgICBBU1NFUlQobV9wb3MgPD0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
Km1fcmVuZGVyZXIpLnRleHRMZW5ndGgoKSk7CisgICAgQVNTRVJUKG1fcG9zIDw9IGRvd25jYXN0
PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpOwogICAgICsrbV9wb3M7
CiB9CiAKQEAgLTM5Niw3ICszOTYsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVJdGVyYXRvcjo6aW5j
cmVtZW50KElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgIGZhc3RJbmNyZW1l
bnRJblRleHROb2RlKCk7Ci0gICAgICAgIGlmIChtX3BvcyA8IGRvd25jYXN0PFJlbmRlclRleHQ+
KCptX3JlbmRlcmVyKS50ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmIChtX3BvcyA8IGRvd25jYXN0
PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKS50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIGJpZGlOZXh0IGNhbiByZXR1cm4gbnVsbHB0cgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDJhMTcwYTk4M2I4MWZk
NWQ5NTQzZWU3OTg2ODlkNTg5NGEwMDBkN2QuLjlkMTM0ODA5ZDQxNjRkNWIzODg0OTZiYzgwYjI0
YmNkNTNkZGYyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKQEAgLTMxNCw3ICszMTQsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lz
Qm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVmdEVkZ2UsIGZsbwogCiBib29sIElu
bGluZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIo
KS5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYgKCpyZW5kZXJlcigp
LnRleHQoKSlbc3RhcnQoKV0gPT0gJ1xuJzsKKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgp
LnByZXNlcnZlTmV3bGluZSgpICYmIGxlbigpID09IDEgJiYgcmVuZGVyZXIoKS50ZXh0KClbc3Rh
cnQoKV0gPT0gJ1xuJzsKIH0KIAogYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRVbml0IC8q
bGluZUJvdHRvbSovLApAQCAtNjE3LDcgKzYxNyw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKCkgY29uc3QKICAgICBhdXRv
IHN0YXJ0ID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigpOwog
ICAgIGF1dG8gZW5kID0gcmVuZGVyZXIoKS52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24o
KTsKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFy
dCkKLSAgICAgICAgZW5kID0gcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9
IHJlbmRlcmVyKCkudGV4dCgpLmxlbmd0aCgpOwogICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRl
ID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKQogICAgICAgICBzdGFydCA9IDA7CiAgICAg
cmV0dXJuIHsgY2xhbXBlZE9mZnNldChzdGFydCksIGNsYW1wZWRPZmZzZXQoZW5kKSB9OwpAQCAt
MTA4MiwxNSArMTA4MiwxNSBAQCBTdHJpbmcgSW5saW5lVGV4dEJveDo6dGV4dChib29sIGlnbm9y
ZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8q
IGNvbWJpbmVkVGV4dCA9IHRoaXMtPmNvbWJpbmVkVGV4dCgpKSB7CiAgICAgICAgIGlmIChpZ25v
cmVDb21iaW5lZFRleHQpCi0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1
YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS50
ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKICAgICAgICAgcmV0dXJuIGNvbWJpbmVk
VGV4dC0+Y29tYmluZWRTdHJpbmdGb3JSZW5kZXJpbmcoKTsKICAgICB9CiAgICAgaWYgKGhhc0h5
cGhlbigpKSB7CiAgICAgICAgIGlmIChpZ25vcmVIeXBoZW4pCi0gICAgICAgICAgICByZXR1cm4g
cmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbik7CisgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVuKTsKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vi
c3RyaW5nKG1fc3RhcnQsIG1fbGVuKSwgbGluZVN0eWxlKCkuaHlwaGVuU3RyaW5nKCkpOwogICAg
IH0KLSAgICByZXR1cm4gcmVuZGVyZXIoKS50ZXh0KCktPnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xl
bik7CisgICAgcmV0dXJuIHJlbmRlcmVyKCkudGV4dCgpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xl
bik7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6
Y29tYmluZWRUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IGI5NTU4NjkxOWU3MzMyMmUxODg4MGMzMDI4Mzc3NzhmODM4MWY0ZTkuLmY0OTJm
MTgwMWJjZTYxMTc1MTU4YzBmNWU5M2ZlOTU3MDNjZDI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzU0OCw3ICszNTQ4LDcgQEAgVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBS
ZW5kZXJTdHlsZSYKIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3Qg
UmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAg
IHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7Ci0gICAgQVNTRVJUKHN0b3AgPD0gdGV4
dC50ZXh0TGVuZ3RoKCkpOworICAgIEFTU0VSVChzdG9wIDw9IHRleHQudGV4dCgpLmxlbmd0aCgp
KTsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcob2Zmc2V0LCBz
dG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNzk3NTdlNzRjNjk3Zjg2MmZhMGY4NjQwOGI3OTJi
MmE2Y2NiZGViNi4uYjI2ZDY3MmJhMDhjNjliZWY5MjJjNzJhYzhlYWRkYmVjMGI1ZGY0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgpAQCAtMzY3MSwx
MyArMzY3MiwxNCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tG
bG93RGF0YSgpCiB9CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQorCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWaXNpYmxlUmVuZGVyVGV4dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
KQogewogICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVu
ZGVyZXIpOwotICAgIHJldHVybiAhcmVuZGVyVGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNFbXB0
eSgpICYmICFyZW5kZXJUZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAg
IHJldHVybiAhcmVuZGVyVGV4dC5saW5lc0JvdW5kaW5nQm94KCkuaXNFbXB0eSgpICYmICFyZW5k
ZXJUZXh0LnRleHQoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKQpAQCAtMzc4Nyw2ICszNzg5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmFkanVzdENvbXB1dGVkRm9udFNpemVzKGZsb2F0IHNpemUsIGZsb2F0IHZpc2libGVXaWR0aCkK
ICAgICAgICAgZGVzY2VuZGFudCA9IFJlbmRlck9iamVjdFRyYXZlcnNhbDo6bmV4dFNraXBwaW5n
Q2hpbGRyZW4odGV4dCwgdGhpcyk7CiAgICAgfQogfQorCiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEV4Y2x1ZGVkQ2hpbGRy
ZW4oYm9vbCByZWxheW91dENoaWxkcmVuKQpAQCAtNDI2NCwxOCArNDI2NywxNSBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbAogICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcuIElmIHRo
b3NlIGFyZSBnb2luZyB0byBiZSBzdHJpcHBlZCBvdXQsCiAgICAgICAgICAgICAgICAgLy8gdGhl
biB0aGV5IHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGluIHRoZSBicmVha2FibGUgY2hhcgogICAg
ICAgICAgICAgICAgIC8vIGNoZWNrLgotICAgICAgICAgICAgICAgIGJvb2wgaGFzQnJlYWthYmxl
Q2hhciwgaGFzQnJlYWs7Ci0gICAgICAgICAgICAgICAgZmxvYXQgYmVnaW5NaW4sIGVuZE1pbjsK
LSAgICAgICAgICAgICAgICBib29sIGJlZ2luV1MsIGVuZFdTOwotICAgICAgICAgICAgICAgIGZs
b2F0IGJlZ2luTWF4LCBlbmRNYXg7CiAgICAgICAgICAgICAgICAgYm9vbCBzdHJpcHBpbmdCZWdp
bldTID0gc3RyaXBGcm9udFNwYWNlczsKLSAgICAgICAgICAgICAgICByZW5kZXJUZXh0LnRyaW1t
ZWRQcmVmV2lkdGhzKGlubGluZU1heCwgYmVnaW5NaW4sIGJlZ2luV1MsIGVuZE1pbiwgZW5kV1Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQnJlYWthYmxlQ2hhciwg
aGFzQnJlYWssIGJlZ2luTWF4LCBlbmRNYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRNaW4sIGNoaWxkTWF4LCBzdHJpcEZyb250U3BhY2VzKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHdpZHRocyA9IHJlbmRlclRleHQudHJpbW1lZFByZWZlcnJlZFdpZHRocyhp
bmxpbmVNYXgsIHN0cmlwRnJvbnRTcGFjZXMpOworCisgICAgICAgICAgICAgICAgY2hpbGRNaW4g
PSB3aWR0aHMubWluOworICAgICAgICAgICAgICAgIGNoaWxkTWF4ID0gd2lkdGhzLm1heDsKIAog
ICAgICAgICAgICAgICAgIC8vIFRoaXMgdGV4dCBvYmplY3Qgd2lsbCBub3QgYmUgcmVuZGVyZWQs
IGJ1dCBpdCBtYXkgc3RpbGwgcHJvdmlkZSBhIGJyZWFraW5nIG9wcG9ydHVuaXR5LgotICAgICAg
ICAgICAgICAgIGlmICghaGFzQnJlYWsgJiYgIWNoaWxkTWF4KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvV3JhcCAmJiAoYmVnaW5XUyB8fCBlbmRXUykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXdpZHRocy5oYXNCcmVhayAmJiAhY2hpbGRNYXgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG9XcmFwICYmICh3aWR0aHMuYmVnaW5XUyB8fCB3aWR0aHMuZW5kV1MpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aCht
aW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmxp
bmVNaW4gPSAwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC00Mjk0LDE0ICs0Mjk0LDE0IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJ
bmRlbnQgfHwgaGFzUmVtYWluaW5nTmVnYXRpdmVUZXh0SW5kZW50KSB7CiAgICAgICAgICAgICAg
ICAgICAgIHRpID0gdGV4dEluZGVudC5jZWlsVG9GbG9hdCgpOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZE1pbiArPSB0aTsKLSAgICAgICAgICAgICAgICAgICAgYmVnaW5NaW4gKz0gdGk7Cisg
ICAgICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1pbiArPSB0aTsKIAogICAgICAgICAgICAg
ICAgICAgICAvLyBJdCB0aGUgdGV4dCBpbmRlbnQgbmVnYXRpdmUgYW5kIGxhcmdlciB0aGFuIHRo
ZSBjaGlsZCBtaW5pbXVtLCB3ZSByZS11c2UgdGhlIHJlbWFpbmRlcgogICAgICAgICAgICAgICAg
ICAgICAvLyBpbiBmdXR1cmUgbWluaW11bSBjYWxjdWxhdGlvbnMsIGJ1dCB1c2luZyB0aGUgbmVn
YXRpdmUgdmFsdWUgYWdhaW4gb24gdGhlIG1heGltdW0KICAgICAgICAgICAgICAgICAgICAgLy8g
d2lsbCBsZWFkIHRvIHVuZGVyLWNvdW50aW5nIHRoZSBtYXggcHJlZiB3aWR0aC4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkTWF4ICs9IHRpOwotICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5NYXggKz0g
dGk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMuYmVnaW5NYXggKz0gdGk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTQzMTYsNDggKzQzMTYsNDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWwKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHN0cmlwcGluZ0Jl
Z2luV1MgPyByZW5kZXJUZXh0LmZpcnN0Q2hhcmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSA6
IDA7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGhhbmdTdGFydFdpZHRoID0gcmVuZGVyVGV4
dC5oYW5nYWJsZVB1bmN0dWF0aW9uU3RhcnRXaWR0aChzdGFydEluZGV4KTsKICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRNaW4gLT0gaGFuZ1N0YXJ0V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAg
IGJlZ2luTWluIC09IGhhbmdTdGFydFdpZHRoOworICAgICAgICAgICAgICAgICAgICB3aWR0aHMu
YmVnaW5NaW4gLT0gaGFuZ1N0YXJ0V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4
IC09IGhhbmdTdGFydFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBiZWdpbk1heCAtPSBoYW5n
U3RhcnRXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzLmJlZ2luTWF4IC09IGhhbmdT
dGFydFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5n
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBubyBicmVha2FibGUgY2hhcmFjdGVycyBhdCBhbGwsCiAgICAg
ICAgICAgICAgICAgLy8gdGhlbiB0aGlzIGlzIHRoZSBlYXN5IGNhc2UuIFdlIGFkZCBvdXJzZWx2
ZXMgdG8gdGhlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAvLyBtaW4gYW5kIG1heCBhbmQgY29u
dGludWUuCi0gICAgICAgICAgICAgICAgaWYgKCFoYXNCcmVha2FibGVDaGFyKQorICAgICAgICAg
ICAgICAgIGlmICghd2lkdGhzLmhhc0JyZWFrYWJsZUNoYXIpCiAgICAgICAgICAgICAgICAgICAg
IGlubGluZU1pbiArPSBjaGlsZE1pbjsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJyZWFrYWJsZSBjaGFyYWN0ZXIuIE5vdyB3ZSBuZWVk
IHRvIGtub3cgaWYKICAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc3RhcnQgYW5kIGVuZCB3aXRo
IHdoaXRlc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgIGlmIChiZWdpbldTKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh3aWR0aHMuYmVnaW5XUykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRW5kIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtaW5M
b2dpY2FsV2lkdGggPSBwcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
bmxpbmVNaW4gKz0gYmVnaW5NaW47CisgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4g
Kz0gd2lkdGhzLmJlZ2luTWluOwogICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdp
ZHRoID0gcHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBpbmxpbmVNaW4pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gLT0gdGk7CiAgICAgICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSBjaGlsZE1pbjsKIAotICAgICAgICAg
ICAgICAgICAgICBpZiAoZW5kV1MpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRocy5l
bmRXUykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZW5kIGluIHdoaXRlc3BhY2Us
IHdoaWNoIG1lYW5zIHdlIGNhbiBlbmQgb3VyIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0
aCwgaW5saW5lTWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IDA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCcmVha0xpbmVBZnRlclRleHQgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1p
bkxvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWlu
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IGVuZE1pbjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IHdpZHRocy5lbmRNaW47CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCcmVha0xpbmVBZnRlclRleHQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGhhc0Jy
ZWFrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlubGluZU1heCArPSBiZWdpbk1heDsKKyAgICAg
ICAgICAgICAgICBpZiAod2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAgICAgICAgICAgICAgIGlu
bGluZU1heCArPSB3aWR0aHMuYmVnaW5NYXg7CiAgICAgICAgICAgICAgICAgICAgIG1heExvZ2lj
YWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgaW5saW5lTWF4KTsKICAg
ICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9n
aWNhbFdpZHRoLCBjaGlsZE1heCk7Ci0gICAgICAgICAgICAgICAgICAgIGlubGluZU1heCA9IGVu
ZE1heDsKKyAgICAgICAgICAgICAgICAgICAgaW5saW5lTWF4ID0gd2lkdGhzLmVuZE1heDsKICAg
ICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgYWRkZWRTdGFydFB1bmN0dWF0aW9uSGFuZyA9IHRydWU7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCkBAIC00Mzg4LDggKzQzODgsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0
ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAg
IGlmIChzdHlsZVRvVXNlLmNvbGxhcHNlV2hpdGVTcGFjZSgpKQogICAgICAgICBzdHJpcFRyYWls
aW5nU3BhY2UoaW5saW5lTWF4LCBpbmxpbmVNaW4sIHRyYWlsaW5nU3BhY2VDaGlsZCk7CiAgICAg
Ci0gICAgaWYgKGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RUZXh0
LT50ZXh0TGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gdHJhaWxp
bmdTcGFjZUNoaWxkID09IGxhc3RUZXh0ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0
cmlwcGluZ1NwYWNlcygpIDogbGFzdFRleHQtPnRleHRMZW5ndGgoKSAtIDE7CisgICAgaWYgKGNh
bkhhbmdQdW5jdHVhdGlvbkF0RW5kICYmIGxhc3RUZXh0ICYmIGxhc3RUZXh0LT50ZXh0KCkubGVu
Z3RoKCkgPiAwKSB7CisgICAgICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gdHJhaWxpbmdTcGFjZUNo
aWxkID09IGxhc3RUZXh0ID8gbGFzdFRleHQtPmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1Nw
YWNlcygpIDogbGFzdFRleHQtPnRleHQoKS5sZW5ndGgoKSAtIDE7CiAgICAgICAgIGZsb2F0IGVu
ZEhhbmdXaWR0aCA9IGxhc3RUZXh0LT5oYW5nYWJsZVB1bmN0dWF0aW9uRW5kV2lkdGgoZW5kSW5k
ZXgpOwogICAgICAgICBpbmxpbmVNaW4gLT0gZW5kSGFuZ1dpZHRoOwogICAgICAgICBpbmxpbmVN
YXggLT0gZW5kSGFuZ1dpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBiNzM2ZDRjMWRiMjdjZmRlMGY5NWMyMWRlMDI5
ZDY4ZWQxZTZlYjA2Li4xMTAwYjZmZTJmZmNkMWUyY2E4MTM0MDM5NTlkNDE0MTE3NzMzMDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcApAQCAtMjQ0LDE1ICsyNDQsMTMgQEAgSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2tGbG93
OjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmYKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0
YXRpYyBpbmxpbmUgYm9vbCBlbmRzV2l0aEFTQ0lJU3BhY2VzKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIHBvcywgdW5zaWduZWQgZW5kKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGlubGluZSBib29sIGVuZHNXaXRoSFRNTFNwYWNlcyhj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWdu
ZWQgZW5kKQogewotICAgIHdoaWxlIChpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyc1twb3NdKSkgewot
ICAgICAgICBwb3MrKzsKLSAgICAgICAgaWYgKHBvcyA+PSBlbmQpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3NpdGlvbjsgaSA8IGVuZDsgKytpKSB7
CisgICAgICAgIGlmICghaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0IEJpZGlSdW5M
aXN0PEJpZGlSdW4+JiBiaWRpUnVucykKQEAgLTI2MCwxOCArMjU4LDE0IEBAIHN0YXRpYyBib29s
IHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihjb25zdCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlk
aVJ1bnMpCiAgICAgQmlkaVJ1biogcnVuID0gYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpOwog
ICAgIGlmICghcnVuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB1bnNpZ25lZCBwb3MgPSBy
dW4tPnN0b3AoKTsKLSAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gcnVuLT5yZW5k
ZXJlcigpOwotICAgIGlmICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgIGlmICghaXM8
UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGNvbnN0IFJlbmRlclRleHQmIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5k
ZXJlcik7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gcmVuZGVyVGV4dC50ZXh0TGVuZ3RoKCk7Ci0g
ICAgaWYgKHBvcyA+PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHJl
bmRlclRleHQuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlbmRzV2l0aEFTQ0lJU3BhY2VzKHJl
bmRlclRleHQuY2hhcmFjdGVyczgoKSwgcG9zLCBsZW5ndGgpOwotICAgIHJldHVybiBlbmRzV2l0
aEFTQ0lJU3BhY2VzKHJlbmRlclRleHQuY2hhcmFjdGVyczE2KCksIHBvcywgbGVuZ3RoKTsKKyAg
ICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocnVuLT5yZW5kZXJlcigpKS50ZXh0
KCk7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBydW4tPnN0b3AoKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgIGlmICh0ZXh0LmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gZW5kc1dpdGhIVE1MU3BhY2VzKHRleHQuY2hhcmFjdGVyczgoKSwgcG9zaXRpb24sIGxl
bmd0aCk7CisgICAgcmV0dXJuIGVuZHNXaXRoSFRNTFNwYWNlcyh0ZXh0LmNoYXJhY3RlcnMxNigp
LCBwb3NpdGlvbiwgbGVuZ3RoKTsKIH0KIAogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93
Ojpjb25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgTGlu
ZUluZm8mIGxpbmVJbmZvKQpAQCAtODg5LDcgKzg4Myw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2Nr
Rmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGlu
ZUJvCiAgICAgICAgICAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWls
aW5nU3BhY2VSdW4pCiAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRp
ZXMoKnRoaXMsIHRleHRCb3gsIHByZXZpb3VzUnVuLCBydW4tPm5leHQoKSwgcmVuZGVyVGV4dC5z
dHJpbmdWaWV3KHJ1bi0+bV9zdGFydCwgcnVuLT5tX3N0b3ApLCBydW4tPmJveCgpLT5kaXJlY3Rp
b24oKSk7CiAKLSAgICAgICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRl
eHRMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IHJlbmRlclRl
eHQudGV4dCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFydW4tPm1fc3RhcnQg
JiYgbmVlZHNXb3JkU3BhY2luZyAmJiBpc1NwYWNlT3JOZXdsaW5lKHJlbmRlclRleHQuY2hhcmFj
dGVyQXQocnVuLT5tX3N0YXJ0KSkpCiAgICAgICAgICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdp
ZHRoICs9IGxpbmVTdHlsZSgqcmVuZGVyVGV4dC5wYXJlbnQoKSwgbGluZUluZm8pLmZvbnRDYXNj
YWRlKCkud29yZFNwYWNpbmcoKTsKICAgICAgICAgICAgICAgICAvLyBydW4tPm1fc3RhcnQgPT0g
cnVuLT5tX3N0b3Agc2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZmYgdGhlIHJ1biBpcyBhIHJlcGxhY2Vk
IHJ1biBmb3IgYmlkaTogaXNvbGF0ZS4KQEAgLTEwNTYsMTAgKzEwNTAsMTAgQEAgaW5saW5lIEJp
ZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8
QmlkaVJ1bj4mIGJpZGkKIAogICAgIGNvbnN0IFJlbmRlclRleHQmIGxhc3RUZXh0ID0gZG93bmNh
c3Q8UmVuZGVyVGV4dD4obGFzdE9iamVjdCk7CiAgICAgdW5zaWduZWQgZmlyc3RTcGFjZTsKLSAg
ICBpZiAobGFzdFRleHQuaXM4Qml0KCkpCi0gICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RU
cmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC5jaGFyYWN0ZXJzOCgpLCB0cmFpbGluZ1Nw
YWNlUnVuLT5zdGFydCgpLCB0cmFpbGluZ1NwYWNlUnVuLT5zdG9wKCkpOworICAgIGlmIChsYXN0
VGV4dC50ZXh0KCkuaXM4Qml0KCkpCisgICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFp
bGluZ1NwYWNlKGxhc3RUZXh0LCBsYXN0VGV4dC50ZXh0KCkuY2hhcmFjdGVyczgoKSwgdHJhaWxp
bmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKICAgICBlbHNl
Ci0gICAgICAgIGZpcnN0U3BhY2UgPSBmaW5kRmlyc3RUcmFpbGluZ1NwYWNlKGxhc3RUZXh0LCBs
YXN0VGV4dC5jaGFyYWN0ZXJzMTYoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxp
bmdTcGFjZVJ1bi0+c3RvcCgpKTsKKyAgICAgICAgZmlyc3RTcGFjZSA9IGZpbmRGaXJzdFRyYWls
aW5nU3BhY2UobGFzdFRleHQsIGxhc3RUZXh0LnRleHQoKS5jaGFyYWN0ZXJzMTYoKSwgdHJhaWxp
bmdTcGFjZVJ1bi0+c3RhcnQoKSwgdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKTsKIAogICAgIGlm
IChmaXJzdFNwYWNlID09IHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xODU0LDcgKzE4NDgsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9j
a0Zsb3c6OmRldGVybWluZVN0YXJ0UG9zaXRpb24oTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdAog
ICAgICAgICAgICAgICAgIGlmICghZGlydGllZEJ5RmxvYXQgJiYgKCFwcmV2Um9vdEJveC0+ZW5k
c1dpdGhCcmVhaygpCiAgICAgICAgICAgICAgICAgICAgIHx8ICFwcmV2Um9vdEJveC0+bGluZUJy
ZWFrT2JqKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKGlzPFJlbmRlclRleHQ+KCpwcmV2Um9v
dEJveC0+bGluZUJyZWFrT2JqKCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHByZXZSb290Qm94
LT5saW5lQnJlYWtQb3MoKSA+PSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldlJvb3RCb3gtPmxp
bmVCcmVha09iaigpKS50ZXh0TGVuZ3RoKCkpKSkgeworICAgICAgICAgICAgICAgICAgICAmJiBw
cmV2Um9vdEJveC0+bGluZUJyZWFrUG9zKCkgPj0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnByZXZS
b290Qm94LT5saW5lQnJlYWtPYmooKSkudGV4dCgpLmxlbmd0aCgpKSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGxpbmUgZGlkbid0IGJyZWFrIGNsZWFubHkgb3IgYnJv
a2UgYXQgYSBuZXdsaW5lCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIGJlZW4gZGVs
ZXRlZCwgc28gdHJlYXQgaXQgYXMgZGlydHkgdG9vLgogICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50TGluZSA9IHByZXZSb290Qm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggODM4NmVhZjI4NjM1YjM5M2Y0MzAyNGQ2MWVjOTNhZjY3
NDRkZTI0ZS4uOWNmNGZiOGVkYzJhMjU4NzM3ZDQzMDA2MTdmOGU5YjM2MjE4NmUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC0xMjks
NyArMTI5LDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRlZCgp
CiAgICAgCiAgICAgR2x5cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93OwogICAgIGdseXBoT3ZlcmZs
b3cuY29tcHV0ZUJvdW5kcyA9IHRydWU7Ci0gICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3
aWR0aCgwLCB0ZXh0TGVuZ3RoKCksIGhvcml6b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5cGhP
dmVyZmxvdyk7CisgICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGggPSB3aWR0aCgwLCB0ZXh0KCku
bGVuZ3RoKCksIGhvcml6b250YWxGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CiAK
ICAgICBmbG9hdCBiZXN0Rml0RGVsdGEgPSBjb21iaW5lZFRleHRXaWR0aCAtIGVtV2lkdGg7CiAg
ICAgYXV0byBiZXN0Rml0RGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIFJlbmRlckNvbWJpbmVUZXh0Ojpjb21iaW5lVGV4dElmTmVlZGVkKCkKICAgICAg
ICAgICAgIGNvbXByZXNzZWRGb250LnVwZGF0ZShmb250U2VsZWN0b3IpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBnbHlwaE92ZXJmbG93LnRvcCA9IGds
eXBoT3ZlcmZsb3cucmlnaHQgPSBnbHlwaE92ZXJmbG93LmJvdHRvbSA9IDA7Ci0gICAgICAgICAg
ICBmbG9hdCBydW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHRMZW5ndGgoKSwgY29t
cHJlc3NlZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgIGZs
b2F0IHJ1bldpZHRoID0gUmVuZGVyVGV4dDo6d2lkdGgoMCwgdGV4dCgpLmxlbmd0aCgpLCBjb21w
cmVzc2VkRm9udCwgMCwgbnVsbHB0ciwgJmdseXBoT3ZlcmZsb3cpOwogICAgICAgICAgICAgaWYg
KHJ1bldpZHRoIDw9IGVtV2lkdGgpIHsKICAgICAgICAgICAgICAgICBjb21iaW5lZFRleHRXaWR0
aCA9IHJ1bldpZHRoOwogICAgICAgICAgICAgICAgIG1faXNDb21iaW5lZCA9IHRydWU7CkBAIC0x
NzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5lZWRl
ZCgpCiAgICAgICAgICAgICBjb21wcmVzc2VkRm9udC51cGRhdGUoZm9udFNlbGVjdG9yKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZ2x5cGhPdmVyZmxv
dy50b3AgPSBnbHlwaE92ZXJmbG93LnJpZ2h0ID0gZ2x5cGhPdmVyZmxvdy5ib3R0b20gPSAwOwot
ICAgICAgICAgICAgZmxvYXQgcnVuV2lkdGggPSBSZW5kZXJUZXh0Ojp3aWR0aCgwLCB0ZXh0TGVu
Z3RoKCksIGNvbXByZXNzZWRGb250LCAwLCBudWxscHRyLCAmZ2x5cGhPdmVyZmxvdyk7CisgICAg
ICAgICAgICBmbG9hdCBydW5XaWR0aCA9IFJlbmRlclRleHQ6OndpZHRoKDAsIHRleHQoKS5sZW5n
dGgoKSwgY29tcHJlc3NlZEZvbnQsIDAsIG51bGxwdHIsICZnbHlwaE92ZXJmbG93KTsKICAgICAg
ICAgICAgIGlmIChydW5XaWR0aCA8PSBlbVdpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29tYmlu
ZWRUZXh0V2lkdGggPSBydW5XaWR0aDsKICAgICAgICAgICAgICAgICBtX2lzQ29tYmluZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTk4ZmFl
OWMzMzQ1NTBlNWJhOTg0Mzc4NTI5YWQ0NWQ2ZjhiMDg3OS4uMjQwNzdmMjA0YWJkZDA4ZTc3NmJi
YjBlZTllMDFkN2E3MmI3NzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVl
c3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmgiCkBAIC02NDQ3LDcgKzY0NDgsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1p
bmVOb25MYXllckRlc2NlbmRhbnRzUGFpbnRlZENvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVudCYg
cmVuZAogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudXNlclNlbGVjdCgpICE9IFNF
TEVDVF9OT05FKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SGFzUGFpbnRlZENvbnRlbnQo
KTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJUZXh0LnRleHQoKS0+Y29udGFpbnNPbmx5V2hp
dGVzcGFjZSgpKSB7CisgICAgICAgICAgICBpZiAoIXJlbmRlclRleHQudGV4dCgpLmlzQWxsU3Bl
Y2lhbENoYXJhY3RlcnM8aXNIVE1MU3BhY2U+KCkpIHsKICAgICAgICAgICAgICAgICByZXF1ZXN0
LnNldEhhc1BhaW50ZWRDb250ZW50KCk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5u
ZWVkVG9EZXRlcm1pbmVTdWJwaXhlbEFudGlhbGlhc2VkVGV4dFN0YXRlKCkgJiYgc3R5bGVIYXNT
bW9vdGhpbmdUZXh0TW9kZShjaGlsZC5zdHlsZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAwMzYwY2Q3ZTZjZmU2NWU4NTk1ZWExZWIxMWI4MmZj
MGIyNzlhOWFhLi40YzRkOWFiY2I1M2EzMjY2YWNhYjk2MDMyOTMzM2E2MTc5NmVhODk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTYsMzggKzEx
Niw0NiBAQCBIVE1MU2VsZWN0RWxlbWVudCYgUmVuZGVyTGlzdEJveDo6c2VsZWN0RWxlbWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOwogfQogCitzdGF0aWMgRm9udENhc2NhZGUgYm9sZGVyKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCit7CisgICAgYXV0byBkZXNjcmlwdGlv
biA9IGZvbnQuZm9udERlc2NyaXB0aW9uKCk7CisgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KGRl
c2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEZvbnRDYXNjYWRl
IHsgZGVzY3JpcHRpb24sIGZvbnQubGV0dGVyU3BhY2luZygpLCBmb250LndvcmRTcGFjaW5nKCkg
fTsKKyAgICByZXN1bHQudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgp
CiB7CiAgICAgaWYgKG1fb3B0aW9uc0NoYW5nZWQpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEhU
TUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKLSAg
ICAgICAgaW50IHNpemUgPSBudW1JdGVtcygpOwotICAgICAgICAKICAgICAgICAgZmxvYXQgd2lk
dGggPSAwOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbaV07CisgICAgICAgIGF1dG8m
IG5vcm1hbEZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udENhc2NhZGU+IGJvbGRGb250OworICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBz
ZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0Owot
ICAgICAgICAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7
CisgICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPGNvbnN0IEZvbnRDYXNjYWRlJigpPiBzZWxlY3RG
b250ID0gWyZub3JtYWxGb250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAg
ICAgICAgIHJldHVybiBub3JtYWxGb250OworICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlm
IChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQg
PSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVz
cGVjdEdyb3VwTGFiZWwoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRHcm91cEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1M
T3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIGRlc2NyaXB0aW9uID0gaXRlbUZvbnQuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KGRlc2NyaXB0aW9uLmJvbGRlcldlaWdo
dCgpKTsKLSAgICAgICAgICAgICAgICBpdGVtRm9udCA9IEZvbnRDYXNjYWRlKGRlc2NyaXB0aW9u
LCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOwotICAg
ICAgICAgICAgICAgIGl0ZW1Gb250LnVwZGF0ZSgmZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gQ2FuJ3QgdGV4
dCBkaXJlY3Rpb24gYWZmZWN0IHRoZSB3aWR0aD8KLSAgICAgICAgICAgICAgICBUZXh0UnVuIHRl
eHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBh
bnNpb24pOwotICAgICAgICAgICAgICAgIGZsb2F0IHRleHRXaWR0aCA9IGl0ZW1Gb250LndpZHRo
KHRleHRSdW4pOwotICAgICAgICAgICAgICAgIHdpZHRoID0gc3RkOjptYXgod2lkdGgsIHRleHRX
aWR0aCk7CisgICAgICAgICAgICAgICAgc2VsZWN0Rm9udCA9IFt0aGlzLCAmbm9ybWFsRm9udCwg
JmJvbGRGb250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWJvbGRGb250KQorICAgICAgICAgICAgICAgICAgICAgICAgYm9sZEZvbnQgPSBib2xk
ZXIoZG9jdW1lbnQoKSwgbm9ybWFsRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBi
b2xkRm9udC52YWx1ZSgpOworICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB0ZXh0ID0gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7
CisgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxl
KCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOworICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1h
eCh3aWR0aCwgc2VsZWN0Rm9udCgpLndpZHRoKHRleHRSdW4pKTsKICAgICAgICAgfQotICAgICAg
ICBtX29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYod2lkdGgpKTsKKyAgICAg
ICAgLy8gRklYTUU6IElzIGNlaWxpbmcgcmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdlIGJlIGRvaW5n
IHNvbWUga2luZCBvZiByb3VuZGluZyBpbnN0ZWFkPworICAgICAgICBtX29wdGlvbnNXaWR0aCA9
IHN0YXRpY19jYXN0PGludD4oc3RkOjpjZWlsKHdpZHRoKSk7CiAgICAgICAgIG1fb3B0aW9uc0No
YW5nZWQgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxi
YXIodHJ1ZSk7CiAKICAgICAgICAgY29tcHV0ZUZpcnN0SW5kZXhlc1Zpc2libGVJblBhZGRpbmdU
b3BCb3R0b21BcmVhcygpOwpAQCAtNDEyLDcgKzQyMCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6
cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0
SXRlbUVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKICAgICBlbHNl
IGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAg
aXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50
KS5ncm91cExhYmVsVGV4dCgpOwotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVt
VGV4dCwgJyAnKTsKKyAgICBpdGVtVGV4dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBp
dGVtVGV4dCwgJyAnKTsKIAogICAgIENvbG9yIHRleHRDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVu
dCAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0
ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5k
ZXggOGFlYTczM2ViZmE2N2EyNmRkMGFmYzk3ZGEwM2Q5ZjA0N2FlNzEwZC4uMjRjZDMyM2NkZDA2
MDE2MjFhMjUwZDFiODU2YTIyOTEyYzNlOGMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZW5kZXJNZW51
TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3
aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRp
ZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2gu
CiAgICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOwotICAgICAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkt
PmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExU
UjsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1f
YnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9U
T19MRUZUKSA/IFJUTCA6IExUUjsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGly
ZWN0aW9uKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVj
dGlvbigpKSB7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0
SW5uZXJTdHlsZSgpCiAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGk7CiAgICAgICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVj
dGVkT3B0aW9uQ291bnQoKnRoaXMpICE9IDEpIHsKLSAgICAgICAgICAgIGRpcmVjdGlvbiA9ICht
X2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgICAgIGRpcmVj
dGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRp
bmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOwogICAgICAgICAg
ICAgdW5pY29kZUJpZGkgPSBVQk5vcm1hbDsKICAgICAgICAgfSBlbHNlIGlmIChtX29wdGlvblN0
eWxlKSB7CiAgICAgICAgICAgICBkaXJlY3Rpb24gPSBtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24o
KTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25z
V2lkdGgoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSBk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVj
dEdyb3VwTGFiZWwoKTsKLSAgICAgICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQs
ICcgJyk7CisgICAgICAgIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwg
JyAnKTsKICAgICAgICAgaWYgKHRoZW1lKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQo
KSkgewogICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBvcHRpb24ncyB0ZXh0IGluZGVudC4gIFdl
IGNhbid0IGNhbGN1bGF0ZSBwZXJjZW50YWdlIHZhbHVlcyBmb3Igbm93LgogICAgICAgICAgICAg
ZmxvYXQgb3B0aW9uV2lkdGggPSAwOwpAQCAtNDQ2LDE5ICs0NDYsMTggQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKIAogU3RyaW5n
IFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQo
KS5saXN0SXRlbXMoKTsKKyAgICBhdXRvJiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlz
dEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmcgaXRlbVN0cmluZzsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07Ci0gICAgaWYgKGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgaXRlbVN0cmluZyA9IGRvd25jYXN0PEhUTUxP
cHRHcm91cEVsZW1lbnQ+KCplbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwotICAgIGVsc2UgaWYg
KGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIGl0ZW1TdHJpbmcgPSBk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVj
dEdyb3VwTGFiZWwoKTsKLQotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3Ry
aW5nLCAnICcpOwotICAgIHJldHVybiBpdGVtU3RyaW5nOworICAgIGF1dG8mIGVsZW1lbnQgPSAq
bGlzdEl0ZW1zW2xpc3RJbmRleF07CisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVs
ZW1lbnQpKQorICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVu
dD4oZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKKyAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9u
RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwor
CisgICAgcmV0dXJuIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcp
OwogfQogCiBTdHJpbmcgUmVuZGVyTWVudUxpc3Q6Oml0ZW1MYWJlbCh1bnNpZ25lZCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBkMmNkZjQyNGQwNzYy
ZGZmMDJmOTJmZTA5YTQwMjkwNmQwOTkyMjFjLi42YWUwNDdjNDY5ZmU5Y2RhYmVmMjFjZGRjYWVj
OTY3MzMyNWVkYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTQ2LDEzICs0NywxMyBAQAogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0xNDEsMzIgKzE0MiwzMiBAQCBzdGF0aWMgSGFzaE1hcDxjb25zdCBS
ZW5kZXJUZXh0KiwgV2Vha1B0cjxSZW5kZXJJbmxpbmU+PiYgaW5saW5lV3JhcHBlckZvckRpc3Bs
YQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3Ry
aW5nLCBVQ2hhciBwcmV2aW91cykKK1N0cmluZyBjYXBpdGFsaXplKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcikKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBj
aGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0
byBjb25zaWRlciBsb2NhbGUuCiAKLSAgICBpZiAoc3RyaW5nLT5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuOworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdHJpbmc7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwotICAgIGNvbnN0IFN0
cmluZ0ltcGwmIHN0cmluZ0ltcGwgPSAqc3RyaW5nLT5pbXBsKCk7CisgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGF1dG8mIHN0cmluZ0ltcGwgPSAqc3RyaW5nLmlt
cGwoKTsKIAogICAgIGlmIChsZW5ndGggPj0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzdHJp
bmdXaXRoUHJldmlvdXMobGVuZ3RoICsgMSk7Ci0gICAgc3RyaW5nV2l0aFByZXZpb3VzWzBdID0g
cHJldmlvdXMgPT0gbm9CcmVha1NwYWNlID8gJyAnIDogcHJldmlvdXM7CisgICAgc3RyaW5nV2l0
aFByZXZpb3VzWzBdID0gcHJldmlvdXNDaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlID8gJyAnIDog
cHJldmlvdXNDaGFyYWN0ZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxlbmd0aCAr
IDE7IGkrKykgewotICAgICAgICAvLyBSZXBsYWNlICZuYnNwIHdpdGggYSByZWFsIHNwYWNlIHNp
bmNlIElDVSBubyBsb25nZXIgdHJlYXRzICZuYnNwIGFzIGEgd29yZCBzZXBhcmF0b3IuCisgICAg
ICAgIC8vIFJlcGxhY2UgTk8gQlJFQUsgU1BBQ0Ugd2l0aCBhIHJlYWwgc3BhY2Ugc2luY2UgSUNV
IGRvZXMgbm90IHRyZWF0IGl0IGFzIGEgd29yZCBzZXBhcmF0b3IuCiAgICAgICAgIGlmIChzdHJp
bmdJbXBsW2kgLSAxXSA9PSBub0JyZWFrU3BhY2UpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJl
dmlvdXNbaV0gPSAnICc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0cmluZ1dpdGhQcmV2
aW91c1tpXSA9IHN0cmluZ0ltcGxbaSAtIDFdOwogICAgIH0KIAotICAgIFVCcmVha0l0ZXJhdG9y
KiBib3VuZGFyeSA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nV2l0aFByZXZp
b3VzLmNoYXJhY3RlcnMoKSwgbGVuZ3RoICsgMSkpOworICAgIGF1dG8qIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmdXaXRoUHJldmlvdXMuY2hhcmFjdGVycygp
LCBsZW5ndGggKyAxKSk7CiAgICAgaWYgKCFib3VuZGFyeSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gc3RyaW5nOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVz
dWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwpAQCAtMTgwLDcgKzE4MSw3IEBAIHZvaWQgbWFr
ZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtpIC0gMV0pOwogICAgIH0KIAotICAgICpzdHJpbmcg
PSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
IGlubGluZSBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYg
dGV4dCkKQEAgLTE4OCwyNCArMTg5LDE3IEBAIGlubGluZSBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0
KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAsIG1faGFzVGFiKGZhbHNlKQog
ICAgICwgbV9saW5lc0RpcnR5KGZhbHNlKQogICAgICwgbV9jb250YWluc1JldmVyc2VkVGV4dChm
YWxzZSkKLSAgICAsIG1faXNBbGxBU0NJSSh0ZXh0LmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAg
LCBtX2lzQWxsQVNDSUkodGV4dC5pbXBsKCktPmlzQWxsQVNDSUkoKSkKICAgICAsIG1fa25vd25U
b0hhdmVOb092ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRzKGZhbHNlKQogICAgICwgbV91c2VCYWNr
c2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fb3JpZ2luYWxUZXh0RGlmZmVyc0Zyb21S
ZW5kZXJlZChmYWxzZSkKICAgICAsIG1faGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50
cyhmYWxzZSkKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgICwgbV9jYW5kaWRhdGVD
b21wdXRlZFRleHRTaXplKDApCi0jZW5kaWYKLSAgICAsIG1fbWluV2lkdGgoLTEpCi0gICAgLCBt
X21heFdpZHRoKC0xKQotICAgICwgbV9iZWdpbk1pbldpZHRoKDApCi0gICAgLCBtX2VuZE1pbldp
ZHRoKDApCiAgICAgLCBtX3RleHQodGV4dCkKIHsKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwo
KSk7CiAgICAgc2V0SXNUZXh0KCk7CiAgICAgbV9jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGggPSBj
b21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCk7Ci0gICAgdmlldygpLmZyYW1lVmlldygp
LmluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlDaGFyYWN0ZXJDb3VudCh0ZXh0TGVuZ3RoKCkpOwor
ICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5pbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5Q2hhcmFjdGVy
Q291bnQodGV4dC5pbXBsKCktPmxlbmd0aCgpKTsKIH0KIAogUmVuZGVyVGV4dDo6UmVuZGVyVGV4
dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtNDYwLDcgKzQ1NCw3IEBA
IFBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50KQogICAgIGlmIChzaW1wbGVMaW5lTGF5b3V0KCkgJiYgcGFyZW50KCktPmZpcnN0Q2hp
bGQoKSA9PSBwYXJlbnQoKS0+bGFzdENoaWxkKCkpIHsKICAgICAgICAgYXV0byBvZmZzZXQgPSBT
aW1wbGVMaW5lTGF5b3V0Ojp0ZXh0T2Zmc2V0Rm9yUG9pbnQocG9pbnQsICp0aGlzLCAqc2ltcGxl
TGluZUxheW91dCgpKTsKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGEgdmFsaWQgb2Zmc2V0LiBG
YWxsIGJhY2sgdG8gdGhlIG5vcm1hbCBsaW5lIGxheW91dCBiYXNlZCBQb3NpdGlvbi4KLSAgICAg
ICAgaWYgKG9mZnNldCA9PSB0ZXh0TGVuZ3RoKCkpCisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4
dCgpLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnQocG9pbnQs
IG51bGxwdHIpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBQb3Np
dGlvbih0ZXh0Tm9kZSgpLCBvZmZzZXQpOwogICAgICAgICBBU1NFUlQocG9zaXRpb24gPT0gcG9z
aXRpb25Gb3JQb2ludChwb2ludCwgbnVsbHB0cikuZGVlcEVxdWl2YWxlbnQoKSk7CkBAIC00OTcs
MTAgKzQ5MSw4IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2Fj
aGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgICAgIGZsb2F0IG1vbm9z
cGFjZUNoYXJhY3RlcldpZHRoID0gZi5zcGFjZVdpZHRoKCk7CiAgICAgICAgIGZsb2F0IHcgPSAw
OwogICAgICAgICBib29sIGlzU3BhY2U7Ci0gICAgICAgIEFTU0VSVChtX3RleHQpOwotICAgICAg
ICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHN0YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkrKykgewotICAgICAgICAgICAgY2hhciBj
ID0gdGV4dFtpXTsKKyAgICAgICAgICAgIGNoYXIgYyA9IHRleHQoKVtpXTsKICAgICAgICAgICAg
IGlmIChjIDw9ICcgJykgewogICAgICAgICAgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdc
bicpIHsKICAgICAgICAgICAgICAgICAgICAgdyArPSBtb25vc3BhY2VDaGFyYWN0ZXJXaWR0aDsK
QEAgLTU0NCw0MSArNTM2LDMxIEBAIGlubGluZSBib29sIGlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0
TGluZUVuZChVQ2hhciBjKQogCiBmbG9hdCBSZW5kZXJUZXh0OjpoYW5nYWJsZVB1bmN0dWF0aW9u
U3RhcnRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBsZW4gPSB0
ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW4gfHwgaW5kZXggPj0gbGVuKQorICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEFTU0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRl
eHQgPSAqbV90ZXh0LmltcGwoKTsKLSAgICAKLSAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlv
bkF0TGluZVN0YXJ0KHRleHRbaW5kZXhdKSkKKyAgICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlv
bkF0TGluZVN0YXJ0KHRleHQoKVtpbmRleF0pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwotICAgICAgICAKLSAgICByZXR1cm4g
d2lkdGhGcm9tQ2FjaGUoZm9udCwgaW5kZXgsIDEsIDAsIDAsIDAsIHN0eWxlKTsKKyAgICBhdXRv
JiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CisgICAgcmV0dXJuIHdpZHRoRnJvbUNhY2hlKHN0eWxl
LmZvbnRDYXNjYWRlKCksIGluZGV4LCAxLCAwLCAwLCAwLCBzdHlsZSk7CiB9CiAKIGZsb2F0IFJl
bmRlclRleHQ6OmhhbmdhYmxlUHVuY3R1YXRpb25FbmRXaWR0aCh1bnNpZ25lZCBpbmRleCkgY29u
c3QKIHsKLSAgICB1bnNpZ25lZCBsZW4gPSB0ZXh0TGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW4gfHwg
aW5kZXggPj0gbGVuKQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsKKyAg
ICBpZiAoaW5kZXggPj0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBBU1NF
UlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAKLSAg
ICBpZiAoIWlzSGFuZ2FibGVQdW5jdHVhdGlvbkF0TGluZUVuZCh0ZXh0W2luZGV4XSkpCisgICAg
aWYgKCFpc0hhbmdhYmxlUHVuY3R1YXRpb25BdExpbmVFbmQodGV4dCgpW2luZGV4XSkpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMt
PnN0eWxlKCk7Ci0gICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2Fk
ZSgpOwotICAgIAotICAgIHJldHVybiB3aWR0aEZyb21DYWNoZShmb250LCBpbmRleCwgMSwgMCwg
MCwgMCwgc3R5bGUpOworCisgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIHJl
dHVybiB3aWR0aEZyb21DYWNoZShzdHlsZS5mb250Q2FzY2FkZSgpLCBpbmRleCwgMSwgMCwgMCwg
MCwgc3R5bGUpOwogfQogCi1ib29sIFJlbmRlclRleHQ6OmlzSGFuZ2FibGVTdG9wT3JDb21tYShV
Q2hhciBjKSBjb25zdAorYm9vbCBSZW5kZXJUZXh0Ojppc0hhbmdhYmxlU3RvcE9yQ29tbWEoVUNo
YXIgYykKIHsKICAgICByZXR1cm4gYyA9PSAweDAwMkMgfHwgYyA9PSAweDAwMkUgfHwgYyA9PSAw
eDA2MEMgfHwgYyA9PSAweDA2RDQgfHwgYyA9PSAweDMwMDEKICAgICAgICAgfHwgYyA9PSAweDMw
MDIgfHwgYyA9PSAweEZGMEMgfHwgYyA9PSAweEZGMEUgfHwgYyA9PSAweEZFNTAgfHwgYyA9PSAw
eEZFNTEKQEAgLTU4OSwxMyArNTcxLDEwIEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmZpcnN0Q2hh
cmFjdGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5j
b2xsYXBzZVdoaXRlU3BhY2UoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgQVNTRVJU
KG1fdGV4dCk7Ci0gICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIAor
CiAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgZm9yICggOyBpIDwgdGV4dExlbmd0aCgpOyArK2kp
IHsKLSAgICAgICAgaWYgKHRleHRbaV0gIT0gJyAnICYmICh0ZXh0W2ldICE9ICdcbicgfHwgc3R5
bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkgJiYgdGV4dFtpXSAhPSAnXHQnKQorICAgIGZvciAodW5z
aWduZWQgbGVuZ3RoID0gdGV4dCgpLmxlbmd0aCgpIDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmICh0ZXh0KClbaV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8fCBzdHlsZSgp
LnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICByZXR1cm4gaTsKQEAgLTYwMywxMTAgKzU4Miw5NyBAQCB1bnNpZ25l
ZCBSZW5kZXJUZXh0OjpmaXJzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2VzKCkgY29uc3QK
IAogdW5zaWduZWQgUmVuZGVyVGV4dDo6bGFzdENoYXJhY3RlckluZGV4U3RyaXBwaW5nU3BhY2Vz
KCkgY29uc3QKIHsKLSAgICBpZiAoIXRleHRMZW5ndGgoKSkKKyAgICBpZiAoIXRleHQoKS5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXN0eWxlKCkuY29sbGFwc2VXaGl0
ZVNwYWNlKCkpCi0gICAgICAgIHJldHVybiB0ZXh0TGVuZ3RoKCkgLSAxOwotICAgIAotICAgIEFT
U0VSVChtX3RleHQpOwotICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKKyAg
ICAgICAgcmV0dXJuIHRleHQoKS5sZW5ndGgoKSAtIDE7CiAgICAgCi0gICAgaW50IGkgPSB0ZXh0
TGVuZ3RoKCkgLSAxOworICAgIGludCBpID0gdGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICBmb3Ig
KCA7IGkgID49IDA7IC0taSkgewotICAgICAgICBpZiAodGV4dFtpXSAhPSAnICcgJiYgKHRleHRb
aV0gIT0gJ1xuJyB8fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0W2ldICE9ICdc
dCcpCisgICAgICAgIGlmICh0ZXh0KClbaV0gIT0gJyAnICYmICh0ZXh0KClbaV0gIT0gJ1xuJyB8
fCBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSAmJiB0ZXh0KClbaV0gIT0gJ1x0JykKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gaTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0
Ojp0cmltbWVkUHJlZldpZHRocyhmbG9hdCBsZWFkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0JiBiZWdpbk1pblcsIGJvb2wmIGJlZ2luV1MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBlbmRNaW5XLCBib29sJiBlbmRXUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgaGFzQnJlYWthYmxlQ2hh
ciwgYm9vbCYgaGFzQnJlYWssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0JiBiZWdpbk1heFcsIGZsb2F0JiBlbmRNYXhXLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCYgbWluVywgZmxvYXQmIG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFj
ZXMpCitSZW5kZXJUZXh0OjpXaWR0aHMgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZlcnJlZFdpZHRo
cyhmbG9hdCBsZWFkV2lkdGgsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpCiB7Ci0gICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBhdXRvJiBzdHlsZSA9IHRo
aXMtPnN0eWxlKCk7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UgPSBzdHlsZS5jb2xsYXBz
ZVdoaXRlU3BhY2UoKTsKKwogICAgIGlmICghY29sbGFwc2VXaGl0ZVNwYWNlKQogICAgICAgICBz
dHJpcEZyb250U3BhY2VzID0gZmFsc2U7CiAKICAgICBpZiAobV9oYXNUYWIgfHwgcHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KCkpCiAgICAgICAgIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKGxlYWRXaWR0aCk7CiAKLSAgICBiZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9o
YXNCZWdpbldTOwotICAgIGVuZFdTID0gbV9oYXNFbmRXUzsKKyAgICBXaWR0aHMgd2lkdGhzOwog
Ci0gICAgdW5zaWduZWQgbGVuID0gdGV4dExlbmd0aCgpOworICAgIHdpZHRocy5iZWdpbldTID0g
IXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOworICAgIHdpZHRocy5lbmRXUyA9IG1f
aGFzRW5kV1M7CiAKLSAgICBpZiAoIWxlbiB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0ZXh0KCkt
PmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkpIHsKLSAgICAgICAgYmVnaW5NaW5XID0gMDsKLSAg
ICAgICAgZW5kTWluVyA9IDA7Ci0gICAgICAgIGJlZ2luTWF4VyA9IDA7Ci0gICAgICAgIGVuZE1h
eFcgPSAwOwotICAgICAgICBtaW5XID0gMDsKLSAgICAgICAgbWF4VyA9IDA7Ci0gICAgICAgIGhh
c0JyZWFrID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgdW5zaWduZWQgbGVu
Z3RoID0gdGhpcy0+bGVuZ3RoKCk7CiAKLSAgICBtaW5XID0gbV9taW5XaWR0aDsKLSAgICBtYXhX
ID0gbV9tYXhXaWR0aDsKKyAgICBpZiAoIWxlbmd0aCB8fCAoc3RyaXBGcm9udFNwYWNlcyAmJiB0
ZXh0KCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKSkpCisgICAgICAgIHJl
dHVybiB3aWR0aHM7CiAKLSAgICBiZWdpbk1pblcgPSBtX2JlZ2luTWluV2lkdGg7Ci0gICAgZW5k
TWluVyA9IG1fZW5kTWluV2lkdGg7CisgICAgd2lkdGhzLm1pbiA9IG1fbWluV2lkdGg7CisgICAg
d2lkdGhzLm1heCA9IG1fbWF4V2lkdGg7CiAKLSAgICBoYXNCcmVha2FibGVDaGFyID0gbV9oYXNC
cmVha2FibGVDaGFyOwotICAgIGhhc0JyZWFrID0gbV9oYXNCcmVhazsKKyAgICB3aWR0aHMuYmVn
aW5NaW4gPSBtX2JlZ2luTWluV2lkdGg7CisgICAgd2lkdGhzLmVuZE1pbiA9IG1fZW5kTWluV2lk
dGg7CiAKLSAgICBBU1NFUlQobV90ZXh0KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4
dC5pbXBsKCk7Ci0gICAgaWYgKHRleHRbMF0gPT0gc3BhY2UgfHwgKHRleHRbMF0gPT0gbmV3bGlu
ZUNoYXJhY3RlciAmJiAhc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRleHRbMF0gPT0gJ1x0
JykgewotICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRl
KCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KLSAgICAgICAgaWYgKHN0cmlw
RnJvbnRTcGFjZXMpIHsKLSAgICAgICAgICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRo
KFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZzcGFjZSwgMSwgc3R5bGUpKTsKLSAgICAg
ICAgICAgIG1heFcgLT0gc3BhY2VXaWR0aDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBt
YXhXICs9IGZvbnQud29yZFNwYWNpbmcoKTsKKyAgICB3aWR0aHMuaGFzQnJlYWthYmxlQ2hhciA9
IG1faGFzQnJlYWthYmxlQ2hhcjsKKyAgICB3aWR0aHMuaGFzQnJlYWsgPSBtX2hhc0JyZWFrOwor
CisgICAgaWYgKHRleHQoKVswXSA9PSAnICcgfHwgKHRleHQoKVswXSA9PSAnXG4nICYmICFzdHls
ZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgdGV4dCgpWzBdID09ICdcdCcpIHsKKyAgICAgICAgYXV0
byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmly
c3QtbGluZS4KKyAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpCisgICAgICAgICAgICB3aWR0
aHMubWF4IC09IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNwYWNl
LCAxLCBzdHlsZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3aWR0aHMubWF4ICs9IGZv
bnQud29yZFNwYWNpbmcoKTsKICAgICB9CiAKICAgICBzdHJpcEZyb250U3BhY2VzID0gY29sbGFw
c2VXaGl0ZVNwYWNlICYmIG1faGFzRW5kV1M7CiAKLSAgICBpZiAoIXN0eWxlLmF1dG9XcmFwKCkg
fHwgbWluVyA+IG1heFcpCi0gICAgICAgIG1pblcgPSBtYXhXOworICAgIGlmICghc3R5bGUuYXV0
b1dyYXAoKSB8fCB3aWR0aHMubWluID4gd2lkdGhzLm1heCkKKyAgICAgICAgd2lkdGhzLm1pbiA9
IHdpZHRocy5tYXg7CiAKICAgICAvLyBDb21wdXRlIG91ciBtYXggd2lkdGhzIGJ5IHNjYW5uaW5n
IHRoZSBzdHJpbmcgZm9yIG5ld2xpbmVzLgotICAgIGlmIChoYXNCcmVhaykgewotICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZiA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlz
IGlnbm9yZXMgZmlyc3QtbGluZS4KKyAgICBpZiAod2lkdGhzLmhhc0JyZWFrKSB7CisgICAgICAg
IGF1dG8mIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVz
IGZpcnN0LWxpbmUuCiAgICAgICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKLSAgICAgICAgYmVn
aW5NYXhXID0gbWF4VzsKLSAgICAgICAgZW5kTWF4VyA9IG1heFc7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgdW5zaWduZWQgbGluZWxl
biA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoaSArIGxpbmVsZW4gPCBsZW4gJiYgdGV4dFtpICsg
bGluZWxlbl0gIT0gJ1xuJykKLSAgICAgICAgICAgICAgICBsaW5lbGVuKys7Ci0KLSAgICAgICAg
ICAgIGlmIChsaW5lbGVuKSB7Ci0gICAgICAgICAgICAgICAgZW5kTWF4VyA9IHdpZHRoRnJvbUNh
Y2hlKGYsIGksIGxpbmVsZW4sIGxlYWRXaWR0aCArIGVuZE1heFcsIDAsIDAsIHN0eWxlKTsKKyAg
ICAgICAgd2lkdGhzLmJlZ2luTWF4ID0gd2lkdGhzLm1heDsKKyAgICAgICAgd2lkdGhzLmVuZE1h
eCA9IHdpZHRocy5tYXg7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgdW5zaWduZWQgbGluZUxlbmd0aCA9IDA7CisgICAgICAgICAg
ICB3aGlsZSAoaSArIGxpbmVMZW5ndGggPCBsZW5ndGggJiYgdGV4dCgpW2kgKyBsaW5lTGVuZ3Ro
XSAhPSAnXG4nKQorICAgICAgICAgICAgICAgIGxpbmVMZW5ndGgrKzsKKworICAgICAgICAgICAg
aWYgKGxpbmVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB3aWR0aHMuZW5kTWF4ID0gd2lkdGhG
cm9tQ2FjaGUoZm9udCwgaSwgbGluZUxlbmd0aCwgbGVhZFdpZHRoICsgd2lkdGhzLmVuZE1heCwg
MCwgMCwgc3R5bGUpOwogICAgICAgICAgICAgICAgIGlmIChmaXJzdExpbmUpIHsKICAgICAgICAg
ICAgICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGxlYWRX
aWR0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJlZ2luTWF4VyA9IGVuZE1heFc7CisgICAg
ICAgICAgICAgICAgICAgIHdpZHRocy5iZWdpbk1heCA9IHdpZHRocy5lbmRNYXg7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGkgKz0gbGluZWxlbjsKKyAgICAgICAgICAgICAg
ICBpICs9IGxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0TGluZSkgewot
ICAgICAgICAgICAgICAgIGJlZ2luTWF4VyA9IDA7CisgICAgICAgICAgICAgICAgd2lkdGhzLmJl
Z2luTWF4ID0gMDsKICAgICAgICAgICAgICAgICBmaXJzdExpbmUgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBsZWFkV2lkdGggPSAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
aSA9PSBsZW4gLSAxKQorICAgICAgICAgICAgaWYgKGkgPT0gbGVuZ3RoIC0gMSkgewogICAgICAg
ICAgICAgICAgIC8vIEEgPHByZT4gcnVuIHRoYXQgZW5kcyB3aXRoIGEgbmV3bGluZSwgYXMgaW4s
IGUuZy4sCiAgICAgICAgICAgICAgICAgLy8gPHByZT5Tb21lIHRleHRcblxuPHNwYW4+TW9yZSB0
ZXh0PC9wcmU+Ci0gICAgICAgICAgICAgICAgZW5kTWF4VyA9IDA7CisgICAgICAgICAgICAgICAg
d2lkdGhzLmVuZE1heCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAg
ICByZXR1cm4gd2lkdGhzOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTcGFjZUFjY29yZGlu
Z1RvU3R5bGUoVUNoYXIgYywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtODIwLDEyICs3
ODYsMTMgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhm
bG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBtX2hhc0JlZ2luV1MgPSBmYWxz
ZTsKICAgICBtX2hhc0VuZFdTID0gZmFsc2U7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUu
Zm9udENhc2NhZGUoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgorICAgIGF1
dG8mIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBhdXRvJiBmb250ID0gc3R5bGUuZm9udENh
c2NhZGUoKTsgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBmaXJzdC1saW5lLgogICAgIGZsb2F0IHdv
cmRTcGFjaW5nID0gZm9udC53b3JkU3BhY2luZygpOwotICAgIHVuc2lnbmVkIGxlbiA9IHRleHRM
ZW5ndGgoKTsKKyAgICBhdXRvJiBzdHJpbmcgPSB0ZXh0KCk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGF1dG8gaXRlcmF0b3JNb2RlID0gbWFwTGluZUJyZWFr
VG9JdGVyYXRvck1vZGUoc3R5bGUubGluZUJyZWFrKCkpOwotICAgIExhenlMaW5lQnJlYWtJdGVy
YXRvciBicmVha0l0ZXJhdG9yKG1fdGV4dCwgc3R5bGUubG9jYWxlKCksIGl0ZXJhdG9yTW9kZSk7
CisgICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIGJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBzdHlsZS5s
b2NhbGUoKSwgaXRlcmF0b3JNb2RlKTsKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxz
ZTsKICAgICBib29sIGlnbm9yaW5nU3BhY2VzID0gZmFsc2U7CiAgICAgYm9vbCBpc1NwYWNlID0g
ZmFsc2U7CkBAIC04NjIsOCArODI5LDggQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBi
b29sIGtlZXBBbGxXb3JkcyA9IHN0eWxlLndvcmRCcmVhaygpID09IEtlZXBBbGxXb3JkQnJlYWs7
CiAgICAgYm9vbCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCA9IGl0ZXJhdG9yTW9kZSA9PSBMaW5l
QnJlYWtJdGVyYXRvck1vZGU6OkRlZmF1bHQ7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuOyBpKyspIHsKLSAgICAgICAgVUNoYXIgYyA9IHVuY2hlY2tlZENoYXJhY3RlckF0KGkp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBV
Q2hhciBjID0gc3RyaW5nW2ldOwogCiAgICAgICAgIGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJJc1Nw
YWNlID0gaXNTcGFjZTsKIApAQCAtODg2LDcgKzg1Myw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0
IEZvCiAKICAgICAgICAgaWYgKChpc1NwYWNlIHx8IGlzTmV3bGluZSkgJiYgIWkpCiAgICAgICAg
ICAgICBtX2hhc0JlZ2luV1MgPSB0cnVlOwotICAgICAgICBpZiAoKGlzU3BhY2UgfHwgaXNOZXds
aW5lKSAmJiBpID09IGxlbiAtIDEpCisgICAgICAgIGlmICgoaXNTcGFjZSB8fCBpc05ld2xpbmUp
ICYmIGkgPT0gbGVuZ3RoIC0gMSkKICAgICAgICAgICAgIG1faGFzRW5kV1MgPSB0cnVlOwogCiAg
ICAgICAgIGlnbm9yaW5nU3BhY2VzIHw9IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpICYmIHBy
ZXZpb3VzQ2hhcmFjdGVySXNTcGFjZSAmJiBpc1NwYWNlOwpAQCAtOTExLDkgKzg3OCw5IEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdp
ZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIHVuc2lnbmVkIGogPSBpOwogICAgICAgICB3
aGlsZSAoYyAhPSAnXG4nICYmICFpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYg
YyAhPSAnXHQnICYmIChjICE9IHNvZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhl
bnNOb25lKSkgewogICAgICAgICAgICAgaisrOwotICAgICAgICAgICAgaWYgKGogPT0gbGVuKQor
ICAgICAgICAgICAgaWYgKGogPT0gbGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgYyA9IHVuY2hlY2tlZENoYXJhY3RlckF0KGopOworICAgICAgICAgICAgYyA9IHN0
cmluZ1tqXTsKICAgICAgICAgICAgIGlmIChpc0JyZWFrYWJsZShicmVha0l0ZXJhdG9yLCBqLCBu
ZXh0QnJlYWthYmxlLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxs
V29yZHMpICYmIGNoYXJhY3RlckF0KGogLSAxKSAhPSBzb2Z0SHlwaGVuKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGJyZWFrQWxsKSB7CkBAIC05MjUsNyArODkyLDcg
QEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBs
ZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgdW5zaWduZWQgd29yZExlbiA9IGog
LSBpOwogICAgICAgICBpZiAod29yZExlbikgewogICAgICAgICAgICAgZmxvYXQgY3Vyck1pbldp
ZHRoID0gMDsKLSAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuKSAmJiBpc1NwYWNl
QWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CisgICAgICAgICAgICBib29sIGlzU3BhY2UgPSAo
aiA8IGxlbmd0aCkgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOwogICAgICAg
ICAgICAgZmxvYXQgdzsKICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFp
bGluZ1NwYWNlV2lkdGg7CiAgICAgICAgICAgICBpZiAoaXNTcGFjZSkKQEAgLTk0MCw3ICs5MDcs
NyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgICAgICAgICBpZiAodyA+IG1heFdv
cmRXaWR0aCkgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1ZmZpeFN0YXJ0OwotICAgICAg
ICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgq
dGhpcywgc3R5bGUsIGZvbnQsIFN0cmluZ1ZpZXcobV90ZXh0KS5zdWJzdHJpbmcoaSwgd29yZExl
biksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0
LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBmbG9hdCBt
YXhGcmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgoKnRoaXMsIHN0eWxlLCBmb250
LCBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKGksIHdvcmRMZW4pLCBtaW5pbXVtUHJlZml4
TGVuZ3RoLCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBzdWZmaXhTdGFydCwgZmFsbGJhY2tGb250cywg
Z2x5cGhPdmVyZmxvdyk7CiAKICAgICAgICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgc3VmZml4V2lkdGg7CkBAIC05NzMsMTMgKzk0MCwxMyBA
QCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxl
YWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgICAgIGxhc3RXb3JkQm91bmRh
cnkgPSBqOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIGlzQ29sbGFwc2libGVX
aGl0ZVNwYWNlID0gKGogPCBsZW4pICYmIHN0eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGMp
OwotICAgICAgICAgICAgaWYgKGogPCBsZW4gJiYgc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAgICAg
ICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UgPSAoaiA8IGxlbmd0aCkgJiYgc3R5bGUu
aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoYyk7CisgICAgICAgICAgICBpZiAoaiA8IGxlbmd0aCAm
JiBzdHlsZS5hdXRvV3JhcCgpKQogICAgICAgICAgICAgICAgIG1faGFzQnJlYWthYmxlQ2hhciA9
IHRydWU7CiAKICAgICAgICAgICAgIC8vIEFkZCBpbiB3b3JkU3BhY2luZyB0byBvdXIgY3Vyck1h
eFdpZHRoLCBidXQgbm90IGlmIHRoaXMgaXMgdGhlIGxhc3Qgd29yZCBvbiBhIGxpbmUgb3IgdGhl
CiAgICAgICAgICAgICAvLyBsYXN0IHdvcmQgaW4gdGhlIHJ1bi4KLSAgICAgICAgICAgIGlmICgo
aXNTcGFjZSB8fCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSkgJiYgIWNvbnRhaW5zT25seVdoaXRl
c3BhY2UoaiwgbGVuLWopKQorICAgICAgICAgICAgaWYgKChpc1NwYWNlIHx8IGlzQ29sbGFwc2li
bGVXaGl0ZVNwYWNlKSAmJiAhY29udGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UoaiwgbGVuZ3RoIC0g
aikpCiAgICAgICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwogCiAgICAg
ICAgICAgICBpZiAoZmlyc3RXb3JkKSB7CkBAIC0xMDIwLDcgKzk4Nyw3IEBAIHZvaWQgUmVuZGVy
VGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNo
U2V0PGNvbnN0IEZvCiAKICAgICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gZm9udC53aWR0
aChydW4sICZmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgICAgICBnbHlwaE92ZXJmbG93LnJp
Z2h0ID0gMDsKLSAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gaXNTcGFjZSAmJiAh
cHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlICYmIGkgPT0gbGVuIC0gMTsKKyAgICAgICAgICAgICAg
ICBuZWVkc1dvcmRTcGFjaW5nID0gaXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNl
ICYmIGkgPT0gbGVuZ3RoIC0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChs
YXN0V29yZEJvdW5kYXJ5ID09IGkpOwogICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSsrOwpA
QCAtMTAyOSw3ICs5OTYsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogCiAgICAgZ2x5cGhP
dmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJm
bG93LmxlZnQpOwogCi0gICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChp
Z25vcmluZ1NwYWNlcyAmJiAhZmlyc3RXb3JkKSkKKyAgICBpZiAoKG5lZWRzV29yZFNwYWNpbmcg
JiYgbGVuZ3RoID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQogICAgICAg
ICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CiAKICAgICBtX21heFdpZHRoID0gc3RkOjpt
YXgoY3Vyck1heFdpZHRoLCBtX21heFdpZHRoKTsKQEAgLTEwNDYsMzMgKzEwMTMsMzkgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHko
ZmFsc2UpOwogfQogCi1ib29sIFJlbmRlclRleHQ6OmlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNl
KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHRleHRMZW5ndGgoKTsKLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIXN0
eWxlLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnM4KClbaV0pKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFz
dHlsZS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVy
VGV4dDo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UoKSBjb25zdAoreworICAgIGlmICh0ZXh0
KCkuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjppc0FsbENvbGxhcHNpYmxlV2hp
dGVzcGFjZSh0ZXh0KCkuY2hhcmFjdGVyczgoKSwgdGV4dCgpLmxlbmd0aCgpLCBzdHlsZSgpKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6aXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNo
YXJhY3RlcnMxNigpLCB0ZXh0KCkubGVuZ3RoKCksIHN0eWxlKCkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxQb3NzaWJseUNv
bGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpCit7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGlmICghc3R5bGUuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoY2hhcmFjdGVy
czE2KClbaV0pKQorICAgICAgICBpZiAoIShjaGFyYWN0ZXJzW2ldID09ICdcbicgfHwgY2hhcmFj
dGVyc1tpXSA9PSAnICcgfHwgY2hhcmFjdGVyc1tpXSA9PSAnXHQnKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCi1ib29sIFJlbmRl
clRleHQ6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVu
KSBjb25zdAorCitib29sIFJlbmRlclRleHQ6OmNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90ZXh0
KTsKLSAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7Ci0gICAgdW5zaWduZWQg
Y3VyclBvczsKLSAgICBmb3IgKGN1cnJQb3MgPSBmcm9tOwotICAgICAgICAgY3VyclBvcyA8IGZy
b20gKyBsZW4gJiYgKHRleHRbY3VyclBvc10gPT0gJ1xuJyB8fCB0ZXh0W2N1cnJQb3NdID09ICcg
JyB8fCB0ZXh0W2N1cnJQb3NdID09ICdcdCcpOwotICAgICAgICAgY3VyclBvcysrKSB7IH0KLSAg
ICByZXR1cm4gY3VyclBvcyA+PSAoZnJvbSArIGxlbik7CisgICAgQVNTRVJUKGZyb20gPD0gdGV4
dCgpLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQobGVuZ3RoIDw9IHRleHQoKS5sZW5ndGgoKSk7Cisg
ICAgQVNTRVJUKGZyb20gKyBsZW5ndGggPD0gdGV4dCgpLmxlbmd0aCgpKTsKKyAgICBpZiAodGV4
dCgpLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNBbGxQb3NzaWJseUNvbGxhcHNpYmxlV2hp
dGVzcGFjZSh0ZXh0KCkuY2hhcmFjdGVyczgoKSArIGZyb20sIGxlbmd0aCk7CisgICAgcmV0dXJu
IGlzQWxsUG9zc2libHlDb2xsYXBzaWJsZVdoaXRlc3BhY2UodGV4dCgpLmNoYXJhY3RlcnMxNigp
ICsgZnJvbSwgbGVuZ3RoKTsKIH0KIAogVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+PiBSZW5kZXJUZXh0OjpkcmFnZ2VkQ29udGVudFJhbmdlc0JldHdlZW5PZmZzZXRzKHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0CkBAIC0xMTIzLDQ0ICsx
MDk2LDM2IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3Rh
dGUgc3RhdGUpCiAgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0U2VsZWN0aW9uU3RhdGUoc3Rh
dGUpOwogfQogCi12b2lkIFJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW4sIGJvb2wgZm9yY2UpCit2b2lk
IFJlbmRlclRleHQ6OnNldFRleHRXaXRoT2Zmc2V0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgZm9yY2UpCiB7Ci0gICAgaWYgKCFm
b3JjZSAmJiBtX3RleHQgPT0gdGV4dCkKKyAgICBpZiAoIWZvcmNlICYmIHRleHQoKSA9PSBuZXdU
ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgZGVsdGEgPSB0ZXh0Lmxlbmd0aCgpIC0g
dGV4dExlbmd0aCgpOwotICAgIHVuc2lnbmVkIGVuZCA9IGxlbiA/IG9mZnNldCArIGxlbiAtIDEg
OiBvZmZzZXQ7CisgICAgaW50IGRlbHRhID0gbmV3VGV4dC5sZW5ndGgoKSAtIHRleHQoKS5sZW5n
dGgoKTsKKyAgICB1bnNpZ25lZCBlbmQgPSBsZW5ndGggPyBvZmZzZXQgKyBsZW5ndGggLSAxIDog
b2Zmc2V0OwogCiAgICAgbV9saW5lc0RpcnR5ID0gc2ltcGxlTGluZUxheW91dCgpIHx8IG1fbGlu
ZUJveGVzLmRpcnR5UmFuZ2UoKnRoaXMsIG9mZnNldCwgZW5kLCBkZWx0YSk7CiAKLSAgICBzZXRU
ZXh0KHRleHQsIGZvcmNlIHx8IG1fbGluZXNEaXJ0eSk7CisgICAgc2V0VGV4dChuZXdUZXh0LCBm
b3JjZSB8fCBtX2xpbmVzRGlydHkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbmxpbmVG
bG93T3JFbXB0eVRleHQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAo
aXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
ICghaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
U3RyaW5nSW1wbCogdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCk7
Ci0gICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIXRleHQt
Pmxlbmd0aCgpOworICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSB8fCAoaXM8
UmVuZGVyVGV4dD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50
ZXh0KCkuaXNFbXB0eSgpKTsKIH0KIAogVUNoYXIgUmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0
ZXIoKSBjb25zdAogewogICAgIC8vIGZpbmQgcHJldmlvdXMgdGV4dCByZW5kZXJlciBpZiBvbmUg
ZXhpc3RzCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1RleHQgPSB0aGlzOwotICAg
IHdoaWxlICgocHJldmlvdXNUZXh0ID0gcHJldmlvdXNUZXh0LT5wcmV2aW91c0luUHJlT3JkZXIo
KSkpCisgICAgd2hpbGUgKChwcmV2aW91c1RleHQgPSBwcmV2aW91c1RleHQtPnByZXZpb3VzSW5Q
cmVPcmRlcigpKSkgewogICAgICAgICBpZiAoIWlzSW5saW5lRmxvd09yRW1wdHlUZXh0KCpwcmV2
aW91c1RleHQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgVUNoYXIgcHJldiA9ICcgJzsKLSAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4ocHJldmlvdXNUZXh0KSkgewotICAgICAgICBpZiAoU3RyaW5n
SW1wbCogcHJldmlvdXNTdHJpbmcgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcHJldmlvdXNUZXh0
KS50ZXh0KCkpCi0gICAgICAgICAgICBwcmV2ID0gKCpwcmV2aW91c1N0cmluZylbcHJldmlvdXNT
dHJpbmctPmxlbmd0aCgpIC0gMV07CiAgICAgfQotICAgIHJldHVybiBwcmV2OworICAgIGlmICgh
aXM8UmVuZGVyVGV4dD4ocHJldmlvdXNUZXh0KSkKKyAgICAgICAgcmV0dXJuICcgJzsKKyAgICBh
dXRvJiBwcmV2aW91c1N0cmluZyA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpwcmV2aW91c1RleHQp
LnRleHQoKTsKKyAgICByZXR1cm4gcHJldmlvdXNTdHJpbmdbcHJldmlvdXNTdHJpbmcubGVuZ3Ro
KCkgLSAxXTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJUZXh0Ojp0b3BPZkZpcnN0VGV4dCgpIGNv
bnN0CkBAIC0xMTY4LDM3ICsxMTMzLDM0IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZG
aXJzdFRleHQoKSBjb25zdAogICAgIHJldHVybiBmaXJzdFRleHRCb3goKS0+cm9vdCgpLmxpbmVU
b3AoKTsKIH0KIAotdm9pZCBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBTdHJpbmcmIHRleHQsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKQorU3RyaW5nIGFwcGx5
VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4
dCwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpCiB7CiAgICAgc3dpdGNoIChzdHlsZS50ZXh0VHJh
bnNmb3JtKCkpIHsKICAgICBjYXNlIFRUTk9ORToKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybiB0ZXh0OwogICAgIGNhc2UgQ0FQSVRBTElaRToKLSAgICAgICAgbWFrZUNhcGl0YWxpemVk
KCZ0ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm4gY2FwaXRhbGl6ZSh0ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcik7IC8vIEZJWE1FOiBOZWVkIHRv
IHRha2UgbG9jYWxlIGludG8gYWNjb3VudC4KICAgICBjYXNlIFVQUEVSQ0FTRToKLSAgICAgICAg
dGV4dCA9IHRleHQuY29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VX
aXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKICAgICBjYXNlIExPV0VSQ0FTRToKLSAgICAgICAg
dGV4dCA9IHRleHQuY29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7
Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9Mb3dlcmNhc2VX
aXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHRleHQ7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgUmVuZGVyVGV4dDo6c2V0UmVuZGVyZWRUZXh0
KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIHsKLSAgICBBU1NFUlQoIXRleHQuaXNOdWxsKCkpOwor
ICAgIEFTU0VSVCghbmV3VGV4dC5pc051bGwoKSk7CiAKICAgICBTdHJpbmcgb3JpZ2luYWxUZXh0
ID0gdGhpcy0+b3JpZ2luYWxUZXh0KCk7CiAKLSAgICBtX3RleHQgPSB0ZXh0OworICAgIG1fdGV4
dCA9IG5ld1RleHQ7CiAKICAgICBpZiAobV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCkKICAgICAg
ICAgbV90ZXh0LnJlcGxhY2UoJ1xcJywgeWVuU2lnbik7CiAKLSAgICBBU1NFUlQobV90ZXh0KTsK
LQotICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBtX3RleHQsIHByZXZpb3VzQ2hhcmFj
dGVyKCkpOworICAgIG1fdGV4dCA9IGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBtX3RleHQs
IHByZXZpb3VzQ2hhcmFjdGVyKCkpOwogCiAgICAgc3dpdGNoIChzdHlsZSgpLnRleHRTZWN1cml0
eSgpKSB7CiAgICAgY2FzZSBUU05PTkU6CkBAIC0xMjI1LDkgKzExODcsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OnNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAjZW5kaWYKICAgICB9
CiAKLSAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7Ci0KLSAgICBtX2lzQWxsQVNDSUkgPSBt
X3RleHQuY29udGFpbnNPbmx5QVNDSUkoKTsKKyAgICBtX2lzQWxsQVNDSUkgPSB0ZXh0KCkuaXNB
bGxBU0NJSSgpOwogICAgIG1fY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoID0gY29tcHV0ZUNhblVz
ZVNpbXBsZUZvbnRDb2RlUGF0aCgpOwogICAgIG1fY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJp
bmcgPSBjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKTsKICAgICAKQEAgLTEy
NDgsNyArMTIwOCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2VjdXJlVGV4dChVQ2hhciBtYXNraW5n
Q2hhcmFjdGVyKQogICAgIC8vIG9mIHRoZSBjaGFyYWN0ZXJzIGFyZSBzdXJyb2dhdGUgcGFpcnMg
b3IgY29tYmluaW5nIG1hcmtzLiBUaHVzLCB0aGlzIGZ1bmN0aW9uCiAgICAgLy8gZG9lcyBub3Qg
YXR0ZW1wdCB0byBoYW5kbGUgZWl0aGVyIG9mIHRob3NlLgogCi0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGV4dExlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQoKS5sZW5ndGgoKTsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjYwLDcgKzEyMjAsNyBA
QCB2b2lkIFJlbmRlclRleHQ6OnNlY3VyZVRleHQoVUNoYXIgbWFza2luZ0NoYXJhY3RlcikKICAg
ICAgICAgLy8gSWYgaXQncyBjYWxsZWQgYSBzZWNvbmQgdGltZSB3ZSBhc3N1bWUgdGhlIHRleHQg
aXMgZGlmZmVyZW50IGFuZCBhIGNoYXJhY3RlciBzaG91bGQgbm90IGJlIHJldmVhbGVkLgogICAg
ICAgICByZXZlYWxlZENoYXJhY3RlcnNPZmZzZXQgPSB0aW1lci0+dGFrZU9mZnNldEFmdGVyTGFz
dFR5cGVkQ2hhcmFjdGVyKCk7CiAgICAgICAgIGlmIChyZXZlYWxlZENoYXJhY3RlcnNPZmZzZXQg
JiYgcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0IDw9IGxlbmd0aCkKLSAgICAgICAgICAgIGNoYXJh
Y3RlclRvUmV2ZWFsID0gbV90ZXh0Wy0tcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zmc2V0XTsKKyAgICAg
ICAgICAgIGNoYXJhY3RlclRvUmV2ZWFsID0gdGV4dCgpWy0tcmV2ZWFsZWRDaGFyYWN0ZXJzT2Zm
c2V0XTsKICAgICB9CiAKICAgICBVQ2hhciogY2hhcmFjdGVyczsKQEAgLTEyODIsMTQgKzEyNDIs
MTQgQEAgYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJp
bmcoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBZGRpdGlvbmFsIGNo
ZWNrIG9uIHRoZSBmb250IGNvZGVwYXRoLgotICAgIFRleHRSdW4gcnVuKG1fdGV4dCk7CisgICAg
VGV4dFJ1biBydW4odGV4dCgpKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KGZhbHNlKTsKICAgICBpZiAoZm9udC5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpTaW1w
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gd2hpdGVzcGFjZUlzQ29sbGFw
c2VkID0gc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV90ZXh0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCghd2hpdGVzcGFj
ZUlzQ29sbGFwc2VkICYmIG1fdGV4dFtpXSA9PSAnXHQnKSB8fCBtX3RleHRbaV0gPT0gbm9CcmVh
a1NwYWNlIHx8IG1fdGV4dFtpXSA+PSBIaXJhZ2FuYUxldHRlclNtYWxsQSkKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGV4dCgpLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgh
d2hpdGVzcGFjZUlzQ29sbGFwc2VkICYmIHRleHQoKVtpXSA9PSAnXHQnKSB8fCB0ZXh0KClbaV0g
PT0gbm9CcmVha1NwYWNlIHx8IHRleHQoKVtpXSA+PSBIaXJhZ2FuYUxldHRlclNtYWxsQSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzI0
LDEwICsxMjg0LDcgQEAgU3RyaW5nIFJlbmRlclRleHQ6OnRleHRXaXRob3V0Q29udmVydGluZ0Jh
Y2tzbGFzaFRvWWVuU3ltYm9sKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdXNlQmFja3NsYXNoQXNZ
ZW5TeW1ib2wgfHwgc3R5bGUoKS50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkUpCiAgICAgICAgIHJl
dHVybiB0ZXh0KCk7Ci0KLSAgICBTdHJpbmcgdGV4dCA9IG9yaWdpbmFsVGV4dCgpOwotICAgIGFw
cGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCB0ZXh0LCBwcmV2aW91c0NoYXJhY3RlcigpKTsKLSAg
ICByZXR1cm4gdGV4dDsKKyAgICByZXR1cm4gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIG9y
aWdpbmFsVGV4dCgpLCBwcmV2aW91c0NoYXJhY3RlcigpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0
OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCkBAIC0xMzY3LDExICsxMzI0LDExIEBA
IGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCogUmVuZGVyVGV4dDo6c2ltcGxlTGluZUxh
eW91dCgpIGNvbnN0CiAKIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIGxlbiwgZmxvYXQgeFBvcywgYm9vbCBmaXJzdExpbmUsIEhhc2hTZXQ8Y29uc3QgRm9u
dCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAog
ewotICAgIGlmIChmcm9tID49IHRleHRMZW5ndGgoKSkKKyAgICBpZiAoZnJvbSA+PSB0ZXh0KCku
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGZyb20gKyBsZW4gPiB0ZXh0
TGVuZ3RoKCkpCi0gICAgICAgIGxlbiA9IHRleHRMZW5ndGgoKSAtIGZyb207CisgICAgaWYgKGZy
b20gKyBsZW4gPiB0ZXh0KCkubGVuZ3RoKCkpCisgICAgICAgIGxlbiA9IHRleHQoKS5sZW5ndGgo
KSAtIGZyb207CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0gZmlyc3RMaW5l
ID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgcmV0dXJuIHdpZHRoKGZyb20sIGxl
biwgbGluZVN0eWxlLmZvbnRDYXNjYWRlKCksIHhQb3MsIGZhbGxiYWNrRm9udHMsIGdseXBoT3Zl
cmZsb3cpOwpAQCAtMTM3OSwxNCArMTMzNiwxNCBAQCBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lLAog
CiBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNv
bnN0IEZvbnRDYXNjYWRlJiBmLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKLSAgICBB
U1NFUlQoZnJvbSArIGxlbiA8PSB0ZXh0TGVuZ3RoKCkpOwotICAgIGlmICghdGV4dExlbmd0aCgp
KQorICAgIEFTU0VSVChmcm9tICsgbGVuIDw9IHRleHQoKS5sZW5ndGgoKSk7CisgICAgaWYgKCF0
ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBmbG9hdCB3OwogICAgIGlmICgmZiA9PSAm
c3R5bGUuZm9udENhc2NhZGUoKSkgewotICAgICAgICBpZiAoIXN0eWxlLnByZXNlcnZlTmV3bGlu
ZSgpICYmICFmcm9tICYmIGxlbiA9PSB0ZXh0TGVuZ3RoKCkgJiYgKCFnbHlwaE92ZXJmbG93IHx8
ICFnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzKSkgeworICAgICAgICBpZiAoIXN0eWxlLnBy
ZXNlcnZlTmV3bGluZSgpICYmICFmcm9tICYmIGxlbiA9PSB0ZXh0KCkubGVuZ3RoKCkgJiYgKCFn
bHlwaE92ZXJmbG93IHx8ICFnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzKSkgewogICAgICAg
ICAgICAgaWYgKGZhbGxiYWNrRm9udHMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2x5cGhP
dmVyZmxvdyk7CiAgICAgICAgICAgICAgICAgaWYgKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0
eSgpIHx8ICFtX2tub3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tGb250cykgewpAQCAt
MTQ1OCwxMiArMTQxNSwxMiBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmNvbGxlY3RTZWxlY3Rp
b25SZWN0c0ZvckxpbmVCb3hlcyhjb25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGlmIChzZWxl
Y3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbkluc2lkZSkgewogICAgICAgICAvLyBXZSBhcmUgZnVs
bHkgc2VsZWN0ZWQuCiAgICAgICAgIHN0YXJ0UG9zID0gMDsKLSAgICAgICAgZW5kUG9zID0gdGV4
dExlbmd0aCgpOworICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVuZ3RoKCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc3RhcnRQb3MgPSB2aWV3KCkuc2VsZWN0aW9uKCkuc3RhcnRQb3NpdGlvbigp
OwogICAgICAgICBlbmRQb3MgPSB2aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9zaXRpb24oKTsKICAg
ICAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uU3RhcnQpCi0gICAgICAgICAg
ICBlbmRQb3MgPSB0ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICBlbmRQb3MgPSB0ZXh0KCkubGVu
Z3RoKCk7CiAgICAgICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uRW5k
KQogICAgICAgICAgICAgc3RhcnRQb3MgPSAwOwogICAgIH0KQEAgLTE1MzksMzUgKzE0OTYsMzMg
QEAgYm9vbCBSZW5kZXJUZXh0OjpoYXNSZW5kZXJlZFRleHQoKSBjb25zdAogCiBpbnQgUmVuZGVy
VGV4dDo6cHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQWxs
QVNDSUkoKSB8fCBtX3RleHQuaXM4Qml0KCkpCisgICAgaWYgKG1faXNBbGxBU0NJSSB8fCB0ZXh0
KCkuaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBjdXJyZW50IC0gMTsKIAotICAgIENhY2hlZFRl
eHRCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yKG1fdGV4dCwgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGU6
OkNhcmV0LCBudWxsQXRvbSgpKTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRv
cih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZV9vcihjdXJyZW50IC0g
MSk7CiB9CiAKIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRp
b24oaW50IGN1cnJlbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX3RleHQuaXNOdWxsKCkpOwot
Ci0gICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IobV90ZXh0LCBUZXh0QnJlYWtJ
dGVyYXRvcjo6TW9kZTo6RGVsZXRlLCBudWxsQXRvbSgpKTsKKyAgICBDYWNoZWRUZXh0QnJlYWtJ
dGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUs
IG51bGxBdG9tKCkpOwogICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFs
dWVfb3IoMCk7CiB9CiAKIGludCBSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBj
b25zdAogewotICAgIGlmIChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQorICAgIGlm
IChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gY3VycmVu
dCArIDE7CiAKLSAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRvcihtX3RleHQsIFRl
eHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7CisgICAgQ2FjaGVkVGV4
dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6
Q2FyZXQsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBpdGVyYXRvci5mb2xsb3dpbmcoY3VycmVu
dCkudmFsdWVfb3IoY3VycmVudCArIDEpOwogfQogCiBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVD
YW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSBjb25zdAogewotICAgIGlmIChpc0FsbEFTQ0lJKCkg
fHwgbV90ZXh0LmlzOEJpdCgpKQorICAgIGlmIChtX2lzQWxsQVNDSUkgfHwgdGV4dCgpLmlzOEJp
dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gRm9udENhc2NhZGU6OmNoYXJh
Y3RlclJhbmdlQ29kZVBhdGgoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2Fk
ZTo6U2ltcGxlOworICAgIHJldHVybiBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0
aCh0ZXh0KCkuY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250Q2FzY2FkZTo6U2ltcGxl
OwogfQogCiB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFj
dGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKQpAQCAtMTU4MiwxMyAr
MTUzNywxMyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hh
cmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRl
eHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0
b3ApIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRl
eHRMZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRl
eHQoKS5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NF
UlQoZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5h
dGlvbik7Ci0gICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhjaGFy
YWN0ZXJzOCgpICsgc3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOwotICAgIHJldHVybiBTdHJp
bmdWaWV3KGNoYXJhY3RlcnMxNigpICsgc3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQpOworICAg
IGlmICh0ZXh0KCkuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiB7IHRleHQoKS5jaGFyYWN0ZXJz
OCgpICsgc3RhcnQsIGRlc3RpbmF0aW9uIC0gc3RhcnQgfTsKKyAgICByZXR1cm4geyB0ZXh0KCku
Y2hhcmFjdGVyczE2KCkgKyBzdGFydCwgZGVzdGluYXRpb24gLSBzdGFydCB9OwogfQogCiBSZW5k
ZXJJbmxpbmUqIFJlbmRlclRleHQ6OmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggZDg2ZjBiNGI4NGY0YjE0NzQ5
YTVkY2I2OGM4Mzc0ZmVkYzVjZWFlZi4uZjQ2MjkwZjVkZWFiMGFlYmU5YzdjODI0MGQwZDZmMzk0
NTY2ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDggKzQzLDYgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dCgpOwogCi0gICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dCogdGV4
dE5vZGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0
OwpAQCAtNjMsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2hUZXh0Qm94KElubGlu
ZVRleHRCb3gmIGJveCkgeyBtX2xpbmVCb3hlcy5hdHRhY2goYm94KTsgfQogICAgIHZvaWQgcmVt
b3ZlVGV4dEJveChJbmxpbmVUZXh0Qm94JiBib3gpIHsgbV9saW5lQm94ZXMucmVtb3ZlKGJveCk7
IH0KIAotICAgIFN0cmluZ0ltcGwqIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgp
OyB9CisgICAgU3RyaW5nSW1wbCYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuICptX3RleHQuaW1wbCgp
OyB9IC8vIFNpbmNlIG1fdGV4dCBjYW4gbmV2ZXIgYmUgbnVsbCwgcmV0dXJuaW5nIHRoaXMgdHlw
ZSBtZWFucyBjYWxsZXJzIHdvbid0IG51bGwgY2hlY2suCiAgICAgU3RyaW5nIHRleHRXaXRob3V0
Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICBJbmxpbmVUZXh0
Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCkgeyByZXR1cm4gbV9saW5lQm94ZXMuY3JlYXRlQW5k
QXBwZW5kTGluZUJveCgqdGhpcyk7IH0KQEAgLTcyLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0IGZpbmFsOwogICAgIFZlY3RvcjxJbnRSZWN0PiBhYnNvbHV0
ZVJlY3RzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZz
ZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgYm9vbCogd2Fz
Rml4ZWQgPSBudWxscHRyKSBjb25zdDsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb2xs
ZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpIG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZl
Y3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQg
ZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBmaW5hbDsK
ICNlbmRpZgogCiAgICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0IGZpbmFsOwpAQCAtODAsMzUgKzc4LDM4IEBAIHB1YmxpYzoKIAog
ICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNv
bnN0OwogCi0gICAgUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwotICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKKyAg
ICBQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JikgZmluYWw7CiAK
LSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgp
OyB9Ci0gICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsgfQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYo
KSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5jaGFyYWN0ZXJzMTYoKTsgfQogICAgIFVD
aGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkKSBjb25zdDsKLSAgICBVQ2hhciB1bmNoZWNrZWRDaGFy
YWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBp
KSBjb25zdCB7IHJldHVybiB1bmNoZWNrZWRDaGFyYWN0ZXJBdChpKTsgfQotICAgIHVuc2lnbmVk
IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5sZW5ndGgoKTsgfSAv
LyBub24gdmlydHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBsZW5ndGgoKQorICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsgfQorCiAgICAgdm9p
ZCBwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYpOwogCi0gICAgdmlydHVhbCBmbG9hdCB3
aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxv
YXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92
ZXJmbG93KiA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlLCBIYXNo
U2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkg
Y29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCB3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250
Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxscHRyLCBHbHlwaE92ZXJmbG93KiA9IG51bGxwdHIpIGNv
bnN0OworICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVu
Z3RoLCBmbG9hdCB4UG9zLCBib29sIGZpcnN0TGluZSA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogZmFsbGJhY2tGb250cyA9IG51bGxwdHIsIEdseXBoT3ZlcmZsb3cqID0gbnVsbHB0cikg
Y29uc3Q7CiAKICAgICBmbG9hdCBtaW5Mb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBmbG9hdCBt
YXhMb2dpY2FsV2lkdGgoKSBjb25zdDsKIAotICAgIHZvaWQgdHJpbW1lZFByZWZXaWR0aHMoZmxv
YXQgbGVhZFdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQmIGJlZ2luTWlu
VywgYm9vbCYgYmVnaW5XUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0JiBlbmRN
aW5XLCBib29sJiBlbmRXUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGhhc0Jy
ZWFrYWJsZUNoYXIsIGJvb2wmIGhhc0JyZWFrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQmIGJlZ2luTWF4VywgZmxvYXQmIGVuZE1heFcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCYgbWluVywgZmxvYXQmIG1heFcsIGJvb2wmIHN0cmlwRnJvbnRTcGFjZXMpOwor
ICAgIHN0cnVjdCBXaWR0aHMgeworICAgICAgICBmbG9hdCBtaW4geyAwIH07CisgICAgICAgIGZs
b2F0IG1heCB7IDAgfTsKKyAgICAgICAgZmxvYXQgYmVnaW5NaW4geyAwIH07CisgICAgICAgIGZs
b2F0IGVuZE1pbiB7IDAgfTsKKyAgICAgICAgZmxvYXQgYmVnaW5NYXggeyAwIH07CisgICAgICAg
IGZsb2F0IGVuZE1heCB7IDAgfTsKKyAgICAgICAgYm9vbCBiZWdpbldTIHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBlbmRXUyB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQnJlYWthYmxlQ2hh
ciB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQnJlYWsgeyBmYWxzZSB9OworICAgIH07Cisg
ICAgV2lkdGhzIHRyaW1tZWRQcmVmZXJyZWRXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBib29sJiBz
dHJpcEZyb250U3BhY2VzKTsKKwogICAgIGZsb2F0IGhhbmdhYmxlUHVuY3R1YXRpb25TdGFydFdp
ZHRoKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBmbG9hdCBoYW5nYWJsZVB1bmN0dWF0aW9u
RW5kV2lkdGgodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpcnN0Q2hhcmFj
dGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsYXN0Q2hhcmFj
dGVySW5kZXhTdHJpcHBpbmdTcGFjZXMoKSBjb25zdDsKLSAgICBib29sIGlzSGFuZ2FibGVTdG9w
T3JDb21tYShVQ2hhcikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaXNIYW5nYWJsZVN0b3BPckNv
bW1hKFVDaGFyKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJlY3QgbGlu
ZXNCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIExheW91dFJlY3QgbGluZXNWaXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KCkgY29uc3Q7CkBAIC0xMTksMjIgKzEyMCwxNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRUZXh0V2l0aE9mZnNldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbiwgYm9vbCBmb3JjZSA9IGZhbHNlKTsKIAogICAgIGJvb2wgY2FuQmVTZWxlY3Rp
b25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIGZpbmFsOwotICAgIExheW91dFJlY3Qgc2VsZWN0
aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlOwotICAg
IExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgdW5zaWduZWQgY2FyZXRPZmZz
ZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOwogCi0g
ICAgTGF5b3V0UmVjdCBjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCwgVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cyk7CisgICAgTGF5b3V0UmVjdCBjb2xs
ZWN0U2VsZWN0aW9uUmVjdHNGb3JMaW5lQm94ZXMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCwgVmVjdG9yPExh
eW91dFJlY3Q+Jik7CiAKICAgICBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVy
biBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5MZWZ0KCksIDApOyB9CiAgICAg
TGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxl
bmd0aChzdHlsZSgpLm1hcmdpblJpZ2h0KCksIDApOyB9CiAKLSAgICBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IGZpbmFsOwotCiAgICAgSW5saW5lVGV4dEJveCogZmlyc3RU
ZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMuZmlyc3QoKTsgfQogICAgIElubGlu
ZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94ZXMubGFzdCgp
OyB9CiAKLSAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQg
Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgY2FyZXRNaW5PZmZzZXQo
KSBjb25zdCBmaW5hbDsKKyAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAg
ICB1bnNpZ25lZCBjb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHVuc2lnbmVkKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQodW5zaWduZWQp
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNDYXJldE9mZnNldCh1bnNpZ25lZCkgY29uc3Q7CkBA
IC0xNTksMTEgKzE1NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCi0g
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgp
OyAvLyBTdWJjbGFzc2VkIGJ5IFJlbmRlclNWR0lubGluZVRleHQuCisgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpOwogCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplOyB9Ci0gICAgdm9pZCBz
ZXRDYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKGZsb2F0IHMpIHsgbV9jYW5kaWRhdGVDb21wdXRl
ZFRleHRTaXplID0gczsgfQorICAgIHZvaWQgc2V0Q2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZShm
bG9hdCBzaXplKSB7IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSA9IHNpemU7IH0KICNlbmRp
ZgogCiAgICAgdm9pZCBlbnN1cmVMaW5lQm94ZXMoKTsKQEAgLTE3NCw3ICsxNzAsNyBAQCBwdWJs
aWM6CiAKICAgICBMYXlvdXRVbml0IHRvcE9mRmlyc3RUZXh0KCkgY29uc3Q7CiAgICAgCi0gICAg
Ym9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikg
Y29uc3Q7CisgICAgYm9vbCBjb250YWluc09ubHlIVE1MV2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgY2FuVXNlU2ltcGxpZmll
ZFRleHRNZWFzdXJpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVh
c3VyaW5nOyB9CiAKQEAgLTE5NywyMSArMTkzLDI0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgUmVuZGVyVGV4dChOb2RlJiwgY29uc3QgU3RyaW5nJik7CiAKKyAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlKSBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRS
ZWN0KElubGluZUJveCosIHVuc2lnbmVkIGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdp
ZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxs
YmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93Jik7CiAKICAgICBib29sIGNvbXB1dGVDYW5Vc2VTaW1w
bGVGb250Q29kZVBhdGgoKSBjb25zdDsKICAgICAKLSAgICAvLyBNYWtlIGxlbmd0aCgpIHByaXZh
dGUgc28gdGhhdCBjYWxsZXJzIHRoYXQgaGF2ZSBhIFJlbmRlclRleHQqCi0gICAgLy8gd2lsbCB1
c2UgdGhlIG1vcmUgZWZmaWNpZW50IHRleHRMZW5ndGgoKSBpbnN0ZWFkLCB3aGlsZQotICAgIC8v
IGNhbGxlcnMgd2l0aCBhIFJlbmRlck9iamVjdCogY2FuIGNvbnRpbnVlIHRvIHVzZSBsZW5ndGgo
KS4KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0ZXh0TGVuZ3Ro
KCk7IH0KLQogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBI
aXRUZXN0QWN0aW9uKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIGZsb2F0IHdpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGxlbiwgZmxvYXQgeFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4q
IGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
OwotICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxBU0NJSTsgfQog
ICAgIGJvb2wgY29tcHV0ZVVzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNlY3VyZVRleHQoVUNoYXIgbWFzayk7CkBAIC0yNDQsMjggKzI0MywyMyBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgYmUgcGFydCBvZiB0aGUgdGV4dCBzaXppbmcgc3RydWN0dXJlcyBpbiBEb2N1
bWVudCBpbnN0ZWFkLiBUaGF0IHdvdWxkIHNhdmUgc29tZSBtZW1vcnkuCi0gICAgZmxvYXQgbV9j
YW5kaWRhdGVDb21wdXRlZFRleHRTaXplOworICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRU
ZXh0U2l6ZSB7IDAgfTsKICNlbmRpZgotICAgIGZsb2F0IG1fbWluV2lkdGg7Ci0gICAgZmxvYXQg
bV9tYXhXaWR0aDsKLSAgICBmbG9hdCBtX2JlZ2luTWluV2lkdGg7Ci0gICAgZmxvYXQgbV9lbmRN
aW5XaWR0aDsKKyAgICBmbG9hdCBtX21pbldpZHRoIHsgLTEgfTsKKyAgICBmbG9hdCBtX21heFdp
ZHRoIHsgLTEgfTsKKyAgICBmbG9hdCBtX2JlZ2luTWluV2lkdGggeyAwIH07CisgICAgZmxvYXQg
bV9lbmRNaW5XaWR0aCB7IDAgfTsKIAogICAgIFN0cmluZyBtX3RleHQ7CiB9OwogCi1pbmxpbmUg
VUNoYXIgUmVuZGVyVGV4dDo6dW5jaGVja2VkQ2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QK
LXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgdGV4dExlbmd0aCgp
KTsKLSAgICByZXR1cm4gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzOCgpW2ldIDogY2hhcmFjdGVyczE2
KClbaV07Ci19CitTdHJpbmcgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgU3RyaW5nJiwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpOworU3RyaW5nIGNhcGl0YWxp
emUoY29uc3QgU3RyaW5nJiwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpOworTGluZUJyZWFrSXRl
cmF0b3JNb2RlIG1hcExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKExpbmVCcmVhayk7CiAKIGlubGlu
ZSBVQ2hhciBSZW5kZXJUZXh0OjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAg
IGlmIChpID49IHRleHRMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
dW5jaGVja2VkQ2hhcmFjdGVyQXQoaSk7CisgICAgcmV0dXJuIGkgPj0gbGVuZ3RoKCkgPyAwIDog
dGV4dCgpW2ldOwogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlclRleHQ6OnN0
eWxlKCkgY29uc3QKQEAgLTI5OCwxMCArMjkyLDYgQEAgaW5saW5lIENvbG9yIFJlbmRlclRleHQ6
OnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50KCkt
PnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCk7CiB9CiAKLXZvaWQgYXBwbHlUZXh0VHJhbnNm
b3JtKGNvbnN0IFJlbmRlclN0eWxlJiwgU3RyaW5nJiwgVUNoYXIpOwotdm9pZCBtYWtlQ2FwaXRh
bGl6ZWQoU3RyaW5nKiwgVUNoYXIgcHJldmlvdXMpOwotTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1h
cExpbmVCcmVha1RvSXRlcmF0b3JNb2RlKExpbmVCcmVhayk7Ci0gICAgCiBpbmxpbmUgUmVuZGVy
VGV4dCogVGV4dDo6cmVuZGVyZXIoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJUZXh0PihOb2RlOjpyZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggZjE1YmVlYzdkYzBkZTNkYWNiMGU3NmViOWU1
NDE3MTU5M2I4ODRlNS4uZGQ5YWNjN2QxMDMyNzc0NjhkOGM4ZTVjMjY3ZWMwZGQwYjFlZDVhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAK
QEAgLTgwLDEyICs4MCwxMSBAQCB2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6d2lsbEJlRGVzdHJv
eWVkKCkKICAgICBSZW5kZXJUZXh0Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBSZW5k
ZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIGZvcmNlKQor
dm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBi
b29sIGZvcmNlKQogewotICAgIFJlbmRlclRleHQ6OnNldFRleHQodGV4dCwgZm9yY2UpOwotCisg
ICAgUmVuZGVyVGV4dDo6c2V0VGV4dChuZXdUZXh0LCBmb3JjZSk7CiAgICAgbV9zdGFydCA9IDA7
Ci0gICAgbV9lbmQgPSB0ZXh0TGVuZ3RoKCk7CisgICAgbV9lbmQgPSB0ZXh0KCkubGVuZ3RoKCk7
CiAgICAgaWYgKCFtX2ZpcnN0TGV0dGVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9maXJzdExl
dHRlci0+cmVtb3ZlRnJvbVBhcmVudEFuZERlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRleCA3NWUyMWM1ZGYzOTQ4MDZi
YTg0MzQyMmZmYTg1OGM2MjY3YmU4OGRiLi5iZDAyNDNhZDk0MGE4ZjgzMjMxOTAxNTJhZTdjMWQy
MThmZTg0MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRM
aW5lQm94ZXMuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgaW50IFJlbmRlclRleHRMaW5lQm94ZXM6
OmNhcmV0TWF4T2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyKSBjb25zdAogewogICAg
IGF1dG8gYm94ID0gbV9sYXN0OwogICAgIGlmICghYm94KQotICAgICAgICByZXR1cm4gcmVuZGVy
ZXIudGV4dExlbmd0aCgpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgp
OwogCiAgICAgaW50IG1heE9mZnNldCA9IGJveC0+c3RhcnQoKSArIGJveC0+bGVuKCk7CiAgICAg
Zm9yIChib3ggPSBib3gtPnByZXZUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2VGV4dEJv
eCgpKQpAQCAtMzk1LDcgKzM5NSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGNvbnN0IEluCiAKIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZpcnN0IHx8ICFyZW5kZXJlci50ZXh0TGVuZ3RoKCkpCisgICAgaWYgKCFtX2Zp
cnN0IHx8ICFyZW5kZXJlci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJl
ci5jcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKICAgICBMYXlvdXRVbml0
IHBvaW50TGluZURpcmVjdGlvbiA9IG1fZmlyc3QtPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgp
IDogcG9pbnQueSgpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hl
czo6c2V0U2VsZWN0aW9uU3RhdGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6
CiAgICAgYXV0byBzdGFydCA9IHJlbmRlcmVyLnZpZXcoKS5zZWxlY3Rpb24oKS5zdGFydFBvc2l0
aW9uKCk7CiAgICAgYXV0byBlbmQgPSByZW5kZXJlci52aWV3KCkuc2VsZWN0aW9uKCkuZW5kUG9z
aXRpb24oKTsKICAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkg
ewotICAgICAgICBlbmQgPSByZW5kZXJlci50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGVuZCA9IHJl
bmRlcmVyLnRleHQoKS5sZW5ndGgoKTsKICAgICAgICAgLy8gdG8gaGFuZGxlIHNlbGVjdGlvbiBm
cm9tIGVuZCBvZiB0ZXh0IHRvIGVuZCBvZiBsaW5lCiAgICAgICAgIGlmIChzdGFydCAmJiBzdGFy
dCA9PSBlbmQpCiAgICAgICAgICAgICBzdGFydCA9IGVuZCAtIDE7CkBAIC01NjgsNyArNTY4LDcg
QEAgVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyhj
b25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwKIAogICAgICAgICAvLyBTaG9ydGVuIHRoZSB3aWR0
aCBvZiB0aGlzIHRleHQgYm94IGlmIGl0IGVuZHMgaW4gYW4gZWxsaXBzaXMuCiAgICAgICAgIC8v
IEZJWE1FOiBlbGxpcHNpc1JlY3RGb3JCb3ggc2hvdWxkIHN3aXRjaCB0byByZXR1cm4gRmxvYXRS
ZWN0IHNvb24gd2l0aCB0aGUgc3VicGl4ZWxsYXlvdXQgYnJhbmNoLgotICAgICAgICBJbnRSZWN0
IGVsbGlwc2lzUmVjdCA9IChvcHRpb24gPT0gQ2xpcFRvRWxsaXBzaXMpID8gZWxsaXBzaXNSZWN0
Rm9yQm94KCpib3gsIDAsIHJlbmRlcmVyLnRleHRMZW5ndGgoKSkgOiBJbnRSZWN0KCk7CisgICAg
ICAgIEludFJlY3QgZWxsaXBzaXNSZWN0ID0gKG9wdGlvbiA9PSBDbGlwVG9FbGxpcHNpcykgPyBl
bGxpcHNpc1JlY3RGb3JCb3goKmJveCwgMCwgcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpKSA6IElu
dFJlY3QoKTsKICAgICAgICAgaWYgKCFlbGxpcHNpc1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAg
ICAgICAgICAgICAgIGJvdW5kYXJpZXMuc2V0V2lkdGgoZWxsaXBzaXNSZWN0Lm1heFgoKSAtIGJv
dW5kYXJpZXMueCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcAppbmRleCAxZWI0Njc3NzgxZTEzZTY3OTQ4NzBkNzBlMmFmNWIyYzc2YzUxMDBiLi5j
ODM2ZDFlYzVmNDY5NGRmZWQ2Y2FhMTMxM2YyZjg0NjhhYzljYjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAg
c3RhdGljIEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNhblVzZUZvckZvbnRBbmRUZXh0KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdywgSW4KICAgICBib29sIGZsb3dJc0p1c3RpZmllZCA9IHN0eWxl
LnRleHRBbGlnbigpID09IEpVU1RJRlk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmVuZGVy
ZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJUZXh0PihmbG93KSkgewogICAgICAgICAvLyBGSVhN
RTogRG8gbm90IHJldHVybiB1bnRpbCBhZnRlciBjaGVja2luZyBhbGwgY2hpbGRyZW4uCi0gICAg
ICAgIGlmICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSkKKyAgICAgICAgaWYgKHRleHRSZW5k
ZXJlci50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJO
X0lGX05FRURFRChGbG93VGV4dElzRW1wdHksIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAg
ICAgICAgaWYgKHRleHRSZW5kZXJlci5pc0NvbWJpbmVUZXh0KCkpCiAgICAgICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dUZXh0SXNDb21iaW5lVGV4dCwgcmVhc29u
cywgaW5jbHVkZVJlYXNvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYWU4NTY5MGM1MjA2
YjY3ZjUyNTBiN2YyNThiZjVmLi5iMjkyMzViNjM3NGM3YzM1ODBlZDUzYTIwYzNhOGM5OTY1YWUw
ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dENvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dENvdmVyYWdlLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIHByaW50VGV4
dEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQmIGNoYXJh
Y3RlCiBzdGF0aWMgdW5zaWduZWQgdGV4dExlbmd0aEZvclN1YnRyZWUoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRMZW5ndGgoKTsK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCkubGVu
Z3RoKCk7CiAgICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSAwOwpAQCAtMjQ5LDcgKzI0OSw3IEBA
IHN0YXRpYyB1bnNpZ25lZCB0ZXh0TGVuZ3RoRm9yU3VidHJlZShjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyKQogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxv
d3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGFzaFNldDxjb25zdCBSZW5kZXJCbG9j
a0Zsb3cqPiYgbGVhZlJlbmRlcmVycykKIHsKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpKSB7Ci0gICAgICAgIGlmICghZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLnRleHRM
ZW5ndGgoKSkKKyAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4
dCgpLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBGaW5kIFJlbmRl
ckJsb2NrRmxvdyBhbmNlc3Rvci4KICAgICAgICAgZm9yIChjb25zdCBhdXRvKiBjdXJyZW50ID0g
cmVuZGVyZXIucGFyZW50KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
bG93Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGbG93Q29udGVudHMuY3BwCmluZGV4IDE4ZTViNjRiZDk3NjFkZTE5ZjEyOWYwZDhjY2ZhM2Jh
YWRjNDNjNzcuLjI5YjM2YTBmMzI3NWE1ZTYwMDBjMjMwNzk4ZjIxNTA4OTRkZGVhOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50cy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFZlY3RvcjxGbG93Q29udGVu
dHM6OlNlZ21lbnQ+IGluaXRpYWxpemVTZWdtZW50cyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGYK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihmbG93
KSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQpKSB7CiAgICAgICAgICAgICBh
dXRvJiB0ZXh0Q2hpbGQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZCk7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gdGV4dENoaWxkLnRleHQoKS0+bGVuZ3RoKCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gdGV4dENoaWxkLnRleHQoKS5sZW5ndGgoKTsK
ICAgICAgICAgICAgIHNlZ21lbnRzLmFwcGVuZChGbG93Q29udGVudHM6OlNlZ21lbnQgeyBzdGFy
dFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uICsgdGV4dExlbmd0aCwgdGV4dENoaWxkLnRleHQoKSwK
ICAgICAgICAgICAgICAgICB0ZXh0Q2hpbGQsIHRleHRDaGlsZC5jYW5Vc2VTaW1wbGlmaWVkVGV4
dE1lYXN1cmluZygpIH0pOwogICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiArPSB0ZXh0TGVuZ3Ro
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuY3BwCmluZGV4IDA2YjYxY2M3NTY1ZjFiOWQyN2UwZmYyNTA4YWMwNjI4NjM3ZGM2
MzIuLmU1NDM1MmRmYjZiOTBjYzI5NGY4YTQxMGM4ZDU5YmEyYzViNTg4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB1bnNpZ25lZCB0ZXh0T2Zmc2V0Rm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcgogICAgIGF1dG8g
cmVzb2x2ZXIgPSBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwogICAgIGF1dG8gaXQgPSByZXNv
bHZlci5ydW5Gb3JQb2ludChwb2ludCk7CiAgICAgaWYgKGl0ID09IHJlc29sdmVyLmVuZCgpKQot
ICAgICAgICByZXR1cm4gcmVuZGVyZXIudGV4dExlbmd0aCgpOworICAgICAgICByZXR1cm4gcmVu
ZGVyZXIudGV4dCgpLmxlbmd0aCgpOwogICAgIGF1dG8gcnVuID0gKml0OwogICAgIGF1dG8mIHN0
eWxlID0gZmxvdy5zdHlsZSgpOwogICAgIFRleHRSdW4gdGV4dFJ1bihydW4udGV4dCgpLCBydW4u
bG9naWNhbExlZnQoKSwgcnVuLmV4cGFuc2lvbigpLCBydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuaAppbmRleCAwNjQxZjM3N2MwMzc0YTI3NDE5MjJkMDcyYjJlMGU1NTI3YzAzZmM2Li4z
ZThiODdjYmE1NDczNmVmYzk2NDU2MDBiMGE5ODc0MTI3ZWI0ZWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAgLTEw
Niw3ICsxMDYsNyBAQCBpbmxpbmUgdW5zaWduZWQgZmluZENhcmV0TWluaW11bU9mZnNldChjb25z
dCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiBpbmxpbmUgdW5zaWduZWQgZmlu
ZENhcmV0TWF4aW11bU9mZnNldChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgY29uc3QgTGF5
b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKCFsYXlvdXQucnVuQ291bnQoKSkKLSAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnRleHQo
KS5sZW5ndGgoKTsKICAgICBhdXRvJiBsYXN0ID0gbGF5b3V0LnJ1bkF0KGxheW91dC5ydW5Db3Vu
dCgpIC0gMSk7CiAgICAgcmV0dXJuIGxhc3QuZW5kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCAwNTY2MDFlNWRmNWRkNTM5MzQ3
MjRlYTdkZWI4YzgzZGRiMjAwNDJjLi43ZjFiYTFjNGU0YTVjMjYwZWQ2OGI0NDBmM2VkZDg0Nzky
YjlhZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0Nv
bnRleHQuaApAQCAtMzg5LDcgKzM4OSw3IEBAIGlubGluZSBib29sIHNob3VsZEFkZEJvcmRlclBh
ZGRpbmdNYXJnaW4oUmVuZGVyT2JqZWN0KiBjaGlsZCkKICAgICBpZiAoIWNoaWxkKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAvLyBXaGVuIGRlY2lkaW5nIHdoZXRoZXIgd2UncmUgYXQgdGhl
IGVkZ2Ugb2YgYW4gaW5saW5lLCBhZGphY2VudCBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpcyB0aGUg
c2FtZSBhcyBubyBzaWJsaW5nIGF0IGFsbC4KLSAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKmNoaWxk
KSAmJiAhZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmNoaWxkKS50ZXh0TGVuZ3RoKCkpCisgICAgaWYg
KGlzPFJlbmRlclRleHQ+KCpjaGlsZCkgJiYgIWRvd25jYXN0PFJlbmRlclRleHQ+KCpjaGlsZCku
dGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoQ1NTX0JP
WF9ERUNPUkFUSU9OX0JSRUFLKQogICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KCpjaGlsZCkg
JiYgY2hpbGQtPnBhcmVudCgpLT5zdHlsZSgpLmJveERlY29yYXRpb25CcmVhaygpID09IERDTE9O
RSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRTa2lwV2hpdGVzcGFjZUFm
dGVyU3RhcnRPYmplY3QoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgUmVuZGVyTwogICAgIHdoaWxl
IChuZXh0ICYmIG5leHQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAg
ICAgbmV4dCA9IGJpZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMoYmxvY2ssIG5leHQpOwogCi0g
ICAgaWYgKGlzPFJlbmRlclRleHQ+KG5leHQpICYmIGRvd25jYXN0PFJlbmRlclRleHQ+KCpuZXh0
KS50ZXh0TGVuZ3RoKCkgPiAwKSB7CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KG5leHQpICYmIGRv
d25jYXN0PFJlbmRlclRleHQ+KCpuZXh0KS50ZXh0KCkubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAg
IFJlbmRlclRleHQmIG5leHRUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpOwogICAg
ICAgICBVQ2hhciBuZXh0Q2hhciA9IG5leHRUZXh0LmNoYXJhY3RlckF0KDApOwogICAgICAgICBp
ZiAobmV4dFRleHQuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShuZXh0Q2hhcikpIHsK
QEAgLTU5Miw3ICs1OTIsNyBAQCBpbmxpbmUgZmxvYXQgZmlyc3RQb3NpdGl2ZVdpZHRoKGNvbnN0
IFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiAKIGlubGluZSBib29sIGl0ZXJh
dG9ySXNCZXlvbmRFbmRPZlJlbmRlckNvbWJpbmVUZXh0KGNvbnN0IElubGluZUl0ZXJhdG9yJiBp
dGVyLCBSZW5kZXJDb21iaW5lVGV4dCYgcmVuZGVyZXIpCiB7Ci0gICAgcmV0dXJuIGl0ZXIucmVu
ZGVyZXIoKSA9PSAmcmVuZGVyZXIgJiYgaXRlci5vZmZzZXQoKSA+PSByZW5kZXJlci50ZXh0TGVu
Z3RoKCk7CisgICAgcmV0dXJuIGl0ZXIucmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIgJiYgaXRlci5v
ZmZzZXQoKSA+PSByZW5kZXJlci50ZXh0KCkubGVuZ3RoKCk7CiB9CiAKIGlubGluZSB2b2lkIG5l
eHRDaGFyYWN0ZXIoVUNoYXImIGN1cnJlbnRDaGFyYWN0ZXIsIFVDaGFyJiBsYXN0Q2hhcmFjdGVy
LCBVQ2hhciYgc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKQpAQCAtNjIxLDcgKzYyMSw3IEBAIEFMV0FZ
U19JTkxJTkUgZmxvYXQgdGV4dFdpZHRoKFJlbmRlclRleHQmIHRleHQsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbiwgY29uCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGV4dC5z
dHlsZSgpOwogCiAgICAgR2x5cGhPdmVyZmxvdyBnbHlwaE92ZXJmbG93OwotICAgIGlmIChpc0Zp
eGVkUGl0Y2ggfHwgKCFmcm9tICYmIGxlbiA9PSB0ZXh0LnRleHRMZW5ndGgoKSkgfHwgc3R5bGUu
aGFzVGV4dENvbWJpbmUoKSkKKyAgICBpZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAmJiBsZW4g
PT0gdGV4dC50ZXh0KCkubGVuZ3RoKCkpIHx8IHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0LndpZHRoKGZyb20sIGxlbiwgZm9udCwgeFBvcywgJmZhbGxiYWNrRm9u
dHMsICZnbHlwaE92ZXJmbG93KTsKIAogICAgIGlmIChsYXlvdXQpCkBAIC03NjUsNyArNzY1LDcg
QEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0
U3RhcnQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEZpcnN0SGFuZ2luZ1B1bmN0dWF0
aW9uOwogICAgIGJvb2wgY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBzdHlsZS5oYW5naW5nUHVu
Y3R1YXRpb24oKSAmIExhc3RIYW5naW5nUHVuY3R1YXRpb247CiAgICAgYm9vbCBjYW5IYW5nU3Rv
cE9yQ29tbWFBdExpbmVFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEFsbG93RW5k
SGFuZ2luZ1B1bmN0dWF0aW9uOwotICAgIGludCBlbmRQdW5jdHVhdGlvbkluZGV4ID0gY2FuSGFu
Z1B1bmN0dWF0aW9uQXRFbmQgJiYgbV9jb2xsYXBzZVdoaXRlU3BhY2UgPyByZW5kZXJUZXh0Lmxh
c3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygpIDogcmVuZGVyVGV4dC50ZXh0TGVuZ3Ro
KCkgLSAxOworICAgIGludCBlbmRQdW5jdHVhdGlvbkluZGV4ID0gY2FuSGFuZ1B1bmN0dWF0aW9u
QXRFbmQgJiYgbV9jb2xsYXBzZVdoaXRlU3BhY2UgPyByZW5kZXJUZXh0Lmxhc3RDaGFyYWN0ZXJJ
bmRleFN0cmlwcGluZ1NwYWNlcygpIDogcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSAxOwog
ICAgIHVuc2lnbmVkIGxhc3RTcGFjZSA9IG1fY3VycmVudC5vZmZzZXQoKTsKICAgICBmbG9hdCB3
b3JkU3BhY2luZyA9IG1fY3VycmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLndvcmRTcGFjaW5nKCk7
CiAgICAgZmxvYXQgbGFzdFNwYWNlV29yZFNwYWNpbmcgPSAwOwpAQCAtODEwLDcgKzgxMCw3IEBA
IGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRz
JiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgLy8gd29yZHMgd2l0aCB0aGVpciB0cmFpbGlu
ZyBzcGFjZSwgdGhlbiBzdWJ0cmFjdCBpdHMgd2lkdGguCiAgICAgVGV4dExheW91dCogdGV4dExh
eW91dCA9IG1fcmVuZGVyVGV4dEluZm8ubGF5b3V0LmdldCgpOwogICAgIFdvcmRUcmFpbGluZ1Nw
YWNlIHdvcmRUcmFpbGluZ1NwYWNlKHN0eWxlLCAhdGV4dExheW91dCk7Ci0gICAgZm9yICg7IG1f
Y3VycmVudC5vZmZzZXQoKSA8IHJlbmRlclRleHQudGV4dExlbmd0aCgpOyBtX2N1cnJlbnQuZmFz
dEluY3JlbWVudEluVGV4dE5vZGUoKSkgeworICAgIGZvciAoOyBtX2N1cnJlbnQub2Zmc2V0KCkg
PCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKTsgbV9jdXJyZW50LmZhc3RJbmNyZW1lbnRJblRl
eHROb2RlKCkpIHsKICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBtX2N1
cnJlbnRDaGFyYWN0ZXJJc1NwYWNlOwogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNX
UyA9IG1fY3VycmVudENoYXJhY3RlcklzV1M7CiAgICAgICAgIFVDaGFyIGMgPSBtX2N1cnJlbnQu
Y3VycmVudCgpOwpAQCAtODQwLDcgKzg0MCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4
dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAK
ICAgICAgICAgaWYgKChicmVha0FsbCB8fCBicmVha1dvcmRzKSAmJiAhbWlkV29yZEJyZWFrICYm
ICghbV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSB8fCBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gUFJF
X1dSQVApKSB7CiAgICAgICAgICAgICB3cmFwVyArPSBjaGFyV2lkdGg7Ci0gICAgICAgICAgICBi
b29sIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYm
IG1fY3VycmVudC5vZmZzZXQoKSArIDEgPCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAmJiBVMTZf
SVNfVFJBSUwocmVuZGVyVGV4dFttX2N1cnJlbnQub2Zmc2V0KCkgKyAxXSk7CisgICAgICAgICAg
ICBib29sIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMp
ICYmIFUxNl9JU19UUkFJTChyZW5kZXJUZXh0LmNoYXJhY3RlckF0KG1fY3VycmVudC5vZmZzZXQo
KSArIDEpKTsKICAgICAgICAgICAgIGNoYXJXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBt
X2N1cnJlbnQub2Zmc2V0KCksIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA/IDIg
OiAxLCBmb250LCBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNo
LCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CiAgICAg
ICAgICAgICBtaWRXb3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVyAr
IGNoYXJXaWR0aCA+IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgfQpAQCAtOTI5
LDcgKzkyOSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3Jk
TWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAg
IC8vIERvbid0IHRyeSB0byBoeXBoZW5hdGUgYXQgdGhlIGZpbmFsIGJyZWFrIG9mIGEgYmxvY2ss
IHNpbmNlIHRoaXMgbWVhbnMgdGhlcmUgaXMKICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbW9y
ZSBjb250ZW50LCBhbmQgYSBoeXBoZW5hdGVkIHNpbmdsZSB3b3JkIHdvdWxkIGVuZCB1cCBvbiBh
IGxpbmUgYnkgaXRzZWxmLiBUaGlzIGxvb2tzCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhZCBz
byBqdXN0IGRvbid0IGFsbG93IGl0LgotICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVu
YXRlICYmICFtX3dpZHRoLmZpdHNPbkxpbmUoKSAmJiAobV9uZXh0T2JqZWN0IHx8ICFyZW5kZXJU
ZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UobV9jdXJyZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0
LnRleHRMZW5ndGgoKSAtIG1fY3VycmVudC5vZmZzZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgIW1fd2lkdGguZml0c09uTGlu
ZSgpICYmIChtX25leHRPYmplY3QgfHwgIXJlbmRlclRleHQuY29udGFpbnNPbmx5SFRNTFdoaXRl
c3BhY2UobV9jdXJyZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIG1f
Y3VycmVudC5vZmZzZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xpbmVCcmVha0hpc3RvcnkucHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1l
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVuYXRpbmcocmVuZGVyVGV4
dCwgZm9udCwgc3R5bGUubG9jYWxlKCksIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBtX2Js
b2NrU3R5bGUuaHlwaGVuYXRpb25MaW1pdExpbmVzKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRC
ZWZvcmUoKSwgc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgbV9jdXJy
ZW50Lm9mZnNldCgpLCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRlbXBXaWR0
aCwgbV93aWR0aC5hdmFpbGFibGVXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0
ZVNwYWNlLCBsYXN0U3BhY2VXb3JkU3BhY2luZywgbW9kaWZ5TWUsIG1fY3VycmVudC5uZXh0QnJl
YWthYmxlUG9zaXRpb24oKSwgbV9saW5lQnJlYWtlci5tX2h5cGhlbmF0ZWQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CkBAIC05NjUsNyArOTY1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtp
bmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMs
IGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyQmVmb3JlQnJl
YWtpbmdQb3NpdGlvbiA9IGxhc3RDaGFyYWN0ZXJGcm9tUHJldmlvdXNSZW5kZXJUZXh0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVy
QXRCcmVha2luZ1Bvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXJB
dEJyZWFraW5nUG9zaXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobGFzdEJyZWFraW5nUG9zaXRvbi52YWx1ZSgpID49IDEgJiYgdGV4dFJlbmRlcmVyLnRleHRM
ZW5ndGgoKSA+IChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkg
Pj0gMSAmJiB0ZXh0UmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpID4gKGxhc3RCcmVha2luZ1Bvc2l0
b24udmFsdWUoKSAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbiA9IHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdChsYXN0
QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckJlZm9yZUJyZWFr
aW5nUG9zaXRpb24pCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9v
bAogICAgICAgICAgICAgaWYgKG1fbmV4dE9iamVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2Vz
Lm9mZnNldCgpICYmIG1fbmV4dE9iamVjdC0+aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4dEFs
aWduKCkgPT0gUklHSFQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdI
VCkpIHsKICAgICAgICAgICAgICAgICBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLnNldE9mZnNldCht
X3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNldCgpIC0gMSk7CiAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlcmUncyBqdXN0IGEgc2luZ2xlIHRyYWlsaW5nIHNwYWNlIHN0YXJ0IGlnbm9yaW5nIGl0
IG5vdyBzbyBpdCBjb2xsYXBzZXMgYXdheS4KLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50
Lm9mZnNldCgpID09IHJlbmRlclRleHQudGV4dExlbmd0aCgpIC0gMSkKKyAgICAgICAgICAgICAg
ICBpZiAobV9jdXJyZW50Lm9mZnNldCgpID09IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0g
MSkKICAgICAgICAgICAgICAgICAgICAgbV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5z
dGFydElnbm9yaW5nU3BhY2VzKG1fc3RhcnRPZklnbm9yZWRTcGFjZXMpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xMzEzLDEzICsxMzEzLDEzIEBAIGlubGluZSBJbmxpbmVJdGVyYXRv
ciBCcmVha2luZ0NvbnRleHQ6Om9wdGltYWxMaW5lQnJlYWtMb2NhdGlvbkZvclRyYWlsaW5nV29y
ZCgpCiAgICAgICAgIHJldHVybiBsaW5lQnJlYWs7CiAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4
dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpsaW5lQnJlYWsucmVuZGVyZXIoKSk7CiAgICAgLy8g
RG9uJ3QgZXZlbiBib3RoZXIgbWVhc3VyaW5nIGlmIG91ciByZW1haW5pbmcgbGluZSBoYXMgbWFu
eSBjaGFyYWN0ZXJzCi0gICAgaWYgKHJlbmRlclRleHQudGV4dExlbmd0aCgpID09IGxpbmVCcmVh
ay5vZmZzZXQoKSB8fCByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSAtIGxpbmVCcmVhay5vZmZzZXQo
KSA+IGxvbmdUcmFpbGluZ1dvcmRMZW5ndGgpCisgICAgaWYgKHJlbmRlclRleHQudGV4dCgpLmxl
bmd0aCgpID09IGxpbmVCcmVhay5vZmZzZXQoKSB8fCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgo
KSAtIGxpbmVCcmVhay5vZmZzZXQoKSA+IGxvbmdUcmFpbGluZ1dvcmRMZW5ndGgpCiAgICAgICAg
IHJldHVybiBsaW5lQnJlYWs7CiAgICAgYm9vbCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCA9IG1f
cmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IubW9kZSgpID09IExpbmVCcmVha0l0ZXJh
dG9yTW9kZTo6RGVmYXVsdDsKICAgICBib29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYgbV9j
dXJyZW50U3R5bGUtPm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3Np
dGlvbigpOwogICAgIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0
b3IsIGxpbmVCcmVhay5vZmZzZXQoKSArIDEsIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtO
QlNQLCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCwgbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygp
ID09IEtlZXBBbGxXb3JkQnJlYWspOwotICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8
IG5leHRCcmVha2FibGVQb3NpdGlvbi52YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dExlbmd0aCgp
KQorICAgIGlmICghbmV4dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVha2FibGVQb3NpdGlv
bi52YWx1ZSgpICE9IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
bGluZUJyZWFrOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGxpbmVTdHlsZShyZW5k
ZXJUZXh0LCBtX2xpbmVJbmZvKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxl
LmZvbnRDYXNjYWRlKCk7CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0
b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dv
cmQoKQogICAgICAgICBjb25zdCBJbmxpbmVJdGVyYXRvciYgY2FuZGlkYXRlID0gbV9saW5lQnJl
YWtIaXN0b3J5LmdldChpKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZW5kZXJlcigpICE9IGxp
bmVCcmVhay5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGJlc3Q7Ci0gICAgICAgIGZs
b2F0IHdpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGNhbmRpZGF0ZS5vZmZzZXQoKSwgcmVu
ZGVyVGV4dC50ZXh0TGVuZ3RoKCkgLSBjYW5kaWRhdGUub2Zmc2V0KCksIGZvbnQsIDAsIGZvbnQu
aXNGaXhlZFBpdGNoKCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBkdW1teUZvbnRzKTsKKyAgICAg
ICAgZmxvYXQgd2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgY2FuZGlkYXRlLm9mZnNldCgp
LCByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIGNhbmRpZGF0ZS5vZmZzZXQoKSwgZm9udCwg
MCwgZm9udC5pc0ZpeGVkUGl0Y2goKSwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGR1bW15Rm9udHMp
OwogICAgICAgICBpZiAod2lkdGggPiBtX3dpZHRoLmF2YWlsYWJsZVdpZHRoKCkpCiAgICAgICAg
ICAgICByZXR1cm4gYmVzdDsKICAgICAgICAgaWYgKHdpZHRoIC8gbV93aWR0aC5hdmFpbGFibGVX
aWR0aCgpID4gb3B0aW1hbFRyYWlsaW5nTGluZVJhdGlvKSAvLyBTdWJzZXF1ZW50IGxpbmUgaXMg
bG9uZyBlbm91Z2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1Ry
YWlsaW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9UcmFpbGlu
Z09iamVjdHMuY3BwCmluZGV4IDExY2UyYjZmNjE0MDhlODc1OWJlOWQ3YmZlNGRlY2IxMzcxNzhi
ZjUuLjU0ZjBiNTM0MDM0MmY4MDNjYThmYjY0MDg4ZGQ5NGE0Mjc1MDQyNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvVHJhaWxpbmdPYmplY3RzLmNwcApAQCAtNjEs
NyArNjEsNyBAQCB2b2lkIFRyYWlsaW5nT2JqZWN0czo6dXBkYXRlV2hpdGVzcGFjZUNvbGxhcHNp
bmdUcmFuc2l0aW9uc0ZvclRyYWlsaW5nQm94ZXMoTGluZQogICAgICAgICBBU1NFUlQobV93aGl0
ZXNwYWNlLT5pc1RleHQoKSk7CiAgICAgICAgIEFTU0VSVChjb2xsYXBzZUZpcnN0U3BhY2UgPT0g
Q29sbGFwc2VGaXJzdFNwYWNlKTsKICAgICAgICAgLy8gQWRkIGEgbmV3IGVuZCB0cmFuc2l0aW9u
IHRoYXQgc3RvcHMgcmlnaHQgYXQgdGhlIHZlcnkgZW5kLgotICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBtX3doaXRlc3BhY2UtPnRleHRMZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV93aGl0ZXNwYWNlLT50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBvcyA9
IGxlbmd0aCA+PSAyID8gbGVuZ3RoIC0gMiA6IFVJTlRfTUFYOwogICAgICAgICBJbmxpbmVJdGVy
YXRvciBlbmRNaWQoMCwgbV93aGl0ZXNwYWNlLCBwb3MpOwogICAgICAgICBsaW5lV2hpdGVzcGFj
ZUNvbGxhcHNpbmdTdGF0ZS5zdGFydElnbm9yaW5nU3BhY2VzKGVuZE1pZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAK
aW5kZXggZWMxYTAxMjVmMDA5MTQ5NzI5NDBkM2ZiZTdlODNjODU4NTQ3ZTIyMi4uMjhmYWZkYjUz
ZjM3MjE2MGVmNDk3ZjlhY2Y3Y2JiODhkMDU2ZDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAg
IGF1dG8mIHNlcGFyYXRvcnMgPSBmZW5jZWQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihNYXRoTUxOYW1lczo6c2VwYXJhdG9yc0F0dHIpOwogICAgIGlmICghc2VwYXJhdG9ycy5pc051
bGwoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGNoYXJhY3RlcnM7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2VwYXJhdG9ycy5sZW5ndGgoKTsgaSsrKSB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZXBhcmF0b3JzLmxlbmd0aCgpOyBpKyspIHsK
ICAgICAgICAgICAgIGlmICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0b3JzW2ldKSkKICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzLmFwcGVuZChzZXBhcmF0b3JzW2ldKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5jcHAKaW5kZXggMjlmZGE0NjE0MTljMDJlMmJiOTFkMThlMTZjZGUyZjhiZDE4MTUxOS4uM2Jh
YzljYTVkMGFlMzNhNTA1ODIzOTczZDExM2Y0NjVmYmQ5OTM2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xNTUs
NyArMTU1LDcgQEAgSW50UmVjdCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpsaW5lc0JvdW5kaW5nQm94
KCkgY29uc3QKIGJvb2wgUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y2hhcmFjdGVyU3RhcnRzTmV3VGV4
dENodW5rKGludCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7
Ci0gICAgQVNTRVJUKHBvc2l0aW9uIDwgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0TGVuZ3RoKCkpKTsK
KyAgICBBU1NFUlQocG9zaXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KHRleHQoKS5sZW5ndGgoKSkp
OwogCiAgICAgLy8gRWFjaCA8dGV4dFBhdGg+IGVsZW1lbnQgc3RhcnRzIGEgbmV3IHRleHQgY2h1
bmssIHJlZ2FyZGxlc3Mgb2YgYW55IHgveSB2YWx1ZXMuCiAgICAgaWYgKCFwb3NpdGlvbiAmJiBw
YXJlbnQoKS0+aXNTVkdUZXh0UGF0aCgpICYmICFwcmV2aW91c1NpYmxpbmcoKSkKQEAgLTE3MCw3
ICsxNzAsNyBAQCBib29sIFJlbmRlclNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1Rl
eHRDaHVuayhpbnQgcG9zaXRpb24pIGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJ
bmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29u
c3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKQogewotICAgIGlmICghZmlyc3RUZXh0Qm94KCkg
fHwgIXRleHRMZW5ndGgoKSkKKyAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8IHRleHQoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVB
TSk7CiAKICAgICBmbG9hdCBiYXNlbGluZSA9IG1fc2NhbGVkRm9udC5mb250TWV0cmljcygpLmZs
b2F0QXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggMmMwNjhiOWMz
OThhNjM0NjlmNzdiNzBjNDliODg1Y2Y1MDk1OTkwMC4uNWU5OTkzODYyOWRiMzljMzBmNjYxNTIz
MmJlODI3NGY0Mjc1ODdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtODAs
MTcgKzgwLDIwIEBAIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpyZWJ1aWxk
TWV0cmljc0ZvclRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpCiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dChjb25zdCBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0
ZXh0LCB1bnNpZ25lZCYgYXRDaGFyYWN0ZXIsIGJvb2wmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkK
IHsKKyAgICBhdXRvJiBzdHJpbmcgPSB0ZXh0LnRleHQoKTsKKyAgICBhdXRvIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKICAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkUp
IHsKLSAgICAgICAgYXRDaGFyYWN0ZXIgKz0gdGV4dC50ZXh0TGVuZ3RoKCk7CisgICAgICAgIGF0
Q2hhcmFjdGVyICs9IGxlbmd0aDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAo
dW5zaWduZWQgdGV4dFBvc2l0aW9uID0gMCwgdGV4dExlbmd0aCA9IHRleHQudGV4dExlbmd0aCgp
OyB0ZXh0UG9zaXRpb24gPCB0ZXh0TGVuZ3RoOyArK3RleHRQb3NpdGlvbikgewotICAgICAgICBj
b25zdCBVQ2hhciBjdXJyZW50Q2hhcmFjdGVyID0gdGV4dFt0ZXh0UG9zaXRpb25dOwotICAgICAg
ICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnICcgJiYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKQor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIHdoaXRlc3BhY2UgY29sbGFwc2lu
ZyBpbXBsZW1lbnRhdGlvbjsgaXQgZG9lc24ndCBoYW5kbGUgbmV3bGluZXMgb3IgdGFicy4KKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVUNoYXIg
Y2hhcmFjdGVyID0gc3RyaW5nW2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcgJyAmJiBs
YXN0Q2hhcmFjdGVyV2FzU3BhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBs
YXN0Q2hhcmFjdGVyV2FzU3BhY2UgPSBjdXJyZW50Q2hhcmFjdGVyID09ICcgJzsKKyAgICAgICAg
bGFzdENoYXJhY3Rlcldhc1NwYWNlID0gY2hhcmFjdGVyID09ICcgJzsKICAgICAgICAgKythdENo
YXJhY3RlcjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAppbmRleCA2NjBlODZhMzJhODFkNGRlNGMzY2I1MjYz
MjYyYWUyM2ZiY2E1NThjLi4yMzMzNzAxZDI0MzZkMTA0MDg3Mjk2Y2UyOTM3ZjMxYzFhNDA2NTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEVuZ2luZS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCBib29sIFNWR1RleHRMYXlvdXRFbmdpbmU6
OmN1cnJlbnRMb2dpY2FsQ2hhcmFjdGVyQXR0cmlidXRlcyhTVkdUZXh0TGF5b3V0QXR0cmlidQog
ICAgIGxvZ2ljYWxBdHRyaWJ1dGVzID0gbV9sYXlvdXRBdHRyaWJ1dGVzW21fbGF5b3V0QXR0cmli
dXRlc1Bvc2l0aW9uXTsKICAgICBBU1NFUlQobG9naWNhbEF0dHJpYnV0ZXMpOwogCi0gICAgaWYg
KG1fbG9naWNhbENoYXJhY3Rlck9mZnNldCAhPSBsb2dpY2FsQXR0cmlidXRlcy0+Y29udGV4dCgp
LnRleHRMZW5ndGgoKSkKKyAgICBpZiAobV9sb2dpY2FsQ2hhcmFjdGVyT2Zmc2V0ICE9IGxvZ2lj
YWxBdHRyaWJ1dGVzLT5jb250ZXh0KCkudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgICsrbV9sYXlvdXRBdHRyaWJ1dGVzUG9zaXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggODZlNGJmMmYzZDUxZWNm
ZGMyZjg4YWMwNTU4NDgyOGI3MmVlYWY3Ni4uZmQ4OTAyMjk0YjZhMDA0Y2E1MDU4NmY1N2FiYTY0
NGI2ZTAzZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1
ZXJ5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFy
dEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAg
dW5zaWduZWQgdGV4dE1ldHJpY3NTaXplID0gdGV4dE1ldHJpY3NWYWx1ZXMuc2l6ZSgpOwogCiAg
ICAgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSAwOwotICAgIHVuc2lnbmVkIHBvc2l0aW9uU2l6
ZSA9IGxheW91dEF0dHJpYnV0ZXMtPmNvbnRleHQoKS50ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWdu
ZWQgcG9zaXRpb25TaXplID0gbGF5b3V0QXR0cmlidXRlcy0+Y29udGV4dCgpLnRleHQoKS5sZW5n
dGgoKTsKIAogICAgIGJvb2wgYWx0ZXJTdGFydFBvc2l0aW9uID0gdHJ1ZTsKICAgICBib29sIGFs
dGVyRW5kUG9zaXRpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwCmluZGV4IDczMzExMDlhZjVhMDVmYTczODE0ZmUzNmJiZTI3NjExNzM0NjQ0YmMu
LmNjMzlmMjIzZGYxZTc3ODk4OWQzMjYyZTFlNTQ5MmI1ZWYzNDc4YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRl
ICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCB2b2lk
IFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3Qp
CiAgICAgICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7CiAgICAgICAg
ICAgICBhdXRvKiB0ZXh0VXBkYXRlID0gbV9zdHlsZVVwZGF0ZS0+dGV4dFVwZGF0ZSh0ZXh0KTsK
ICAgICAgICAgICAgIGJvb2wgZGlkQ3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlcyAmJiBw
YXJlbnQoKS51cGRhdGVzLT51cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2g7Ci0gICAgICAg
ICAgICBib29sIG1heU5lZWRVcGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVuZGVyaW5n
UGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIGJvb2wgbWF5TmVlZFVwZGF0ZVdoaXRlc3Bh
Y2VPbmx5UmVuZGVyZXIgPSByZW5kZXJpbmdQYXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGls
ZFJlbmRlcmVyICYmIHRleHQuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3Bh
Y2U+KCk7CiAgICAgICAgICAgICBpZiAoZGlkQ3JlYXRlUGFyZW50IHx8IHRleHRVcGRhdGUgfHwg
bWF5TmVlZFVwZGF0ZVdoaXRlc3BhY2VPbmx5UmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgdXBk
YXRlVGV4dFJlbmRlcmVyKHRleHQsIHRleHRVcGRhdGUpOwogCkBAIC00MDgsNyArNDA5LDcgQEAg
Ym9vbCBSZW5kZXJUcmVlVXBkYXRlcjo6dGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVGV4dCYg
dGV4dE5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghdGV4dE5vZGUubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXRleHROb2RlLmNvbnRhaW5zT25s
eVdoaXRlc3BhY2UoKSkKKyAgICBpZiAoIXRleHROb2RlLmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaXM8
UmVuZGVyVGV4dD4ocmVuZGVyaW5nUGFyZW50LnByZXZpb3VzQ2hpbGRSZW5kZXJlcikpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggODM0YzBlM2Q5OGU4
YjJkZTVkOTgwYWZhZmU3NjM1ZjI0MzdlMWYwZC4uNTk3Y2VkZDdjMGFhZDNlNjczMGZiMzgwNTE1
NmE1NTA3OTMwMzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0yNTEsOCArMjUxLDgg
QEAgYm9vbCBTVkdUZXN0czo6aGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmlu
ZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJgogICAgIC8vIFRoaXMgaXMgd2hhdCB0aGUgRE9NSW1w
bGVtZW50YXRpb24gZnVuY3Rpb24gbm93IGRvZXMgaW4gSmF2YVNjcmlwdCBhcyBpcyBub3cgc3Vn
Z2VzdGVkIGluIHRoZSBET00gc3BlY2lmaWNhdGlvbi4KICAgICAvLyBUaGUgYmVoYXZpb3IgaW1w
bGVtZW50ZWQgYmVsb3cgaXMgcXVpcmt5LCBidXQgcHJlc2VydmVzIHdoYXQgV2ViS2l0IGhhcyBk
b25lIGZvciBhdCBsZWFzdCB0aGUgbGFzdCBmZXcgeWVhcnMuCiAKLSAgICBib29sIGhhc1NWRzEw
RmVhdHVyZVByZWZpeCA9IGZlYXR1cmUuc3RhcnRzV2l0aCgib3JnLnczYy5kb20uc3ZnIiwgZmFs
c2UpIHx8IGZlYXR1cmUuc3RhcnRzV2l0aCgib3JnLnczYy5zdmciLCBmYWxzZSk7Ci0gICAgYm9v
bCBoYXNTVkcxMUZlYXR1cmVQcmVmaXggPSBmZWF0dXJlLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cu
dzMub3JnL3RyL3N2ZyIsIGZhbHNlKTsKKyAgICBib29sIGhhc1NWRzEwRmVhdHVyZVByZWZpeCA9
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9yZy53M2MuZG9t
LnN2ZyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmVhdHVyZSwgIm9y
Zy53M2Muc3ZnIik7CisgICAgYm9vbCBoYXNTVkcxMUZlYXR1cmVQcmVmaXggPSBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZlYXR1cmUsICJodHRwOi8vd3d3LnczLm9yZy90ci9z
dmciKTsKIAogICAgIC8vIFdlIGRvbid0IGV2ZW4gdHJ5IHRvIGhhbmRsZSBmZWF0dXJlIG5hbWVz
IHRoYXQgZG9uJ3QgbG9vayBsaWtlIHRoZSBTVkcgb25lcywgc28ganVzdCByZXR1cm4gdHJ1ZSBm
b3IgYWxsIG9mIHRob3NlLgogICAgIGlmICghKGhhc1NWRzEwRmVhdHVyZVByZWZpeCB8fCBoYXNT
VkcxMUZlYXR1cmVQcmVmaXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGMzMTMxMzVhZWUwODdmNjgxY2Vj
NjBkNGI1YmJlZDk5NzRjMWEzNGEuLmEzN2Q2MTUxNmE2MjgwMGY1YTQzMWI4OTFjNzI3MzRmMDkw
MzViY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM5OSwyMiArMzk5LDIwIEBAIHN0YXRpYyBib29sIHNo
b3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1cmxT
dHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAKLSAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMg
bGlieG1sIGFza3MgZm9yIHRoaXMgVVJMLCB0aGUKLSAgICAvLyAiWE1MX1hNTF9ERUZBVUxUX0NB
VEFMT0ciLCBvbiBpbml0aWFsaXphdGlvbi4KKyAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9y
bXMgbGlieG1sIGFza3MgZm9yIHRoaXMgVVJMLCB0aGUgIlhNTF9YTUxfREVGQVVMVF9DQVRBTE9H
Iiwgb24gaW5pdGlhbGl6YXRpb24uCiAgICAgaWYgKHVybFN0cmluZyA9PSAiZmlsZTovLy9ldGMv
eG1sL2NhdGFsb2ciKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBPbiBXaW5kb3dz
LCBsaWJ4bWwgY29tcHV0ZXMgYSBVUkwgcmVsYXRpdmUgdG8gd2hlcmUgaXRzIERMTCByZXNpZGVz
LgotICAgIGlmICh1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmlsZTovLy8iLCBmYWxzZSkgJiYgdXJs
U3RyaW5nLmVuZHNXaXRoKCIvZXRjL2NhdGFsb2ciLCBmYWxzZSkpCisgICAgaWYgKHN0YXJ0c1dp
dGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodXJsU3RyaW5nLCAiZmlsZTovLy8iKSAmJiB1cmxT
dHJpbmcuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiL2V0Yy9jYXRhbG9nIikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vIFRoZSBtb3N0IGNvbW1vbiBEVEQuICBUaGVyZSBpc24n
dCBtdWNoIHBvaW50IGluIGhhbW1lcmluZyB3d3cudzNjLm9yZwotICAgIC8vIGJ5IHJlcXVlc3Rp
bmcgdGhpcyBVUkwgZm9yIGV2ZXJ5IFhIVE1MIGRvY3VtZW50LgotICAgIGlmICh1cmxTdHJpbmcu
c3RhcnRzV2l0aCgiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwiLCBmYWxzZSkpCisgICAgLy8g
VGhlIG1vc3QgY29tbW9uIERURC4gVGhlcmUgaXNuJ3QgbXVjaCBwb2ludCBpbiBoYW1tZXJpbmcg
d3d3LnczYy5vcmcgYnkgcmVxdWVzdGluZyB0aGlzIGZvciBldmVyeSBYSFRNTCBkb2N1bWVudC4K
KyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJo
dHRwOi8vd3d3LnczLm9yZy90ci94aHRtbCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBTaW1pbGFybHksIHRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gcmVxdWVzdGluZyB0aGUg
U1ZHIERURC4KLSAgICBpZiAodXJsU3RyaW5nLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cudzMub3Jn
L0dyYXBoaWNzL1NWRyIsIGZhbHNlKSkKKyAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh1cmxTdHJpbmcsICJodHRwOi8vd3d3LnczLm9yZy9ncmFwaGljcy9zdmciKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gVGhlIGxpYnhtbCBkb2Vzbid0IGdpdmUg
dXMgYSBsb3Qgb2YgY29udGV4dCBmb3IgZGVjaWRpbmcgd2hldGhlciB0bwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDFl
Yjc5M2Q5ZWZlMjdlYzM2MDQ4ZjE1ZTRhZGExMDBhNTBmYzg4OTQuLmZkN2JhNzhiNjM3OTg0Nzgz
MGVkY2RlOWVkZDQ3MzliNDdmZDk4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTIyMSwxMyArMjIxLDkgQEAgc3Rh
dGljIFJldHJpZXZlRGVjaXNpb24gbWFrZVJldHJpZXZlRGVjaXNpb24oY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXEKICAgICByZXR1cm4gUmV0cmlldmVEZWNpc2lvbjo6WWVzOwog
fQogCi1zdGF0aWMgYm9vbCBpc01lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3N0YXRpYyBib29sIGlzTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAg
aWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIsIC8qY2FzZVNlbnNpdGl2ZSovIGZhbHNl
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImF1
ZGlvLyIsIC8qY2FzZVNlbnNpdGl2ZSovIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHR5cGUsICJ2aWRlby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHR5cGUsICJhdWRpby8iKTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBl
eHBlY3RlZFRvdGFsUmVzb3VyY2VTaXplRnJvbUNvbnRlbnRSYW5nZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCAzYzQ5OTFjYzc1OWQy
ZmI3NTg0ZDNkYWNjNDEwNDUzNmIyMDFhNmU0Li44ZmE4MWQxMDlhNGM3M2NkMGIzMTk1Yjg4ZmY1
ZTNkYjE1N2MzOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lk
IGhhc2hTdHJpbmcoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaWYgKHN0
cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSAmJiBzdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkgJiYgc3RyaW5nLmlzQWxsQVNDSUkoKSkgewogICAgICAgICBjb25zdCB1aW50OF90IG51bGxC
eXRlID0gMDsKICAgICAgICAgc2hhMS5hZGRCeXRlcyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKICAgICAgICAgc2hhMS5hZGRCeXRlcygmbnVsbEJ5dGUsIDEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3Bw
CmluZGV4IDAxY2U4MTNjM2JjOTEyNGNmMjJlMmZkNzM0NTA1MGNiODcyYzYzMzYuLjI3NDI5MzRi
ZDRmNGE0OWMyZTMyNDkzMzg2NmM4NmZmMDQ3ZGYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTczLDcgKzczLDcg
QEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlUG9saWNpZXNTZXRDdXN0b21IZWFkZXJGaWVsZHMo
V0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2kKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGtleXMuZ2V0KCksIGkpKTsKICAgICAgICAg
YXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHRvSW1wbChuYW1l
KS0+c3RyaW5nKCksIHRvSW1wbChzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5LCBuYW1lKSkpLT5zdHJpbmcoKSk7Ci0gICAgICAgIGlm
IChmaWVsZCAmJiBmaWVsZC0+bmFtZSgpLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiWC0i
KSkKKyAgICAgICAgaWYgKGZpZWxkICYmIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZmllbGQtPm5hbWUoKSwgIngtIikpCiAgICAgICAgICAgICBmaWVsZHMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoKmZpZWxkKSk7CiAgICAgfQogICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMp
LT5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZShmaWVsZHMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCmlu
ZGV4IGNiMmU1NjY4ZTYyYTRjN2MwMWVhZmY4ZmQ0MjE5MWViZjYwY2FhZWIuLmQ3YWEyNWE0ZWQ1
Y2YwNjk0NWIxNmNhNDNiY2JlYjcxZGVmYmFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTM4LDcg
KzEzOCw3IEBAIC0gKHZvaWQpc2V0Q3VzdG9tSGVhZGVyRmllbGRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTlNTdHJpbmcgKj4gKilmaWVsZHMKICAgICAKICAgICBmb3IgKE5TU3RyaW5nKiBu
YW1lIGluIGZpZWxkcykgewogICAgICAgICBhdXRvIGZpZWxkID0gV2ViQ29yZTo6SFRUUEhlYWRl
ckZpZWxkOjpjcmVhdGUobmFtZSwgW2ZpZWxkcyBvYmplY3RGb3JLZXk6bmFtZV0pOwotICAgICAg
ICBpZiAoZmllbGQgJiYgZmllbGQtPm5hbWUoKS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
IlgtIikpCisgICAgICAgIGlmIChmaWVsZCAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGZpZWxkLT5uYW1lKCksICJ4LSIpKQogICAgICAgICAgICAgcGFyc2VkRmllbGRzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpmaWVsZCkpOwogICAgIH0KICAgICBfd2Vic2l0ZVBvbGlj
aWVzLT5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZShwYXJzZWRGaWVsZHMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDViMDVhYWYyZTA5Y2M5Mzcy
OTMxNWNmYWU0MzE2ZjM3NmFiYmJkMTAuLjc1OTBkNTE3ZGQ3NjcyY2RmZWJlM2E2ZmZhOTU3ZmE2
NWMwYmY2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NjI1Miw3ICs2MjUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFMKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRG
aWxlbmFtZSwgVVJMJiYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YVJlZmVyZW5jZSkKIHsKLSAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIu
cGRmIiwgZmFsc2UpKQorICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgiLnBkZiIpKQogICAgICAgICByZXR1cm47CiAKICAgICBzYXZlRGF0YVRvRmls
ZUluRG93bmxvYWRzRm9sZGVyKFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBBU0NJSUxpdGVy
YWwoImFwcGxpY2F0aW9uL3BkZiIpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nVVJMKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBjYmQ1NDQ5NGZlZTJhN2E1
OWMxODYxYzIyNjU1YjBiYTUyMzc1YTlmLi44MzBlMGQ3YmRlOGYxZmNlMGU5MGNiZjVjMWQwZmVl
N2NmMmUyYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC02NSw3ICs2NSw4IEBAIFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5UHJlZml4CiB9CiAKIFdlYlByZWZl
cmVuY2VzOjpXZWJQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlcyYgb3RoZXIpCi0gICAg
OiBtX2tleVByZWZpeChvdGhlci5tX2tleVByZWZpeCkKKyAgICA6IG1faWRlbnRpZmllcigpCisg
ICAgLCBtX2tleVByZWZpeChvdGhlci5tX2tleVByZWZpeCkKICAgICAsIG1fZ2xvYmFsRGVidWdL
ZXlQcmVmaXgob3RoZXIubV9nbG9iYWxEZWJ1Z0tleVByZWZpeCkKICAgICAsIG1fc3RvcmUob3Ro
ZXIubV9zdG9yZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCmluZGV4IGRmZWY1OGIwODU5YmE1N2VjYTYyZmRkMTc4YTFlNGUxYjNkNjA2NWIu
LjAwYzFhNzI5YWUyODgyNjhlNzRmMmViMDM4MzhkYzY3ZGZkYTY1YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDkwLDcgKzQ5MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0
aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0CiAgICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0
aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJo
YXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4KICAgICBVTlVTRURf
UEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCi0gICAgaWYgKCFzdWdnZXN0ZWRGaWxlbmFt
ZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkgeworICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUu
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ2Fubm90IHNhdmUgZmlsZSB3aXRob3V0IC5wZGYgZXh0ZW5zaW9uIHRvIHRoZSB0ZW1wb3Jh
cnkgZGlyZWN0b3J5LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRp
dmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIHBkZkZpbGVuYW1lID0g
bV90ZW1wb3JhcnlQREZGaWxlcy5nZXQocGRmVVVJRCk7CiAKLSAgICBpZiAoIXBkZkZpbGVuYW1l
LmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKQorICAgIGlmICghcGRmRmlsZW5hbWUuZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiLnBkZiIpKQogICAgICAgICByZXR1cm47CiAKICAgICBbW05TV29y
a3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6cGRmRmlsZW5hbWVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1YzcwOTI0Y2U5MTgz
MDVmZjZhZTBlODMyY2U5NjM2ZjVlY2YwMjliLi5hYTJmZWY5OGNhODVjZmJhNGVhNTQ0MWYwYWRk
NGNkMWIxZjk1YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtODAwLDcgKzgwMCw3IEBAIFJlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0
ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FCiAgICAg
aWYgKGlzQmxvY2tlZFBsdWdpbiB8fCAhcGx1Z2luUHJvY2Vzc1Rva2VuKSB7CiAjaWYgRU5BQkxF
KFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmluZyBwYXRoID0gcGFyYW1ldGVycy51cmwucGF0
aCgpOwotICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgKE1JTUVUeXBlUmVnaXN0
cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5taW1lVHlwZSkgfHwgKHBh
cmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRoKCIucGRmIiwgZmFs
c2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkpKSkgeworICAgICAgICBpZiAoc2hv
dWxkVXNlUERGUGx1Z2luKCkgJiYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0
TUlNRVR5cGUocGFyYW1ldGVycy5taW1lVHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNF
bXB0eSgpICYmIChwYXRoLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSB8fCBwYXRo
LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wcyIpKSkpKSB7CiAgICAgICAgICAgICBhdXRv
IHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1lKTsKICAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMjAyNDYyNTI5ZDRhZDc4
YTRlOWY2Zjc1ZDNmZjEzYzlmYzU0ZTVjNS4uOGJkOTdmNmE0MWI0ZWYwZWZkY2I5NDBhOTg4MGE1
ZTcwZDA4NzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdAogICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHNl
bGVjdGVkVGV4dDsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2Fs
bG93IHJlcGxhY2Ugd2hlbiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4K
LSAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRl
bnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQu
Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxh
Y2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3
b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNw
YWNlPigpOwogICAgIH0KICAgICBwb3N0TGF5b3V0RGF0YS5pbnNpZGVGaXhlZFBvc2l0aW9uID0g
c3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uIHx8IGVuZE5vZGVJc0luc2lkZUZpeGVkUG9z
aXRpb247CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCAx
ZjliYWVjZTA2OTUwZDk2MjVmNDdiNzljMDYwNjBjMDY2OGI2YjljLi42ZDQ3NGEyNmM1MjJhZTcx
N2Q5YmI3YTIwOGQyMzZhYjM4ZTU3OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZVN0cmluZ09iamVjdChjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgbV9ieXRlQ291bnQgKz0gbWFya2VyUGx1c0xlbmd0aEJ5dGVDb3VudChsZW5ndGgpICsg
bGVuZ3RoOwotICAgIGlmICghc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpCisgICAgaWYgKCFz
dHJpbmcuaXNBbGxBU0NJSSgpKQogICAgICAgICBtX2J5dGVDb3VudCArPSBsZW5ndGg7CiB9CiAK
QEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFNlcmlhbGl6ZXI6OmFw
cGVuZFN0cmluZ09iamVjdChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBzdGFydE9iamVj
dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoc3Ry
aW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICBpZiAoc3RyaW5nLmlzQWxsQVNDSUkoKSkg
ewogICAgICAgICBpZiAobGVuZ3RoIDw9IG1heExlbmd0aEluTWFya2VyQnl0ZSkKICAgICAgICAg
ICAgIGFwcGVuZEJ5dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYXNjaWlTdHJpbmdNYXJr
ZXJCeXRlIHwgbGVuZ3RoKSk7CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA1
NmY2ZGVjMGI3ZjUyZWVlYWZlZGE2NzE1N2MzNmU3NmE5YjZjYWY0Li5iN2JjYTQ1YjE2MDlhNzgx
NGM3MjA3ZGIyZjBjYjU0MWVlMDZiOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMzU0LDcgKzM1
NCw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkg
KmxhYmVscykKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9
IDQ7CiAgICAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiByZWdFeHBMYWJlbHMgPSBuaWw7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxSZWd1bGFyRXhwcmVzc2lvbio+PiByZWdFeHBz
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4
cCgiXFx3IiwgVGV4dENhc2VTZW5zaXRpdmUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWd1bGFyRXhwcmVzc2lvbj4gd29yZFJlZ0V4cCgiXFx3Iik7CiAKICAgICBSZWd1bGFyRXhwcmVz
c2lvbiogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQpAQCAtMzg5LDcgKzM4OSw3IEBA
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwRm9yTGFiZWxzKE5TQXJyYXkgKmxhYmVs
cykKICAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZExpdGVyYWwoIlxcYiIpOwogICAgICAg
ICB9CiAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJlc3VsdCA9IG5ldyBS
ZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIFRleHRDYXNlSW5zZW5zaXRpdmUp
OworICAgICAgICByZXN1bHQgPSBuZXcgUmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmlu
ZygpLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogICAgIH0KIAogICAgIC8vIGFk
ZCByZWdleHAgdG8gdGhlIGNhY2hlLCBtYWtpbmcgc3VyZSBpdCBpcyBhdCB0aGUgZnJvbnQgZm9y
IExSVSBvcmRlcmluZwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbWF0Y2hM
YWJlbHNBZ2FpbnN0U3RyaW5nKE5TQXJyYXkgKmxhYmVscywgY29uc3QgU3RyaW5nJiBzdHJpbmdU
CiAgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0gc3RyaW5nVG9NYXRjaDsKICAgICAK
ICAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8ncyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3
b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRyZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJp
bmdUb01hdGNoLCBSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUpLCAi
ICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIFJlZ3VsYXJFeHByZXNzaW9u
KCJcXGQiKSwgIiAiKTsKICAgICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAn
KTsKICAgICAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwID0gcmVnRXhwRm9yTGFiZWxz
KGxhYmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGU4NmQzMDQ3MDdmYWM2NjY5MjNmNzU4MWFlODY2ZmRm
M2Y2ZTM5MzAuLjUyNjBkYTc3NWFmMTc1ODcyZmFmMmM1MDc0N2FhY2ViYWM3OGExZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VX
aW4uY3BwCkBAIC04MCw5ICs4MCw4IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBh
dGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgIFN0cmlu
ZyBvbGRXTVBQbHVnaW5QYXRoOwogICAgIFN0cmluZyBuZXdXTVBQbHVnaW5QYXRoOwogCi0gICAg
VmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMu
ZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Bs
dWdpbkRpcmVjdG9yaWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTdHJp
bmcgcGF0dGVybiA9ICppdCArICJcXCoiOworICAgIGZvciAoYXV0byYgZGlyZWN0b3J5IDogbV9w
bHVnaW5EaXJlY3RvcmllcykgeworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGRpcmVjdG9yeSAr
ICJcXCoiOwogCiAgICAgICAgIGhGaW5kID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHBhdHRlcm4pLmRhdGEoKSwgJmZpbmRGaWxlRGF0YSk7CiAKQEAgLTk0LDEx
ICs5MywxMSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3Jp
ZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmls
ZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOwotICAgICAg
ICAgICAgaWYgKCghZmlsZW5hbWUuc3RhcnRzV2l0aCgibnAiLCBmYWxzZSkgfHwgIWZpbGVuYW1l
LmVuZHNXaXRoKCJkbGwiLCBmYWxzZSkpICYmCi0gICAgICAgICAgICAgICAgKCFlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwgInBsdWdpbi5kbGwiKSB8fCAhaXQtPmVuZHNX
aXRoKCJTaG9ja3dhdmUgMTAiLCBmYWxzZSkpKQorICAgICAgICAgICAgaWYgKCEoc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwgIm5wIikgJiYgZmlsZW5hbWUuZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZGxsIikpCisgICAgICAgICAgICAgICAgJiYgIShlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmaWxlbmFtZSwgInBsdWdpbi5kbGwiKSAmJiBkaXJl
Y3RvcnkuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgic2hvY2t3YXZlIDEwIikpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBTdHJpbmcgZnVsbFBhdGggPSAqaXQg
KyAiXFwiICsgZmlsZW5hbWU7CisgICAgICAgICAgICBTdHJpbmcgZnVsbFBhdGggPSBkaXJlY3Rv
cnkgKyAiXFwiICsgZmlsZW5hbWU7CiAgICAgICAgICAgICBpZiAoIXVuaXF1ZUZpbGVuYW1lcy5h
ZGQoZnVsbFBhdGgpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggZWQxZDU5
YTFjMzIwYWQzZmI1MWU0ZTZjMDM1NzVjNzY3MzQ4NDBjOS4uMjZlZjVkOWQ3NGQ0NDdiYWJkZWM3
NTM2MTZkODE4YmVmZTM1NzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpp
bml0VG9SZXN1bWVXaXRoQnVuZGxlKF9Jbl8gQlNUUiBidW5kbGVQYXRoLCBfSW5fb3B0XyBJV2Vi
RAogICAgIG1fYnVuZGxlUGF0aCA9IFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVu
ZGxlUGF0aCkpOwogICAgIC8vIEF0dGVtcHQgdG8gcmVtb3ZlIHRoZSAiLmRvd25sb2FkIiBleHRl
bnNpb24gZnJvbSB0aGUgYnVuZGxlIGZvciB0aGUgZmluYWwgZmlsZSBkZXN0aW5hdGlvbgogICAg
IC8vIEZhaWxpbmcgdGhhdCwgd2UgY2xlYXIgbV9kZXN0aW5hdGlvbiBhbmQgd2lsbCBhc2sgdGhl
IGRlbGVnYXRlIGxhdGVyIG9uY2UgdGhlIGRvd25sb2FkIHN0YXJ0cwotICAgIGlmIChtX2J1bmRs
ZVBhdGguZW5kc1dpdGgoRG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNpb24oKSwgZmFsc2UpKSB7
CisgICAgaWYgKG1fYnVuZGxlUGF0aC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKERvd25sb2Fk
QnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgIG1fZGVzdGluYXRpb24gPSBtX2J1
bmRsZVBhdGguaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIG1fZGVzdGluYXRpb24udHJ1bmNhdGUo
bV9kZXN0aW5hdGlvbi5sZW5ndGgoKSAtIERvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCku
bGVuZ3RoKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCAwZWQzZTMzNTgwNjM0Yjc4Y2UyNTNkNWZhYWVjZGRmODEwN2I4MzU4Li5mNmJlOGUxMjQ5MGNm
Y2MxNzNhNzM3OGIxYTc0NGU4OGRmNTNhZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcApAQCAtMzg4Nyw3ICszODg3LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjptYXJrQWxsTWF0Y2hl
c0ZvclRleHQoX0luXyBCU1RSIHN0ciwgQk9PTCBjYXNlU2Vuc2l0aXZlLCBCT09MIGgKICAgICBp
ZiAoIXN0ciB8fCAhU3lzU3RyaW5nTGVuKHN0cikpCiAgICAgICAgIHJldHVybiBFX0lOVkFMSURB
Ukc7CiAKLSAgICAqbWF0Y2hlcyA9IG1fcGFnZS0+bWFya0FsbE1hdGNoZXNGb3JUZXh0KHRvU3Ry
aW5nKHN0ciksIGNhc2VTZW5zaXRpdmUgPyBUZXh0Q2FzZVNlbnNpdGl2ZSA6IFRleHRDYXNlSW5z
ZW5zaXRpdmUsIGhpZ2hsaWdodCwgbGltaXQpOworICAgICptYXRjaGVzID0gbV9wYWdlLT5tYXJr
QWxsTWF0Y2hlc0ZvclRleHQodG9TdHJpbmcoc3RyKSwgY2FzZVNlbnNpdGl2ZSA/IDAgOiBXZWJD
b3JlOjpDYXNlSW5zZW5zaXRpdmUsIGhpZ2hsaWdodCwgbGltaXQpOwogICAgIHJldHVybiBTX09L
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYjk4ZDU1OThiZTQ0YjFhMmZmOTQ0NzE0NzNjOGFlY2EwMTk3ZjEyZS4uMzZkOGRhMWM4ZjRi
NTg5NDIwYTQyYzk2YTE2YzRiNjdkN2Y0ODFkMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTExLTIwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgV1RGOjpTdHJpbmcg
b3BlcmF0aW9ucyB0aGF0IGRvIHVubmVjZXNzYXJ5IFVuaWNvZGUgb3BlcmF0aW9ucyBpbnN0ZWFk
IG9mIEFTQ0lJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzk5MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGNoYW5n
ZVdpbmRvd1NjYWxlSWZOZWVkZWQpOiBVc2UgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OnVybENvbnRhaW5zIGNvbnN0KTogRGl0dG8uCisKIDIwMTctMTEt
MjEgIFRvbWFzIFBvcGVsYSAgPHRwb3BlbGFAcmVkaGF0LmNvbT4KIAogICAgICAgICBGaXggV2Vi
S2l0R1RLKyBjb21waWxhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCmluZGV4IDUxNjllNjk2YzcyMjJmNWEyZmU0OGVjZWU3YjVkYmJlMmEwZTUzYTMuLjRk
MWM2ZWU5ZjE2YjhhYzRjOGE0MzhmOTRhNzhiNGI5MDA1ZDM3MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1OTIsOSArMTU5Miw5IEBAIHN0YXRp
YyB2b2lkIGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoY29uc3QgY2hhciogdGVzdFBhdGhPclVS
KQogICAgIFdURjo6U3RyaW5nIGxvY2FsUGF0aE9yVXJsID0gU3RyaW5nKHRlc3RQYXRoT3JVUik7
CiAgICAgZmxvYXQgY3VycmVudFNjYWxlRmFjdG9yID0gW1tbbWFpbkZyYW1lIHdlYlZpZXddIHdp
bmRvd10gYmFja2luZ1NjYWxlRmFjdG9yXTsKICAgICBmbG9hdCByZXF1aXJlZFNjYWxlRmFjdG9y
ID0gMTsKLSAgICBpZiAobG9jYWxQYXRoT3JVcmwuZmluZElnbm9yaW5nQ2FzZSgiL2hpZHBpLTN4
LSIpICE9IG5vdEZvdW5kKQorICAgIGlmIChsb2NhbFBhdGhPclVybC5jb250YWluc0lnbm9yaW5n
QVNDSUlDYXNlKCIvaGlkcGktM3gtIikpCiAgICAgICAgIHJlcXVpcmVkU2NhbGVGYWN0b3IgPSAz
OwotICAgIGVsc2UgaWYgKGxvY2FsUGF0aE9yVXJsLmZpbmRJZ25vcmluZ0Nhc2UoIi9oaWRwaS0i
KSAhPSBub3RGb3VuZCkKKyAgICBlbHNlIGlmIChsb2NhbFBhdGhPclVybC5jb250YWluc0lnbm9y
aW5nQVNDSUlDYXNlKCIvaGlkcGktIikpCiAgICAgICAgIHJlcXVpcmVkU2NhbGVGYWN0b3IgPSAy
OwogICAgIGlmIChjdXJyZW50U2NhbGVGYWN0b3IgPT0gcmVxdWlyZWRTY2FsZUZhY3RvcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApp
bmRleCBjODhiYjE4NTU5ZTE1MGRjOGNjNjJhMmY5NzJlYmEyZjMzNTIzNzczLi4yY2E3ZTUyM2Nj
MmUzN2JkZDA4MzY2YTE0ZjJhZWU4MjQ0ZmEzZmY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtODksNyArODksNyBAQCBXS1VSTFJlZiBUZXN0SW52b2Nh
dGlvbjo6dXJsKCkgY29uc3QKIAogYm9vbCBUZXN0SW52b2NhdGlvbjo6dXJsQ29udGFpbnMoY29u
c3QgY2hhciogc2VhcmNoU3RyaW5nKSBjb25zdAogewotICAgIHJldHVybiBtX3VybFN0cmluZy5j
b250YWlucyhzZWFyY2hTdHJpbmcsIGZhbHNlKTsKKyAgICByZXR1cm4gbV91cmxTdHJpbmcuY29u
dGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShzZWFyY2hTdHJpbmcpOwogfQogCiB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpzZXRJc1BpeGVsVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhh
c2gpCg==
</data>
<flag name="review"
          id="346652"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>