<?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>175130</bug_id>
          
          <creation_ts>2017-08-03 06:10:30 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add API to provide browser information required by automation</short_desc>
          <delta_ts>2017-08-06 23:06:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>174618</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1334752</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-03 06:10:30 -0700</bug_when>
    <thetext>When a new automation session is started, the web driver receives some required capabilities from the client, like browser name and version. The session should be rejected if those required capabilities don&apos;t match with the actual browser that is launched. We don&apos;t know that information in WebKit, so we need to add API so that users can provide it when a new session request is made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334756</commentid>
    <comment_count>1</comment_count>
      <attachid>317116</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-03 06:22:48 -0700</bug_when>
    <thetext>Created attachment 317116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334760</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-03 06:25:34 -0700</bug_when>
    <thetext>It doesn&apos;t apply because it depends on bug #174618</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335045</commentid>
    <comment_count>3</comment_count>
      <attachid>317116</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-03 17:22:59 -0700</bug_when>
    <thetext>Comment on attachment 317116
Patch

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

Source/JavaScriptCore and Source/WebDriver parts look good to me. Please find a GTK reviewer for the rest.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:70
&gt; +            String browserName;

Perhaps we can conditionalize these for GTK/WPE, I don&apos;t think Safari/safaridriver needs them at present and this patch doesn&apos;t update the capability caching code for these keys. Each Safari (Safari Technology Preview, system Safari, engineering builds) have their own copy of safaridriver so there is no matching to be done on the browser side.

I think we&apos;ll want to have the ability to report and request capabilities for some other things, however.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:93
&gt; +    std::optional&lt;RemoteInspector::Client::Capabilities&gt; clientCapabilities() const { return m_clientCapabilities; }

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335338</commentid>
    <comment_count>4</comment_count>
      <attachid>317116</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-04 10:53:18 -0700</bug_when>
    <thetext>Comment on attachment 317116
Patch

r- until rebased for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335391</commentid>
    <comment_count>5</comment_count>
      <attachid>317116</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-04 12:20:53 -0700</bug_when>
    <thetext>Comment on attachment 317116
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitApplicationInfo.cpp:136
&gt; + * Set the application version. If the application doesn&apos;t use the format
&gt; + * major.minor.micro you can pass 0 as the micro to use major.minor, or pass
&gt; + * 0 as both micro and minor to use only major number. Any other format must
&gt; + * be converted to major.minor.micro so that it can be used in version comparisons.

What about nano versions? I do nano versions for Epiphany on occasion.

This API is too limiting. I would make it variadic so the user can add any desired number of decimal places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335670</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-05 00:38:52 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; Comment on attachment 317116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317116&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitApplicationInfo.cpp:136
&gt; &gt; + * Set the application version. If the application doesn&apos;t use the format
&gt; &gt; + * major.minor.micro you can pass 0 as the micro to use major.minor, or pass
&gt; &gt; + * 0 as both micro and minor to use only major number. Any other format must
&gt; &gt; + * be converted to major.minor.micro so that it can be used in version comparisons.
&gt; 
&gt; What about nano versions? I do nano versions for Epiphany on occasion.
&gt; 
&gt; This API is too limiting. I would make it variadic so the user can add any
&gt; desired number of decimal places.

I don&apos;t think we need that level of detail. This is used for drivers to request a  minimum version of the browser, normally because it has a new feature required or something like that, I doubt we really need to require a nano version ever. Also, this should work for projects using any other version formats, they are expected to convert them into x.y.z ensuring they can be compared. So, the selenium driver is always going to use x.y.x format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335686</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-05 03:38:32 -0700</bug_when>
    <thetext>(In reply to Brian Burg from comment #3)
&gt; Comment on attachment 317116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317116&amp;action=review
&gt; 
&gt; Source/JavaScriptCore and Source/WebDriver parts look good to me. Please
&gt; find a GTK reviewer for the rest.
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:70
&gt; &gt; +            String browserName;
&gt; 
&gt; Perhaps we can conditionalize these for GTK/WPE, I don&apos;t think
&gt; Safari/safaridriver needs them at present and this patch doesn&apos;t update the
&gt; capability caching code for these keys. Each Safari (Safari Technology
&gt; Preview, system Safari, engineering builds) have their own copy of
&gt; safaridriver so there is no matching to be done on the browser side.

My idea was to make it glib only initially, but I think this doesn&apos;t hurt when unused and we leave cleaner code without ifdefs.

&gt; I think we&apos;ll want to have the ability to report and request capabilities
&gt; for some other things, however.
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.h:93
&gt; &gt; +    std::optional&lt;RemoteInspector::Client::Capabilities&gt; clientCapabilities() const { return m_clientCapabilities; }
&gt; 
&gt; OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335687</commentid>
    <comment_count>8</comment_count>
      <attachid>317335</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-05 03:40:28 -0700</bug_when>
    <thetext>Created attachment 317335
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335688</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-05 03:43:27 -0700</bug_when>
    <thetext>Attachment 317335 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitAutomationSession.h&quot;
ERROR: Source/WebDriver/SessionHost.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/SessionHost.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/webkit2.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitApplicationInfo.h&quot;
ERROR: Source/WebDriver/glib/SessionHostGlib.cpp:245:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitApplicationInfo.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/webkit.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitAutomationSession.h&quot;
Total errors found: 3 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335691</commentid>
    <comment_count>10</comment_count>
      <attachid>317336</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-05 04:20:25 -0700</bug_when>
    <thetext>Created attachment 317336
Try to fix WPE build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335692</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-05 04:23:27 -0700</bug_when>
    <thetext>Attachment 317336 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitAutomationSession.h&quot;
ERROR: Source/WebDriver/SessionHost.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/SessionHost.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/webkit2.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitApplicationInfo.h&quot;
ERROR: Source/WebDriver/glib/SessionHostGlib.cpp:245:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitApplicationInfo.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/webkit.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitAutomationSession.h&quot;
Total errors found: 3 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335719</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-05 12:29:27 -0700</bug_when>
    <thetext>GTK API r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335770</commentid>
    <comment_count>13</comment_count>
      <attachid>317359</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-06 01:06:53 -0700</bug_when>
    <thetext>Created attachment 317359
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335771</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-06 01:08:16 -0700</bug_when>
    <thetext>Attachment 317359 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitAutomationSession.h&quot;
ERROR: Source/WebDriver/SessionHost.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/SessionHost.h:98:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/webkit2.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitApplicationInfo.h&quot;
ERROR: Source/WebDriver/glib/SessionHostGlib.cpp:245:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitApplicationInfo.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/webkit.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitAutomationSession.h&quot;
Total errors found: 3 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335885</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-06 23:06:45 -0700</bug_when>
    <thetext>Committed r220329: &lt;http://trac.webkit.org/changeset/220329&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317116</attachid>
            <date>2017-08-03 06:22:48 -0700</date>
            <delta_ts>2017-08-05 03:40:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-capabilities-api.diff</filename>
            <type>text/plain</type>
            <size>47290</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlZWYwZjZiOWYzLi5hMjc3MjIxZmQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDMgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIEFQSSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0
b21hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGJyb3dzZXJOYW1lIGFuZCBicm93c2VyVmVyc2lvbiB0byBSZW1vdGVJbnNwZWN0b3I6OkNs
aWVudDo6Q2FwYWJpbGl0aWVzIGFuZCB2aXJ0dWFsIG1ldGhvZHMgdG8gdGhlIENsaWVudCB0bwor
ICAgICAgICBnZXQgdGhlbS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVD
bGllbnRDYXBhYmlsaXRpZXMpOiBVcGRhdGUgYWxzbyBicm93c2VyTmFtZSBhbmQgYnJvd3NlclZl
cnNpb24uCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVxdWVzdEF1dG9tYXRpb25TZXNz
aW9uKTogQ2FsbCB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKSBhZnRlciB0aGUgc2Vzc2lvbiBp
cworICAgICAgICByZXF1ZXN0ZWQgdG8gZW5zdXJlIHRoZXkgYXJlIHVwZGF0ZWQgYmVmb3JlIFN0
YXJ0QXV0b21hdGlvblNlc3Npb24gcmVwbHkgaXMgc2VudC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcDogQWRkIGJyb3dzZXJOYW1lIGFu
ZCBicm93c2VyVmVyc2lvbiBhcyByZXR1cm4gdmFsdWVzIG9mCisgICAgICAgIFN0YXJ0QXV0b21h
dGlvblNlc3Npb24gbWVzYXNhZ2UuCisKIDIwMTctMDgtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBCbWFsbG9jIGFuZCBHQyBzaG91bGQgcHV0IGF1eGlsaWFy
aWVzIChidXR0ZXJmbGllcywgdHlwZWQgYXJyYXkgYmFja2luZyBzdG9yZXMpIGluIGEgZ2lnYWNh
Z2UgKHNlcGFyYXRlIG11bHRpLUdCIFZNIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCmluZGV4
IDhmZTBjZmQ3M2VlLi5lMGU4NGE4ZjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCkBAIC0xMzMs
NyArMTMzLDkgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGll
cygpCiAgICAgICAgIG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gc3RkOjpudWxsb3B0OwogICAgIGVs
c2UgewogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzIHVwZGF0
ZWRDYXBhYmlsaXRpZXMgPSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlv
bkFsbG93ZWQoKSAvLyByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZAorICAgICAgICAgICAgbV9jbGll
bnQtPnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCksCisgICAgICAgICAgICBtX2NsaWVudC0+YnJv
d3Nlck5hbWUoKSwKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm93c2VyVmVyc2lvbigpCiAgICAg
ICAgIH07CiAKICAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJpbGl0
aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA1NTY3ODQ1MWEzNi4uODNjZjI1ODYxMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCkBAIC02NiwxMCArNjcsMTQgQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgc3RydWN0IENhcGFiaWxpdGllcyB7CiAgICAgICAg
ICAgICBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkIDogMTsKKyAgICAgICAgICAgIFN0cmlu
ZyBicm93c2VyTmFtZTsKKyAgICAgICAgICAgIFN0cmluZyBicm93c2VyVmVyc2lvbjsKICAgICAg
ICAgfTsKIAogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IFN0cmluZyBicm93c2VyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgICAgICB2aXJ0
dWFsIFN0cmluZyBicm93c2VyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkZW50aWZpZXIpID0gMDsKICAgICB9OwogCkBAIC04NSw2ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwog
ICAgIHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CisgICAgc3RkOjpvcHRpb25h
bDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBjbGllbnRDYXBhYmlsaXRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudENhcGFiaWxpdGllczsgfQogCiAgICAgdm9pZCBz
ZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldHVwQ29t
cGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5z
cGVjdG9yR2xpYi5jcHAKaW5kZXggNjY4NDcxMTNkMzUuLjhjZjFjYzM4MmU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3Bl
Y3RvckdsaWIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKQEAgLTM1NSw2ICszNTUsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IGNoYXIqIHNlc3Np
b25JRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQtPnJlcXVlc3RBdXRvbWF0aW9u
U2Vzc2lvbihTdHJpbmc6OmZyb21VVEY4KHNlc3Npb25JRCkpOworICAgIHVwZGF0ZUNsaWVudENh
cGFiaWxpdGllcygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCA0MTNmMTEyNmM1YS4uYTFjNWIyYjdk
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKQEAgLTc5LDYg
Kzc5LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICAg
IDwvbWV0aG9kPiIKICAgICAiICAgIDxtZXRob2QgbmFtZT0nU3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bic+IgogICAgICIgICAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3Nlc3Npb25JRCcgZGlyZWN0aW9u
PSdpbicvPiIKKyAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdicm93c2VyTmFtZScgZGly
ZWN0aW9uPSdvdXQnLz4iCisgICAgIiAgICAgIDxhcmcgdHlwZT0ncycgbmFtZT0nYnJvd3NlclZl
cnNpb24nIGRpcmVjdGlvbj0nb3V0Jy8+IgogICAgICIgICAgPC9tZXRob2Q+IgogICAgICIgIDwv
aW50ZXJmYWNlPiIKICAgICAiPC9ub2RlPiI7CkBAIC0xMjEsNyArMTIzLDEwIEBAIGNvbnN0IEdE
QnVzSW50ZXJmYWNlVlRhYmxlIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c19pbnRlcmZhY2VWVGFi
bGUgPSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBzZXNzaW9uSUQ7CiAgICAgICAgICAgICBn
X3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoJnMpIiwgJnNlc3Npb25JRCk7CiAgICAgICAgICAg
ICBpbnNwZWN0b3JTZXJ2ZXItPnN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29ubmVjdGlvbiwgc2Vz
c2lvbklEKTsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFs
dWUoaW52b2NhdGlvbiwgbnVsbHB0cik7CisgICAgICAgICAgICBhdXRvIGNhcGFiaWxpdGllcyA9
IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuY2xpZW50Q2FwYWJpbGl0aWVzKCk7CisgICAg
ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24s
IGdfdmFyaWFudF9uZXcoIihzcykiLAorICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA/IGNh
cGFiaWxpdGllcy0+YnJvd3Nlck5hbWUudXRmOCgpLmRhdGEoKSA6ICIiLAorICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllcyA/IGNhcGFiaWxpdGllcy0+YnJvd3NlclZlcnNpb24udXRmOCgpLmRh
dGEoKSA6ICIiKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9p
bnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRyKTsKICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0No
YW5nZUxvZwppbmRleCA0MmY0YmQ3MzgwOC4uZmY5NjFhMTQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBwcm92aWRlIGJy
b3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0b21hdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkRyaXZlcjo6U2Vzc2lvbjo6Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQpOiBDaGVj
ayBpZiBzdGFydEF1dG9tYXRpb25TZXNzaW9uIGFuZCBjb21wbGV0ZSB0aGUgY29tbWFuZAorICAg
ICAgICB3aXRoIGVycm9yIGluIHRoYXQgY2FzZS4KKyAgICAgICAgKiBTZXNzaW9uSG9zdC5oOgor
ICAgICAgICAqIGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbkhvc3Q6Om1hdGNoQ2FwYWJpbGl0aWVzKTogTWF0Y2ggdGhlIGNhcGFiaWxpdGllcyB0
aGF0IGFyZSBrbm93biBvbmx5IGFmdGVyIHRoZSBicm93c2VyIGhhcworICAgICAgICBiZWVuIGxh
dW5jaGVkLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9u
U2Vzc2lvbik6IEhhbmRsZSB0aGUgU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiByZXNwb25zZSwgZXh0
cmFjdGluZyB0aGUKKyAgICAgICAgY2FwYWJpbGl0aWVzIGFuZCBjYWxsaW5nIG1hdGNoQ2FwYWJp
bGl0aWVzKCkgdG8gbWF0Y2ggdGhlbS4KKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6
OnNldFRhcmdldExpc3QpOiBSZXR1cm4gZWFybHkgaWYgdGhlIHNlc3Npb24gd2FzIHJlamVjdGVk
IGJlZm9yZSBkdWUgdG8gaW52YWxpZAorICAgICAgICBjYXBhYmlsaXRpZXMuCisKIDIwMTctMDgt
MDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFdlYkRyaXZlcjogcHJvcGVybHkgaGFuZGxlIGNhcGFiaWxpdGllcyBhbmQgcHJvY2VzcyBmaXJz
dE1hdGNoIHRvbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggYjMzNWMxZDBmNGEuLjdkNDM2OTFmOTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTEwNSw3ICsxMDUsMTEgQEAgdm9pZCBTZXNzaW9uOjpz
d2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYnJvd3NpbmdDb250
ZXh0KQogdm9pZCBTZXNzaW9uOjpjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICBtX2hvc3QtPnN0
YXJ0QXV0b21hdGlvblNlc3Npb24obV9pZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBtX2hvc3QtPnN0YXJ0QXV0b21hdGlvblNlc3Npb24obV9pZCwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yTWVz
c2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IsIGVycm9yTWVzc2FnZS52YWx1ZSgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2Vu
ZChBU0NJSUxpdGVyYWwoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIpLCBudWxscHRyLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oIGIvU291cmNlL1dl
YkRyaXZlci9TZXNzaW9uSG9zdC5oCmluZGV4IDZhNzljN2U4OGY5Li4xYjk3ZmVmOGNlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbkhvc3QuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IGNsYXNzIFN1Y2NlZWRlZCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGNvbm5lY3RUb0Jyb3dzZXIo
RnVuY3Rpb248dm9pZCAoU3VjY2VlZGVkKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1dG9tYXRpb25T
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkICgpPiYmKTsKKyAg
ICB2b2lkIHN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1
bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgc3RydWN0IENv
bW1hbmRSZXNwb25zZSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gcmVzcG9uc2VPYmplY3Q7CkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRhYmxlOwogICAgIHZvaWQg
bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChTdWNjZWVkZWQpPiYmKTsKICAgICB2b2lkIGNv
bm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+
JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXRjaENhcGFiaWxpdGllcyhHVmFyaWFu
dCopOwogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPiYm
LCBGdW5jdGlvbjx2b2lkIChTdWNjZWVkZWQpPiYmKTsKICAgICB2b2lkIHNldFRhcmdldExpc3Qo
dWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYmKTsKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElE
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKQEAgLTk0LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBs
b25nIG1fY2xvc2VNZXNzYWdlSUQgeyAwIH07CiAKICNpZiBVU0UoR0xJQikKLSAgICBGdW5jdGlv
bjx2b2lkICgpPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIEZ1bmN0aW9u
PHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhh
bmRsZXI7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gbV9icm93c2VyOwogICAgIEdSZWZQdHI8
R0RCdXNDb25uZWN0aW9uPiBtX2RidXNDb25uZWN0aW9uOwogICAgIEdSZWZQdHI8R0NhbmNlbGxh
YmxlPiBtX2NhbmNlbGxhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nl
c3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGli
LmNwcAppbmRleCAwZTNhMmIzYjgyNi4uYzcwZDM5MDJjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2Vzc2lvbkhvc3QuaCIKIAorI2luY2x1ZGUgIldlYkRyaXZlclNl
cnZpY2UuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0yMjAsMTEgKzIyMSwzMSBAQCB2
b2lkIFNlc3Npb25Ib3N0OjpzZXR1cENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbiwgRnVuY3RpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFN1Y2NlZWRlZDo6
WWVzKTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uSG9zdDo6bWF0Y2hDYXBhYmlsaXRpZXMo
R1ZhcmlhbnQqIGNhcGFiaWxpdGllcykKK3sKKyAgICBjb25zdCBjaGFyKiBicm93c2VyTmFtZTsK
KyAgICBjb25zdCBjaGFyKiBicm93c2VyVmVyc2lvbjsKKyAgICBnX3ZhcmlhbnRfZ2V0KGNhcGFi
aWxpdGllcywgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJzaW9uKTsKKworICAg
IGlmIChtX2NhcGFiaWxpdGllcy5icm93c2VyTmFtZSkgeworICAgICAgICBpZiAobV9jYXBhYmls
aXRpZXMuYnJvd3Nlck5hbWUudmFsdWUoKSAhPSBicm93c2VyTmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJleHBlY3RlZCBicm93c2VyTmFtZSAiLCBtX2NhcGFiaWxpdGllcy5i
cm93c2VyTmFtZS52YWx1ZSgpLCAiIGJ1dCBnb3QgIiwgYnJvd3Nlck5hbWUpOworICAgIH0gZWxz
ZQorICAgICAgICBtX2NhcGFiaWxpdGllcy5icm93c2VyTmFtZSA9IFN0cmluZyhicm93c2VyTmFt
ZSk7CisKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMuYnJvd3NlclZlcnNpb24pIHsKKyAgICAgICAg
aWYgKCFXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybUNvbXBhcmVCcm93c2VyVmVyc2lvbnMobV9j
YXBhYmlsaXRpZXMuYnJvd3NlclZlcnNpb24udmFsdWUoKSwgYnJvd3NlclZlcnNpb24pKQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJlcXVlc3RlZCBicm93c2VyVmVyc2lvbiBpcyAi
LCBtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbi52YWx1ZSgpLCAiIGJ1dCBhY3R1YWwgdmVy
c2lvbiBpcyAiLCBicm93c2VyVmVyc2lvbik7CisgICAgfSBlbHNlCisgICAgICAgIG1fY2FwYWJp
bGl0aWVzLmJyb3dzZXJWZXJzaW9uID0gU3RyaW5nKGJyb3dzZXJWZXJzaW9uKTsKKworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlv
blNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZGJ1
c0Nvbm5lY3Rpb24pOwogICAgIEFTU0VSVCghbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxl
cik7Ci0gICAgLy8gRklYTUU6IE1ha2UgU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiByZXR1cm4gYnJv
d3NlciBpbmZvcm1hdGlvbiBhbmQgd2UgdXNlIGl0IHRvIG1hdGNoIGNhcGFiaWxpdGllcy4KICAg
ICBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgp
LCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKQEAgLTIzMiw3
ICsyNTMsMjcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZAogICAgICAgICAiU3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbiIsCiAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRC51dGY4
KCkuZGF0YSgpKSwKICAgICAgICAgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19T
VEFSVCwKLSAgICAgICAgLTEsIG1fY2FuY2VsbGFibGUuZ2V0KCksIGRidXNDb25uZWN0aW9uQ2Fs
bEFzeW5jUmVhZHlDYWxsYmFjaywgbnVsbHB0cik7CisgICAgICAgIC0xLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciB1c2VyRGF0YSkgeworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0VmFyaWFudCA9IGFkb3B0R1JlZihn
X2RidXNfY29ubmVjdGlvbl9jYWxsX2ZpbmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3VyY2UpLCBy
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgaWYgKCFyZXN1bHRWYXJpYW50
ICYmIGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9D
QU5DRUxMRUQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBz
ZXNzaW9uSG9zdCA9IHN0YXRpY19jYXN0PFNlc3Npb25Ib3N0Kj4odXNlckRhdGEpOworICAgICAg
ICAgICAgaWYgKCFyZXN1bHRWYXJpYW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2Uoc2Vzc2lvbkhvc3QtPm1fc3RhcnRTZXNzaW9uQ29t
cGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFN0cmluZygiRmFpbGVkIHRvIHN0YXJ0IGF1dG9tYXRpb24gc2Vzc2lvbiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gZXJy
b3JTdHJpbmcgPSBzZXNzaW9uSG9zdC0+bWF0Y2hDYXBhYmlsaXRpZXMocmVzdWx0VmFyaWFudC5n
ZXQoKSk7CisgICAgICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uSG9zdC0+bV9zdGFy
dFNlc3Npb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXJyb3JTdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwgdGhpcworICAgICk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhv
c3Q6OnNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYm
IHRhcmdldExpc3QpCkBAIC0yNTUsNiArMjk2LDExIEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNldFRh
cmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYmIHRhcmdldExp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgLy8gU2Vzc2lvbiBjcmVhdGlvbiB3YXMgYWxyZWFkeSBy
ZWplY3RlZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fY29ubmVjdGlvbklEID0g
Y29ubmVjdGlvbklEOwogICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlv
bi5nZXQoKSwgbnVsbHB0ciwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCkBA
IC0yNjUsNyArMzExLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCh1aW50NjRf
dCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYgdGFyZ2V0TGkKICAgICAgICAgLTEsIG1f
Y2FuY2VsbGFibGUuZ2V0KCksIGRidXNDb25uZWN0aW9uQ2FsbEFzeW5jUmVhZHlDYWxsYmFjaywg
bnVsbHB0cik7CiAKICAgICBhdXRvIHN0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gc3Rk
OjpleGNoYW5nZShtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKLSAg
ICBzdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcigpOworICAgIHN0YXJ0U2Vzc2lvbkNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElE
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ODI3Njk3OGIxZi4uMmVjZjdmNDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTctMDgtMDMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQ
SSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0b21hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIG5l
dyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgc3RhcnRlZCwgdGhlIHdlYiBkcml2ZXIgcmVjZWl2ZXMg
c29tZSByZXF1aXJlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgY2xpZW50LAorICAgICAgICBsaWtl
IGJyb3dzZXIgbmFtZSBhbmQgdmVyc2lvbi4gVGhlIHNlc3Npb24gc2hvdWxkIGJlIHJlamVjdGVk
IGlmIHRob3NlIHJlcXVpcmVkIGNhcGFiaWxpdGllcyBkb24ndCBtYXRjaCB3aXRoCisgICAgICAg
IHRoZSBhY3R1YWwgYnJvd3NlciB0aGF0IGlzIGxhdW5jaGVkLiBXZSBkb24ndCBrbm93IHRoYXQg
aW5mb3JtYXRpb24gaW4gV2ViS2l0LCBzbyB3ZSBuZWVkIHRvIGFkZCBBUEkgc28gdGhhdAorICAg
ICAgICB1c2VycyBjYW4gcHJvdmlkZSBpdCB3aGVuIGEgbmV3IHNlc3Npb24gcmVxdWVzdCBpcyBt
YWRlLiBUaGlzIHBhdGNoIGFkZHMgYm94ZWQgb2JqZWN0IFdlYktpdEFwcGxpY2F0aW9uSW5mbyB0
aGF0CisgICAgICAgIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBhbmQg
dmVyc2lvbi4gVGhpcyBvYmplY3QgY2FuIGJlIHNldCB0byBhIFdlYktpdEF1dG9tYXRpb25TZXNz
aW9uIHdoZW4KKyAgICAgICAgV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIHNp
Z25hbCBpcyBlbWl0dGVkLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEFwcGxpY2F0aW9uSW5mby5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fbmV3KToKKyAgICAgICAgKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3JlZik6CisgICAg
ICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJlZik6CisgICAgICAgICh3ZWJraXRfYXBw
bGljYXRpb25faW5mb19zZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5m
b19nZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lv
bik6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAg
ICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0QXV0b21hdGlv
blNlc3Npb25HZXRCcm93c2VyTmFtZSk6CisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkdldEJyb3dzZXJWZXJzaW9uKToKKyAgICAgICAgKHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
c2V0X2FwcGxpY2F0aW9uX2luZm8pOgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lv
bl9nZXRfYXBwbGljYXRpb25faW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRBcHBsaWNhdGlvbkluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBcHBs
aWNhdGlvbkluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aDoKKwogMjAxNy0wOC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIG5hdmlnYXRvci5zZW5kQmVhY29uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBmYzk2ZTMxMTJhNy4uMmZjMWYyYjQzZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtMTE3LDYgKzExNyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXBwbGljYXRpb25JbmZvLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExp
c3QuY3BwCkBAIC00MTcsNiArNDE4LDcgQEAgZW5kaWYgKCkKIHNldChXZWJLaXQyR1RLX0lOU1RB
TExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9X
ZWJLaXRFbnVtVHlwZXMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJX0RJ
Un0vV2ViS2l0VmVyc2lvbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QXBwbGljYXRpb25JbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKaW5kZXggODg0Njg1YWU3ZDQuLmYzMGU2YzJhYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKQEAgLTEzMiw2ICsxMzIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEFwcGxp
Y2F0aW9uSW5mby5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtMjc1LDYgKzI3Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfREVSSVZFRF9TT1VSQ0VT
CiAKIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V1BFX0FQSV9ESVJ9L1dlYktpdEVudW1UeXBlcy5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKICAg
ICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3Qu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXBw
bGljYXRpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEFwcGxpY2F0aW9uSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjk3ZTZjZmNlNDQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXBwbGljYXRpb25JbmZvLmNwcApAQCAtMCwwICsxLDE2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViS2l0QXBwbGljYXRpb25JbmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfV2ViS2l0QXBwbGljYXRpb25JbmZvIHsKKyAgICBDU3Ry
aW5nIG5hbWU7CisgICAgdWludDY0X3QgbWFqb3JWZXJzaW9uOworICAgIHVpbnQ2NF90IG1pbm9y
VmVyc2lvbjsKKyAgICB1aW50NjRfdCBtaWNyb1ZlcnNpb247CisKKyAgICBpbnQgcmVmZXJlbmNl
Q291bnQgeyAxIH07Cit9OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdEFwcGxpY2F0aW9u
SW5mbywgd2Via2l0X2FwcGxpY2F0aW9uX2luZm8sIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3Jl
Ziwgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYpCisKKy8qKgorICogd2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdEFwcGxpY2F0aW9u
SW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdEFwcGxpY2F0aW9uSW5mby4KKyAqCisgKiBzaW5jZTogMi4xOAorICovCitXZWJLaXRB
cHBsaWNhdGlvbkluZm8qIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldygpCit7CisgICAgV2Vi
S2l0QXBwbGljYXRpb25JbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8V2ViS2l0QXBwbGljYXRpb25J
bmZvKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0QXBwbGljYXRpb25JbmZvKSkpOworICAgIG5l
dyAoaW5mbykgV2ViS2l0QXBwbGljYXRpb25JbmZvKCk7CisgICAgcmV0dXJuIGluZm87Cit9CisK
Ky8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmOgorICogQGluZm86IGEgI1dlYktp
dEFwcGxpY2F0aW9uSW5mbworICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0aGUgcmVmZXJl
bmNlIGNvdW50IG9mIEBpbmZvIGJ5IG9uZS4gVGhpcworICogZnVuY3Rpb24gaXMgTVQtc2FmZSBh
bmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgKgorICogUmV0dXJuczogVGhlIHBh
c3NlZCBpbiAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKgorICogU2luY2U6IDIuMTgKKyAqLwor
V2ViS2l0QXBwbGljYXRpb25JbmZvKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19yZWYoV2ViS2l0
QXBwbGljYXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfYXRvbWljX2ludF9pbmMoJmluZm8tPnJl
ZmVyZW5jZUNvdW50KTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRfYXBw
bGljYXRpb25faW5mb191bnJlZjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8K
KyAqCisgKiBBdG9taWNhbGx5IGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBAaW5m
byBieSBvbmUuIElmIHRoZQorICogcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIDAsIGFsbCBtZW1v
cnkgYWxsb2NhdGVkIGJ5IHRoZSAjV2ViS2l0QXBwbGljYXRpb25JbmZvIGlzCisgKiByZWxlYXNl
ZC4gVGhpcyBmdW5jdGlvbiBpcyBNVC1zYWZlIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20gYW55Cisg
KiB0aHJlYWQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBwbGljYXRp
b25faW5mb191bnJlZihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8pCit7CisgICAgaWYgKGdf
YXRvbWljX2ludF9kZWNfYW5kX3Rlc3QoJmluZm8tPnJlZmVyZW5jZUNvdW50KSkgeworICAgICAg
ICBpbmZvLT5+V2ViS2l0QXBwbGljYXRpb25JbmZvKCk7CisgICAgICAgIGZhc3RGcmVlKGluZm8p
OworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZToK
KyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqIEBuYW1lOiB0aGUgYXBwbGlj
YXRpb24gbmFtZQorICoKKyAqIFNldCB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIG5v
dCBwcm92aWRlZCwgb3IgJU5VTEwgaXMgcGFzc2VkLAorICogZ19nZXRfcHJnbmFtZSgpIHdpbGwg
YmUgdXNlZC4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3NldF9uYW1lKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbywgY29uc3QgY2hhciog
bmFtZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworCisgICAgaW5mby0+bmFtZSA9
IG5hbWU7Cit9CisKKy8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWU6Cisg
KiBAaW5mbzogYSAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKgorICogR2V0IHRoZSBuYW1lIG9m
IHRoZSBhcHBsaWNhdGlvbi4gSWYgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUoKSBo
YXNuJ3QgYmVlbgorICogY2FsbGVkIHdpdGggYSB2YWxpZCBuYW1lLCB0aGlzIHJldHVybnMgZ19n
ZXRfcHJnbmFtZSgpLgorICoKKyAqIFJldHVybnM6IHRoZSBhcHBsaWNhdGlvbiBuYW1lCisgKgor
ICogU2luY2U6IDIuMTgKKyAqLworY29uc3QgY2hhciogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
Z2V0X25hbWUoV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGluZm8sIG51bGxwdHIpOworCisgICAgaWYgKCFpbmZvLT5uYW1lLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gaW5mby0+bmFtZS5kYXRhKCk7CisKKyAgICByZXR1cm4gZ19nZXRf
cHJnbmFtZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJz
aW9uOgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICogQG1ham9yOiB0aGUg
bWFqb3IgdmVyc2lvbiBudW1iZXIKKyAqIEBtaW5vcjogdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVy
CisgKiBAbWljcm86IHRoZSBtaWNybyB2ZXJzaW9uIG51bWJlcgorICoKKyAqIFNldCB0aGUgYXBw
bGljYXRpb24gdmVyc2lvbi4gSWYgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgdXNlIHRoZSBmb3Jt
YXQKKyAqIG1ham9yLm1pbm9yLm1pY3JvIHlvdSBjYW4gcGFzcyAwIGFzIHRoZSBtaWNybyB0byB1
c2UgbWFqb3IubWlub3IsIG9yIHBhc3MKKyAqIDAgYXMgYm90aCBtaWNybyBhbmQgbWlub3IgdG8g
dXNlIG9ubHkgbWFqb3IgbnVtYmVyLiBBbnkgb3RoZXIgZm9ybWF0IG11c3QKKyAqIGJlIGNvbnZl
cnRlZCB0byBtYWpvci5taW5vci5taWNybyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHZlcnNp
b24gY29tcGFyaXNvbnMuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19zZXRfdmVyc2lvbihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8sIGd1
aW50NjQgbWFqb3IsIGd1aW50NjQgbWlub3IsIGd1aW50NjQgbWljcm8pCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChpbmZvKTsKKworICAgIGluZm8tPm1ham9yVmVyc2lvbiA9IG1ham9yOworICAg
IGluZm8tPm1pbm9yVmVyc2lvbiA9IG1pbm9yOworICAgIGluZm8tPm1pY3JvVmVyc2lvbiA9IG1p
Y3JvOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uOgor
ICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICogQG1ham9yOiAob3V0KTogcmV0
dXJuIGxvY2F0aW9uIGZvciB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIKKyAqIEBtaW5vcjogKG91
dCkgKGFsbG93LW5vbmUpOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSBtaW5vciB2ZXJzaW9uIG51
bWJlcgorICogQG1pY3JvOiAob3V0KSAoYWxsb3ctbm9uZSk6IHJldHVybiBsb2NhdGlvbiBmb3Ig
dGhlIG1pY3JvIHZlcnNpb24gbnVtYmVyCisgKgorICogR2V0IHRoZSBhcHBsaWNhdGlvbiB2ZXJz
aW9uIHByZXZpb3VzbHkgc2V0IHdpdGggd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNp
b24oKS4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hcHBsaWNhdGlvbl9p
bmZvX2dldF92ZXJzaW9uKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbywgZ3VpbnQ2NCogbWFq
b3IsIGd1aW50NjQqIG1pbm9yLCBndWludDY0KiBtaWNybykKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKGluZm8gJiYgbWFqb3IpOworCisgICAgKm1ham9yID0gaW5mby0+bWFqb3JWZXJzaW9uOwor
ICAgIGlmIChtaW5vcikKKyAgICAgICAgKm1pbm9yID0gaW5mby0+bWlub3JWZXJzaW9uOworICAg
IGlmIChtaWNybykKKyAgICAgICAgKm1pY3JvID0gaW5mby0+bWljcm9WZXJzaW9uOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDk1Y2NmMjBkZmYyLi45NmNjMjkyMjA1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIldlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYktpdEFwcGxpY2F0aW9uSW5mby5oIgogI2luY2x1ZGUgIldlYktp
dEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTU4LDYgKzU5LDcgQEAgZW51
bSB7CiAKIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIHsKICAgICBSZWZQ
dHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgV2ViS2l0QXBwbGljYXRpb25J
bmZvKiBhcHBsaWNhdGlvbkluZm87CiAgICAgQ1N0cmluZyBpZDsKIH07CiAKQEAgLTEyOCwxMiAr
MTMwLDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVU
T01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGlj
YXRpb25JbmZvKSB7CisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKHNlc3Np
b24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbyk7CisgICAgICAgIHNlc3Npb24tPnByaXYtPmFwcGxp
Y2F0aW9uSW5mbyA9IG51bGxwdHI7CisgICAgfQorCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2F1dG9tYXRpb25fc2Vzc2lvbl9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisK
IHN0YXRpYyB2b2lkIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fY2xhc3NfaW5pdChXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbkNsYXNzKiBzZXNzaW9uQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNz
KiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhzZXNzaW9uQ2xhc3MpOwogICAgIGdPYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRQcm9wZXJ0
eTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uU2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdEF1
dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQ7CisgICAgZ09iamVjdENsYXNzLT5kaXNwb3NlID0g
d2Via2l0QXV0b21hdGlvblNlc3Npb25EaXNwb3NlOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0
QXV0b21hdGlvblNlc3Npb246aWQ6CkBAIC0xODcsNiArMjAyLDMxIEBAIFdlYkF1dG9tYXRpb25T
ZXNzaW9uJiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFNlc3Npb24oV2ViS2l0QXV0b21hdGlv
blNlc3Npb24qCiAgICAgcmV0dXJuICpzZXNzaW9uLT5wcml2LT5zZXNzaW9uOwogfQogCitTdHJp
bmcgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZShXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25J
bmZvKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfYXBwbGljYXRpb25f
aW5mb19nZXRfbmFtZShzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pKTsKKworICAgIHJl
dHVybiBnX2dldF9wcmduYW1lKCk7Cit9CisKK1N0cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQorewor
ICAgIGlmICghc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgZ3VpbnQ2NCBtYWpvciwgbWlub3IsIG1pY3JvOworICAgIHdlYmtpdF9hcHBs
aWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbywg
Jm1ham9yLCAmbWlub3IsICZtaWNybyk7CisKKyAgICBpZiAoIW1pY3JvICYmICFtaW5vcikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1ham9yKTsKKworICAgIGlmICghbWljcm8pCisg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKG1ham9yKSwgIi4iLCBTdHJp
bmc6Om51bWJlcihtaW5vcikpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nOjpudW1i
ZXIobWFqb3IpLCAiLiIsIFN0cmluZzo6bnVtYmVyKG1pbm9yKSwgIi4iLCBTdHJpbmc6Om51bWJl
cihtaWNybykpOworfQorCiAvKioKICAqIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lk
OgogICogQHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCkBAIC0yMDIsMyArMjQy
LDQ3IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lkKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbiksIG51bGxwdHIpOwogICAgIHJldHVy
biBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCk7CiB9CisKKy8qKgorICogd2Via2l0X2F1dG9tYXRp
b25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25faW5mbzoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoK
KyAqIFNldCB0aGUgYXBwbGljYXRpb24gaW5mb3JtYXRpb24gdG8gQHNlc3Npb24uIFRoaXMgaW5m
b3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgc2VydmljZQorICogdG8gbWF0Y2gg
dGhlIHJlcXVlc3RlZCBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgYWN0dWFsIGFwcGxpY2F0aW9uIGlu
Zm9ybWF0aW9uLiBJZiB0aGlzIGluZm9ybWF0aW9uCisgKiBpcyBub3QgcHJvdmlkZWQgdG8gdGhl
IHNlc3Npb24gd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgcmVxdWVzdGVkLCB0aGUg
Y3JlYXRpb24gbWlnaHQgZmFpbAorICogaWYgdGhlIGNsaWVudCByZXF1ZXN0ZWQgYSBzcGVjaWZp
YyBicm93c2VyIG5hbWUgb3IgdmVyc2lvbi4gVGhpcyB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qg
d2hlbiBjYWxsZWQKKyAqIGFmdGVyIHRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaGFzIGJlZW4gZnVs
bHkgY3JlYXRlZCwgc28gdGhpcyBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgY2FsbGJhY2sgb2YKKyAq
ICNXZWJLaXRXZWJDb250ZXh0OjphdXRvbWF0aW9uLXN0YXJ0ZWQgc2lnbmFsLgorICoKKyAqIFNp
bmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGlj
YXRpb25faW5mbyhXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiwgV2ViS2l0QXBwbGlj
YXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVE9N
QVRJT05fU0VTU0lPTihzZXNzaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKwor
ICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8gPT0gaW5mbykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKKyAgICAg
ICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRp
b25JbmZvKTsKKyAgICBzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8gPSB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19yZWYoaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbzoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0aGUgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uIHBy
ZXZpb3VzbHkgc2V0IHdpdGggd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRp
b25faW5mbygpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiBvZiBAc2Vzc2lvbiwgb3IgJU5VTEwgaWYgbm8gb25lIGhhcyBiZWVu
IHNldC4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCitXZWJLaXRBcHBsaWNhdGlvbkluZm8qIHdl
YmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8oV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FVVE9NQVRJT05fU0VTU0lPTihzZXNzaW9uKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
c2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
blByaXZhdGUuaAppbmRleCA1NTI1NzgzZWY2NC4uNDBjZDkzMjFiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uUHJpdmF0ZS5oCkBAIC0yNCwzICsyNCw1IEBACiAKIFdlYktpdEF1dG9tYXRp
b25TZXNzaW9uKiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNyZWF0ZShjb25zdCBjaGFyKiBzZXNz
aW9uSUQpOwogV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNl
c3Npb25HZXRTZXNzaW9uKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKik7CitTdHJpbmcgd2Via2l0
QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZShXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiop
OworU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3NlclZlcnNpb24oV2ViS2l0
QXV0b21hdGlvblNlc3Npb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZjc4MThlN2I5ZjMuLjRhYjkwMWVl
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtMjE0LDEyICsyMTQsMjggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGJyb3dzZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbikK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUobV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vz
c2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0
aW9uU2Vzc2lvbikKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIHdl
YmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3NlclZlcnNpb24obV93ZWJDb250ZXh0LT5wcml2
LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCiAgICAgdm9pZCByZXF1ZXN0QXV0
b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vz
c2lvbik7CiAgICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBh
ZG9wdEdSZWYod2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29s
LT5zZXRBdXRvbWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9u
KG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKICAgICAgICAg
Z19zaWduYWxfZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwg
MCwgbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgICAg
IG1fd2ViQ29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKCZ3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFNlc3Npb24obV93ZWJDb250ZXh0LT5wcml2LT5hdXRv
bWF0aW9uU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAogICAgIFdlYktpdFdlYkNvbnRleHQqIG1f
d2ViQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QXBwbGljYXRpb25JbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4zNGRiOWI5Y2M3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0QXBwbGljYXRpb25JbmZvX2gKKyNkZWZpbmUgV2ViS2l0QXBw
bGljYXRpb25JbmZvX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRf
VFlQRV9BUFBMSUNBVElPTl9JTkZPICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdHlwZSgp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXBwbGljYXRpb25JbmZvIFdlYktpdEFwcGxpY2F0
aW9uSW5mbzsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19n
ZXRfdHlwZSAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoK
K3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldyAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmICAg
ICAgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYgICAgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5m
byAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0
X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKm5hbWUpOworV0VCS0lU
X0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfbmFtZSAgICAo
V2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
YXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbiAoV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAg
ICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2
NCAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDY0ICAgICAgICAgICAgICAgIG1pY3JvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbiAoV2ViS2l0QXBwbGljYXRpb25JbmZv
ICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAg
ICAgICAgICAgICAqbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3VpbnQ2NCAgICAgICAgICAgICAgICptaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgKm1pY3JvKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggYTA4ZjFmNjVlOTYuLjgzOWRmZTM0Zjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uX2gKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNTYsMTAgKzU3LDE3IEBAIHN0cnVjdCBf
V2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF9hdXRvbWF0
aW9uX3Nlc3Npb25fZ2V0X3R5cGUgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIGNv
bnN0IGNoYXIgKgotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0
b21hdGlvblNlc3Npb24gKnNlc3Npb24pOword2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRf
aWQgICAgICAgICAgICAgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9u
X2luZm8gKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0QXBwbGljYXRpb25JbmZvICAg
KmluZm8pOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqCit3ZWJraXRfYXV0
b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvIChXZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbiAqc2Vzc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0CmluZGV4IGMyYjBhMmQwMGQ5Li5hMTNjMzJkMmI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CkBAIC0xMzU4LDYgKzEzNTgsOCBAQCBXRUJLSVRfVFlQRV9ORVRXT1JL
X05FVFdPUktfUFJPWFlfU0VUVElOR1MKIDxGSUxFPldlYktpdEF1dG9tYXRpb25TZXNzaW9uPC9G
SUxFPgogV2ViS2l0QXV0b21hdGlvblNlc3Npb24KIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
Z2V0X2lkCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3NldF9hcHBsaWNhdGlvbl9pbmZvCit3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvCiAKIDxTVUJTRUNU
SU9OIFByaXZhdGU+CiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUKQEAgLTEzNzQsNiAr
MTM3NiwyNCBAQCBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dFVF9DTEFTUwogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdEFwcGxpY2F0aW9uSW5mbzwvRklMRT4KK1dlYktp
dEFwcGxpY2F0aW9uSW5mbword2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3Cit3ZWJraXRfYXBw
bGljYXRpb25faW5mb19yZWYKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmCit3ZWJraXRf
YXBwbGljYXRpb25faW5mb19zZXRfbmFtZQord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25h
bWUKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uCit3ZWJraXRfYXBwbGljYXRp
b25faW5mb19nZXRfdmVyc2lvbgorCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQ
RV9BUFBMSUNBVElPTl9JTkZPCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0
V2ViRXh0ZW5zaW9uPC9GSUxFPgogV2ViS2l0V2ViRXh0ZW5zaW9uCiBXZWJLaXRXZWJFeHRlbnNp
b25Jbml0aWFsaXplRnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBlMzE5ZGNhNDI5Ny4u
N2MxZDU0NTA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTU5LDYgKzU5LDcgQEAKICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2Vic2l0ZURhdGEueG1sIi8+CiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5ldHdvcmtQcm94eVNldHRpbmdzLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi54bWwiLz4KKyAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICA8L2No
YXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCmluZGV4IGFlNTBiMzUwNWY2Li5mYjA0NzZmMWIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2RlZmluZSBf
X1dFQktJVDJfSF9JTlNJREVfXwogCisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBcHBsaWNhdGlv
bkluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJlZTBkNGYxZTMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBcHBsaWNhdGlvbklu
Zm8uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVRf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVk
IGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEFwcGxpY2F0aW9uSW5mb19oCisj
ZGVmaW5lIFdlYktpdEFwcGxpY2F0aW9uSW5mb19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9BUFBMSUNBVElPTl9JTkZPICh3ZWJraXRfYXBwbGljYXRpb25faW5m
b19nZXRfdHlwZSgpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXBwbGljYXRpb25JbmZvIFdl
YktpdEFwcGxpY2F0aW9uSW5mbzsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfYXBwbGlj
YXRpb25faW5mb19nZXRfdHlwZSAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGlj
YXRpb25JbmZvICoKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldyAgICAgICAgICh2b2lkKTsK
KworV0VCS0lUX0FQSSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fcmVmICAgICAgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYgICAgICAgKFdlYktpdEFw
cGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0
aW9uX2luZm9fc2V0X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKm5h
bWUpOworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19n
ZXRfbmFtZSAgICAoV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbiAoV2ViS2l0QXBwbGljYXRp
b25JbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50
NjQgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgIG1pY3JvKTsKKworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbiAoV2ViS2l0QXBw
bGljYXRpb25JbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd1aW50NjQgICAgICAgICAgICAgICAqbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptaW5vciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgKm1pY3JvKTsKKwor
R19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggOWU2MmNkZjBhNGUu
LmMwZDRmMjU2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVm
aW5lIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uX2gKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8d3BlL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXREZWZpbmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTU2LDEwICs1NywxNyBAQCBzdHJ1
Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlw
ZQotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRfYXV0
b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQ
SSBjb25zdCBjaGFyICoKLXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lkICAgKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
Z2V0X2lkICAgICAgICAgICAgICAgKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3NldF9hcHBsaWNh
dGlvbl9pbmZvIChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEFwcGxpY2F0aW9uSW5m
byAgICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Via2l0
X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbyAoV2ViS2l0QXV0b21hdGlv
blNlc3Npb24gKnNlc3Npb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS93ZWJraXQuaAppbmRleCA5NDIwY2E0ZGE1NS4uNTVhZTM4Mjk5YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjZGVmaW5lIF9fV0VCS0lUX0hfSU5TSURFX18KIAorI2luY2x1ZGUgPHdwZS9XZWJLaXRBcHBs
aWNhdGlvbkluZm8uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFhOWI3ZTk1NjVmLi5hMmM4MjFlZTFjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTA4LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gcHJvdmlkZSBicm93c2VyIGluZm9y
bWF0aW9uIHJlcXVpcmVkIGJ5IGF1dG9tYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAg
KGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2spOiBTZXQgYnJvd3NlciBpbmZvcm1hdGlvbiB3aGVu
IGEgbmV3IGF1dG9tYXRpb24gc2Vzc2lvbiBpcyBzdGFydGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAodGVzdEF1dG9tYXRpb25TZXNzaW9uQXBwbGljYXRpb25JbmZvKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisKIDIwMTctMDgtMDIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIG9ic29sZXRlIGNvZGUgaW4gVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggNTcwNTU0MDU2YTIu
LjVlNzZlZDhhYjE4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTQ1OCw2ICs0NTgsMTEgQEAgc3Rh
dGljIEd0a1dpZGdldCAqY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayhXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiogc2UKIAogc3RhdGljIHZvaWQgYXV0b21hdGlvblN0YXJ0ZWRDYWxs
YmFjayhXZWJLaXRXZWJDb250ZXh0ICp3ZWJDb250ZXh0LCBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
biAqc2Vzc2lvbikKIHsKKyAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8gPSB3ZWJraXRf
YXBwbGljYXRpb25faW5mb19uZXcoKTsKKyAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRf
dmVyc2lvbihpbmZvLCBXRUJLSVRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04s
IFdFQktJVF9NSUNST19WRVJTSU9OKTsKKyAgICB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3Nl
dF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24sIGluZm8pOworICAgIHdlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3VucmVmKGluZm8pOworCiAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiY3Jl
YXRlLXdlYi12aWV3IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkNhbGxi
YWNrKSwgTlVMTCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMzFjZDY4
NmY5NWQuLmUwMWI2NzFhOWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTY4
LDYgKzE2OCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3Nlc3Npb24gPSBzZXNzaW9u
OwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KG1fc2Vzc2lvbikpOworICAgICAgICBnX2Fzc2VydCghd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lv
bl9nZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uKSk7CisgICAgICAgIFdlYktpdEFwcGxpY2F0
aW9uSW5mbyogaW5mbyA9IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldygpOworICAgICAgICB3
ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZShpbmZvLCAiQXV0b21hdGlvblRlc3RCcm93
c2VyIik7CisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uKGluZm8s
IFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JP
X1ZFUlNJT04pOworICAgICAgICB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3NldF9hcHBsaWNh
dGlvbl9pbmZvKHNlc3Npb24sIGluZm8pOworICAgICAgICB3ZWJraXRfYXBwbGljYXRpb25faW5m
b191bnJlZihpbmZvKTsKKyAgICAgICAgZ19hc3NlcnQod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lv
bl9nZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uKSA9PSBpbmZvKTsKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIHdl
YkNvbnRleHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uLCBBdXRvbWF0aW9uVGVz
dCogdGVzdCkKQEAgLTE4MSw3ICsxODgsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0
byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAiYXV0b21h
dGlvbi1zdGFydGVkIiwgR19DQUxMQkFDSyhhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKSwgdGhp
cyk7CiAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBu
dWxscHRyLCAiL29yZy93ZWJraXQvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXQuSW5zcGVjdG9yIiwK
LSAgICAgICAgICAgICJTdGFydEF1dG9tYXRpb25TZXNzaW9uIiwgZ192YXJpYW50X25ldygiKHMp
Iiwgc2Vzc2lvbklEKSwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19TVEFSVCwg
LTEsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgIlN0YXJ0QXV0b21h
dGlvblNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIocykiLCBzZXNzaW9uSUQpLCBudWxscHRyLCBH
X0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAtMSwgbnVsbHB0ciwKKyAgICAgICAgICAg
IFtdKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJE
YXRhKSB7CisgICAgICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PEF1dG9tYXRp
b25UZXN0Kj4odXNlckRhdGEpOworICAgICAgICAgICAgICAgIGlmICghdGVzdC0+bV9zZXNzaW9u
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBHUmVmUHRy
PEdWYXJpYW50PiBjYXBhYmlsaXRpZXMgPSBhZG9wdEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fY2Fs
bF9maW5pc2goR19EQlVTX0NPTk5FQ1RJT04oc291cmNlKSwgcmVzdWx0LCBudWxscHRyKSk7Cisg
ICAgICAgICAgICAgICAgZ19hc3NlcnQoY2FwYWJpbGl0aWVzLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBicm93c2VyTmFtZTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBicm93c2VyVmVyc2lvbjsKKyAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KGNhcGFiaWxp
dGllcy5nZXQoKSwgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJzaW9uKTsKKyAg
ICAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIoYnJvd3Nlck5hbWUsID09LCAiQXV0b21hdGlv
blRlc3RCcm93c2VyIik7CisgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2ZXJzaW9u
U3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJXUuJXUuJXUiLCBXRUJLSVRfTUFKT1JfVkVSU0lPTiwg
V0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKSk7CisgICAgICAgICAg
ICAgICAgZ19hc3NlcnRfY21wc3RyKGJyb3dzZXJWZXJzaW9uLCA9PSwgdmVyc2lvblN0cmluZy5n
ZXQoKSk7CisgICAgICAgICAgICB9LCB0aGlzCisgICAgICAgICk7CiAgICAgICAgIGF1dG8gdGlt
ZW91dElEID0gZ190aW1lb3V0X2FkZCgxMDAwLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jv
b2xlYW4gewogICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxv
b3AqPih1c2VyRGF0YSkpOwogICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKQEAg
LTI3OCwxMSArMzAwLDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJlcXVl
c3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
LCBGQUxTRSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxpY2F0
aW9uSW5mbyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdEFwcGxpY2F0
aW9uSW5mbyogaW5mbyA9IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldygpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfbmFtZShpbmZvKSwgPT0sIGdf
Z2V0X3ByZ25hbWUoKSk7CisgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUoaW5m
bywgIldlYktpdEdUS0Jyb3dzZXIiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X25hbWUoaW5mbyksID09LCAiV2ViS2l0R1RLQnJvd3NlciIpOworICAg
IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGluZm8sIG51bGxwdHIpOworICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfbmFtZShpbmZvKSwgPT0s
IGdfZ2V0X3ByZ25hbWUoKSk7CisKKyAgICBndWludDY0IG1ham9yLCBtaW5vciwgbWljcm87Cisg
ICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24oaW5mbywgJm1ham9yLCBudWxs
cHRyLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KG1ham9yLCA9PSwgMCk7CisgICAg
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24oaW5mbywgMSwgMiwgMyk7CisgICAg
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24oaW5mbywgJm1ham9yLCAmbWlub3Is
ICZtaWNybyk7CisgICAgZ19hc3NlcnRfY21wdWludChtYWpvciwgPT0sIDEpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQobWlub3IsID09LCAyKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KG1pY3JvLCA9
PSwgMyk7CisKKyAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJlZihpbmZvKTsKK30KKwor
CiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgZ19zZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VS
VkVSIiwgIjEyNy4wLjAuMToyMjI5IiwgVFJVRSk7CiAKICAgICBBdXRvbWF0aW9uVGVzdDo6YWRk
KCJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiIsICJyZXF1ZXN0LXNlc3Npb24iLCB0ZXN0QXV0b21h
dGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbik7CisgICAgVGVzdDo6YWRkKCJXZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbiIsICJhcHBsaWNhdGlvbi1pbmZvIiwgdGVzdEF1dG9tYXRpb25TZXNzaW9uQXBw
bGljYXRpb25JbmZvKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>
<flag name="review"
          id="337711"
          type_id="1"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317335</attachid>
            <date>2017-08-05 03:40:28 -0700</date>
            <delta_ts>2017-08-05 04:20:25 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wd-capabilities-api.diff</filename>
            <type>text/plain</type>
            <size>47339</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2YjBlZGQ2NDc0Li43MjU1Mzg5MGFlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIEFQSSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0
b21hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGJyb3dzZXJOYW1lIGFuZCBicm93c2VyVmVyc2lvbiB0byBSZW1vdGVJbnNwZWN0b3I6OkNs
aWVudDo6Q2FwYWJpbGl0aWVzIGFuZCB2aXJ0dWFsIG1ldGhvZHMgdG8gdGhlIENsaWVudCB0bwor
ICAgICAgICBnZXQgdGhlbS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVD
bGllbnRDYXBhYmlsaXRpZXMpOiBVcGRhdGUgYWxzbyBicm93c2VyTmFtZSBhbmQgYnJvd3NlclZl
cnNpb24uCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVxdWVzdEF1dG9tYXRpb25TZXNz
aW9uKTogQ2FsbCB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKSBhZnRlciB0aGUgc2Vzc2lvbiBp
cworICAgICAgICByZXF1ZXN0ZWQgdG8gZW5zdXJlIHRoZXkgYXJlIHVwZGF0ZWQgYmVmb3JlIFN0
YXJ0QXV0b21hdGlvblNlc3Npb24gcmVwbHkgaXMgc2VudC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcDogQWRkIGJyb3dzZXJOYW1lIGFu
ZCBicm93c2VyVmVyc2lvbiBhcyByZXR1cm4gdmFsdWVzIG9mCisgICAgICAgIFN0YXJ0QXV0b21h
dGlvblNlc3Npb24gbWVzYXNhZ2UuCisKIDIwMTctMDgtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEldIEFkZCBDYWNoZSBhbmQgQ2FjaGVT
dG9yYWdlIElETCBkZWZpbml0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggOGZlMGNmZDcz
ZWUuLmUwZTg0YThmMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTEzMyw3ICsxMzMsOSBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKICAgICAg
ICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAg
ICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxp
dGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgp
IC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCisgICAgICAgICAgICBtX2NsaWVudC0+cmVtb3Rl
QXV0b21hdGlvbkFsbG93ZWQoKSwKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm93c2VyTmFtZSgp
LAorICAgICAgICAgICAgbV9jbGllbnQtPmJyb3dzZXJWZXJzaW9uKCkKICAgICAgICAgfTsKIAog
ICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCmluZGV4IDU1Njc4NDUxYTM2Li44M2NmMjU4NjEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKQEAgLTY2LDEwICs2NywxNCBAQCBwdWJsaWM6CiAgICAg
cHVibGljOgogICAgICAgICBzdHJ1Y3QgQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgICAgIGJvb2wg
cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQgOiAxOworICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJO
YW1lOworICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uOwogICAgICAgICB9OwogCiAg
ICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3Rl
QXV0b21hdGlvbkFsbG93ZWQoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGJy
b3dzZXJOYW1lKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGJyb3dzZXJWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRp
ZmllcikgPSAwOwogICAgIH07CiAKQEAgLTg1LDYgKzkwLDcgQEAgcHVibGljOgogICAgIFJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQog
ICAgIHZvaWQgc2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Kik7CiAgICAgdm9pZCBj
bGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IGNsaWVudENhcGFiaWxpdGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50Q2FwYWJpbGl0aWVzOyB9CiAKICAgICB2b2lkIHNldHVwRmFpbGVk
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQodW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGli
LmNwcAppbmRleCA2Njg0NzExM2QzNS4uOGNmMWNjMzgyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JHbGliLmNwcApAQCAtMzU1LDYgKzM1NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklEKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC0+cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFN0
cmluZzo6ZnJvbVVURjgoc2Vzc2lvbklEKSk7CisgICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVz
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDQxM2YxMTI2YzVhLi5hMWM1YjJiN2QyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtNzksNiArNzksOCBAQCBz
dGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgICAgPC9tZXRob2Q+
IgogICAgICIgICAgPG1ldGhvZCBuYW1lPSdTdGFydEF1dG9tYXRpb25TZXNzaW9uJz4iCiAgICAg
IiAgICAgIDxhcmcgdHlwZT0ncycgbmFtZT0nc2Vzc2lvbklEJyBkaXJlY3Rpb249J2luJy8+Igor
ICAgICIgICAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Jyb3dzZXJOYW1lJyBkaXJlY3Rpb249J291
dCcvPiIKKyAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdicm93c2VyVmVyc2lvbicgZGly
ZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgICA8L21ldGhvZD4iCiAgICAgIiAgPC9pbnRlcmZhY2U+
IgogICAgICI8L25vZGU+IjsKQEAgLTEyMSw3ICsxMjMsMTAgQEAgY29uc3QgR0RCdXNJbnRlcmZh
Y2VWVGFibGUgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzX2ludGVyZmFjZVZUYWJsZSA9IHsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHNlc3Npb25JRDsKICAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIigmcykiLCAmc2Vzc2lvbklEKTsKICAgICAgICAgICAgIGluc3BlY3Rv
clNlcnZlci0+c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25uZWN0aW9uLCBzZXNzaW9uSUQpOwot
ICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLCBudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gY2FwYWJpbGl0aWVzID0gUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKHNzKSIsCisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID8gY2FwYWJpbGl0aWVz
LT5icm93c2VyTmFtZS51dGY4KCkuZGF0YSgpIDogIiIsCisgICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzID8gY2FwYWJpbGl0aWVzLT5icm93c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25f
cmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIG51bGxwdHIpOwogICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmlu
ZGV4IDU1ZTA0ZmE0ODhjLi41YTg0NzAxNTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
NCBAQAogMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgYnJvd3NlciBpbmZv
cm1hdGlvbiByZXF1aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uOjpjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCk6IENoZWNrIGlmIHN0YXJ0
QXV0b21hdGlvblNlc3Npb24gYW5kIGNvbXBsZXRlIHRoZSBjb21tYW5kCisgICAgICAgIHdpdGgg
ZXJyb3IgaW4gdGhhdCBjYXNlLgorICAgICAgICAqIFNlc3Npb25Ib3N0Lmg6CisgICAgICAgICog
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9z
dDo6bWF0Y2hDYXBhYmlsaXRpZXMpOiBNYXRjaCB0aGUgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGtu
b3duIG9ubHkgYWZ0ZXIgdGhlIGJyb3dzZXIgaGFzCisgICAgICAgIGJlZW4gbGF1bmNoZWQuCisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKTog
SGFuZGxlIHRoZSBTdGFydEF1dG9tYXRpb25TZXNzaW9uIHJlc3BvbnNlLCBleHRyYWN0aW5nIHRo
ZQorICAgICAgICBjYXBhYmlsaXRpZXMgYW5kIGNhbGxpbmcgbWF0Y2hDYXBhYmlsaXRpZXMoKSB0
byBtYXRjaCB0aGVtLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0
TGlzdCk6IFJldHVybiBlYXJseSBpZiB0aGUgc2Vzc2lvbiB3YXMgcmVqZWN0ZWQgYmVmb3JlIGR1
ZSB0byBpbnZhbGlkCisgICAgICAgIGNhcGFiaWxpdGllcy4KKworMjAxNy0wOC0wNSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdl
ZC4gVHJ5IHRvIGZpeCBidWlsZCB3aXRoIGNsYW5nIGFmdGVyIHIyMjAzMTUuCiAKICAgICAgICAg
KiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDhhOGYxMDVjMGFi
Li44OTczZmEzYzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0xMDUsNyArMTA1LDExIEBAIHZv
aWQgU2Vzc2lvbjo6c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGJyb3dzaW5nQ29udGV4dCkKIHZvaWQgU2Vzc2lvbjo6Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0Nv
bnRleHQoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0g
ICAgbV9ob3N0LT5zdGFydEF1dG9tYXRpb25TZXNzaW9uKG1faWQsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9ob3N0LT5zdGFydEF1dG9tYXRpb25TZXNz
aW9uKG1faWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yLCBlcnJvck1lc3NhZ2UudmFsdWUoKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIG1faG9zdC0+c2VuZENv
bW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiKSwgbnVs
bHB0ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS5p
c0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNw
b25zZU9iamVjdCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3Qu
aCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaAppbmRleCA2YTc5YzdlODhmOS4uMWI5
N2ZlZjhjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogCiAgICAgZW51bSBjbGFzcyBTdWNjZWVkZWQgeyBObywgWWVzIH07CiAgICAgdm9pZCBjb25u
ZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKFN1Y2NlZWRlZCk+JiYpOwotICAgIHZvaWQgc3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoKT4mJik7CisgICAgdm9pZCBzdGFydEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAog
ICAgIHN0cnVjdCBDb21tYW5kUmVzcG9uc2UgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IHJlc3BvbnNlT2JqZWN0OwpAQCAtODAsNiArODAsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2ludGVyZmFjZVZUYWJs
ZTsKICAgICB2b2lkIGxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAoU3VjY2VlZGVkKT4mJik7
CiAgICAgdm9pZCBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93
c2VyQXN5bmNEYXRhPiYmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF0Y2hDYXBhYmls
aXRpZXMoR1ZhcmlhbnQqKTsKICAgICB2b2lkIHNldHVwQ29ubmVjdGlvbihHUmVmUHRyPEdEQnVz
Q29ubmVjdGlvbj4mJiwgRnVuY3Rpb248dm9pZCAoU3VjY2VlZGVkKT4mJik7CiAgICAgdm9pZCBz
ZXRUYXJnZXRMaXN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4mJik7CiAg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50
NjRfdCB0YXJnZXRJRCwgY29uc3QgY2hhciogbWVzc2FnZSk7CkBAIC05NCw3ICs5NSw3IEBAIHBy
aXZhdGU6CiAgICAgbG9uZyBtX2Nsb3NlTWVzc2FnZUlEIHsgMCB9OwogCiAjaWYgVVNFKEdMSUIp
Ci0gICAgRnVuY3Rpb248dm9pZCAoKT4gbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcjsK
KyAgICBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0U2Vzc2lv
bkNvbXBsZXRpb25IYW5kbGVyOwogICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IG1fYnJvd3NlcjsK
ICAgICBHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gbV9kYnVzQ29ubmVjdGlvbjsKICAgICBHUmVm
UHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nl
c3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggMGUzYTJiM2I4MjYuLmM3MGQzOTAyY2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlc3Npb25Ib3N0LmgiCiAKKyNpbmNsdWRl
ICJXZWJEcml2ZXJTZXJ2aWNlLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjIwLDEx
ICsyMjEsMzEgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2V0dXBDb25uZWN0aW9uKEdSZWZQdHI8R0RC
dXNDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEZ1bmN0aW8KICAgICBjb21wbGV0aW9uSGFuZGxl
cihTdWNjZWVkZWQ6Olllcyk7CiB9CiAKLXZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlv
blNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gU2Vzc2lvbkhvc3Q6Om1hdGNo
Q2FwYWJpbGl0aWVzKEdWYXJpYW50KiBjYXBhYmlsaXRpZXMpCit7CisgICAgY29uc3QgY2hhciog
YnJvd3Nlck5hbWU7CisgICAgY29uc3QgY2hhciogYnJvd3NlclZlcnNpb247CisgICAgZ192YXJp
YW50X2dldChjYXBhYmlsaXRpZXMsICIoJnMmcykiLCAmYnJvd3Nlck5hbWUsICZicm93c2VyVmVy
c2lvbik7CisKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUpIHsKKyAgICAgICAg
aWYgKG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lLnZhbHVlKCkgIT0gYnJvd3Nlck5hbWUpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiZXhwZWN0ZWQgYnJvd3Nlck5hbWUgIiwgbV9j
YXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUudmFsdWUoKSwgIiBidXQgZ290ICIsIGJyb3dzZXJOYW1l
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUgPSBTdHJp
bmcoYnJvd3Nlck5hbWUpOworCisgICAgaWYgKG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJWZXJzaW9u
KSB7CisgICAgICAgIGlmICghV2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1Db21wYXJlQnJvd3Nl
clZlcnNpb25zKG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJWZXJzaW9uLnZhbHVlKCksIGJyb3dzZXJW
ZXJzaW9uKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJyZXF1ZXN0ZWQgYnJvd3Nl
clZlcnNpb24gaXMgIiwgbV9jYXBhYmlsaXRpZXMuYnJvd3NlclZlcnNpb24udmFsdWUoKSwgIiBi
dXQgYWN0dWFsIHZlcnNpb24gaXMgIiwgYnJvd3NlclZlcnNpb24pOworICAgIH0gZWxzZQorICAg
ICAgICBtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbiA9IFN0cmluZyhicm93c2VyVmVyc2lv
bik7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFNlc3Npb25Ib3N0Ojpz
dGFydEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBGdW5jdGlvbjx2
b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChtX2RidXNDb25uZWN0aW9uKTsKICAgICBBU1NFUlQoIW1fc3RhcnRTZXNzaW9uQ29t
cGxldGlvbkhhbmRsZXIpOwotICAgIC8vIEZJWE1FOiBNYWtlIFN0YXJ0QXV0b21hdGlvblNlc3Np
b24gcmV0dXJuIGJyb3dzZXIgaW5mb3JtYXRpb24gYW5kIHdlIHVzZSBpdCB0byBtYXRjaCBjYXBh
YmlsaXRpZXMuCiAgICAgbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29u
bmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BB
VEgsCkBAIC0yMzIsNyArMjUzLDI3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlv
blNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQKICAgICAgICAg
IlN0YXJ0QXV0b21hdGlvblNlc3Npb24iLAogICAgICAgICBnX3ZhcmlhbnRfbmV3KCIocykiLCBz
ZXNzaW9uSUQudXRmOCgpLmRhdGEoKSksCiAgICAgICAgIG51bGxwdHIsIEdfREJVU19DQUxMX0ZM
QUdTX05PX0FVVE9fU1RBUlQsCi0gICAgICAgIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBkYnVz
Q29ubmVjdGlvbkNhbGxBc3luY1JlYWR5Q2FsbGJhY2ssIG51bGxwdHIpOworICAgICAgICAtMSwg
bV9jYW5jZWxsYWJsZS5nZXQoKSwgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHJlc3VsdFZhcmlhbnQg
PSBhZG9wdEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbF9maW5pc2goR19EQlVTX0NPTk5FQ1RJ
T04oc291cmNlKSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0VmFyaWFudCAmJiBnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1Is
IEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBzdGF0aWNfY2FzdDxTZXNzaW9uSG9zdCo+KHVzZXJE
YXRhKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0VmFyaWFudCkgeworICAgICAgICAgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKHNlc3Npb25Ib3N0LT5tX3N0
YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihTdHJpbmcoIkZhaWxlZCB0byBzdGFydCBhdXRvbWF0aW9uIHNlc3Np
b24iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBhdXRvIGVycm9yU3RyaW5nID0gc2Vzc2lvbkhvc3QtPm1hdGNoQ2FwYWJpbGl0aWVzKHJl
c3VsdFZhcmlhbnQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVycm9yU3RyaW5nKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2Uoc2Vzc2lv
bkhvc3QtPm1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yU3RyaW5nKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMKKyAgICApOwogfQogCiB2
b2lkIFNlc3Npb25Ib3N0OjpzZXRUYXJnZXRMaXN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgVmVj
dG9yPFRhcmdldD4mJiB0YXJnZXRMaXN0KQpAQCAtMjU1LDYgKzI5NiwxMSBAQCB2b2lkIFNlc3Np
b25Ib3N0OjpzZXRUYXJnZXRMaXN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdl
dD4mJiB0YXJnZXRMaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFtX3N0YXJ0
U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIC8vIFNlc3Npb24gY3JlYXRpb24g
d2FzIGFscmVhZHkgcmVqZWN0ZWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2Nv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25JRDsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1f
ZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09C
SkVDVF9QQVRILApAQCAtMjY1LDcgKzMxMSw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNldFRhcmdl
dExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYmIHRhcmdldExpCiAg
ICAgICAgIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBkYnVzQ29ubmVjdGlvbkNhbGxBc3luY1Jl
YWR5Q2FsbGJhY2ssIG51bGxwdHIpOwogCiAgICAgYXV0byBzdGFydFNlc3Npb25Db21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlciwg
bnVsbHB0cik7Ci0gICAgc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBzdGFy
dFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFNlc3Np
b25Ib3N0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50
NjRfdCB0YXJnZXRJRCwgY29uc3QgY2hhciogbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmEwMDk4ZmJh
ODguLjEyY2RiMTc2MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE3LTA4LTA1ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RL
XVtXUEVdIEFkZCBBUEkgdG8gcHJvdmlkZSBicm93c2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5
IGF1dG9tYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gYSBuZXcgYXV0b21hdGlvbiBzZXNzaW9uIGlzIHN0YXJ0ZWQsIHRoZSB3ZWIgZHJp
dmVyIHJlY2VpdmVzIHNvbWUgcmVxdWlyZWQgY2FwYWJpbGl0aWVzIGZyb20gdGhlIGNsaWVudCwK
KyAgICAgICAgbGlrZSBicm93c2VyIG5hbWUgYW5kIHZlcnNpb24uIFRoZSBzZXNzaW9uIHNob3Vs
ZCBiZSByZWplY3RlZCBpZiB0aG9zZSByZXF1aXJlZCBjYXBhYmlsaXRpZXMgZG9uJ3QgbWF0Y2gg
d2l0aAorICAgICAgICB0aGUgYWN0dWFsIGJyb3dzZXIgdGhhdCBpcyBsYXVuY2hlZC4gV2UgZG9u
J3Qga25vdyB0aGF0IGluZm9ybWF0aW9uIGluIFdlYktpdCwgc28gd2UgbmVlZCB0byBhZGQgQVBJ
IHNvIHRoYXQKKyAgICAgICAgdXNlcnMgY2FuIHByb3ZpZGUgaXQgd2hlbiBhIG5ldyBzZXNzaW9u
IHJlcXVlc3QgaXMgbWFkZS4gVGhpcyBwYXRjaCBhZGRzIGJveGVkIG9iamVjdCBXZWJLaXRBcHBs
aWNhdGlvbkluZm8gdGhhdAorICAgICAgICBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGFwcGxpY2F0
aW9uIG5hbWUgYW5kIHZlcnNpb24uIFRoaXMgb2JqZWN0IGNhbiBiZSBzZXQgdG8gYSBXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiB3aGVuCisgICAgICAgIFdlYktpdFdlYkNvbnRleHQ6OmF1dG9tYXRp
b24tc3RhcnRlZCBzaWduYWwgaXMgZW1pdHRlZC4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX25ldyk6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5m
b19yZWYpOgorICAgICAgICAod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYpOgorICAgICAg
ICAod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUpOgorICAgICAgICAod2Via2l0X2Fw
cGxpY2F0aW9uX2luZm9fZ2V0X25hbWUpOgorICAgICAgICAod2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fc2V0X3ZlcnNpb24pOgorICAgICAgICAod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3Zl
cnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2UpOgorICAg
ICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3Nlck5hbWUpOgorICAgICAgICAod2Via2l0QXV0
b21hdGlvblNlc3Npb25HZXRCcm93c2VyVmVyc2lvbik6CisgICAgICAgICh3ZWJraXRfYXV0b21h
dGlvbl9zZXNzaW9uX3NldF9hcHBsaWNhdGlvbl9pbmZvKToKKyAgICAgICAgKHdlYmtpdF9hdXRv
bWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXBwbGljYXRpb25JbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0QXBwbGljYXRpb25JbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvd2Via2l0Lmg6CisKKzIwMTctMDgtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFdlYkRyaXZlcjogdXNlIGluLXZpZXcgY2VudGVy
IHBvaW50IGZvciBjbGlja3MgaW5zdGVhZCBvZiBib3VuZGluZyBib3ggY2VudGVyIHBvaW50CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4NjMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZmM5NmUzMTEyYTcuLjJmYzFmMmI0M2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTExNyw2ICsxMTcsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0Zv
cndhcmRMaXN0LmNwcApAQCAtNDE3LDYgKzQxOCw3IEBAIGVuZGlmICgpCiBzZXQoV2ViS2l0MkdU
S19JTlNUQUxMRURfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJ
X0RJUn0vV2ViS2l0RW51bVR5cGVzLmgKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RL
X0FQSV9ESVJ9L1dlYktpdFZlcnNpb24uaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCmluZGV4IDg4NDY4NWFlN2Q0Li5mMzBlNmMyYWJiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV1BFLmNtYWtlCkBAIC0xMzIsNiArMTMyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBcHBsaWNhdGlvbkluZm8uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tGb3J3YXJk
TGlzdC5jcHAKQEAgLTI3NSw2ICsyNzYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0RFUklWRURf
U09VUkNFUwogCiBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7REVSSVZFRF9T
T1VSQ0VTX1dQRV9BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMuaAorICAgICR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmgKICAg
ICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QmFja0Zvcndh
cmRMaXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEFwcGxpY2F0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi45N2U2Y2ZjZTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAKQEAgLTAsMCArMSwx
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEFwcGxpY2F0aW9uSW5mby5oIgorCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9uSW5mbyB7Cisg
ICAgQ1N0cmluZyBuYW1lOworICAgIHVpbnQ2NF90IG1ham9yVmVyc2lvbjsKKyAgICB1aW50NjRf
dCBtaW5vclZlcnNpb247CisgICAgdWludDY0X3QgbWljcm9WZXJzaW9uOworCisgICAgaW50IHJl
ZmVyZW5jZUNvdW50IHsgMSB9OworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRBcHBs
aWNhdGlvbkluZm8sIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvLCB3ZWJraXRfYXBwbGljYXRpb25f
aW5mb19yZWYsIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKQorCisvKioKKyAqIHdlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRBcHBs
aWNhdGlvbkluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXdseSBj
cmVhdGVkICNXZWJLaXRBcHBsaWNhdGlvbkluZm8uCisgKgorICogc2luY2U6IDIuMTgKKyAqLwor
V2ViS2l0QXBwbGljYXRpb25JbmZvKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcoKQorewor
ICAgIFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbyA9IHN0YXRpY19jYXN0PFdlYktpdEFwcGxp
Y2F0aW9uSW5mbyo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktpdEFwcGxpY2F0aW9uSW5mbykpKTsK
KyAgICBuZXcgKGluZm8pIFdlYktpdEFwcGxpY2F0aW9uSW5mbygpOworICAgIHJldHVybiBpbmZv
OworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3JlZjoKKyAqIEBpbmZvOiBh
ICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqCisgKiBBdG9taWNhbGx5IGluY3JlbWVudHMgdGhl
IHJlZmVyZW5jZSBjb3VudCBvZiBAaW5mbyBieSBvbmUuIFRoaXMKKyAqIGZ1bmN0aW9uIGlzIE1U
LXNhZmUgYW5kIG1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFJldHVybnM6
IFRoZSBwYXNzZWQgaW4gI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoKKyAqIFNpbmNlOiAyLjE4
CisgKi8KK1dlYktpdEFwcGxpY2F0aW9uSW5mbyogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVm
KFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAgICBnX2F0b21pY19pbnRfaW5jKCZp
bmZvLT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogd2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWY6CisgKiBAaW5mbzogYSAjV2ViS2l0QXBwbGljYXRp
b25JbmZvCisgKgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQg
b2YgQGluZm8gYnkgb25lLiBJZiB0aGUKKyAqIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAwLCBh
bGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgI1dlYktpdEFwcGxpY2F0aW9uSW5mbyBpcworICog
cmVsZWFzZWQuIFRoaXMgZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9t
IGFueQorICogdGhyZWFkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0X2Fw
cGxpY2F0aW9uX2luZm9fdW5yZWYoV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvKQoreworICAg
IGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZpbmZvLT5yZWZlcmVuY2VDb3VudCkpIHsK
KyAgICAgICAgaW5mby0+fldlYktpdEFwcGxpY2F0aW9uSW5mbygpOworICAgICAgICBmYXN0RnJl
ZShpbmZvKTsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0
X25hbWU6CisgKiBAaW5mbzogYSAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKiBAbmFtZTogdGhl
IGFwcGxpY2F0aW9uIG5hbWUKKyAqCisgKiBTZXQgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9u
LiBJZiBub3QgcHJvdmlkZWQsIG9yICVOVUxMIGlzIHBhc3NlZCwKKyAqIGdfZ2V0X3ByZ25hbWUo
KSB3aWxsIGJlIHVzZWQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19zZXRfbmFtZShXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8sIGNvbnN0
IGNoYXIqIG5hbWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKworICAgIGluZm8t
Pm5hbWUgPSBuYW1lOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9u
YW1lOgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoKKyAqIEdldCB0aGUg
bmFtZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9u
YW1lKCkgaGFzbid0IGJlZW4KKyAqIGNhbGxlZCB3aXRoIGEgdmFsaWQgbmFtZSwgdGhpcyByZXR1
cm5zIGdfZ2V0X3ByZ25hbWUoKS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgYXBwbGljYXRpb24gbmFt
ZQorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK2NvbnN0IGNoYXIqIHdlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX2dldF9uYW1lKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChpbmZvLCBudWxscHRyKTsKKworICAgIGlmICghaW5mby0+bmFtZS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIGluZm8tPm5hbWUuZGF0YSgpOworCisgICAgcmV0dXJu
IGdfZ2V0X3ByZ25hbWUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19z
ZXRfdmVyc2lvbjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqIEBtYWpv
cjogdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyCisgKiBAbWlub3I6IHRoZSBtaW5vciB2ZXJzaW9u
IG51bWJlcgorICogQG1pY3JvOiB0aGUgbWljcm8gdmVyc2lvbiBudW1iZXIKKyAqCisgKiBTZXQg
dGhlIGFwcGxpY2F0aW9uIHZlcnNpb24uIElmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IHVzZSB0
aGUgZm9ybWF0CisgKiBtYWpvci5taW5vci5taWNybyB5b3UgY2FuIHBhc3MgMCBhcyB0aGUgbWlj
cm8gdG8gdXNlIG1ham9yLm1pbm9yLCBvciBwYXNzCisgKiAwIGFzIGJvdGggbWljcm8gYW5kIG1p
bm9yIHRvIHVzZSBvbmx5IG1ham9yIG51bWJlci4gQW55IG90aGVyIGZvcm1hdCBtdXN0CisgKiBi
ZSBjb252ZXJ0ZWQgdG8gbWFqb3IubWlub3IubWljcm8gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBp
biB2ZXJzaW9uIGNvbXBhcmlzb25zLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24oV2ViS2l0QXBwbGljYXRpb25JbmZvKiBp
bmZvLCBndWludDY0IG1ham9yLCBndWludDY0IG1pbm9yLCBndWludDY0IG1pY3JvKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaW5mbyk7CisKKyAgICBpbmZvLT5tYWpvclZlcnNpb24gPSBtYWpv
cjsKKyAgICBpbmZvLT5taW5vclZlcnNpb24gPSBtaW5vcjsKKyAgICBpbmZvLT5taWNyb1ZlcnNp
b24gPSBtaWNybzsKK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVy
c2lvbjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqIEBtYWpvcjogKG91
dCk6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyCisgKiBAbWlu
b3I6IChvdXQpIChhbGxvdy1ub25lKTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgbWlub3IgdmVy
c2lvbiBudW1iZXIKKyAqIEBtaWNybzogKG91dCkgKGFsbG93LW5vbmUpOiByZXR1cm4gbG9jYXRp
b24gZm9yIHRoZSBtaWNybyB2ZXJzaW9uIG51bWJlcgorICoKKyAqIEdldCB0aGUgYXBwbGljYXRp
b24gdmVyc2lvbiBwcmV2aW91c2x5IHNldCB3aXRoIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3Nl
dF92ZXJzaW9uKCkuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBwbGlj
YXRpb25faW5mb19nZXRfdmVyc2lvbihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8sIGd1aW50
NjQqIG1ham9yLCBndWludDY0KiBtaW5vciwgZ3VpbnQ2NCogbWljcm8pCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChpbmZvICYmIG1ham9yKTsKKworICAgICptYWpvciA9IGluZm8tPm1ham9yVmVy
c2lvbjsKKyAgICBpZiAobWlub3IpCisgICAgICAgICptaW5vciA9IGluZm8tPm1pbm9yVmVyc2lv
bjsKKyAgICBpZiAobWljcm8pCisgICAgICAgICptaWNybyA9IGluZm8tPm1pY3JvVmVyc2lvbjsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5NWNjZjIwZGZmMi4uOTZjYzI5MjIwNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRBcHBsaWNhdGlvbkluZm8uaCIKICNpbmNsdWRl
ICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CkBAIC01OCw2ICs1OSw3
IEBAIGVudW0gewogCiBzdHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZSB7CiAg
ICAgUmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBzZXNzaW9uOworICAgIFdlYktpdEFwcGxp
Y2F0aW9uSW5mbyogYXBwbGljYXRpb25JbmZvOwogICAgIENTdHJpbmcgaWQ7CiB9OwogCkBAIC0x
MjgsMTIgKzEzMCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikp
OwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2UoR09iamVj
dCogb2JqZWN0KQoreworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uID0gV0VC
S0lUX0FVVE9NQVRJT05fU0VTU0lPTihvYmplY3QpOworCisgICAgaWYgKHNlc3Npb24tPnByaXYt
PmFwcGxpY2F0aW9uSW5mbykgeworICAgICAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJl
ZihzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pOworICAgICAgICBzZXNzaW9uLT5wcml2
LT5hcHBsaWNhdGlvbkluZm8gPSBudWxscHRyOworICAgIH0KKworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3Qp
OworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2NsYXNzX2luaXQo
V2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQogewogICAgIEdPYmpl
Y3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lvbkNsYXNzKTsKICAg
ICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0
UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRBdXRvbWF0
aW9uU2Vzc2lvblNldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworICAgIGdPYmplY3RDbGFzcy0+ZGlz
cG9zZSA9IHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZTsKIAogICAgIC8qKgogICAgICAq
IFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOmlkOgpAQCAtMTg3LDYgKzIwMiwzMSBAQCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uKgogICAgIHJldHVybiAqc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbjsKIH0K
IAorU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0
b21hdGlvblNlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxp
Y2F0aW9uSW5mbykKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CisK
KyAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworfQorCitTdHJpbmcgd2Via2l0QXV0b21hdGlv
blNlc3Npb25HZXRCcm93c2VyVmVyc2lvbihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lv
bikKK3sKKyAgICBpZiAoIXNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGd1aW50NjQgbWFqb3IsIG1pbm9yLCBtaWNybzsKKyAgICB3ZWJr
aXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbihzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlv
bkluZm8sICZtYWpvciwgJm1pbm9yLCAmbWljcm8pOworCisgICAgaWYgKCFtaWNybyAmJiAhbWlu
b3IpCisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtYWpvcik7CisKKyAgICBpZiAoIW1p
Y3JvKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihtYWpvciksICIu
IiwgU3RyaW5nOjpudW1iZXIobWlub3IpKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKFN0cmlu
Zzo6bnVtYmVyKG1ham9yKSwgIi4iLCBTdHJpbmc6Om51bWJlcihtaW5vciksICIuIiwgU3RyaW5n
OjpudW1iZXIobWljcm8pKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9pZDoKICAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgpAQCAtMjAy
LDMgKzI0Miw0NyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9p
ZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRyKTsKICAg
ICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOwogfQorCisvKioKKyAqIHdlYmtpdF9h
dXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm86CisgKiBAc2Vzc2lvbjogYSAj
V2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbklu
Zm8KKyAqCisgKiBTZXQgdGhlIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uIHRvIEBzZXNzaW9uLiBU
aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgZHJpdmVyIHNlcnZpY2UKKyAqIHRv
IG1hdGNoIHRoZSByZXF1ZXN0ZWQgY2FwYWJpbGl0aWVzIHdpdGggdGhlIGFjdHVhbCBhcHBsaWNh
dGlvbiBpbmZvcm1hdGlvbi4gSWYgdGhpcyBpbmZvcm1hdGlvbgorICogaXMgbm90IHByb3ZpZGVk
IHRvIHRoZSBzZXNzaW9uIHdoZW4gYSBuZXcgYXV0b21hdGlvbiBzZXNzaW9uIGlzIHJlcXVlc3Rl
ZCwgdGhlIGNyZWF0aW9uIG1pZ2h0IGZhaWwKKyAqIGlmIHRoZSBjbGllbnQgcmVxdWVzdGVkIGEg
c3BlY2lmaWMgYnJvd3NlciBuYW1lIG9yIHZlcnNpb24uIFRoaXMgd2lsbCBub3QgaGF2ZSBhbnkg
ZWZmZWN0IHdoZW4gY2FsbGVkCisgKiBhZnRlciB0aGUgYXV0b21hdGlvbiBzZXNzaW9uIGhhcyBi
ZWVuIGZ1bGx5IGNyZWF0ZWQsIHNvIHRoaXMgbXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNhbGxiYWNr
IG9mCisgKiAjV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIHNpZ25hbC4KKyAq
CisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0
X2FwcGxpY2F0aW9uX2luZm8oV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIFdlYktp
dEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5m
byk7CisKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvID09IGluZm8pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8p
CisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKHNlc3Npb24tPnByaXYtPmFw
cGxpY2F0aW9uSW5mbyk7CisgICAgc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvID0gd2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmKGluZm8pOworfQorCisvKioKKyAqIHdlYmtpdF9hdXRv
bWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm86CisgKiBAc2Vzc2lvbjogYSAjV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisgKiBHZXQgdGhlICNXZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbiBwcmV2aW91c2x5IHNldCB3aXRoIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2Fw
cGxpY2F0aW9uX2luZm8oKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAj
V2ViS2l0QXV0b21hdGlvblNlc3Npb24gb2YgQHNlc3Npb24sIG9yICVOVUxMIGlmIG5vIG9uZSBo
YXMgYmVlbiBzZXQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworV2ViS2l0QXBwbGljYXRpb25J
bmZvKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbiksIG51bGxwdHIpOworCisgICAg
cmV0dXJuIHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbzsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb25Qcml2YXRlLmgKaW5kZXggNTUyNTc4M2VmNjQuLjQwY2Q5MzIxYjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAtMjQsMyArMjQsNSBAQAogCiBXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29uc3QgY2hh
ciogc2Vzc2lvbklEKTsKIFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtpdEF1dG9t
YXRpb25TZXNzaW9uR2V0U2Vzc2lvbihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOworU3RyaW5n
IHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNl
c3Npb24qKTsKK1N0cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9u
KFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGY3ODE4ZTdiOWYzLi40
YWI5MDFlZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIxNCwxMiArMjE0LDI4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgYm9vbCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIFN0cmluZyBicm93c2VyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNl
c3Npb24pCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJldHVybiB3ZWJraXRB
dXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJOYW1lKG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21h
dGlvblNlc3Npb24uZ2V0KCkpOworICAgIH0KKworICAgIFN0cmluZyBicm93c2VyVmVyc2lvbigp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fd2ViQ29udGV4dC0+cHJpdi0+
YXV0b21hdGlvblNlc3Npb24pCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJl
dHVybiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKG1fd2ViQ29udGV4
dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpOworICAgIH0KKwogICAgIHZvaWQgcmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21h
dGlvblNlc3Npb24pOwogICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25TZXNz
aW9uID0gYWRvcHRHUmVmKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKHNlc3Npb25JZGVu
dGlmaWVyLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgbV93ZWJDb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC0+c2V0QXV0b21hdGlvblNlc3Npb24oJndlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0
U2Vzc2lvbihtX3dlYkNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25TZXNzaW9uLmdldCgpKSk7CiAg
ICAgICAgIGdfc2lnbmFsX2VtaXQobV93ZWJDb250ZXh0LCBzaWduYWxzW0FVVE9NQVRJT05fU1RB
UlRFRF0sIDAsIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpOwor
ICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vz
c2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29udGV4dC0+cHJp
di0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKICAgICBXZWJLaXRXZWJDb250
ZXh0KiBtX3dlYkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMzRkYjliOWNjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVk
KF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQor
I2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5
LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEFwcGxpY2F0aW9uSW5mb19oCisjZGVmaW5lIFdl
YktpdEFwcGxpY2F0aW9uSW5mb19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTyAod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0
X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9uSW5mbyBXZWJLaXRB
cHBsaWNhdGlvbkluZm87CisKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fZ2V0X3R5cGUgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxpY2F0aW9u
SW5mbyAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcgICAgICAgICAodm9pZCk7CisKK1dF
QktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X3JlZiAgICAgICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmICAgICAgIChXZWJLaXRBcHBsaWNh
dGlvbkluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9p
bmZvX3NldF9uYW1lICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpuYW1lKTsK
K1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25h
bWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24gKFdlYktpdEFwcGxpY2F0aW9uSW5m
byAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAg
ICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd1aW50NjQgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtaWNybyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24gKFdlYktpdEFwcGxpY2F0
aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dDY0ICAgICAgICAgICAgICAgKm1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAqbWlub3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptaWNybyk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IGEwOGYxZjY1ZTk2Li44Mzlk
ZmUzNGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbl9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXBwbGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTU2LDEwICs1NywxNyBAQCBz
dHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBH
VHlwZQotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lU
X0FQSSBjb25zdCBjaGFyICoKLXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lkICAgKFdl
YktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Np
b25fZ2V0X2lkICAgICAgICAgICAgICAgKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9u
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3NldF9hcHBs
aWNhdGlvbl9pbmZvIChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEFwcGxpY2F0aW9u
SW5mbyAgICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Vi
a2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbyAoV2ViS2l0QXV0b21h
dGlvblNlc3Npb24gKnNlc3Npb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4w
LXNlY3Rpb25zLnR4dAppbmRleCBjMmIwYTJkMDBkOS4uYTEzYzMyZDJiOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTM1OCw2ICsxMzU4LDggQEAgV0VCS0lUX1RZUEVf
TkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJTkdTCiA8RklMRT5XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbjwvRklMRT4KIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCiB3ZWJraXRfYXV0b21hdGlvbl9z
ZXNzaW9uX2dldF9pZAord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25f
aW5mbword2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbwogCiA8
U1VCU0VDVElPTiBQcml2YXRlPgogV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlCkBAIC0x
Mzc0LDYgKzEzNzYsMjQgQEAgV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9HRVRfQ0xBU1MKIDwv
U0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRBcHBsaWNhdGlvbkluZm88L0ZJTEU+
CitXZWJLaXRBcHBsaWNhdGlvbkluZm8KK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldword2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmCit3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJlZgor
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X2dldF9uYW1lCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbgord2Via2l0X2Fw
cGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX2dldF90eXBlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VC
S0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTworPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxF
PldlYktpdFdlYkV4dGVuc2lvbjwvRklMRT4KIFdlYktpdFdlYkV4dGVuc2lvbgogV2ViS2l0V2Vi
RXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggZTMxOWRj
YTQyOTcuLjdjMWQ1NDUwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC01OSw2ICs1OSw3IEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Npb24ueG1sIi8+
CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4K
ICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAppbmRleCBhZTUwYjM1MDVmNi4uZmIwNDc2ZjFiMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNk
ZWZpbmUgX19XRUJLSVQyX0hfSU5TSURFX18KIAorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXBw
bGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNhdGlvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXBwbGljYXRpb25JbmZvLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZWUwZDRmMWUzMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXBwbGlj
YXRpb25JbmZvLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBp
bmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRBcHBsaWNhdGlvbklu
Zm9faAorI2RlZmluZSBXZWJLaXRBcHBsaWNhdGlvbkluZm9faAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTyAod2Via2l0X2FwcGxpY2F0
aW9uX2luZm9fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9u
SW5mbyBXZWJLaXRBcHBsaWNhdGlvbkluZm87CisKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3R5cGUgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktp
dEFwcGxpY2F0aW9uSW5mbyAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcgICAgICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoKK3dlYmtpdF9hcHBs
aWNhdGlvbl9pbmZvX3JlZiAgICAgICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmICAgICAgIChX
ZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9h
cHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICpuYW1lKTsKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fZ2V0X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24gKFdlYktpdEFw
cGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludDY0ICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtaWNybyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24gKFdl
YktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgKm1ham9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAqbWlub3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptaWNy
byk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDllNjJj
ZGYwYTRlLi5jMGQ0ZjI1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApAQCAtMjUsNiArMjUsNyBA
QAogI2RlZmluZSBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbl9oCiAKICNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaD4KICNpbmNsdWRl
IDx3cGUvV2ViS2l0RGVmaW5lcy5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC01NiwxMCArNTcsMTcg
QEAgc3RydWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9B
UEkgR1R5cGUKLXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5cGUgKHZvaWQpOword2Vi
a2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7CiAKIFdF
QktJVF9BUEkgY29uc3QgY2hhciAqCi13ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9pZCAg
IChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7Cit3ZWJraXRfYXV0b21hdGlvbl9z
ZXNzaW9uX2dldF9pZCAgICAgICAgICAgICAgIChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vz
c2lvbik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRf
YXBwbGljYXRpb25faW5mbyAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBcHBsaWNh
dGlvbkluZm8gICAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoK
K3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8gKFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKaW5kZXggOTQyMGNhNGRhNTUuLjU1YWUzODI5OWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2RlZmluZSBfX1dFQktJVF9IX0lOU0lERV9fCiAKKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWYzMGQyMzcwNC4uYjIxYjBkOWJkYTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgYnJvd3Nl
ciBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6Cisg
ICAgICAgIChhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKTogU2V0IGJyb3dzZXIgaW5mb3JtYXRp
b24gd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgc3RhcnRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoK
KyAgICAgICAgKHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxpY2F0aW9uSW5mbyk6CisgICAgICAg
IChiZWZvcmVBbGwpOgorCiAyMDE3LTA4LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJXSBBZGQgQ2FjaGUgYW5kIENhY2hlU3RvcmFnZSBJ
REwgZGVmaW5pdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDU3MDU1NDA1NmEyLi41ZTc2ZWQ4
YWIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00NTgsNiArNDU4LDExIEBAIHN0YXRpYyBHdGtX
aWRnZXQgKmNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2soV2ViS2l0QXV0b21hdGlv
blNlc3Npb24qIHNlCiAKIHN0YXRpYyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2Vi
S2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Np
b24pCiB7CisgICAgV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvID0gd2Via2l0X2FwcGxpY2F0
aW9uX2luZm9fbmV3KCk7CisgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24o
aW5mbywgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJLSVRf
TUlDUk9fVkVSU0lPTik7CisgICAgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGlj
YXRpb25faW5mbyhzZXNzaW9uLCBpbmZvKTsKKyAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb191
bnJlZihpbmZvKTsKKwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwgImNyZWF0ZS13ZWIt
dmlldyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25DYWxsYmFjayksIE5V
TEwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDMxY2Q2ODZmOTVkLi5l
MDFiNjcxYTljMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTE2OCw2ICsxNjgs
MTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKICAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3Nlc3Np
b24pKTsKKyAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2Fw
cGxpY2F0aW9uX2luZm8oc2Vzc2lvbikpOworICAgICAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8q
IGluZm8gPSB3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcoKTsKKyAgICAgICAgd2Via2l0X2Fw
cGxpY2F0aW9uX2luZm9fc2V0X25hbWUoaW5mbywgIkF1dG9tYXRpb25UZXN0QnJvd3NlciIpOwor
ICAgICAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbihpbmZvLCBXRUJLSVRf
TUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9O
KTsKKyAgICAgICAgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25faW5m
byhzZXNzaW9uLCBpbmZvKTsKKyAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYo
aW5mbyk7CisgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2Fw
cGxpY2F0aW9uX2luZm8oc2Vzc2lvbikgPT0gaW5mbyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZv
aWQgYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0
LCBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiwgQXV0b21hdGlvblRlc3QqIHRlc3Qp
CkBAIC0xODEsNyArMTg4LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2lnbmFs
SUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3Rh
cnRlZCIsIEdfQ0FMTEJBQ0soYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOwogICAg
ICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwg
Ii9vcmcvd2Via2l0L0luc3BlY3RvciIsICJvcmcud2Via2l0Lkluc3BlY3RvciIsCi0gICAgICAg
ICAgICAiU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Np
b25JRCksIG51bGxwdHIsIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgICAgICJTdGFydEF1dG9tYXRpb25TZXNz
aW9uIiwgZ192YXJpYW50X25ldygiKHMpIiwgc2Vzc2lvbklEKSwgbnVsbHB0ciwgR19EQlVTX0NB
TExfRkxBR1NfTk9fQVVUT19TVEFSVCwgLTEsIG51bGxwdHIsCisgICAgICAgICAgICBbXShHT2Jq
ZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewor
ICAgICAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+
KHVzZXJEYXRhKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3QtPm1fc2Vzc2lvbikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFu
dD4gY2FwYWJpbGl0aWVzID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9uX2NhbGxfZmluaXNo
KEdfREJVU19DT05ORUNUSU9OKHNvdXJjZSksIHJlc3VsdCwgbnVsbHB0cikpOworICAgICAgICAg
ICAgICAgIGdfYXNzZXJ0KGNhcGFiaWxpdGllcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYnJvd3Nlck5hbWU7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnJvd3Nl
clZlcnNpb247CisgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldChjYXBhYmlsaXRpZXMuZ2V0
KCksICIoJnMmcykiLCAmYnJvd3Nlck5hbWUsICZicm93c2VyVmVyc2lvbik7CisgICAgICAgICAg
ICAgICAgZ19hc3NlcnRfY21wc3RyKGJyb3dzZXJOYW1lLCA9PSwgIkF1dG9tYXRpb25UZXN0QnJv
d3NlciIpOworICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmVyc2lvblN0cmluZyhn
X3N0cmR1cF9wcmludGYoIiV1LiV1LiV1IiwgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9N
SU5PUl9WRVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTikpOworICAgICAgICAgICAgICAgIGdf
YXNzZXJ0X2NtcHN0cihicm93c2VyVmVyc2lvbiwgPT0sIHZlcnNpb25TdHJpbmcuZ2V0KCkpOwor
ICAgICAgICAgICAgfSwgdGhpcworICAgICAgICApOwogICAgICAgICBhdXRvIHRpbWVvdXRJRCA9
IGdfdGltZW91dF9hZGQoMTAwMCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsK
ICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNl
ckRhdGEpKTsKICAgICAgICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CkBAIC0yNzgsMTEg
KzMwMCwzNCBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lv
bihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgRkFMU0Up
OwogfQogCitzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25BcHBsaWNhdGlvbkluZm8o
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8q
IGluZm8gPSB3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcoKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoaW5mbyksID09LCBnX2dldF9wcmdu
YW1lKCkpOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGluZm8sICJXZWJL
aXRHVEtCcm93c2VyIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hcHBsaWNhdGlvbl9p
bmZvX2dldF9uYW1lKGluZm8pLCA9PSwgIldlYktpdEdUS0Jyb3dzZXIiKTsKKyAgICB3ZWJraXRf
YXBwbGljYXRpb25faW5mb19zZXRfbmFtZShpbmZvLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoaW5mbyksID09LCBnX2dldF9w
cmduYW1lKCkpOworCisgICAgZ3VpbnQ2NCBtYWpvciwgbWlub3IsIG1pY3JvOworICAgIHdlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uKGluZm8sICZtYWpvciwgbnVsbHB0ciwgbnVs
bHB0cik7CisgICAgZ19hc3NlcnRfY21wdWludChtYWpvciwgPT0sIDApOworICAgIHdlYmtpdF9h
cHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uKGluZm8sIDEsIDIsIDMpOworICAgIHdlYmtpdF9h
cHBsaWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uKGluZm8sICZtYWpvciwgJm1pbm9yLCAmbWljcm8p
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQobWFqb3IsID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KG1pbm9yLCA9PSwgMik7CisgICAgZ19hc3NlcnRfY21wdWludChtaWNybywgPT0sIDMpOwor
CisgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoaW5mbyk7Cit9CisKKwogdm9pZCBi
ZWZvcmVBbGwoKQogewogICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIsICIx
MjcuMC4wLjE6MjIyOSIsIFRSVUUpOwogCiAgICAgQXV0b21hdGlvblRlc3Q6OmFkZCgiV2ViS2l0
QXV0b21hdGlvblNlc3Npb24iLCAicmVxdWVzdC1zZXNzaW9uIiwgdGVzdEF1dG9tYXRpb25TZXNz
aW9uUmVxdWVzdFNlc3Npb24pOworICAgIFRlc3Q6OmFkZCgiV2ViS2l0QXV0b21hdGlvblNlc3Np
b24iLCAiYXBwbGljYXRpb24taW5mbyIsIHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxpY2F0aW9u
SW5mbyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317336</attachid>
            <date>2017-08-05 04:20:25 -0700</date>
            <delta_ts>2017-08-06 01:06:53 -0700</delta_ts>
            <desc>Try to fix WPE build</desc>
            <filename>wd-capabilities-api.diff</filename>
            <type>text/plain</type>
            <size>47289</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2YjBlZGQ2NDc0Li43MjU1Mzg5MGFlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIEFQSSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0
b21hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGJyb3dzZXJOYW1lIGFuZCBicm93c2VyVmVyc2lvbiB0byBSZW1vdGVJbnNwZWN0b3I6OkNs
aWVudDo6Q2FwYWJpbGl0aWVzIGFuZCB2aXJ0dWFsIG1ldGhvZHMgdG8gdGhlIENsaWVudCB0bwor
ICAgICAgICBnZXQgdGhlbS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVD
bGllbnRDYXBhYmlsaXRpZXMpOiBVcGRhdGUgYWxzbyBicm93c2VyTmFtZSBhbmQgYnJvd3NlclZl
cnNpb24uCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVxdWVzdEF1dG9tYXRpb25TZXNz
aW9uKTogQ2FsbCB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKSBhZnRlciB0aGUgc2Vzc2lvbiBp
cworICAgICAgICByZXF1ZXN0ZWQgdG8gZW5zdXJlIHRoZXkgYXJlIHVwZGF0ZWQgYmVmb3JlIFN0
YXJ0QXV0b21hdGlvblNlc3Npb24gcmVwbHkgaXMgc2VudC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcDogQWRkIGJyb3dzZXJOYW1lIGFu
ZCBicm93c2VyVmVyc2lvbiBhcyByZXR1cm4gdmFsdWVzIG9mCisgICAgICAgIFN0YXJ0QXV0b21h
dGlvblNlc3Npb24gbWVzYXNhZ2UuCisKIDIwMTctMDgtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEldIEFkZCBDYWNoZSBhbmQgQ2FjaGVT
dG9yYWdlIElETCBkZWZpbml0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggOGZlMGNmZDcz
ZWUuLmUwZTg0YThmMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTEzMyw3ICsxMzMsOSBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKICAgICAg
ICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAg
ICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxp
dGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgp
IC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCisgICAgICAgICAgICBtX2NsaWVudC0+cmVtb3Rl
QXV0b21hdGlvbkFsbG93ZWQoKSwKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm93c2VyTmFtZSgp
LAorICAgICAgICAgICAgbV9jbGllbnQtPmJyb3dzZXJWZXJzaW9uKCkKICAgICAgICAgfTsKIAog
ICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCmluZGV4IDU1Njc4NDUxYTM2Li44M2NmMjU4NjEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKQEAgLTY2LDEwICs2NywxNCBAQCBwdWJsaWM6CiAgICAg
cHVibGljOgogICAgICAgICBzdHJ1Y3QgQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgICAgIGJvb2wg
cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQgOiAxOworICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJO
YW1lOworICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uOwogICAgICAgICB9OwogCiAg
ICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3Rl
QXV0b21hdGlvbkFsbG93ZWQoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGJy
b3dzZXJOYW1lKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGJyb3dzZXJWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRp
ZmllcikgPSAwOwogICAgIH07CiAKQEAgLTg1LDYgKzkwLDcgQEAgcHVibGljOgogICAgIFJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQog
ICAgIHZvaWQgc2V0Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Kik7CiAgICAgdm9pZCBj
bGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IGNsaWVudENhcGFiaWxpdGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50Q2FwYWJpbGl0aWVzOyB9CiAKICAgICB2b2lkIHNldHVwRmFpbGVk
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQodW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGli
LmNwcAppbmRleCA2Njg0NzExM2QzNS4uOGNmMWNjMzgyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JHbGliLmNwcApAQCAtMzU1LDYgKzM1NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklEKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC0+cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFN0
cmluZzo6ZnJvbVVURjgoc2Vzc2lvbklEKSk7CisgICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVz
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDQxM2YxMTI2YzVhLi5hMWM1YjJiN2QyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtNzksNiArNzksOCBAQCBz
dGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgICAgPC9tZXRob2Q+
IgogICAgICIgICAgPG1ldGhvZCBuYW1lPSdTdGFydEF1dG9tYXRpb25TZXNzaW9uJz4iCiAgICAg
IiAgICAgIDxhcmcgdHlwZT0ncycgbmFtZT0nc2Vzc2lvbklEJyBkaXJlY3Rpb249J2luJy8+Igor
ICAgICIgICAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Jyb3dzZXJOYW1lJyBkaXJlY3Rpb249J291
dCcvPiIKKyAgICAiICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdicm93c2VyVmVyc2lvbicgZGly
ZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgICA8L21ldGhvZD4iCiAgICAgIiAgPC9pbnRlcmZhY2U+
IgogICAgICI8L25vZGU+IjsKQEAgLTEyMSw3ICsxMjMsMTAgQEAgY29uc3QgR0RCdXNJbnRlcmZh
Y2VWVGFibGUgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzX2ludGVyZmFjZVZUYWJsZSA9IHsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHNlc3Npb25JRDsKICAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIigmcykiLCAmc2Vzc2lvbklEKTsKICAgICAgICAgICAgIGluc3BlY3Rv
clNlcnZlci0+c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25uZWN0aW9uLCBzZXNzaW9uSUQpOwot
ICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLCBudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gY2FwYWJpbGl0aWVzID0gUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKHNzKSIsCisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID8gY2FwYWJpbGl0aWVz
LT5icm93c2VyTmFtZS51dGY4KCkuZGF0YSgpIDogIiIsCisgICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzID8gY2FwYWJpbGl0aWVzLT5icm93c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25f
cmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIG51bGxwdHIpOwogICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmlu
ZGV4IDVmNDkxNzA2MDRhLi44NTQ3MDQwMjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
NCBAQAogMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgYnJvd3NlciBpbmZv
cm1hdGlvbiByZXF1aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uOjpjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCk6IENoZWNrIGlmIHN0YXJ0
QXV0b21hdGlvblNlc3Npb24gYW5kIGNvbXBsZXRlIHRoZSBjb21tYW5kCisgICAgICAgIHdpdGgg
ZXJyb3IgaW4gdGhhdCBjYXNlLgorICAgICAgICAqIFNlc3Npb25Ib3N0Lmg6CisgICAgICAgICog
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9z
dDo6bWF0Y2hDYXBhYmlsaXRpZXMpOiBNYXRjaCB0aGUgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGtu
b3duIG9ubHkgYWZ0ZXIgdGhlIGJyb3dzZXIgaGFzCisgICAgICAgIGJlZW4gbGF1bmNoZWQuCisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKTog
SGFuZGxlIHRoZSBTdGFydEF1dG9tYXRpb25TZXNzaW9uIHJlc3BvbnNlLCBleHRyYWN0aW5nIHRo
ZQorICAgICAgICBjYXBhYmlsaXRpZXMgYW5kIGNhbGxpbmcgbWF0Y2hDYXBhYmlsaXRpZXMoKSB0
byBtYXRjaCB0aGVtLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0
TGlzdCk6IFJldHVybiBlYXJseSBpZiB0aGUgc2Vzc2lvbiB3YXMgcmVqZWN0ZWQgYmVmb3JlIGR1
ZSB0byBpbnZhbGlkCisgICAgICAgIGNhcGFiaWxpdGllcy4KKworMjAxNy0wOC0wNSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgV2ViRHJpdmVy
OiBJbXBsZW1lbnQgcGFnZSBsb2FkIHN0cmF0ZWd5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxODMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggNTJi
NDIyNzA1NDkuLjY2YjJlZGRmMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTEyMiw3ICsxMjIs
MTEgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IFNlc3Npb246OnBhZ2VMb2FkU3RyYXRlZ3lTdHJp
bmcoKSBjb25zdAogdm9pZCBTZXNzaW9uOjpjcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChG
dW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICBtX2hv
c3QtPnN0YXJ0QXV0b21hdGlvblNlc3Npb24obV9pZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX2hvc3QtPnN0YXJ0QXV0b21hdGlvblNlc3Npb24obV9p
ZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVy
cm9yTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3Vs
dDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IsIGVycm9yTWVzc2FnZS52YWx1ZSgpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZChBU0NJSUxpdGVyYWwoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIpLCBudWxscHRyLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNl
JiYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3Ig
fHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oIGIvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCmluZGV4IDZhNzljN2U4OGY5Li4xYjk3ZmVmOGNl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAg
ICBlbnVtIGNsYXNzIFN1Y2NlZWRlZCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGNvbm5lY3RUb0Jy
b3dzZXIoRnVuY3Rpb248dm9pZCAoU3VjY2VlZGVkKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1dG9t
YXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkICgpPiYm
KTsKKyAgICB2b2lkIHN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgc3Ry
dWN0IENvbW1hbmRSZXNwb25zZSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gcmVzcG9uc2VPYmplY3Q7CkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaW50ZXJmYWNlVlRhYmxlOwogICAg
IHZvaWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChTdWNjZWVkZWQpPiYmKTsKICAgICB2
b2lkIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3lu
Y0RhdGE+JiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXRjaENhcGFiaWxpdGllcyhH
VmFyaWFudCopOwogICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uKEdSZWZQdHI8R0RCdXNDb25uZWN0
aW9uPiYmLCBGdW5jdGlvbjx2b2lkIChTdWNjZWVkZWQpPiYmKTsKICAgICB2b2lkIHNldFRhcmdl
dExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYmKTsKICAgICB2b2lk
IHNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRh
cmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKQEAgLTk0LDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBsb25nIG1fY2xvc2VNZXNzYWdlSUQgeyAwIH07CiAKICNpZiBVU0UoR0xJQikKLSAgICBG
dW5jdGlvbjx2b2lkICgpPiBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOworICAgIEZ1
bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+IG1fc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gbV9icm93c2VyOwogICAgIEdS
ZWZQdHI8R0RCdXNDb25uZWN0aW9uPiBtX2RidXNDb25uZWN0aW9uOwogICAgIEdSZWZQdHI8R0Nh
bmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9n
bGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhv
c3RHbGliLmNwcAppbmRleCAwZTNhMmIzYjgyNi4uYzcwZDM5MDJjZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Vzc2lvbkhvc3QuaCIKIAorI2luY2x1ZGUgIldlYkRy
aXZlclNlcnZpY2UuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0yMjAsMTEgKzIyMSwz
MSBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZXR1cENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1c0Nvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgRnVuY3RpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFN1Y2Nl
ZWRlZDo6WWVzKTsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uSG9zdDo6bWF0Y2hDYXBhYmls
aXRpZXMoR1ZhcmlhbnQqIGNhcGFiaWxpdGllcykKK3sKKyAgICBjb25zdCBjaGFyKiBicm93c2Vy
TmFtZTsKKyAgICBjb25zdCBjaGFyKiBicm93c2VyVmVyc2lvbjsKKyAgICBnX3ZhcmlhbnRfZ2V0
KGNhcGFiaWxpdGllcywgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJzaW9uKTsK
KworICAgIGlmIChtX2NhcGFiaWxpdGllcy5icm93c2VyTmFtZSkgeworICAgICAgICBpZiAobV9j
YXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUudmFsdWUoKSAhPSBicm93c2VyTmFtZSkKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJleHBlY3RlZCBicm93c2VyTmFtZSAiLCBtX2NhcGFiaWxp
dGllcy5icm93c2VyTmFtZS52YWx1ZSgpLCAiIGJ1dCBnb3QgIiwgYnJvd3Nlck5hbWUpOworICAg
IH0gZWxzZQorICAgICAgICBtX2NhcGFiaWxpdGllcy5icm93c2VyTmFtZSA9IFN0cmluZyhicm93
c2VyTmFtZSk7CisKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMuYnJvd3NlclZlcnNpb24pIHsKKyAg
ICAgICAgaWYgKCFXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybUNvbXBhcmVCcm93c2VyVmVyc2lv
bnMobV9jYXBhYmlsaXRpZXMuYnJvd3NlclZlcnNpb24udmFsdWUoKSwgYnJvd3NlclZlcnNpb24p
KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInJlcXVlc3RlZCBicm93c2VyVmVyc2lv
biBpcyAiLCBtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbi52YWx1ZSgpLCAiIGJ1dCBhY3R1
YWwgdmVyc2lvbiBpcyAiLCBicm93c2VyVmVyc2lvbik7CisgICAgfSBlbHNlCisgICAgICAgIG1f
Y2FwYWJpbGl0aWVzLmJyb3dzZXJWZXJzaW9uID0gU3RyaW5nKGJyb3dzZXJWZXJzaW9uKTsKKwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0
b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KG1fZGJ1c0Nvbm5lY3Rpb24pOwogICAgIEFTU0VSVCghbV9zdGFydFNlc3Npb25Db21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgLy8gRklYTUU6IE1ha2UgU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiByZXR1
cm4gYnJvd3NlciBpbmZvcm1hdGlvbiBhbmQgd2UgdXNlIGl0IHRvIG1hdGNoIGNhcGFiaWxpdGll
cy4KICAgICBtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9u
LmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKQEAg
LTIzMiw3ICsyNTMsMjcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZAogICAgICAgICAiU3RhcnRB
dXRvbWF0aW9uU2Vzc2lvbiIsCiAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25J
RC51dGY4KCkuZGF0YSgpKSwKICAgICAgICAgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9f
QVVUT19TVEFSVCwKLSAgICAgICAgLTEsIG1fY2FuY2VsbGFibGUuZ2V0KCksIGRidXNDb25uZWN0
aW9uQ2FsbEFzeW5jUmVhZHlDYWxsYmFjaywgbnVsbHB0cik7CisgICAgICAgIC0xLCBtX2NhbmNl
bGxhYmxlLmdldCgpLCBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVy
cm9yOworICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0VmFyaWFudCA9IGFkb3B0
R1JlZihnX2RidXNfY29ubmVjdGlvbl9jYWxsX2ZpbmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3Vy
Y2UpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICAgICAgaWYgKCFyZXN1bHRW
YXJpYW50ICYmIGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19F
UlJPUl9DQU5DRUxMRUQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
YXV0byBzZXNzaW9uSG9zdCA9IHN0YXRpY19jYXN0PFNlc3Npb25Ib3N0Kj4odXNlckRhdGEpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bHRWYXJpYW50KSB7CisgICAgICAgICAgICAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2Uoc2Vzc2lvbkhvc3QtPm1fc3RhcnRTZXNz
aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFN0cmluZygiRmFpbGVkIHRvIHN0YXJ0IGF1dG9tYXRpb24gc2Vzc2lvbiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1
dG8gZXJyb3JTdHJpbmcgPSBzZXNzaW9uSG9zdC0+bWF0Y2hDYXBhYmlsaXRpZXMocmVzdWx0VmFy
aWFudC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uSG9zdC0+
bV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3JTdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgdGhpcworICAgICk7CiB9CiAKIHZvaWQgU2Vz
c2lvbkhvc3Q6OnNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFy
Z2V0PiYmIHRhcmdldExpc3QpCkBAIC0yNTUsNiArMjk2LDExIEBAIHZvaWQgU2Vzc2lvbkhvc3Q6
OnNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0PiYmIHRh
cmdldExpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoIW1fc3RhcnRTZXNzaW9u
Q29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgLy8gU2Vzc2lvbiBjcmVhdGlvbiB3YXMgYWxy
ZWFkeSByZWplY3RlZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fY29ubmVjdGlv
bklEID0gY29ubmVjdGlvbklEOwogICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29u
bmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BB
VEgsCkBAIC0yNjUsNyArMzExLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCh1
aW50NjRfdCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYgdGFyZ2V0TGkKICAgICAgICAg
LTEsIG1fY2FuY2VsbGFibGUuZ2V0KCksIGRidXNDb25uZWN0aW9uQ2FsbEFzeW5jUmVhZHlDYWxs
YmFjaywgbnVsbHB0cik7CiAKICAgICBhdXRvIHN0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRy
KTsKLSAgICBzdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcigpOworICAgIHN0YXJ0U2Vzc2lv
bkNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRh
cmdldElELCBjb25zdCBjaGFyKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NDkwMzhlYTBmMi4uMWRh
ZDJhNDk5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcgQEAKIDIwMTctMDgtMDUgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdW1dQRV0g
QWRkIEFQSSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0b21h
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBhIG5ldyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgc3RhcnRlZCwgdGhlIHdlYiBkcml2ZXIgcmVj
ZWl2ZXMgc29tZSByZXF1aXJlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgY2xpZW50LAorICAgICAg
ICBsaWtlIGJyb3dzZXIgbmFtZSBhbmQgdmVyc2lvbi4gVGhlIHNlc3Npb24gc2hvdWxkIGJlIHJl
amVjdGVkIGlmIHRob3NlIHJlcXVpcmVkIGNhcGFiaWxpdGllcyBkb24ndCBtYXRjaCB3aXRoCisg
ICAgICAgIHRoZSBhY3R1YWwgYnJvd3NlciB0aGF0IGlzIGxhdW5jaGVkLiBXZSBkb24ndCBrbm93
IHRoYXQgaW5mb3JtYXRpb24gaW4gV2ViS2l0LCBzbyB3ZSBuZWVkIHRvIGFkZCBBUEkgc28gdGhh
dAorICAgICAgICB1c2VycyBjYW4gcHJvdmlkZSBpdCB3aGVuIGEgbmV3IHNlc3Npb24gcmVxdWVz
dCBpcyBtYWRlLiBUaGlzIHBhdGNoIGFkZHMgYm94ZWQgb2JqZWN0IFdlYktpdEFwcGxpY2F0aW9u
SW5mbyB0aGF0CisgICAgICAgIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgYXBwbGljYXRpb24gbmFt
ZSBhbmQgdmVyc2lvbi4gVGhpcyBvYmplY3QgY2FuIGJlIHNldCB0byBhIFdlYktpdEF1dG9tYXRp
b25TZXNzaW9uIHdoZW4KKyAgICAgICAgV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFy
dGVkIHNpZ25hbCBpcyBlbWl0dGVkLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fbmV3KToKKyAgICAgICAgKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3JlZik6
CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJlZik6CisgICAgICAgICh3ZWJr
aXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRp
b25faW5mb19nZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRf
dmVyc2lvbik6CisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZSk6CisgICAgICAgICh3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0QXV0
b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZSk6CisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKToKKyAgICAgICAgKHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm8pOgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRBcHBsaWNhdGlvbkluZm8uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0QXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS93
ZWJraXQuaDoKKworMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKICAgICAgICAgV2ViRHJpdmVyOiBJbXBsZW1lbnQgcGFnZSBsb2FkIHN0cmF0
ZWd5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUx
ODMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZmM5NmUzMTEyYTcuLjJmYzFmMmI0M2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTExNyw2ICsxMTcsNyBAQCBsaXN0KEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNDE3LDYgKzQxOCw3IEBAIGVuZGlmICgpCiBzZXQoV2Vi
S2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJH
VEtfQVBJX0RJUn0vV2ViS2l0RW51bVR5cGVzLmgKICAgICAke0RFUklWRURfU09VUkNFU19XRUJL
SVQyR1RLX0FQSV9ESVJ9L1dlYktpdFZlcnNpb24uaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvY2xlYW51cHMuaAogICAgICR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDg4NDY4NWFlN2Q0Li5mMzBlNmMyYWJiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xMzIsNiArMTMyLDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCiAKICAgICBV
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tG
b3J3YXJkTGlzdC5jcHAKQEAgLTI3NSw2ICsyNzYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0RF
UklWRURfU09VUkNFUwogCiBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dQRV9BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMuaAorICAgICR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCiAgICAgJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbi5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QmFj
a0ZvcndhcmRMaXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi45N2U2Y2ZjZTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAKQEAgLTAs
MCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEFwcGxpY2F0aW9uSW5mby5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9uSW5m
byB7CisgICAgQ1N0cmluZyBuYW1lOworICAgIHVpbnQ2NF90IG1ham9yVmVyc2lvbjsKKyAgICB1
aW50NjRfdCBtaW5vclZlcnNpb247CisgICAgdWludDY0X3QgbWljcm9WZXJzaW9uOworCisgICAg
aW50IHJlZmVyZW5jZUNvdW50IHsgMSB9OworfTsKKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJL
aXRBcHBsaWNhdGlvbkluZm8sIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvLCB3ZWJraXRfYXBwbGlj
YXRpb25faW5mb19yZWYsIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKQorCisvKioKKyAq
IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJL
aXRBcHBsaWNhdGlvbkluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBu
ZXdseSBjcmVhdGVkICNXZWJLaXRBcHBsaWNhdGlvbkluZm8uCisgKgorICogc2luY2U6IDIuMTgK
KyAqLworV2ViS2l0QXBwbGljYXRpb25JbmZvKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXco
KQoreworICAgIFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbyA9IHN0YXRpY19jYXN0PFdlYktp
dEFwcGxpY2F0aW9uSW5mbyo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktpdEFwcGxpY2F0aW9uSW5m
bykpKTsKKyAgICBuZXcgKGluZm8pIFdlYktpdEFwcGxpY2F0aW9uSW5mbygpOworICAgIHJldHVy
biBpbmZvOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3JlZjoKKyAqIEBp
bmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqCisgKiBBdG9taWNhbGx5IGluY3JlbWVu
dHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBAaW5mbyBieSBvbmUuIFRoaXMKKyAqIGZ1bmN0aW9u
IGlzIE1ULXNhZmUgYW5kIG1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFJl
dHVybnM6IFRoZSBwYXNzZWQgaW4gI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoKKyAqIFNpbmNl
OiAyLjE4CisgKi8KK1dlYktpdEFwcGxpY2F0aW9uSW5mbyogd2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fcmVmKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAgICBnX2F0b21pY19pbnRf
aW5jKCZpbmZvLT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0dXJuIGluZm87Cit9CisKKy8qKgor
ICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWY6CisgKiBAaW5mbzogYSAjV2ViS2l0QXBw
bGljYXRpb25JbmZvCisgKgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2Ug
Y291bnQgb2YgQGluZm8gYnkgb25lLiBJZiB0aGUKKyAqIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0
byAwLCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgI1dlYktpdEFwcGxpY2F0aW9uSW5mbyBp
cworICogcmVsZWFzZWQuIFRoaXMgZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxl
ZCBmcm9tIGFueQorICogdGhyZWFkLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvKQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZpbmZvLT5yZWZlcmVuY2VDb3Vu
dCkpIHsKKyAgICAgICAgaW5mby0+fldlYktpdEFwcGxpY2F0aW9uSW5mbygpOworICAgICAgICBm
YXN0RnJlZShpbmZvKTsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fc2V0X25hbWU6CisgKiBAaW5mbzogYSAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKiBAbmFt
ZTogdGhlIGFwcGxpY2F0aW9uIG5hbWUKKyAqCisgKiBTZXQgdGhlIG5hbWUgb2YgdGhlIGFwcGxp
Y2F0aW9uLiBJZiBub3QgcHJvdmlkZWQsIG9yICVOVUxMIGlzIHBhc3NlZCwKKyAqIGdfZ2V0X3By
Z25hbWUoKSB3aWxsIGJlIHVzZWQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJr
aXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZShXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8s
IGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKworICAg
IGluZm8tPm5hbWUgPSBuYW1lOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X2dldF9uYW1lOgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoKKyAqIEdl
dCB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X3NldF9uYW1lKCkgaGFzbid0IGJlZW4KKyAqIGNhbGxlZCB3aXRoIGEgdmFsaWQgbmFtZSwgdGhp
cyByZXR1cm5zIGdfZ2V0X3ByZ25hbWUoKS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgYXBwbGljYXRp
b24gbmFtZQorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK2NvbnN0IGNoYXIqIHdlYmtpdF9hcHBs
aWNhdGlvbl9pbmZvX2dldF9uYW1lKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChpbmZvLCBudWxscHRyKTsKKworICAgIGlmICghaW5mby0+
bmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGluZm8tPm5hbWUuZGF0YSgpOworCisgICAg
cmV0dXJuIGdfZ2V0X3ByZ25hbWUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25f
aW5mb19zZXRfdmVyc2lvbjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAq
IEBtYWpvcjogdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyCisgKiBAbWlub3I6IHRoZSBtaW5vciB2
ZXJzaW9uIG51bWJlcgorICogQG1pY3JvOiB0aGUgbWljcm8gdmVyc2lvbiBudW1iZXIKKyAqCisg
KiBTZXQgdGhlIGFwcGxpY2F0aW9uIHZlcnNpb24uIElmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0
IHVzZSB0aGUgZm9ybWF0CisgKiBtYWpvci5taW5vci5taWNybyB5b3UgY2FuIHBhc3MgMCBhcyB0
aGUgbWljcm8gdG8gdXNlIG1ham9yLm1pbm9yLCBvciBwYXNzCisgKiAwIGFzIGJvdGggbWljcm8g
YW5kIG1pbm9yIHRvIHVzZSBvbmx5IG1ham9yIG51bWJlci4gQW55IG90aGVyIGZvcm1hdCBtdXN0
CisgKiBiZSBjb252ZXJ0ZWQgdG8gbWFqb3IubWlub3IubWljcm8gc28gdGhhdCBpdCBjYW4gYmUg
dXNlZCBpbiB2ZXJzaW9uIGNvbXBhcmlzb25zLgorICoKKyAqIFNpbmNlOiAyLjE4CisgKi8KK3Zv
aWQgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24oV2ViS2l0QXBwbGljYXRpb25J
bmZvKiBpbmZvLCBndWludDY0IG1ham9yLCBndWludDY0IG1pbm9yLCBndWludDY0IG1pY3JvKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5mbyk7CisKKyAgICBpbmZvLT5tYWpvclZlcnNpb24g
PSBtYWpvcjsKKyAgICBpbmZvLT5taW5vclZlcnNpb24gPSBtaW5vcjsKKyAgICBpbmZvLT5taWNy
b1ZlcnNpb24gPSBtaWNybzsKK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19n
ZXRfdmVyc2lvbjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqIEBtYWpv
cjogKG91dCk6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyCisg
KiBAbWlub3I6IChvdXQpIChhbGxvdy1ub25lKTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgbWlu
b3IgdmVyc2lvbiBudW1iZXIKKyAqIEBtaWNybzogKG91dCkgKGFsbG93LW5vbmUpOiByZXR1cm4g
bG9jYXRpb24gZm9yIHRoZSBtaWNybyB2ZXJzaW9uIG51bWJlcgorICoKKyAqIEdldCB0aGUgYXBw
bGljYXRpb24gdmVyc2lvbiBwcmV2aW91c2x5IHNldCB3aXRoIHdlYmtpdF9hcHBsaWNhdGlvbl9p
bmZvX3NldF92ZXJzaW9uKCkuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRf
YXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8s
IGd1aW50NjQqIG1ham9yLCBndWludDY0KiBtaW5vciwgZ3VpbnQ2NCogbWljcm8pCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChpbmZvICYmIG1ham9yKTsKKworICAgICptYWpvciA9IGluZm8tPm1h
am9yVmVyc2lvbjsKKyAgICBpZiAobWlub3IpCisgICAgICAgICptaW5vciA9IGluZm8tPm1pbm9y
VmVyc2lvbjsKKyAgICBpZiAobWljcm8pCisgICAgICAgICptaWNybyA9IGluZm8tPm1pY3JvVmVy
c2lvbjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5NWNjZjIwZGZmMi4uOTZjYzI5
MjIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNs
dWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRBcHBsaWNhdGlvbkluZm8uaCIKICNp
bmNsdWRlICJXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CkBAIC01OCw2
ICs1OSw3IEBAIGVudW0gewogCiBzdHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0
ZSB7CiAgICAgUmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBzZXNzaW9uOworICAgIFdlYktp
dEFwcGxpY2F0aW9uSW5mbyogYXBwbGljYXRpb25JbmZvOwogICAgIENTdHJpbmcgaWQ7CiB9Owog
CkBAIC0xMjgsMTIgKzEzMCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9u
LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vz
c2lvbikpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2Uo
R09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9u
ID0gV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTihvYmplY3QpOworCisgICAgaWYgKHNlc3Npb24t
PnByaXYtPmFwcGxpY2F0aW9uSW5mbykgeworICAgICAgICB3ZWJraXRfYXBwbGljYXRpb25faW5m
b191bnJlZihzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pOworICAgICAgICBzZXNzaW9u
LT5wcml2LT5hcHBsaWNhdGlvbkluZm8gPSBudWxscHRyOworICAgIH0KKworICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShv
YmplY3QpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2NsYXNz
X2luaXQoV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyogc2Vzc2lvbkNsYXNzKQogewogICAg
IEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc2Vzc2lvbkNsYXNz
KTsKICAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRB
dXRvbWF0aW9uU2Vzc2lvblNldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+Y29uc3RydWN0
ZWQgPSB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkOworICAgIGdPYmplY3RDbGFz
cy0+ZGlzcG9zZSA9IHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZTsKIAogICAgIC8qKgog
ICAgICAqIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uOmlkOgpAQCAtMTg3LDYgKzIwMiwzMSBAQCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKFdl
YktpdEF1dG9tYXRpb25TZXNzaW9uKgogICAgIHJldHVybiAqc2Vzc2lvbi0+cHJpdi0+c2Vzc2lv
bjsKIH0KIAorU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKHNlc3Npb24tPnByaXYt
PmFwcGxpY2F0aW9uSW5mbykKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgod2Via2l0
X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZv
KSk7CisKKyAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworfQorCitTdHJpbmcgd2Via2l0QXV0
b21hdGlvblNlc3Npb25HZXRCcm93c2VyVmVyc2lvbihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiog
c2Vzc2lvbikKK3sKKyAgICBpZiAoIXNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGd1aW50NjQgbWFqb3IsIG1pbm9yLCBtaWNybzsKKyAg
ICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbihzZXNzaW9uLT5wcml2LT5hcHBs
aWNhdGlvbkluZm8sICZtYWpvciwgJm1pbm9yLCAmbWljcm8pOworCisgICAgaWYgKCFtaWNybyAm
JiAhbWlub3IpCisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtYWpvcik7CisKKyAgICBp
ZiAoIW1pY3JvKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihtYWpv
ciksICIuIiwgU3RyaW5nOjpudW1iZXIobWlub3IpKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5n
KFN0cmluZzo6bnVtYmVyKG1ham9yKSwgIi4iLCBTdHJpbmc6Om51bWJlcihtaW5vciksICIuIiwg
U3RyaW5nOjpudW1iZXIobWljcm8pKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfYXV0b21hdGlvbl9z
ZXNzaW9uX2dldF9pZDoKICAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbgpA
QCAtMjAyLDMgKzI0Miw0NyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9pZChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNTSU9OKHNlc3Npb24pLCBudWxscHRy
KTsKICAgICByZXR1cm4gc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpOwogfQorCisvKioKKyAqIHdl
YmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm86CisgKiBAc2Vzc2lv
bjogYSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNh
dGlvbkluZm8KKyAqCisgKiBTZXQgdGhlIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uIHRvIEBzZXNz
aW9uLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgZHJpdmVyIHNlcnZpY2UK
KyAqIHRvIG1hdGNoIHRoZSByZXF1ZXN0ZWQgY2FwYWJpbGl0aWVzIHdpdGggdGhlIGFjdHVhbCBh
cHBsaWNhdGlvbiBpbmZvcm1hdGlvbi4gSWYgdGhpcyBpbmZvcm1hdGlvbgorICogaXMgbm90IHBy
b3ZpZGVkIHRvIHRoZSBzZXNzaW9uIHdoZW4gYSBuZXcgYXV0b21hdGlvbiBzZXNzaW9uIGlzIHJl
cXVlc3RlZCwgdGhlIGNyZWF0aW9uIG1pZ2h0IGZhaWwKKyAqIGlmIHRoZSBjbGllbnQgcmVxdWVz
dGVkIGEgc3BlY2lmaWMgYnJvd3NlciBuYW1lIG9yIHZlcnNpb24uIFRoaXMgd2lsbCBub3QgaGF2
ZSBhbnkgZWZmZWN0IHdoZW4gY2FsbGVkCisgKiBhZnRlciB0aGUgYXV0b21hdGlvbiBzZXNzaW9u
IGhhcyBiZWVuIGZ1bGx5IGNyZWF0ZWQsIHNvIHRoaXMgbXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNh
bGxiYWNrIG9mCisgKiAjV2ViS2l0V2ViQ29udGV4dDo6YXV0b21hdGlvbi1zdGFydGVkIHNpZ25h
bC4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Np
b25fc2V0X2FwcGxpY2F0aW9uX2luZm8oV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24s
IFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoaW5mbyk7CisKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvID09IGlu
Zm8pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlv
bkluZm8pCisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKHNlc3Npb24tPnBy
aXYtPmFwcGxpY2F0aW9uSW5mbyk7CisgICAgc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZv
ID0gd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmKGluZm8pOworfQorCisvKioKKyAqIHdlYmtp
dF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm86CisgKiBAc2Vzc2lvbjog
YSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24KKyAqCisgKiBHZXQgdGhlICNXZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbiBwcmV2aW91c2x5IHNldCB3aXRoIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
c2V0X2FwcGxpY2F0aW9uX2luZm8oKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IHRoZSAjV2ViS2l0QXV0b21hdGlvblNlc3Npb24gb2YgQHNlc3Npb24sIG9yICVOVUxMIGlmIG5v
IG9uZSBoYXMgYmVlbiBzZXQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLworV2ViS2l0QXBwbGlj
YXRpb25JbmZvKiB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZv
KFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbiksIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbzsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmgKaW5kZXggNTUyNTc4M2VmNjQuLjQwY2Q5MzIxYjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUuaApAQCAtMjQsMyArMjQsNSBAQAogCiBX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogd2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoY29u
c3QgY2hhciogc2Vzc2lvbklEKTsKIFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHdlYmtp
dEF1dG9tYXRpb25TZXNzaW9uR2V0U2Vzc2lvbihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiopOwor
U3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qKTsKK1N0cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJW
ZXJzaW9uKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGY3ODE4ZTdi
OWYzLi40YWI5MDFlZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIxNCwxMiArMjE0LDI4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIFN0cmluZyBicm93c2VyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21h
dGlvblNlc3Npb24pCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJldHVybiB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJOYW1lKG1fd2ViQ29udGV4dC0+cHJpdi0+
YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpOworICAgIH0KKworICAgIFN0cmluZyBicm93c2VyVmVy
c2lvbigpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fd2ViQ29udGV4dC0+
cHJpdi0+YXV0b21hdGlvblNlc3Npb24pCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIHJldHVybiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKG1fd2Vi
Q29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpOworICAgIH0KKwogICAgIHZv
aWQgcmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZp
ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fd2ViQ29udGV4dC0+cHJpdi0+
YXV0b21hdGlvblNlc3Npb24pOwogICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPmF1dG9tYXRp
b25TZXNzaW9uID0gYWRvcHRHUmVmKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ3JlYXRlKHNlc3Np
b25JZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgbV93ZWJDb250ZXh0LT5wcml2
LT5wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvblNlc3Npb24oJndlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0U2Vzc2lvbihtX3dlYkNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25TZXNzaW9uLmdldCgp
KSk7CiAgICAgICAgIGdfc2lnbmFsX2VtaXQobV93ZWJDb250ZXh0LCBzaWduYWxzW0FVVE9NQVRJ
T05fU1RBUlRFRF0sIDAsIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0
KCkpOworICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBdXRvbWF0
aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9uKG1fd2ViQ29udGV4
dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKICAgICBXZWJLaXRX
ZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMzRkYjliOWNjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFk
ZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFU
SU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRp
cmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEFwcGxpY2F0aW9uSW5mb19oCisjZGVm
aW5lIFdlYktpdEFwcGxpY2F0aW9uSW5mb19oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgor
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTyAod2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9uSW5mbyBX
ZWJLaXRBcHBsaWNhdGlvbkluZm87CisKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X3R5cGUgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxp
Y2F0aW9uSW5mbyAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcgICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoKK3dlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3JlZiAgICAgICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmICAgICAgIChXZWJLaXRB
cHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNh
dGlvbl9pbmZvX3NldF9uYW1lICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpu
YW1lKTsKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
Z2V0X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24gKFdlYktpdEFwcGxpY2F0
aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dDY0ICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtaWNybyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24gKFdlYktpdEFw
cGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludDY0ICAgICAgICAgICAgICAgKm1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAqbWlub3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptaWNybyk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IGEwOGYxZjY1ZTk2
Li44MzlkZmUzNGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2Rl
ZmluZSBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbl9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXBwbGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTU2LDEwICs1Nywx
NyBAQCBzdHJ1Y3QgX1dlYktpdEF1dG9tYXRpb25TZXNzaW9uQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSAodm9pZCk7Cit3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICAgICAgICAgICAgICh2b2lkKTsKIAog
V0VCS0lUX0FQSSBjb25zdCBjaGFyICoKLXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lk
ICAgKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKTsKK3dlYmtpdF9hdXRvbWF0aW9u
X3Nlc3Npb25fZ2V0X2lkICAgICAgICAgICAgICAgKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpz
ZXNzaW9uKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3Nl
dF9hcHBsaWNhdGlvbl9pbmZvIChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEFwcGxp
Y2F0aW9uSW5mbyAgICppbmZvKTsKKworV0VCS0lUX0FQSSBXZWJLaXRBcHBsaWNhdGlvbkluZm8g
Kgord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbyAoV2ViS2l0
QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBjMmIwYTJkMDBkOS4uYTEzYzMyZDJiOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTM1OCw2ICsxMzU4LDggQEAgV0VCS0lU
X1RZUEVfTkVUV09SS19ORVRXT1JLX1BST1hZX1NFVFRJTkdTCiA8RklMRT5XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbjwvRklMRT4KIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uCiB3ZWJraXRfYXV0b21h
dGlvbl9zZXNzaW9uX2dldF9pZAord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGlj
YXRpb25faW5mbword2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5m
bwogCiA8U1VCU0VDVElPTiBQcml2YXRlPgogV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRl
CkBAIC0xMzc0LDYgKzEzNzYsMjQgQEAgV0VCS0lUX0FVVE9NQVRJT05fU0VTU0lPTl9HRVRfQ0xB
U1MKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRBcHBsaWNhdGlvbkluZm88
L0ZJTEU+CitXZWJLaXRBcHBsaWNhdGlvbkluZm8KK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25l
dword2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmCit3ZWJraXRfYXBwbGljYXRpb25faW5mb191
bnJlZgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUKK3dlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX2dldF9uYW1lCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbgord2Vi
a2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24KKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4K
K3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF90eXBlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJk
PgorV0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTworPC9TRUNUSU9OPgorCis8U0VDVElPTj4K
IDxGSUxFPldlYktpdFdlYkV4dGVuc2lvbjwvRklMRT4KIFdlYktpdFdlYkV4dGVuc2lvbgogV2Vi
S2l0V2ViRXh0ZW5zaW9uSW5pdGlhbGl6ZUZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXgg
ZTMxOWRjYTQyOTcuLjdjMWQ1NDUwODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC01OSw2ICs1
OSw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYnNpdGVEYXRhLnhtbCIv
PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXROZXR3b3JrUHJveHlTZXR0aW5ncy54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
eG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54
bWwiLz4KICAgPC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBhZTUwYjM1MDVmNi4uZmIwNDc2ZjFiMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNkZWZpbmUgX19XRUJLSVQyX0hfSU5TSURFX18KIAorI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXBwbGljYXRpb25JbmZv
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEFwcGxpY2F0aW9uSW5m
by5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xODczNjIxNWEzMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
QXBwbGljYXRpb25JbmZvLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBj
YW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0QXBwbGlj
YXRpb25JbmZvX2gKKyNkZWZpbmUgV2ViS2l0QXBwbGljYXRpb25JbmZvX2gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0FQUExJQ0FUSU9OX0lORk8gKHdlYmtpdF9h
cHBsaWNhdGlvbl9pbmZvX2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBcHBs
aWNhdGlvbkluZm8gV2ViS2l0QXBwbGljYXRpb25JbmZvOworCisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF90eXBlICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3ICAg
ICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqCit3ZWJr
aXRfYXBwbGljYXRpb25faW5mb19yZWYgICAgICAgICAoV2ViS2l0QXBwbGljYXRpb25JbmZvICpp
bmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYXBwbGljYXRpb25faW5mb191bnJlZiAg
ICAgICAoV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZSAgICAoV2ViS2l0QXBwbGljYXRpb25JbmZv
ICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
ICAgICAgICAgICAqbmFtZSk7CitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9hcHBs
aWNhdGlvbl9pbmZvX2dldF9uYW1lICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uIChX
ZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtYWpvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgIG1pbm9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgbWlj
cm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF92ZXJz
aW9uIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptYWpvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgKm1pbm9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAg
ICAqbWljcm8pOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAppbmRl
eCA5ZTYyY2RmMGE0ZS4uYzBkNGYyNTY3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTI1LDYg
KzI1LDcgQEAKICNkZWZpbmUgV2ViS2l0QXV0b21hdGlvblNlc3Npb25faAogCiAjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0QXBwbGljYXRpb25JbmZvLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNTYsMTAg
KzU3LDE3IEBAIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyB7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICh2b2lk
KTsKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5cGUgICAgICAgICAgICAgKHZvaWQp
OwogCiBXRUJLSVRfQVBJIGNvbnN0IGNoYXIgKgotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9n
ZXRfaWQgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOword2Via2l0X2F1dG9t
YXRpb25fc2Vzc2lvbl9nZXRfaWQgICAgICAgICAgICAgICAoV2ViS2l0QXV0b21hdGlvblNlc3Np
b24gKnNlc3Npb24pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Np
b25fc2V0X2FwcGxpY2F0aW9uX2luZm8gKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
QXBwbGljYXRpb25JbmZvICAgKmluZm8pOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxpY2F0aW9u
SW5mbyAqCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvIChX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCmluZGV4IDk0MjBjYTRkYTU1Li41NWFl
MzgyOTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJr
aXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNkZWZpbmUgX19XRUJLSVRfSF9JTlNJREVfXwogCisjaW5jbHVkZSA8
d3BlL1dlYktpdEFwcGxpY2F0aW9uSW5mby5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDFmMzBkMjM3MDQuLmIyMWIw
ZDliZGE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBwcm92aWRl
IGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0b21hdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFp
bi5jOgorICAgICAgICAoYXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayk6IFNldCBicm93c2VyIGlu
Zm9ybWF0aW9uIHdoZW4gYSBuZXcgYXV0b21hdGlvbiBzZXNzaW9uIGlzIHN0YXJ0ZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lv
bi5jcHA6CisgICAgICAgICh0ZXN0QXV0b21hdGlvblNlc3Npb25BcHBsaWNhdGlvbkluZm8pOgor
ICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNy0wOC0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQSV0gQWRkIENhY2hlIGFuZCBDYWNoZVN0
b3JhZ2UgSURMIGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
bWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA1NzA1NTQwNTZhMi4u
NWU3NmVkOGFiMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNDU4LDYgKzQ1OCwxMSBAQCBzdGF0
aWMgR3RrV2lkZ2V0ICpjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkNhbGxiYWNrKFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uKiBzZQogCiBzdGF0aWMgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxi
YWNrKFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRleHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
ICpzZXNzaW9uKQogeworICAgIFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyA9IHdlYmtpdF9h
cHBsaWNhdGlvbl9pbmZvX25ldygpOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92
ZXJzaW9uKGluZm8sIFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVSU0lPTiwg
V0VCS0lUX01JQ1JPX1ZFUlNJT04pOworICAgIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0
X2FwcGxpY2F0aW9uX2luZm8oc2Vzc2lvbiwgaW5mbyk7CisgICAgd2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fdW5yZWYoaW5mbyk7CisKICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJjcmVh
dGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJh
Y2spLCBOVUxMKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAzMWNkNjg2
Zjk1ZC4uZTAxYjY3MWE5YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xNjgs
NiArMTY4LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247
CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
bV9zZXNzaW9uKSk7CisgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pKTsKKyAgICAgICAgV2ViS2l0QXBwbGljYXRp
b25JbmZvKiBpbmZvID0gd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3KCk7CisgICAgICAgIHdl
YmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGluZm8sICJBdXRvbWF0aW9uVGVzdEJyb3dz
ZXIiKTsKKyAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24oaW5mbywg
V0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJLSVRfTUlDUk9f
VkVSU0lPTik7CisgICAgICAgIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0
aW9uX2luZm8oc2Vzc2lvbiwgaW5mbyk7CisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X3VucmVmKGluZm8pOworICAgICAgICBnX2Fzc2VydCh3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pID09IGluZm8pOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25UZXN0
KiB0ZXN0KQpAQCAtMTgxLDcgKzE4OCwyMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRv
IHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3dlYkNvbnRleHQuZ2V0KCksICJhdXRvbWF0
aW9uLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2spLCB0aGlz
KTsKICAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51
bGxwdHIsICIvb3JnL3dlYmtpdC9JbnNwZWN0b3IiLCAib3JnLndlYmtpdC5JbnNwZWN0b3IiLAot
ICAgICAgICAgICAgIlN0YXJ0QXV0b21hdGlvblNlc3Npb24iLCBnX3ZhcmlhbnRfbmV3KCIocyki
LCBzZXNzaW9uSUQpLCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAt
MSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICAiU3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRCksIG51bGxwdHIsIEdf
REJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLAorICAgICAgICAgICAg
W10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8QXV0b21hdGlv
blRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0LT5tX3Nlc3Npb24p
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IGNhcGFiaWxpdGllcyA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9jYWxs
X2ZpbmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3VyY2UpLCByZXN1bHQsIG51bGxwdHIpKTsKKyAg
ICAgICAgICAgICAgICBnX2Fzc2VydChjYXBhYmlsaXRpZXMuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGJyb3dzZXJOYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGJyb3dzZXJWZXJzaW9uOworICAgICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQoY2FwYWJpbGl0
aWVzLmdldCgpLCAiKCZzJnMpIiwgJmJyb3dzZXJOYW1lLCAmYnJvd3NlclZlcnNpb24pOworICAg
ICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihicm93c2VyTmFtZSwgPT0sICJBdXRvbWF0aW9u
VGVzdEJyb3dzZXIiKTsKKyAgICAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHZlcnNpb25T
dHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIldS4ldS4ldSIsIFdFQktJVF9NQUpPUl9WRVJTSU9OLCBX
RUJLSVRfTUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKKyAgICAgICAgICAg
ICAgICBnX2Fzc2VydF9jbXBzdHIoYnJvd3NlclZlcnNpb24sID09LCB2ZXJzaW9uU3RyaW5nLmdl
dCgpKTsKKyAgICAgICAgICAgIH0sIHRoaXMKKyAgICAgICAgKTsKICAgICAgICAgYXV0byB0aW1l
b3V0SUQgPSBnX3RpbWVvdXRfYWRkKDEwMDAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9v
bGVhbiB7CiAgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KHN0YXRpY19jYXN0PEdNYWluTG9v
cCo+KHVzZXJEYXRhKSk7CiAgICAgICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwpAQCAt
Mjc4LDExICszMDAsMzQgQEAgc3RhdGljIHZvaWQgdGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVz
dFNlc3Npb24oQXV0b21hdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW4KICAgICB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCks
IEZBTFNFKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEF1dG9tYXRpb25TZXNzaW9uQXBwbGljYXRp
b25JbmZvKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0QXBwbGljYXRp
b25JbmZvKiBpbmZvID0gd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3KCk7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9uYW1lKGluZm8pLCA9PSwgZ19n
ZXRfcHJnbmFtZSgpKTsKKyAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZShpbmZv
LCAiV2ViS2l0R1RLQnJvd3NlciIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXBwbGlj
YXRpb25faW5mb19nZXRfbmFtZShpbmZvKSwgPT0sICJXZWJLaXRHVEtCcm93c2VyIik7CisgICAg
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUoaW5mbywgbnVsbHB0cik7CisgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9uYW1lKGluZm8pLCA9PSwg
Z19nZXRfcHJnbmFtZSgpKTsKKworICAgIGd1aW50NjQgbWFqb3IsIG1pbm9yLCBtaWNybzsKKyAg
ICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbihpbmZvLCAmbWFqb3IsIG51bGxw
dHIsIG51bGxwdHIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQobWFqb3IsID09LCAwKTsKKyAgICB3
ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbihpbmZvLCAxLCAyLCAzKTsKKyAgICB3
ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbihpbmZvLCAmbWFqb3IsICZtaW5vciwg
Jm1pY3JvKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KG1ham9yLCA9PSwgMSk7CisgICAgZ19hc3Nl
cnRfY21wdWludChtaW5vciwgPT0sIDIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQobWljcm8sID09
LCAzKTsKKworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKGluZm8pOworfQorCisK
IHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBnX3NldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJW
RVIiLCAiMTI3LjAuMC4xOjIyMjkiLCBUUlVFKTsKIAogICAgIEF1dG9tYXRpb25UZXN0OjphZGQo
IldlYktpdEF1dG9tYXRpb25TZXNzaW9uIiwgInJlcXVlc3Qtc2Vzc2lvbiIsIHRlc3RBdXRvbWF0
aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKTsKKyAgICBUZXN0OjphZGQoIldlYktpdEF1dG9tYXRp
b25TZXNzaW9uIiwgImFwcGxpY2F0aW9uLWluZm8iLCB0ZXN0QXV0b21hdGlvblNlc3Npb25BcHBs
aWNhdGlvbkluZm8pOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317359</attachid>
            <date>2017-08-06 01:06:53 -0700</date>
            <delta_ts>2017-08-06 01:06:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wd-capabilities-api.diff</filename>
            <type>text/plain</type>
            <size>47777</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZTI2YzA5MGU1Li4zMzFkNjIxY2FhZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMDUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIEFQSSB0byBwcm92aWRlIGJyb3dzZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYXV0
b21hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICBBZGQg
YnJvd3Nlck5hbWUgYW5kIGJyb3dzZXJWZXJzaW9uIHRvIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50
OjpDYXBhYmlsaXRpZXMgYW5kIHZpcnR1YWwgbWV0aG9kcyB0byB0aGUgQ2xpZW50IHRvCisgICAg
ICAgIGdldCB0aGVtLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVu
dENhcGFiaWxpdGllcyk6IFVwZGF0ZSBhbHNvIGJyb3dzZXJOYW1lIGFuZCBicm93c2VyVmVyc2lv
bi4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24p
OiBDYWxsIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpIGFmdGVyIHRoZSBzZXNzaW9uIGlzCisg
ICAgICAgIHJlcXVlc3RlZCB0byBlbnN1cmUgdGhleSBhcmUgdXBkYXRlZCBiZWZvcmUgU3RhcnRB
dXRvbWF0aW9uU2Vzc2lvbiByZXBseSBpcyBzZW50LgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwOiBBZGQgYnJvd3Nlck5hbWUgYW5kIGJy
b3dzZXJWZXJzaW9uIGFzIHJldHVybiB2YWx1ZXMgb2YKKyAgICAgICAgU3RhcnRBdXRvbWF0aW9u
U2Vzc2lvbiBtZXNhc2FnZS4KKwogMjAxNy0wOC0wNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMTk4OTUtMjE5ODk3KTogTnVtYmVyIG9m
IGxlYWtzIG9uIE9wZW4gU291cmNlIHdlbnQgZnJvbSA5MjQwIHRvIDIzNTk4MyBhbmQgaXMgbm93
IGF0IDMwMjM3MgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggOGZlMGNmZDczZWUuLmUwZTg0YThm
MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTEzMyw3ICsxMzMsOSBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKICAgICAgICAgbV9jbGllbnRD
YXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAgICAgIFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKLSAg
ICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkCisgICAgICAgICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFs
bG93ZWQoKSwKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm93c2VyTmFtZSgpLAorICAgICAgICAg
ICAgbV9jbGllbnQtPmJyb3dzZXJWZXJzaW9uKCkKICAgICAgICAgfTsKIAogICAgICAgICBtX2Ns
aWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmlu
ZGV4IDU1Njc4NDUxYTM2Li44M2NmMjU4NjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaCIKQEAgLTY2LDEwICs2NywxNCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAg
ICAgICBzdHJ1Y3QgQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgICAgIGJvb2wgcmVtb3RlQXV0b21h
dGlvbkFsbG93ZWQgOiAxOworICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJOYW1lOworICAgICAg
ICAgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uOwogICAgICAgICB9OwogCiAgICAgICAgIHZpcnR1
YWwgfkNsaWVudCgpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQXV0b21hdGlvbkFs
bG93ZWQoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGJyb3dzZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4geyB9OyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGJyb3dzZXJWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgPSAwOwog
ICAgIH07CiAKQEAgLTg1LDYgKzkwLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUluc3BlY3Rvcjo6
Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0
Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Kik7CiAgICAgdm9pZCBjbGllbnRDYXBhYmls
aXRpZXNEaWRDaGFuZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50OjpDYXBhYmlsaXRpZXM+IGNsaWVudENhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50Q2FwYWJpbGl0aWVzOyB9CiAKICAgICB2b2lkIHNldHVwRmFpbGVkKHVuc2lnbmVkIHRh
cmdldElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQodW5zaWduZWQgdGFyZ2V0
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCA2
Njg0NzExM2QzNS4uOGNmMWNjMzgyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JH
bGliLmNwcApAQCAtMzU1LDYgKzM1NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZXF1ZXN0
QXV0b21hdGlvblNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklEKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2NsaWVudC0+cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFN0cmluZzo6ZnJvbVVU
Rjgoc2Vzc2lvbklEKSk7CisgICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIuY3BwCmluZGV4IDQxM2YxMTI2YzVhLi5hMWM1YjJiN2QyZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtNzksNiArNzksOCBAQCBzdGF0aWMgY29uc3Qg
Y2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgICAgPC9tZXRob2Q+IgogICAgICIgICAg
PG1ldGhvZCBuYW1lPSdTdGFydEF1dG9tYXRpb25TZXNzaW9uJz4iCiAgICAgIiAgICAgIDxhcmcg
dHlwZT0ncycgbmFtZT0nc2Vzc2lvbklEJyBkaXJlY3Rpb249J2luJy8+IgorICAgICIgICAgICA8
YXJnIHR5cGU9J3MnIG5hbWU9J2Jyb3dzZXJOYW1lJyBkaXJlY3Rpb249J291dCcvPiIKKyAgICAi
ICAgICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdicm93c2VyVmVyc2lvbicgZGlyZWN0aW9uPSdvdXQn
Lz4iCiAgICAgIiAgICA8L21ldGhvZD4iCiAgICAgIiAgPC9pbnRlcmZhY2U+IgogICAgICI8L25v
ZGU+IjsKQEAgLTEyMSw3ICsxMjMsMTAgQEAgY29uc3QgR0RCdXNJbnRlcmZhY2VWVGFibGUgUmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzX2ludGVyZmFjZVZUYWJsZSA9IHsKICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHNlc3Npb25JRDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVy
cywgIigmcykiLCAmc2Vzc2lvbklEKTsKICAgICAgICAgICAgIGluc3BlY3RvclNlcnZlci0+c3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbihjb25uZWN0aW9uLCBzZXNzaW9uSUQpOwotICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGF1dG8gY2FwYWJpbGl0aWVzID0gUmVtb3RlSW5zcGVjdG9yOjpzaW5n
bGV0b24oKS5jbGllbnRDYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHNzKSIs
CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID8gY2FwYWJpbGl0aWVzLT5icm93c2VyTmFt
ZS51dGY4KCkuZGF0YSgpIDogIiIsCisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID8gY2Fw
YWJpbGl0aWVzLT5icm93c2VyVmVyc2lvbi51dGY4KCkuZGF0YSgpIDogIiIpKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIG51bGxwdHIpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDVmNDkxNzA2
MDRhLi42ZGNmNGRlYmMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxNy0w
OC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAg
ICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgYnJvd3NlciBpbmZvcm1hdGlvbiByZXF1
aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisg
ICAgICAgICogU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmNyZWF0
ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KTogQ2hlY2sgaWYgc3RhcnRBdXRvbWF0aW9uU2Vzc2lv
biBhbmQgY29tcGxldGUgdGhlIGNvbW1hbmQKKyAgICAgICAgd2l0aCBlcnJvciBpbiB0aGF0IGNh
c2UuCisgICAgICAgICogU2Vzc2lvbkhvc3QuaDoKKyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0
R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjptYXRjaENhcGFiaWxp
dGllcyk6IE1hdGNoIHRoZSBjYXBhYmlsaXRpZXMgdGhhdCBhcmUga25vd24gb25seSBhZnRlciB0
aGUgYnJvd3NlciBoYXMKKyAgICAgICAgYmVlbiBsYXVuY2hlZC4KKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24pOiBIYW5kbGUgdGhlIFN0YXJ0
QXV0b21hdGlvblNlc3Npb24gcmVzcG9uc2UsIGV4dHJhY3RpbmcgdGhlCisgICAgICAgIGNhcGFi
aWxpdGllcyBhbmQgY2FsbGluZyBtYXRjaENhcGFiaWxpdGllcygpIHRvIG1hdGNoIHRoZW0uCisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZXRUYXJnZXRMaXN0KTogUmV0dXJuIGVh
cmx5IGlmIHRoZSBzZXNzaW9uIHdhcyByZWplY3RlZCBiZWZvcmUgZHVlIHRvIGludmFsaWQKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLgorCisyMDE3LTA4LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBXZWJEcml2ZXI6IEltcGxlbWVudCBwYWdl
IGxvYWQgc3RyYXRlZ3kKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCA1MmI0MjI3MDU0OS4uNjZiMmVk
ZGYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMTIyLDcgKzEyMiwxMSBAQCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gU2Vzc2lvbjo6cGFnZUxvYWRTdHJhdGVneVN0cmluZygpIGNvbnN0CiB2b2lk
IFNlc3Npb246OmNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgIG1faG9zdC0+c3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbihtX2lkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgIG1faG9zdC0+c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihtX2lkLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JNZXNzYWdlKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVu
a25vd25FcnJvciwgZXJyb3JNZXNzYWdlLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0
ZXJhbCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0IiksIG51bGxwdHIsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5k
UmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmggYi9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb25Ib3N0LmgKaW5kZXggNmE3OWM3ZTg4ZjkuLjFiOTdmZWY4Y2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1Nlc3Npb25Ib3N0LmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uSG9zdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU3Vj
Y2VlZGVkIHsgTm8sIFllcyB9OwogICAgIHZvaWQgY29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2
b2lkIChTdWNjZWVkZWQpPiYmKTsKLSAgICB2b2lkIHN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAgIHZvaWQgc3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBzdHJ1Y3QgQ29tbWFuZFJlc3Bv
bnNlIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXNwb25z
ZU9iamVjdDsKQEAgLTgwLDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgR0RC
dXNJbnRlcmZhY2VWVGFibGUgc19pbnRlcmZhY2VWVGFibGU7CiAgICAgdm9pZCBsYXVuY2hCcm93
c2VyKEZ1bmN0aW9uPHZvaWQgKFN1Y2NlZWRlZCk+JiYpOwogICAgIHZvaWQgY29ubmVjdFRvQnJv
d3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJik7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IG1hdGNoQ2FwYWJpbGl0aWVzKEdWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXR1cENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+JiYsIEZ1bmN0aW9u
PHZvaWQgKFN1Y2NlZWRlZCk+JiYpOwogICAgIHZvaWQgc2V0VGFyZ2V0TGlzdCh1aW50NjRfdCBj
b25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UpOwpAQCAtOTQsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIGxvbmcgbV9jbG9z
ZU1lc3NhZ2VJRCB7IDAgfTsKIAogI2lmIFVTRShHTElCKQotICAgIEZ1bmN0aW9uPHZvaWQgKCk+
IG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZCAoc3Rk
OjpvcHRpb25hbDxTdHJpbmc+KT4gbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcjsKICAg
ICBHUmVmUHRyPEdTdWJwcm9jZXNzPiBtX2Jyb3dzZXI7CiAgICAgR1JlZlB0cjxHREJ1c0Nvbm5l
Y3Rpb24+IG1fZGJ1c0Nvbm5lY3Rpb247CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2Fu
Y2VsbGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RH
bGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4
IDBlM2EyYjNiODI2Li5jNzBkMzkwMmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9n
bGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Np
b25Ib3N0R2xpYi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTZXNzaW9uSG9zdC5oIgogCisjaW5jbHVkZSAiV2ViRHJpdmVyU2VydmljZS5oIgog
I2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTIyMCwxMSArMjIxLDMxIEBAIHZvaWQgU2Vzc2lv
bkhvc3Q6OnNldHVwQ29ubmVjdGlvbihHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBGdW5jdGlvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoU3VjY2VlZGVkOjpZZXMpOwogfQog
Ci12b2lkIFNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFNlc3Npb25Ib3N0OjptYXRjaENhcGFiaWxpdGllcyhHVmFyaWFudCog
Y2FwYWJpbGl0aWVzKQoreworICAgIGNvbnN0IGNoYXIqIGJyb3dzZXJOYW1lOworICAgIGNvbnN0
IGNoYXIqIGJyb3dzZXJWZXJzaW9uOworICAgIGdfdmFyaWFudF9nZXQoY2FwYWJpbGl0aWVzLCAi
KCZzJnMpIiwgJmJyb3dzZXJOYW1lLCAmYnJvd3NlclZlcnNpb24pOworCisgICAgaWYgKG1fY2Fw
YWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7CisgICAgICAgIGlmIChtX2NhcGFiaWxpdGllcy5icm93
c2VyTmFtZS52YWx1ZSgpICE9IGJyb3dzZXJOYW1lKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoImV4cGVjdGVkIGJyb3dzZXJOYW1lICIsIG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1l
LnZhbHVlKCksICIgYnV0IGdvdCAiLCBicm93c2VyTmFtZSk7CisgICAgfSBlbHNlCisgICAgICAg
IG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lID0gU3RyaW5nKGJyb3dzZXJOYW1lKTsKKworICAg
IGlmIChtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbikgeworICAgICAgICBpZiAoIVdlYkRy
aXZlclNlcnZpY2U6OnBsYXRmb3JtQ29tcGFyZUJyb3dzZXJWZXJzaW9ucyhtX2NhcGFiaWxpdGll
cy5icm93c2VyVmVyc2lvbi52YWx1ZSgpLCBicm93c2VyVmVyc2lvbikpCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygicmVxdWVzdGVkIGJyb3dzZXJWZXJzaW9uIGlzICIsIG1fY2FwYWJp
bGl0aWVzLmJyb3dzZXJWZXJzaW9uLnZhbHVlKCksICIgYnV0IGFjdHVhbCB2ZXJzaW9uIGlzICIs
IGJyb3dzZXJWZXJzaW9uKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jYXBhYmlsaXRpZXMuYnJv
d3NlclZlcnNpb24gPSBTdHJpbmcoYnJvd3NlclZlcnNpb24pOworCisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKwordm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxTdHJp
bmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9kYnVzQ29ubmVjdGlv
bik7CiAgICAgQVNTRVJUKCFtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAv
LyBGSVhNRTogTWFrZSBTdGFydEF1dG9tYXRpb25TZXNzaW9uIHJldHVybiBicm93c2VyIGluZm9y
bWF0aW9uIGFuZCB3ZSB1c2UgaXQgdG8gbWF0Y2ggY2FwYWJpbGl0aWVzLgogICAgIG1fc3RhcnRT
ZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIs
CiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILApAQCAtMjMyLDcgKzI1MywyNyBA
QCB2b2lkIFNlc3Npb25Ib3N0OjpzdGFydEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkCiAgICAgICAgICJTdGFydEF1dG9tYXRpb25TZXNzaW9u
IiwKICAgICAgICAgZ192YXJpYW50X25ldygiKHMpIiwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkp
LAogICAgICAgICBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULAotICAg
ICAgICAtMSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFk
eUNhbGxiYWNrLCBudWxscHRyKTsKKyAgICAgICAgLTEsIG1fY2FuY2VsbGFibGUuZ2V0KCksIFtd
KEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRh
KSB7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgICAg
ICBHUmVmUHRyPEdWYXJpYW50PiByZXN1bHRWYXJpYW50ID0gYWRvcHRHUmVmKGdfZGJ1c19jb25u
ZWN0aW9uX2NhbGxfZmluaXNoKEdfREJVU19DT05ORUNUSU9OKHNvdXJjZSksIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdFZhcmlhbnQgJiYgZ19lcnJv
cl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHNlc3Npb25Ib3N0
ID0gc3RhdGljX2Nhc3Q8U2Vzc2lvbkhvc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAo
IXJlc3VsdFZhcmlhbnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShzZXNzaW9uSG9zdC0+bV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFu
ZGxlciwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RyaW5n
KCJGYWlsZWQgdG8gc3RhcnQgYXV0b21hdGlvbiBzZXNzaW9uIikpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBlcnJvclN0cmluZyA9
IHNlc3Npb25Ib3N0LT5tYXRjaENhcGFiaWxpdGllcyhyZXN1bHRWYXJpYW50LmdldCgpKTsKKyAg
ICAgICAgICAgIGlmIChlcnJvclN0cmluZykgeworICAgICAgICAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKHNlc3Npb25Ib3N0LT5tX3N0YXJ0U2Vzc2lvbkNv
bXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihlcnJvclN0cmluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9LCB0aGlzCisgICAgKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6c2V0VGFy
Z2V0TGlzdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYgdGFyZ2V0TGlz
dCkKQEAgLTI1NSw2ICsyOTYsMTEgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCh1
aW50NjRfdCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYgdGFyZ2V0TGkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmICghbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxl
cikgeworICAgICAgICAvLyBTZXNzaW9uIGNyZWF0aW9uIHdhcyBhbHJlYWR5IHJlamVjdGVkLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9u
SUQ7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBu
dWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKQEAgLTI2NSw3ICsz
MTEsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZXRUYXJnZXRMaXN0KHVpbnQ2NF90IGNvbm5lY3Rp
b25JRCwgVmVjdG9yPFRhcmdldD4mJiB0YXJnZXRMaQogICAgICAgICAtMSwgbV9jYW5jZWxsYWJs
ZS5nZXQoKSwgZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFkeUNhbGxiYWNrLCBudWxscHRyKTsK
IAogICAgIGF1dG8gc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgIHN0YXJ0U2Vz
c2lvbkNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU0OTAzOGVhMGYyLi5jNjA4Njk4MWRkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw0NyBAQAogMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3Zp
ZGUgYnJvd3NlciBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAgICAgICBXaGVuIGEgbmV3IGF1dG9t
YXRpb24gc2Vzc2lvbiBpcyBzdGFydGVkLCB0aGUgd2ViIGRyaXZlciByZWNlaXZlcyBzb21lIHJl
cXVpcmVkIGNhcGFiaWxpdGllcyBmcm9tIHRoZSBjbGllbnQsCisgICAgICAgIGxpa2UgYnJvd3Nl
ciBuYW1lIGFuZCB2ZXJzaW9uLiBUaGUgc2Vzc2lvbiBzaG91bGQgYmUgcmVqZWN0ZWQgaWYgdGhv
c2UgcmVxdWlyZWQgY2FwYWJpbGl0aWVzIGRvbid0IG1hdGNoIHdpdGgKKyAgICAgICAgdGhlIGFj
dHVhbCBicm93c2VyIHRoYXQgaXMgbGF1bmNoZWQuIFdlIGRvbid0IGtub3cgdGhhdCBpbmZvcm1h
dGlvbiBpbiBXZWJLaXQsIHNvIHdlIG5lZWQgdG8gYWRkIEFQSSBzbyB0aGF0CisgICAgICAgIHVz
ZXJzIGNhbiBwcm92aWRlIGl0IHdoZW4gYSBuZXcgc2Vzc2lvbiByZXF1ZXN0IGlzIG1hZGUuIFRo
aXMgcGF0Y2ggYWRkcyBib3hlZCBvYmplY3QgV2ViS2l0QXBwbGljYXRpb25JbmZvIHRoYXQKKyAg
ICAgICAgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGFuZCB2ZXJzaW9u
LiBUaGlzIG9iamVjdCBjYW4gYmUgc2V0IHRvIGEgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gd2hl
bgorICAgICAgICBXZWJLaXRXZWJDb250ZXh0OjphdXRvbWF0aW9uLXN0YXJ0ZWQgc2lnbmFsIGlz
IGVtaXR0ZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0
Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXBwbGlj
YXRpb25JbmZvLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19u
ZXcpOgorICAgICAgICAod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmKToKKyAgICAgICAgKHdl
YmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKToKKyAgICAgICAgKHdlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3NldF9uYW1lKToKKyAgICAgICAgKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9u
YW1lKToKKyAgICAgICAgKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uKToKKyAg
ICAgICAgKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAo
d2Via2l0QXV0b21hdGlvblNlc3Npb25EaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF9hdXRvbWF0
aW9uX3Nlc3Npb25fY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkdldEJyb3dzZXJOYW1lKToKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJv
d3NlclZlcnNpb24pOgorICAgICAgICAod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBw
bGljYXRpb25faW5mbyk6CisgICAgICAgICh3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9h
cHBsaWNhdGlvbl9pbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEFw
cGxpY2F0aW9uSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEFwcGxpY2F0aW9u
SW5mby5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oOgorCisy
MDE3LTA4LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBXZWJEcml2ZXI6IEltcGxlbWVudCBwYWdlIGxvYWQgc3RyYXRlZ3kKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE4MwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBmYzk2ZTMxMTJhNy4uMmZjMWYyYjQzZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtMTE3LDYgKzExNyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXBwbGljYXRpb25JbmZvLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExp
c3QuY3BwCkBAIC00MTcsNiArNDE4LDcgQEAgZW5kaWYgKCkKIHNldChXZWJLaXQyR1RLX0lOU1RB
TExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9X
ZWJLaXRFbnVtVHlwZXMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfQVBJX0RJ
Un0vV2ViS2l0VmVyc2lvbi5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QXBwbGljYXRpb25JbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9jbGVhbnVwcy5oCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKaW5kZXggODg0Njg1YWU3ZDQuLmYzMGU2YzJhYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKQEAgLTEzMiw2ICsxMzIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEFwcGxp
Y2F0aW9uSW5mby5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNw
cApAQCAtMjc1LDYgKzI3Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfREVSSVZFRF9TT1VSQ0VT
CiAKIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V1BFX0FQSV9ESVJ9L1dlYktpdEVudW1UeXBlcy5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKICAgICAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKICAg
ICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3Qu
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXBw
bGljYXRpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEFwcGxpY2F0aW9uSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjk3ZTZjZmNlNDQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXBwbGljYXRpb25JbmZvLmNwcApAQCAtMCwwICsxLDE2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViS2l0QXBwbGljYXRpb25JbmZvLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfV2ViS2l0QXBwbGljYXRpb25JbmZvIHsKKyAgICBDU3Ry
aW5nIG5hbWU7CisgICAgdWludDY0X3QgbWFqb3JWZXJzaW9uOworICAgIHVpbnQ2NF90IG1pbm9y
VmVyc2lvbjsKKyAgICB1aW50NjRfdCBtaWNyb1ZlcnNpb247CisKKyAgICBpbnQgcmVmZXJlbmNl
Q291bnQgeyAxIH07Cit9OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdEFwcGxpY2F0aW9u
SW5mbywgd2Via2l0X2FwcGxpY2F0aW9uX2luZm8sIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3Jl
Ziwgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYpCisKKy8qKgorICogd2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdEFwcGxpY2F0aW9u
SW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogdGhlIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdEFwcGxpY2F0aW9uSW5mby4KKyAqCisgKiBzaW5jZTogMi4xOAorICovCitXZWJLaXRB
cHBsaWNhdGlvbkluZm8qIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldygpCit7CisgICAgV2Vi
S2l0QXBwbGljYXRpb25JbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8V2ViS2l0QXBwbGljYXRpb25J
bmZvKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0QXBwbGljYXRpb25JbmZvKSkpOworICAgIG5l
dyAoaW5mbykgV2ViS2l0QXBwbGljYXRpb25JbmZvKCk7CisgICAgcmV0dXJuIGluZm87Cit9CisK
Ky8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmOgorICogQGluZm86IGEgI1dlYktp
dEFwcGxpY2F0aW9uSW5mbworICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0aGUgcmVmZXJl
bmNlIGNvdW50IG9mIEBpbmZvIGJ5IG9uZS4gVGhpcworICogZnVuY3Rpb24gaXMgTVQtc2FmZSBh
bmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgKgorICogUmV0dXJuczogVGhlIHBh
c3NlZCBpbiAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKgorICogU2luY2U6IDIuMTgKKyAqLwor
V2ViS2l0QXBwbGljYXRpb25JbmZvKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19yZWYoV2ViS2l0
QXBwbGljYXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfYXRvbWljX2ludF9pbmMoJmluZm8tPnJl
ZmVyZW5jZUNvdW50KTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiB3ZWJraXRfYXBw
bGljYXRpb25faW5mb191bnJlZjoKKyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8K
KyAqCisgKiBBdG9taWNhbGx5IGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBAaW5m
byBieSBvbmUuIElmIHRoZQorICogcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIDAsIGFsbCBtZW1v
cnkgYWxsb2NhdGVkIGJ5IHRoZSAjV2ViS2l0QXBwbGljYXRpb25JbmZvIGlzCisgKiByZWxlYXNl
ZC4gVGhpcyBmdW5jdGlvbiBpcyBNVC1zYWZlIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20gYW55Cisg
KiB0aHJlYWQuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBwbGljYXRp
b25faW5mb191bnJlZihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8pCit7CisgICAgaWYgKGdf
YXRvbWljX2ludF9kZWNfYW5kX3Rlc3QoJmluZm8tPnJlZmVyZW5jZUNvdW50KSkgeworICAgICAg
ICBpbmZvLT5+V2ViS2l0QXBwbGljYXRpb25JbmZvKCk7CisgICAgICAgIGZhc3RGcmVlKGluZm8p
OworICAgIH0KK30KKworLyoqCisgKiB3ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfbmFtZToK
KyAqIEBpbmZvOiBhICNXZWJLaXRBcHBsaWNhdGlvbkluZm8KKyAqIEBuYW1lOiB0aGUgYXBwbGlj
YXRpb24gbmFtZQorICoKKyAqIFNldCB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIG5v
dCBwcm92aWRlZCwgb3IgJU5VTEwgaXMgcGFzc2VkLAorICogZ19nZXRfcHJnbmFtZSgpIHdpbGwg
YmUgdXNlZC4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3NldF9uYW1lKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbywgY29uc3QgY2hhciog
bmFtZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZm8pOworCisgICAgaW5mby0+bmFtZSA9
IG5hbWU7Cit9CisKKy8qKgorICogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWU6Cisg
KiBAaW5mbzogYSAjV2ViS2l0QXBwbGljYXRpb25JbmZvCisgKgorICogR2V0IHRoZSBuYW1lIG9m
IHRoZSBhcHBsaWNhdGlvbi4gSWYgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X25hbWUoKSBo
YXNuJ3QgYmVlbgorICogY2FsbGVkIHdpdGggYSB2YWxpZCBuYW1lLCB0aGlzIHJldHVybnMgZ19n
ZXRfcHJnbmFtZSgpLgorICoKKyAqIFJldHVybnM6IHRoZSBhcHBsaWNhdGlvbiBuYW1lCisgKgor
ICogU2luY2U6IDIuMTgKKyAqLworY29uc3QgY2hhciogd2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
Z2V0X25hbWUoV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGluZm8sIG51bGxwdHIpOworCisgICAgaWYgKCFpbmZvLT5uYW1lLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gaW5mby0+bmFtZS5kYXRhKCk7CisKKyAgICByZXR1cm4gZ19nZXRf
cHJnbmFtZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJz
aW9uOgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICogQG1ham9yOiB0aGUg
bWFqb3IgdmVyc2lvbiBudW1iZXIKKyAqIEBtaW5vcjogdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVy
CisgKiBAbWljcm86IHRoZSBtaWNybyB2ZXJzaW9uIG51bWJlcgorICoKKyAqIFNldCB0aGUgYXBw
bGljYXRpb24gdmVyc2lvbi4gSWYgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgdXNlIHRoZSBmb3Jt
YXQKKyAqIG1ham9yLm1pbm9yLm1pY3JvIHlvdSBjYW4gcGFzcyAwIGFzIHRoZSBtaWNybyB0byB1
c2UgbWFqb3IubWlub3IsIG9yIHBhc3MKKyAqIDAgYXMgYm90aCBtaWNybyBhbmQgbWlub3IgdG8g
dXNlIG9ubHkgbWFqb3IgbnVtYmVyLiBBbnkgb3RoZXIgZm9ybWF0IG11c3QKKyAqIGJlIGNvbnZl
cnRlZCB0byBtYWpvci5taW5vci5taWNybyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHZlcnNp
b24gY29tcGFyaXNvbnMuCisgKgorICogU2luY2U6IDIuMTgKKyAqLwordm9pZCB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19zZXRfdmVyc2lvbihXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8sIGd1
aW50NjQgbWFqb3IsIGd1aW50NjQgbWlub3IsIGd1aW50NjQgbWljcm8pCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChpbmZvKTsKKworICAgIGluZm8tPm1ham9yVmVyc2lvbiA9IG1ham9yOworICAg
IGluZm8tPm1pbm9yVmVyc2lvbiA9IG1pbm9yOworICAgIGluZm8tPm1pY3JvVmVyc2lvbiA9IG1p
Y3JvOworfQorCisvKioKKyAqIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uOgor
ICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICogQG1ham9yOiAob3V0KTogcmV0
dXJuIGxvY2F0aW9uIGZvciB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIKKyAqIEBtaW5vcjogKG91
dCkgKGFsbG93LW5vbmUpOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSBtaW5vciB2ZXJzaW9uIG51
bWJlcgorICogQG1pY3JvOiAob3V0KSAoYWxsb3ctbm9uZSk6IHJldHVybiBsb2NhdGlvbiBmb3Ig
dGhlIG1pY3JvIHZlcnNpb24gbnVtYmVyCisgKgorICogR2V0IHRoZSBhcHBsaWNhdGlvbiB2ZXJz
aW9uIHByZXZpb3VzbHkgc2V0IHdpdGggd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNp
b24oKS4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCit2b2lkIHdlYmtpdF9hcHBsaWNhdGlvbl9p
bmZvX2dldF92ZXJzaW9uKFdlYktpdEFwcGxpY2F0aW9uSW5mbyogaW5mbywgZ3VpbnQ2NCogbWFq
b3IsIGd1aW50NjQqIG1pbm9yLCBndWludDY0KiBtaWNybykKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKGluZm8gJiYgbWFqb3IpOworCisgICAgKm1ham9yID0gaW5mby0+bWFqb3JWZXJzaW9uOwor
ICAgIGlmIChtaW5vcikKKyAgICAgICAgKm1pbm9yID0gaW5mby0+bWlub3JWZXJzaW9uOworICAg
IGlmIChtaWNybykKKyAgICAgICAgKm1pY3JvID0gaW5mby0+bWljcm9WZXJzaW9uOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDk1Y2NmMjBkZmYyLi45NmNjMjkyMjA1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIldlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYktpdEFwcGxpY2F0aW9uSW5mby5oIgogI2luY2x1ZGUgIldlYktp
dEF1dG9tYXRpb25TZXNzaW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTU4LDYgKzU5LDcgQEAgZW51
bSB7CiAKIHN0cnVjdCBfV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlIHsKICAgICBSZWZQ
dHI8V2ViQXV0b21hdGlvblNlc3Npb24+IHNlc3Npb247CisgICAgV2ViS2l0QXBwbGljYXRpb25J
bmZvKiBhcHBsaWNhdGlvbkluZm87CiAgICAgQ1N0cmluZyBpZDsKIH07CiAKQEAgLTEyOCwxMiAr
MTMwLDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24gPSBXRUJLSVRfQVVU
T01BVElPTl9TRVNTSU9OKG9iamVjdCk7CisKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGlj
YXRpb25JbmZvKSB7CisgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKHNlc3Np
b24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbyk7CisgICAgICAgIHNlc3Npb24tPnByaXYtPmFwcGxp
Y2F0aW9uSW5mbyA9IG51bGxwdHI7CisgICAgfQorCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2F1dG9tYXRpb25fc2Vzc2lvbl9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisK
IHN0YXRpYyB2b2lkIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fY2xhc3NfaW5pdChXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbkNsYXNzKiBzZXNzaW9uQ2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNz
KiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhzZXNzaW9uQ2xhc3MpOwogICAgIGdPYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRQcm9wZXJ0
eTsKICAgICBnT2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uU2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdEF1
dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQ7CisgICAgZ09iamVjdENsYXNzLT5kaXNwb3NlID0g
d2Via2l0QXV0b21hdGlvblNlc3Npb25EaXNwb3NlOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0
QXV0b21hdGlvblNlc3Npb246aWQ6CkBAIC0xODcsNiArMjAyLDMxIEBAIFdlYkF1dG9tYXRpb25T
ZXNzaW9uJiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFNlc3Npb24oV2ViS2l0QXV0b21hdGlv
blNlc3Npb24qCiAgICAgcmV0dXJuICpzZXNzaW9uLT5wcml2LT5zZXNzaW9uOwogfQogCitTdHJp
bmcgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZShXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25J
bmZvKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfYXBwbGljYXRpb25f
aW5mb19nZXRfbmFtZShzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pKTsKKworICAgIHJl
dHVybiBnX2dldF9wcmduYW1lKCk7Cit9CisKK1N0cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQorewor
ICAgIGlmICghc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgZ3VpbnQ2NCBtYWpvciwgbWlub3IsIG1pY3JvOworICAgIHdlYmtpdF9hcHBs
aWNhdGlvbl9pbmZvX2dldF92ZXJzaW9uKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbywg
Jm1ham9yLCAmbWlub3IsICZtaWNybyk7CisKKyAgICBpZiAoIW1pY3JvICYmICFtaW5vcikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1ham9yKTsKKworICAgIGlmICghbWljcm8pCisg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKG1ham9yKSwgIi4iLCBTdHJp
bmc6Om51bWJlcihtaW5vcikpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nOjpudW1i
ZXIobWFqb3IpLCAiLiIsIFN0cmluZzo6bnVtYmVyKG1pbm9yKSwgIi4iLCBTdHJpbmc6Om51bWJl
cihtaWNybykpOworfQorCiAvKioKICAqIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lk
OgogICogQHNlc3Npb246IGEgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uCkBAIC0yMDIsMyArMjQy
LDQ3IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2lkKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbiksIG51bGxwdHIpOwogICAgIHJldHVy
biBzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCk7CiB9CisKKy8qKgorICogd2Via2l0X2F1dG9tYXRp
b25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25faW5mbzoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbgorICogQGluZm86IGEgI1dlYktpdEFwcGxpY2F0aW9uSW5mbworICoK
KyAqIFNldCB0aGUgYXBwbGljYXRpb24gaW5mb3JtYXRpb24gdG8gQHNlc3Npb24uIFRoaXMgaW5m
b3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgc2VydmljZQorICogdG8gbWF0Y2gg
dGhlIHJlcXVlc3RlZCBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgYWN0dWFsIGFwcGxpY2F0aW9uIGlu
Zm9ybWF0aW9uLiBJZiB0aGlzIGluZm9ybWF0aW9uCisgKiBpcyBub3QgcHJvdmlkZWQgdG8gdGhl
IHNlc3Npb24gd2hlbiBhIG5ldyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgcmVxdWVzdGVkLCB0aGUg
Y3JlYXRpb24gbWlnaHQgZmFpbAorICogaWYgdGhlIGNsaWVudCByZXF1ZXN0ZWQgYSBzcGVjaWZp
YyBicm93c2VyIG5hbWUgb3IgdmVyc2lvbi4gVGhpcyB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qg
d2hlbiBjYWxsZWQKKyAqIGFmdGVyIHRoZSBhdXRvbWF0aW9uIHNlc3Npb24gaGFzIGJlZW4gZnVs
bHkgY3JlYXRlZCwgc28gdGhpcyBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgY2FsbGJhY2sgb2YKKyAq
ICNXZWJLaXRXZWJDb250ZXh0OjphdXRvbWF0aW9uLXN0YXJ0ZWQgc2lnbmFsLgorICoKKyAqIFNp
bmNlOiAyLjE4CisgKi8KK3ZvaWQgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGlj
YXRpb25faW5mbyhXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbiwgV2ViS2l0QXBwbGlj
YXRpb25JbmZvKiBpbmZvKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVE9N
QVRJT05fU0VTU0lPTihzZXNzaW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmZvKTsKKwor
ICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8gPT0gaW5mbykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKKyAgICAg
ICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRp
b25JbmZvKTsKKyAgICBzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8gPSB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19yZWYoaW5mbyk7Cit9CisKKy8qKgorICogd2Via2l0X2F1dG9tYXRpb25f
c2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbzoKKyAqIEBzZXNzaW9uOiBhICNXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbgorICoKKyAqIEdldCB0aGUgI1dlYktpdEF1dG9tYXRpb25TZXNzaW9uIHBy
ZXZpb3VzbHkgc2V0IHdpdGggd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRp
b25faW5mbygpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiBvZiBAc2Vzc2lvbiwgb3IgJU5VTEwgaWYgbm8gb25lIGhhcyBiZWVu
IHNldC4KKyAqCisgKiBTaW5jZTogMi4xOAorICovCitXZWJLaXRBcHBsaWNhdGlvbkluZm8qIHdl
YmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8oV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0FVVE9NQVRJT05fU0VTU0lPTihzZXNzaW9uKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
c2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb25Qcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
blByaXZhdGUuaAppbmRleCA1NTI1NzgzZWY2NC4uNDBjZDkzMjFiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uUHJpdmF0ZS5oCkBAIC0yNCwzICsyNCw1IEBACiAKIFdlYktpdEF1dG9tYXRp
b25TZXNzaW9uKiB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNyZWF0ZShjb25zdCBjaGFyKiBzZXNz
aW9uSUQpOwogV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgd2Via2l0QXV0b21hdGlvblNl
c3Npb25HZXRTZXNzaW9uKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKik7CitTdHJpbmcgd2Via2l0
QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZShXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiop
OworU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3NlclZlcnNpb24oV2ViS2l0
QXV0b21hdGlvblNlc3Npb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggZjc4MThlN2I5ZjMuLjRhYjkwMWVl
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtMjE0LDEyICsyMTQsMjggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCisgICAgU3RyaW5nIGJyb3dzZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbikK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUobV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vz
c2lvbi5nZXQoKSk7CisgICAgfQorCisgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0
aW9uU2Vzc2lvbikKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmV0dXJuIHdl
YmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3NlclZlcnNpb24obV93ZWJDb250ZXh0LT5wcml2
LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgfQorCiAgICAgdm9pZCByZXF1ZXN0QXV0
b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vz
c2lvbik7CiAgICAgICAgIG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24gPSBh
ZG9wdEdSZWYod2Via2l0QXV0b21hdGlvblNlc3Npb25DcmVhdGUoc2Vzc2lvbklkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBtX3dlYkNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29s
LT5zZXRBdXRvbWF0aW9uU2Vzc2lvbigmd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRTZXNzaW9u
KG1fd2ViQ29udGV4dC0+cHJpdi0+YXV0b21hdGlvblNlc3Npb24uZ2V0KCkpKTsKICAgICAgICAg
Z19zaWduYWxfZW1pdChtX3dlYkNvbnRleHQsIHNpZ25hbHNbQVVUT01BVElPTl9TVEFSVEVEXSwg
MCwgbV93ZWJDb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uU2Vzc2lvbi5nZXQoKSk7CisgICAgICAg
IG1fd2ViQ29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKCZ3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldFNlc3Npb24obV93ZWJDb250ZXh0LT5wcml2LT5hdXRv
bWF0aW9uU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAogICAgIFdlYktpdFdlYkNvbnRleHQqIG1f
d2ViQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QXBwbGljYXRpb25JbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEFwcGxpY2F0aW9uSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4zNGRiOWI5Y2M3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3Ig
Ik9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2Vu
ZGlmCisKKyNpZm5kZWYgV2ViS2l0QXBwbGljYXRpb25JbmZvX2gKKyNkZWZpbmUgV2ViS2l0QXBw
bGljYXRpb25JbmZvX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRf
VFlQRV9BUFBMSUNBVElPTl9JTkZPICh3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdHlwZSgp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QXBwbGljYXRpb25JbmZvIFdlYktpdEFwcGxpY2F0
aW9uSW5mbzsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19n
ZXRfdHlwZSAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoK
K3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25ldyAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRBcHBsaWNhdGlvbkluZm8gKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fcmVmICAg
ICAgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYgICAgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5m
byAqaW5mbyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0
X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKm5hbWUpOworV0VCS0lU
X0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfbmFtZSAgICAo
V2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
YXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbiAoV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAg
ICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2
NCAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludDY0ICAgICAgICAgICAgICAgIG1pY3JvKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfdmVyc2lvbiAoV2ViS2l0QXBwbGljYXRpb25JbmZv
ICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAg
ICAgICAgICAgICAqbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3VpbnQ2NCAgICAgICAgICAgICAgICptaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludDY0ICAgICAgICAgICAgICAgKm1pY3JvKTsKKworR19FTkRfREVDTFMK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggYTA4ZjFmNjVlOTYuLjgzOWRmZTM0Zjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIFdlYktpdEF1
dG9tYXRpb25TZXNzaW9uX2gKIAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dERlZmluZXMuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNTYsMTAgKzU3LDE3IEBAIHN0cnVjdCBf
V2ViS2l0QXV0b21hdGlvblNlc3Npb25DbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF90eXBlICh2b2lkKTsKK3dlYmtpdF9hdXRvbWF0
aW9uX3Nlc3Npb25fZ2V0X3R5cGUgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIGNv
bnN0IGNoYXIgKgotd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRfaWQgICAoV2ViS2l0QXV0
b21hdGlvblNlc3Npb24gKnNlc3Npb24pOword2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRf
aWQgICAgICAgICAgICAgICAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24pOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9u
X2luZm8gKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0QXBwbGljYXRpb25JbmZvICAg
KmluZm8pOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqCit3ZWJraXRfYXV0
b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvIChXZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbiAqc2Vzc2lvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0CmluZGV4IGMyYjBhMmQwMGQ5Li5hMTNjMzJkMmI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CkBAIC0xMzU4LDYgKzEzNTgsOCBAQCBXRUJLSVRfVFlQRV9ORVRXT1JL
X05FVFdPUktfUFJPWFlfU0VUVElOR1MKIDxGSUxFPldlYktpdEF1dG9tYXRpb25TZXNzaW9uPC9G
SUxFPgogV2ViS2l0QXV0b21hdGlvblNlc3Npb24KIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25f
Z2V0X2lkCit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX3NldF9hcHBsaWNhdGlvbl9pbmZvCit3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvCiAKIDxTVUJTRUNU
SU9OIFByaXZhdGU+CiBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvblByaXZhdGUKQEAgLTEzNzQsNiAr
MTM3NiwyNCBAQCBXRUJLSVRfQVVUT01BVElPTl9TRVNTSU9OX0dFVF9DTEFTUwogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdEFwcGxpY2F0aW9uSW5mbzwvRklMRT4KK1dlYktp
dEFwcGxpY2F0aW9uSW5mbword2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3Cit3ZWJraXRfYXBw
bGljYXRpb25faW5mb19yZWYKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmCit3ZWJraXRf
YXBwbGljYXRpb25faW5mb19zZXRfbmFtZQord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25h
bWUKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uCit3ZWJraXRfYXBwbGljYXRp
b25faW5mb19nZXRfdmVyc2lvbgorCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X3R5cGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfVFlQ
RV9BUFBMSUNBVElPTl9JTkZPCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0
V2ViRXh0ZW5zaW9uPC9GSUxFPgogV2ViS2l0V2ViRXh0ZW5zaW9uCiBXZWJLaXRXZWJFeHRlbnNp
b25Jbml0aWFsaXplRnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBlMzE5ZGNhNDI5Ny4u
N2MxZDU0NTA4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTU5LDYgKzU5LDcgQEAKICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2Vic2l0ZURhdGEueG1sIi8+CiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdE5ldHdvcmtQcm94eVNldHRpbmdzLnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi54bWwiLz4KKyAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnhtbCIvPgogICA8L2No
YXB0ZXI+CiAKICAgPGNoYXB0ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCmluZGV4IGFlNTBiMzUwNWY2Li5mYjA0NzZmMWIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2RlZmluZSBf
X1dFQktJVDJfSF9JTlNJREVfXwogCisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBcHBsaWNhdGlv
bkluZm8uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QXBwbGljYXRpb25JbmZvLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE4NzM2MjE1YTMyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBcHBsaWNhdGlvbklu
Zm8uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRBcHBsaWNhdGlvbkluZm9faAor
I2RlZmluZSBXZWJLaXRBcHBsaWNhdGlvbkluZm9faAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfQVBQTElDQVRJT05fSU5GTyAod2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFwcGxpY2F0aW9uSW5mbyBX
ZWJLaXRBcHBsaWNhdGlvbkluZm87CisKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X3R5cGUgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEFwcGxp
Y2F0aW9uSW5mbyAqCit3ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcgICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoKK3dlYmtpdF9hcHBsaWNhdGlv
bl9pbmZvX3JlZiAgICAgICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmICAgICAgIChXZWJLaXRB
cHBsaWNhdGlvbkluZm8gKmluZm8pOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9hcHBsaWNh
dGlvbl9pbmZvX3NldF9uYW1lICAgIChXZWJLaXRBcHBsaWNhdGlvbkluZm8gKmluZm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpu
YW1lKTsKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
Z2V0X25hbWUgICAgKFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0X3ZlcnNpb24gKFdlYktpdEFwcGxpY2F0
aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dDY0ICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICBtaWNybyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X3ZlcnNpb24gKFdlYktpdEFw
cGxpY2F0aW9uSW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludDY0ICAgICAgICAgICAgICAgKm1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50NjQgICAgICAgICAgICAgICAqbWlub3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICptaWNybyk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDllNjJjZGYwYTRl
Li5jMGQ0ZjI1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2Rl
ZmluZSBXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbl9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdwZS9XZWJLaXRBcHBsaWNhdGlvbkluZm8uaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0RGVmaW5lcy5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC01NiwxMCArNTcsMTcgQEAgc3Ry
dWN0IF9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbkNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5
cGUKLXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X3R5cGUgKHZvaWQpOword2Via2l0X2F1
dG9tYXRpb25fc2Vzc2lvbl9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9B
UEkgY29uc3QgY2hhciAqCi13ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9pZCAgIChXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7Cit3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9pZCAgICAgICAgICAgICAgIChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiAqc2Vzc2lvbik7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGlj
YXRpb25faW5mbyAoV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRBcHBsaWNhdGlvbklu
Zm8gICAqaW5mbyk7CisKK1dFQktJVF9BUEkgV2ViS2l0QXBwbGljYXRpb25JbmZvICoKK3dlYmtp
dF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8gKFdlYktpdEF1dG9tYXRp
b25TZXNzaW9uICpzZXNzaW9uKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvd2Via2l0LmgKaW5kZXggOTQyMGNhNGRhNTUuLjU1YWUzODI5OWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2RlZmluZSBfX1dFQktJVF9IX0lOU0lERV9fCiAKKyNpbmNsdWRlIDx3cGUvV2ViS2l0QXBw
bGljYXRpb25JbmZvLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PHdwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMmQzYjFiODc5NS4uZDNkYzg4ZWFmYmYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNy0wOC0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHByb3ZpZGUgYnJvd3NlciBpbmZv
cm1hdGlvbiByZXF1aXJlZCBieSBhdXRvbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNo
YWVsIENhdGFuemFyby4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAg
ICAgIChhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKTogU2V0IGJyb3dzZXIgaW5mb3JtYXRpb24g
d2hlbiBhIG5ldyBhdXRvbWF0aW9uIHNlc3Npb24gaXMgc3RhcnRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAg
ICAgICAgKHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxpY2F0aW9uSW5mbyk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorCiAyMDE3LTA4LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIxOTg5NS0yMTk4OTcpOiBOdW1iZXIgb2YgbGVha3Mg
b24gT3BlbiBTb3VyY2Ugd2VudCBmcm9tIDkyNDAgdG8gMjM1OTgzIGFuZCBpcyBub3cgYXQgMzAy
MzcyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA1NzA1NTQwNTZhMi4uNWU3NmVkOGFiMTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYwpAQCAtNDU4LDYgKzQ1OCwxMSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICpjcmVh
dGVXZWJWaWV3Rm9yQXV0b21hdGlvbkNhbGxiYWNrKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBz
ZQogCiBzdGF0aWMgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRl
eHQgKndlYkNvbnRleHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uKQogeworICAg
IFdlYktpdEFwcGxpY2F0aW9uSW5mbyAqaW5mbyA9IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX25l
dygpOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF92ZXJzaW9uKGluZm8sIFdFQktJ
VF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJ
T04pOworICAgIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm8o
c2Vzc2lvbiwgaW5mbyk7CisgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoaW5mbyk7
CisKICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NB
TExCQUNLKGNyZWF0ZVdlYlZpZXdGb3JBdXRvbWF0aW9uQ2FsbGJhY2spLCBOVUxMKTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAzMWNkNjg2Zjk1ZC4uNmRkYTI4NjgzZjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0
b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yNCw2ICsyNCwxMyBAQAogI2luY2x1
ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisv
LyBGSVhNRTogV1BFIGRvZXNuJ3QgZXhwb3NlIFdlYktpdFZlcnNpb24geWV0LCB0aGUgbnVtYmVy
cyBkZWZpbmVkIGhlcmUgZG9uJ3QgcmVhbGx5IG1hdHRlci4KKyNpZiBQTEFURk9STShXUEUpCisj
ZGVmaW5lIFdFQktJVF9NQUpPUl9WRVJTSU9OIDEKKyNkZWZpbmUgV0VCS0lUX01JTk9SX1ZFUlNJ
T04gMgorI2RlZmluZSBXRUJLSVRfTUlDUk9fVkVSU0lPTiAzCisjZW5kaWYKKwogY2xhc3MgQXV0
b21hdGlvblRlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKEF1dG9tYXRpb25UZXN0KTsKQEAgLTE2OCw2ICsxNzUsMTMgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3Nlc3Npb24pKTsKKyAgICAgICAgZ19h
c3NlcnQoIXdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8oc2Vz
c2lvbikpOworICAgICAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8gPSB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19uZXcoKTsKKyAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fc2V0
X25hbWUoaW5mbywgIkF1dG9tYXRpb25UZXN0QnJvd3NlciIpOworICAgICAgICB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19zZXRfdmVyc2lvbihpbmZvLCBXRUJLSVRfTUFKT1JfVkVSU0lPTiwgV0VC
S0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKTsKKyAgICAgICAgd2Via2l0
X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uLCBpbmZvKTsK
KyAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoaW5mbyk7CisgICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8oc2Vz
c2lvbikgPT0gaW5mbyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYXV0b21hdGlvblN0YXJ0
ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiogc2Vzc2lvbiwgQXV0b21hdGlvblRlc3QqIHRlc3QpCkBAIC0xODEsNyArMTk1LDIy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25u
ZWN0KG1fd2ViQ29udGV4dC5nZXQoKSwgImF1dG9tYXRpb24tc3RhcnRlZCIsIEdfQ0FMTEJBQ0so
YXV0b21hdGlvblN0YXJ0ZWRDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnX2RidXNfY29ubmVj
dGlvbl9jYWxsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgIi9vcmcvd2Via2l0L0luc3Bl
Y3RvciIsICJvcmcud2Via2l0Lkluc3BlY3RvciIsCi0gICAgICAgICAgICAiU3RhcnRBdXRvbWF0
aW9uU2Vzc2lvbiIsIGdfdmFyaWFudF9uZXcoIihzKSIsIHNlc3Npb25JRCksIG51bGxwdHIsIEdf
REJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICAgICAgICAgICJTdGFydEF1dG9tYXRpb25TZXNzaW9uIiwgZ192YXJpYW50X25l
dygiKHMpIiwgc2Vzc2lvbklEKSwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxBR1NfTk9fQVVUT19T
VEFSVCwgLTEsIG51bGxwdHIsCisgICAgICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgICAgIGF1
dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxBdXRvbWF0aW9uVGVzdCo+KHVzZXJEYXRhKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXRlc3QtPm1fc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gY2FwYWJpbGl0aWVzID0g
YWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9uX2NhbGxfZmluaXNoKEdfREJVU19DT05ORUNUSU9O
KHNvdXJjZSksIHJlc3VsdCwgbnVsbHB0cikpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0KGNh
cGFiaWxpdGllcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnJvd3Nlck5h
bWU7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYnJvd3NlclZlcnNpb247CisgICAgICAg
ICAgICAgICAgZ192YXJpYW50X2dldChjYXBhYmlsaXRpZXMuZ2V0KCksICIoJnMmcykiLCAmYnJv
d3Nlck5hbWUsICZicm93c2VyVmVyc2lvbik7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfY21w
c3RyKGJyb3dzZXJOYW1lLCA9PSwgIkF1dG9tYXRpb25UZXN0QnJvd3NlciIpOworICAgICAgICAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmVyc2lvblN0cmluZyhnX3N0cmR1cF9wcmludGYoIiV1
LiV1LiV1IiwgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJL
SVRfTUlDUk9fVkVSU0lPTikpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihicm93
c2VyVmVyc2lvbiwgPT0sIHZlcnNpb25TdHJpbmcuZ2V0KCkpOworICAgICAgICAgICAgfSwgdGhp
cworICAgICAgICApOwogICAgICAgICBhdXRvIHRpbWVvdXRJRCA9IGdfdGltZW91dF9hZGQoMTAw
MCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAgICAgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpKTsKICAgICAgICAg
ICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CkBAIC0yNzgsMTEgKzMwNywzNCBAQCBzdGF0aWMg
dm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbihBdXRvbWF0aW9uVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbgogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgRkFMU0UpOwogfQogCitzdGF0aWMgdm9p
ZCB0ZXN0QXV0b21hdGlvblNlc3Npb25BcHBsaWNhdGlvbkluZm8oVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8gPSB3ZWJraXRfYXBw
bGljYXRpb25faW5mb19uZXcoKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2FwcGxpY2F0
aW9uX2luZm9fZ2V0X25hbWUoaW5mbyksID09LCBnX2dldF9wcmduYW1lKCkpOworICAgIHdlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGluZm8sICJXZWJLaXRHVEtCcm93c2VyIik7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9uYW1lKGluZm8p
LCA9PSwgIldlYktpdEdUS0Jyb3dzZXIiKTsKKyAgICB3ZWJraXRfYXBwbGljYXRpb25faW5mb19z
ZXRfbmFtZShpbmZvLCBudWxscHRyKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fZ2V0X25hbWUoaW5mbyksID09LCBnX2dldF9wcmduYW1lKCkpOworCisgICAg
Z3VpbnQ2NCBtYWpvciwgbWlub3IsIG1pY3JvOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZv
X2dldF92ZXJzaW9uKGluZm8sICZtYWpvciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgZ19hc3Nl
cnRfY21wdWludChtYWpvciwgPT0sIDApOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3Nl
dF92ZXJzaW9uKGluZm8sIDEsIDIsIDMpOworICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dl
dF92ZXJzaW9uKGluZm8sICZtYWpvciwgJm1pbm9yLCAmbWljcm8pOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQobWFqb3IsID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KG1pbm9yLCA9PSwgMik7
CisgICAgZ19hc3NlcnRfY21wdWludChtaWNybywgPT0sIDMpOworCisgICAgd2Via2l0X2FwcGxp
Y2F0aW9uX2luZm9fdW5yZWYoaW5mbyk7Cit9CisKKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAg
IGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIsICIxMjcuMC4wLjE6MjIyOSIsIFRS
VUUpOwogCiAgICAgQXV0b21hdGlvblRlc3Q6OmFkZCgiV2ViS2l0QXV0b21hdGlvblNlc3Npb24i
LCAicmVxdWVzdC1zZXNzaW9uIiwgdGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdFNlc3Npb24p
OworICAgIFRlc3Q6OmFkZCgiV2ViS2l0QXV0b21hdGlvblNlc3Npb24iLCAiYXBwbGljYXRpb24t
aW5mbyIsIHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxpY2F0aW9uSW5mbyk7CiB9CiAKIHZvaWQg
YWZ0ZXJBbGwoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>